public void SettingValues() { var sut = new TestIDEEvent { Id = "1", ActiveDocument = Names.Document("d d"), ActiveWindow = Names.Window("w w"), // Duration is automatically set IDESessionUUID = "2", KaVEVersion = "3", TriggeredAt = new DateUtils().Today.AddDays(-1), TerminatedAt = new DateUtils().Today, TriggeredBy = EventTrigger.Click }; Assert.AreEqual("1", sut.Id); Assert.AreEqual(Names.Document("d d"), sut.ActiveDocument); Assert.AreEqual(Names.Window("w w"), sut.ActiveWindow); Assert.AreEqual(TimeSpan.FromDays(1), sut.Duration); Assert.AreEqual("2", sut.IDESessionUUID); Assert.AreEqual("3", sut.KaVEVersion); Assert.AreEqual((DateTimeOffset)DateTime.Today, sut.TerminatedAt); Assert.AreEqual(((DateTimeOffset)DateTime.Today).AddDays(-1), sut.TriggeredAt); Assert.AreEqual(EventTrigger.Click, sut.TriggeredBy); }
public void Equality_ReallyTheSame() { var a = new TestIDEEvent { Id = "1", ActiveDocument = Names.Document("d d"), ActiveWindow = Names.Window("w w"), // Duration is automatically set IDESessionUUID = "2", KaVEVersion = "3", TriggeredAt = DateTime.Today.AddDays(-1), TerminatedAt = DateTime.Today, TriggeredBy = EventTrigger.Click }; var b = new TestIDEEvent { Id = "1", ActiveDocument = Names.Document("d d"), ActiveWindow = Names.Window("w w"), // Duration is automatically set IDESessionUUID = "2", KaVEVersion = "3", TriggeredAt = DateTime.Today.AddDays(-1), TerminatedAt = DateTime.Today, TriggeredBy = EventTrigger.Click }; Assert.AreEqual(a, b); Assert.AreEqual(a.GetHashCode(), b.GetHashCode()); }
public void FiltersOldEvents() { var e0 = new TestIDEEvent { KaVEVersion = "0.0-Default", TriggeredAt = DateTime.Now, TerminatedAt = DateTime.Now }; var e1 = new TestIDEEvent { KaVEVersion = "0.1-Default", TriggeredAt = DateTime.Now, TerminatedAt = DateTime.Now }; var e2 = new TestIDEEvent { KaVEVersion = "0.2-Default", TriggeredAt = DateTime.Now, TerminatedAt = DateTime.Now }; _firstVersionToInclude = 1; InitTransformer().TransformWithCustomTransformer( new[] { e0, e1, e2 }, _testTransformer); Mock.Get(_fixer).Verify(f => f.FixAndFilter(It.IsAny <IEnumerable <IDEEvent> >())); CollectionAssert.AreEqual(new[] { e1, e2 }, _processedEvents); }
public void ShouldUseSessionIdOfFilteredEventsToFindDeveloper() { var @event = new TestIDEEvent { IDESessionUUID = "sessionA", TestProperty = "a", TriggeredAt = new DateTimeOffset() }; GivenInputArchive("0.zip").With("0.json", @event); GivenInputArchive("1.zip") .With("0.json", @event) .With("1.json", new TestIDEEvent { IDESessionUUID = "sessionB", TestProperty = "b" }); WhenImportIsRun(); var developers = TestFeedbackDatabase.GetDeveloperCollection().FindAll().ToList(); Assert.AreEqual(1, developers.Count); var developer = developers[0]; CollectionAssert.AreEquivalent(new[] { "sessionA", "sessionB" }, developer.SessionIds); }
public void ShouldAddNextEventWhenEnabled() { _uut.AddEventAfterBreakToStatistic = true; var triggeredAt = DateTimeFactory.SomeWorkingHoursDateTime(); var someEvent = new TestIDEEvent { TriggeredAt = triggeredAt }; var eventAfterBreak = new CommandEvent { TriggeredAt = triggeredAt + _uut.MinBreakTime }; _uut.OnStreamStarts(new Developer()); _uut.OnEvent(someEvent); _uut.OnEvent(eventAfterBreak); _uut.OnStreamEnds(); var expectedStatistic = new Dictionary<string, Tuple<TimeSpan, int>> { { String.Format( "{0}{1}{2}", EventMappingUtils.GetAbstractStringOf(new TestIDEEvent()), AverageBreakAfterEventsCalculator.EventAfterBreakSeparator, EventMappingUtils.GetAbstractStringOf(new CommandEvent())), new Tuple<TimeSpan, int>(_uut.MinBreakTime, 1) } }; CollectionAssert.AreEquivalent(expectedStatistic, _uut.Statistic); }
public void Equality_Default() { var a = new TestIDEEvent(); var b = new TestIDEEvent(); Assert.AreEqual(a, b); Assert.AreEqual(a.GetHashCode(), b.GetHashCode()); }
protected TestIDEEvent GivenEventExists(String sessionId, String value = "", DateTime?triggeredAt = null) { var testIDEEvent = new TestIDEEvent { IDESessionUUID = sessionId, TestProperty = value, TriggeredAt = triggeredAt }; var ideEventCollection = TestFeedbackDatabase.GetEventsCollection(); ideEventCollection.Insert(testIDEEvent); return(testIDEEvent); }
public void ShouldHaveNoEndTimeWithoutDuration() { var ideEvent = new TestIDEEvent { TriggeredAt = DateTime.Now, Duration = null }; Assert.IsNull(ideEvent.TerminatedAt); }
public void CollectsActiveWindow() { var ideEvent = new TestIDEEvent { ActiveWindow = Names.Window("active window name") }; Process(ideEvent); AssertNameCollected(ideEvent.ActiveWindow); }
public void CollectsActiveDocument() { var ideEvent = new TestIDEEvent { ActiveDocument = Names.Document("active document name") }; Process(ideEvent); AssertNameCollected(ideEvent.ActiveDocument); }
public void ShouldHaveNoEndTimeWithoutStartTime() { var ideEvent = new TestIDEEvent { TriggeredAt = null, Duration = TimeSpan.FromMinutes(9) }; Assert.IsNull(ideEvent.TerminatedAt); }
public void Equality_DifferentId() { var a = new TestIDEEvent { Id = "1" }; var b = new TestIDEEvent(); Assert.AreNotEqual(a, b); Assert.AreNotEqual(a.GetHashCode(), b.GetHashCode()); }
public void ShouldDeriveEndTimeFromStartTimeAndDuration() { var now = DateTimeOffset.Now; var expected = now.AddSeconds(3); var ideEvent = new TestIDEEvent { TriggeredAt = now, Duration = TimeSpan.FromSeconds(3) }; Assert.AreEqual(expected, ideEvent.TerminatedAt); }
public void ShouldDeriveDurationFromStartAndEndTime() { var expected = TimeSpan.FromSeconds(1); var now = DateTime.Now; var ideEvent = new TestIDEEvent { TriggeredAt = now, TerminatedAt = now.AddSeconds(1) }; Assert.AreEqual(expected, ideEvent.Duration); }
public void DefaultValues() { var sut = new TestIDEEvent(); Assert.AreEqual(null, sut.Id); Assert.AreEqual(null, sut.ActiveDocument); Assert.AreEqual(null, sut.ActiveWindow); Assert.AreEqual(null, sut.Duration); Assert.AreEqual(null, sut.IDESessionUUID); Assert.AreEqual(null, sut.KaVEVersion); Assert.AreEqual(null, sut.TerminatedAt); Assert.AreEqual(null, sut.TriggeredAt); Assert.AreEqual(EventTrigger.Unknown, sut.TriggeredBy); }
public void ShouldRaiseEntryAddedOnAppend() { IDEEvent actual = null; _uut.EntryAppended += entry => actual = entry; var expected = new TestIDEEvent { TestProperty = "0xDEADBEEF" }; _uut.Append(expected); Assert.AreEqual(expected, actual); }
public void FiltersDuplicate() { var @event = new TestIDEEvent { IDESessionUUID = "sessionA", TestProperty = "a", TriggeredAt = new DateTimeOffset() }; GivenInputArchive("0.zip").With("0.json", @event).With("1.json", @event); WhenImportIsRun(); Assert.AreEqual(1, TestFeedbackDatabase.GetEventsCollection().FindAll().Count()); }
public void ShouldSerializeAllFieldsOfEvent() { var ideEvent = new TestIDEEvent { IDESessionUUID = "0xDEADBEEF", KaVEVersion = "1.2.3.4", ActiveDocument = Names.Document("d Random"), ActiveWindow = Names.Window("w Random"), TriggeredBy = EventTrigger.Click, TriggeredAt = System.DateTime.Now, Duration = TimeSpan.FromSeconds(5) }; JsonAssert.SerializationPreservesData(ideEvent); }
public void ShouldCombineResultsForMultipleDeveloperStreams() { _uut.MaxEventsBeforeBreak = 2; var triggeredAt = DateTimeFactory.SomeWorkingHoursDateTime(); var firstEvent = new TestIDEEvent { TriggeredAt = triggeredAt }; var secondEvent = new CommandEvent { TriggeredAt = triggeredAt }; var lateEvent = new TestIDEEvent { TriggeredAt = triggeredAt + _uut.MinBreakTime }; var listOfEvents = new List<IDEEvent> { firstEvent, secondEvent, lateEvent }; _uut.OnStreamStarts(new Developer()); listOfEvents.ForEach(@event => _uut.OnEvent(@event)); _uut.OnStreamEnds(); _uut.OnStreamStarts(new Developer()); listOfEvents.ForEach(@event => _uut.OnEvent(@event)); _uut.OnStreamEnds(); var expectedStatistic = new Dictionary<string, Tuple<TimeSpan, int>> { { String.Format( "{0}{1}{2}", EventMappingUtils.GetAbstractStringOf(new TestIDEEvent()), AverageBreakAfterEventsCalculator.StatisticStringSeparator, EventMappingUtils.GetAbstractStringOf(new CommandEvent())), new Tuple<TimeSpan, int>(_uut.MinBreakTime, 2) } }; CollectionAssert.AreEquivalent(expectedStatistic, _uut.Statistic); }
public static IDEEvent SomeEventFor(Developer developer, DateTime?triggeredAt = null) { if (triggeredAt == null) { triggeredAt = DateTime.Now; } var ideEvent = new TestIDEEvent { IDESessionUUID = developer.SessionIds.First(), TriggeredAt = triggeredAt, TestProperty = _eventValue.ToString(CultureInfo.InvariantCulture) }; _eventValue++; return(ideEvent); }
public void ShouldWriteEntriesOnAppend() { var evt1 = new TestIDEEvent { TestProperty = "23" }; var evt2 = new TestIDEEvent { TestProperty = "42" }; _uut.Append(evt1); _uut.Append(evt2); var expected = CreateLogString(evt1, evt2); var actual = _memoryFile.Content; Assert.AreEqual(expected, actual); }
public void ShouldSerializeToString() { var ideEvent = new TestIDEEvent { ActiveDocument = Names.Document("d SomeDocument"), ActiveWindow = Names.Window("w SomeWindow"), Duration = new TimeSpan(0, 0, 1), IDESessionUUID = "0xDEADBEEF", KaVEVersion = "1.2.3.4", TriggeredAt = new DateTimeOffset(2010, 01, 01, 12, 30, 44, TimeSpan.FromHours(3)), TriggeredBy = EventTrigger.Click }; const string expected = "{\"$type\":\"KaVE.Commons.TestUtils.Model.Events.TestIDEEvent, KaVE.Commons.TestUtils\",\"IDESessionUUID\":\"0xDEADBEEF\",\"KaVEVersion\":\"1.2.3.4\",\"TriggeredAt\":\"2010-01-01T12:30:44+03:00\",\"TriggeredBy\":1,\"Duration\":\"00:00:01\",\"ActiveWindow\":\"0Win:w SomeWindow\",\"ActiveDocument\":\"0Doc:d SomeDocument\"}"; JsonAssert.SerializesTo(ideEvent, expected); }
public void ShouldRaiseEntriesRemovedForRemovedEntries() { GivenWritableTempFile(); var target = new TestIDEEvent { TestProperty = "B" }; GivenTestLogContains(new TestIDEEvent { TestProperty = "A" }, target); IEnumerable <IDEEvent> actuals = null; _uut.EntriesRemoved += entries => actuals = entries; _uut.RemoveRange(new[] { target }); CollectionAssert.AreEqual(new[] { target }, actuals); }
public void ShouldRemoveOldEntries() { var tempFile = GivenWritableTempFile(); var evt1 = new TestIDEEvent { TriggeredAt = new DateTime(2014, 3, 10, 14, 0, 0) }; var evt2 = new TestIDEEvent { TriggeredAt = new DateTime(2014, 3, 10, 16, 0, 0) }; var evt3 = new TestIDEEvent { TriggeredAt = new DateTime(2014, 3, 10, 13, 0, 0) }; GivenTestLogContains(evt1, evt2, evt3); _uut.RemoveEntriesOlderThan(new DateTime(2014, 3, 10, 15, 0, 0)); AssertLogFileContent(tempFile, evt2); AssertThatLogWasReplacedWithTempFile(); }
public void ShouldRemoveEntries() { var tempFile = GivenWritableTempFile(); var evt1 = new TestIDEEvent { TestProperty = "1" }; var evt2 = new TestIDEEvent { TestProperty = "2" }; var evt3 = new TestIDEEvent { TestProperty = "3" }; GivenTestLogContains(evt1, evt2, evt3); _uut.RemoveRange(new[] { evt1, evt3 }); AssertLogFileContent(tempFile, evt2); AssertThatLogWasReplacedWithTempFile(); }
public void TreatsIDEStateEventAsAnonymousEventIfWholeArchiveIsAnonymous() { var anonymousEvent = new TestIDEEvent { IDESessionUUID = null }; GivenInputArchive("0.zip") .With("0.json", anonymousEvent) .With("1.json", _brokenShutdownEvent); WhenImportIsRun(); var onlyDeveloper = TestFeedbackDatabase.GetDeveloperCollection().FindAll().First(); var expected = new IDEStateEvent { IDESessionUUID = onlyDeveloper.Id.ToString(), TriggeredAt = _brokenShutdownEvent.TriggeredAt, IDELifecyclePhase = _brokenShutdownEvent.IDELifecyclePhase }; CollectionAssert.Contains(TestFeedbackDatabase.GetEventsCollection().FindAll(), expected); }
public void ShouldNotUseMoreThanMaximumEventsBeforeBreakForStatistic() { _uut.MaxEventsBeforeBreak = 1; var triggeredAt = DateTimeFactory.SomeWorkingHoursDateTime(); var firstEvent = new TestIDEEvent { TriggeredAt = triggeredAt }; var secondEvent = new CommandEvent { TriggeredAt = triggeredAt }; var lateEvent = new TestIDEEvent { TriggeredAt = triggeredAt + _uut.MinBreakTime }; var listOfEvents = new List<IDEEvent> { firstEvent, secondEvent, lateEvent }; _uut.OnStreamStarts(new Developer()); listOfEvents.ForEach(@event => _uut.OnEvent(@event)); _uut.OnStreamEnds(); var expectedStatistic = new Dictionary<string, Tuple<TimeSpan, int>> { { EventMappingUtils.GetAbstractStringOf(new CommandEvent()), new Tuple<TimeSpan, int>(_uut.MinBreakTime, 1) } }; CollectionAssert.AreEquivalent(expectedStatistic, _uut.Statistic); }
public void ShouldRaiseEntriesRemovedForRemovedOldEntries() { GivenWritableTempFile(); var evt1 = new TestIDEEvent { TriggeredAt = new DateTime(2014, 3, 10, 5, 29, 0) }; var evt2 = new TestIDEEvent { TriggeredAt = new DateTime(2014, 3, 10, 5, 42, 0) }; var evt3 = new TestIDEEvent { TriggeredAt = new DateTime(2014, 3, 10, 5, 35, 0) }; GivenTestLogContains(evt1, evt2, evt3); IEnumerable <IDEEvent> actuals = null; _uut.EntriesRemoved += entries => actuals = entries; _uut.RemoveEntriesOlderThan(new DateTime(2014, 3, 10, 5, 36, 0)); CollectionAssert.AreEqual(new[] { evt1, evt3 }, actuals); }
public void DoesntProcessEventsWithInsufficientTimeData() { var goodEvent = new TestIDEEvent { KaVEVersion = "0.0-Default", TriggeredAt = DateTime.Now, TerminatedAt = DateTime.Now }; var badEvent = new TestIDEEvent { KaVEVersion = "0.0-Default", TriggeredAt = DateTime.Now.AddMinutes(-1) }; InitTransformer().TransformWithCustomTransformer( new[] { goodEvent, badEvent }, _testTransformer); Mock.Get(_fixer).Verify(f => f.FixAndFilter(It.IsAny <IEnumerable <IDEEvent> >())); CollectionAssert.AreEqual(new[] { goodEvent }, _processedEvents); }