public void TeamCityBot_BuildFailedTwoTimesWithDifferentReasons_TwoMessagesPosted() { builds.Add(new Build() { Id = "1", Number = "1", Status = "FAILED", StatusText = "Tests failed: 25" }); builds.Add(new Build() { Id = "2", Number = "2", Status = "FAILED", StatusText = "Build failed" }); var changes = Substitute.For <IChanges>(); var change = new Change { Username = "******" }; changes.ByLocator(null).ReturnsForAnyArgs(new List <Change> { change }); tc.Changes.Returns(changes); var checker = new TeamCityBuildChecker(new BuildLocator(), tc, "dev", new TimeConfig { StillBrokenDelay = TimeSpan.FromMilliseconds(10) }); var now = new DateTime(); DateTimeProvider.SetFunc(() => now); checker.CheckBuild(_sendMessageAction); now = now.AddMilliseconds(5); checker.CheckBuild(_sendMessageAction); Assert.AreEqual(2, _sendMessages.Count); Assert.True(_sendMessages[1].Contains("is still broken")); }
public void TeamCityBot_BuildFailedThenFixed_MessageIsPostedImmediately() { builds.Add(new Build() { Id = "1", Number = "1", Status = "FAILED", StatusText = "Tests failed: 25" }); builds.Add(new Build() { Id = "2", Number = "2", Status = "SUCCESS" }); var changes = Substitute.For <IChanges>(); var change = new Change { Username = "******" }; changes.ByLocator(null).ReturnsForAnyArgs(new List <Change> { change }); tc.Changes.Returns(changes); var checker = new TeamCityBuildChecker(new BuildLocator(), tc, "dev", new TimeConfig { StillBrokenDelay = TimeSpan.FromMilliseconds(10) }); checker.CheckBuild(_sendMessageAction); Assert.AreEqual(1, _sendMessages.Count); Assert.True(_sendMessages[0].Contains("is broken")); checker.CheckBuild(_sendMessageAction); Assert.AreEqual(2, _sendMessages.Count); Assert.True(_sendMessages[1].Contains("fixed")); }