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));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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));
        }