public void MessageIsNotProducedForBuildRequestedForSomeoneElseWhenSettingIsOn(BuildStatus status) { // arrange var build = CreateBuildNode(_ciDefinition, _stageBranch, "1", status); var delta = new BuildTreeBuildsDelta(); switch (status) { case BuildStatus.Failed: delta.FailedBuilds.Add(build); break; case BuildStatus.Succeeded: delta.SucceededBuilds.Add(build); break; default: delta.CancelledBuilds.Add(build); break; } // act var messages = new NotificationFactory(_onlyRequestedForMeConfiguration, _userIdentityList).ProduceNotifications(delta); // assert Assert.False(messages.Any()); }
public void MessageIsProducedForBuildWhenSettingDictatesAlways(BuildStatus status) { // arrange var build = CreateBuildNode(_ciDefinition, _stageBranch, "1", status); var delta = new BuildTreeBuildsDelta(); switch (status) { case BuildStatus.Failed: delta.FailedBuilds.Add(build); break; case BuildStatus.Succeeded: delta.SucceededBuilds.Add(build); break; default: delta.CancelledBuilds.Add(build); break; } // act var messages = new NotificationFactory(_allowAllConfiguration, _userIdentityList).ProduceNotifications(delta); // assert Assert.True(messages.Any()); }
public void AllBuildsFromThreeDefinitionsShouldResultInMessageTellingAboutDefinition() { // arrange var build1 = CreateBuildNode(_ciDefinition, _stageBranch, "1", BuildStatus.Failed); var build2 = CreateBuildNode(_ciDefinition, _masterBranch, "2", BuildStatus.Failed); var build3 = CreateBuildNode(_nightlyDefinition, _stageBranch, "3", BuildStatus.Failed); var build4 = CreateBuildNode(_cloudDefinition, _featureBranch, "4", BuildStatus.Failed); var delta = new BuildTreeBuildsDelta(); delta.FailedBuilds.Add(build1); delta.FailedBuilds.Add(build2); delta.FailedBuilds.Add(build3); delta.FailedBuilds.Add(build4); // act var messages = new NotificationFactory(_allowAllConfiguration, _userIdentityList).ProduceNotifications(delta); // assert var message = messages.First(); Assert.Equal(message.ContentTextId, DefinitionNotification.ThreeDefinitionsChangedTextId); Assert.True(message.DisplayContent.Contains(_ciDefinition.Name, StringComparison.Ordinal)); Assert.True(message.DisplayContent.Contains(_nightlyDefinition.Name, StringComparison.Ordinal)); Assert.True(message.DisplayContent.Contains(_cloudDefinition.Name, StringComparison.Ordinal)); }
public void BuildTreeWithOneBuildWithUpdatedStatusShouldCreateDelta(BuildStatus expectedResult) { // Arrange var sut = Construct(GroupDefinition.Source, GroupDefinition.Branch, GroupDefinition.BuildDefinition); var ciDefinition = Substitute.For <IBuildDefinition>(); var stageBranch = Substitute.For <IBranch>(); var builds = new List <IBuild>(); var build1 = CreateBuild(ciDefinition, stageBranch, "1"); builds.Add(build1); var build2 = CreateBuild(ciDefinition, stageBranch, "2"); builds.Add(build2); var build3 = CreateBuild(ciDefinition, stageBranch, "3"); builds.Add(build3); // Act var firstResult = sut.Build(builds); var newBuild2 = CreateBuild(ciDefinition, stageBranch, "2"); newBuild2.Status.Returns(expectedResult); var updatedBuilds = new List <IBuild> { build1, newBuild2, build3 }; var newTree = sut.Build(updatedBuilds); var currentBuildNodes = newTree.AllChildren().OfType <IBuildNode>(); var oldStatus = firstResult.AllChildren().OfType <IBuildNode>().ToDictionary(x => x.Build.CacheKey(), x => x.Status); var delta = new BuildTreeBuildsDelta(currentBuildNodes, oldStatus, PartialSucceededTreatmentMode.TreatAsSucceeded); // Assert switch (expectedResult) { case BuildStatus.Cancelled: Assert.Single(delta.Cancelled); break; case BuildStatus.Succeeded: case BuildStatus.PartiallySucceeded: Assert.Single(delta.Succeeded); break; case BuildStatus.Failed: Assert.Single(delta.Failed); break; default: throw new ArgumentOutOfRangeException(nameof(expectedResult), expectedResult, null); } }
public void NoBuildChangingShouldResultInNoMessage() { // arrange var delta = new BuildTreeBuildsDelta(); // act var messages = new NotificationFactory(_allowAllConfiguration, _userIdentityList).ProduceNotifications(delta); // assert Assert.Empty(messages); }
public void BuildTreeWithNoneBuildsChangingStatusShouldCreateEmptyDelta() { // Arrange var sut = Construct(GroupDefinition.Source, GroupDefinition.Branch, GroupDefinition.BuildDefinition); var ciDefinition = Substitute.For <IBuildDefinition>(); var stageBranch = Substitute.For <IBranch>(); var builds = new List <IBuild>(); var build1 = CreateBuild(ciDefinition, stageBranch, "1"); build1.Status.Returns(BuildStatus.Failed); builds.Add(build1); var build2 = CreateBuild(ciDefinition, stageBranch, "2"); build2.Status.Returns(BuildStatus.Succeeded); builds.Add(build2); var build3 = CreateBuild(ciDefinition, stageBranch, "3"); build3.Status.Returns(BuildStatus.Cancelled); builds.Add(build3); // Act var firstResult = sut.Build(builds); var newBuild1 = CreateBuild(ciDefinition, stageBranch, "1"); newBuild1.Status.Returns(BuildStatus.Failed); var newBuild2 = CreateBuild(ciDefinition, stageBranch, "2"); newBuild2.Status.Returns(BuildStatus.Succeeded); var newBuild3 = CreateBuild(ciDefinition, stageBranch, "3"); newBuild3.Status.Returns(BuildStatus.Cancelled); var updatedBuilds = new List <IBuild> { newBuild1, newBuild2, newBuild3 }; var newTree = sut.Build(updatedBuilds); var currentBuildNodes = newTree.AllChildren().OfType <IBuildNode>(); var oldStatus = firstResult.AllChildren().OfType <IBuildNode>().ToDictionary(x => x.Build.CacheKey(), x => x.Status); var delta = new BuildTreeBuildsDelta(currentBuildNodes, oldStatus, PartialSucceededTreatmentMode.TreatAsSucceeded); // Assert Assert.Empty(delta.Failed); Assert.Empty(delta.Cancelled); Assert.Empty(delta.Succeeded); }
public void SingleBuildFailingShouldResultInMessageTellingAboutBuild() { // arrange var build = CreateBuildNode(_ciDefinition, _stageBranch, "1", BuildStatus.Failed); var delta = new BuildTreeBuildsDelta(); delta.FailedBuilds.Add(build); // act var messages = new NotificationFactory(_allowAllConfiguration, _userIdentityList).ProduceNotifications(delta); // assert var message = messages.First(); Assert.Equal(message.ContentTextId, BuildNotification.BuildChangedTextId); Assert.True(message.DisplayContent.Contains(_ciDefinition.Name, StringComparison.Ordinal)); Assert.True(message.DisplayContent.Contains(_stageBranch.FullName, StringComparison.Ordinal)); }
public void PartiallySucceededBuildWithSettingOnTreatAsFailedShouldResultInFailMessage() { // arrange var build = CreateBuildNode(_ciDefinition, _stageBranch, "1", BuildStatus.PartiallySucceeded); var delta = new BuildTreeBuildsDelta(); delta.FailedBuilds.Add(build); // act var messages = new NotificationFactory(_treatPartialsAsFailedConfiguration, _userIdentityList).ProduceNotifications(delta); // assert var message = messages.First(); Assert.Equal(message.ContentTextId, BuildNotification.BuildChangedTextId); Assert.True(message.DisplayContent.Contains(_ciDefinition.Name, StringComparison.Ordinal)); Assert.True(message.DisplayContent.Contains(_stageBranch.FullName, StringComparison.Ordinal)); Assert.Equal(BuildStatus.Failed, message.Status); }
public void BuildsFromFourDefinitionsAndFourBranchesShouldResultInMessageTellingAboutBuilds() { // arrange var build1 = CreateBuildNode(_ciDefinition, _stageBranch, "1", BuildStatus.Failed); var build2 = CreateBuildNode(_mobileDefinition, _masterBranch, "2", BuildStatus.Failed); var build3 = CreateBuildNode(_nightlyDefinition, _bugBranch, "3", BuildStatus.Failed); var build4 = CreateBuildNode(_cloudDefinition, _featureBranch, "4", BuildStatus.Failed); var delta = new BuildTreeBuildsDelta(); delta.FailedBuilds.Add(build1); delta.FailedBuilds.Add(build2); delta.FailedBuilds.Add(build3); delta.FailedBuilds.Add(build4); // act var messages = new NotificationFactory(_allowAllConfiguration, _userIdentityList).ProduceNotifications(delta); // assert var message = messages.First(); Assert.Equal(message.ContentTextId, BuildNotification.BuildsChangedTextId); }
public void BranchNamesShouldGetTruncated() { // arrange var build1 = CreateBuildNode(_ciDefinition, _longNameFeatureABranch, "1", BuildStatus.Failed); var build2 = CreateBuildNode(_mobileDefinition, _longNameFeatureBBranch, "2", BuildStatus.Failed); var build3 = CreateBuildNode(_nightlyDefinition, _longNameFeatureCBranch, "3", BuildStatus.Failed); var build4 = CreateBuildNode(_cloudDefinition, _longNameFeatureABranch, "4", BuildStatus.Failed); var delta = new BuildTreeBuildsDelta(); delta.FailedBuilds.Add(build1); delta.FailedBuilds.Add(build2); delta.FailedBuilds.Add(build3); delta.FailedBuilds.Add(build4); // act var messages = new NotificationFactory(_allowAllConfiguration, _userIdentityList).ProduceNotifications(delta); // assert var message = messages.First(); Assert.Equal(message.ContentTextId, BranchNotification.ThreeBranchesChangedTextId); Assert.False(message.DisplayContent.Contains(LongFeatureNameBase, StringComparison.Ordinal)); }