Пример #1
0
        public void Deployer_should_pass_build_status_to_mapping_processor()
        {
            // Arrange
            BuildDetail buildDetail = null;

            var statusChanged = new BuildStatusChangeEvent {
                StatusChange = new Change()
            };
            var reader = MockRepository.GenerateStub <IConfigurationReader>();

            var tfsBuildDetail = new StubBuildDetail {
                Status = Microsoft.TeamFoundation.Build.Client.BuildStatus.PartiallySucceeded
            };
            var buildServer = MockRepository.GenerateStub <IBuildServer>();

            buildServer.Stub(o => o.GetBuild(null, null, null, QueryOptions.None))
            .IgnoreArguments()
            .Return(tfsBuildDetail);

            var mappingProcessor = MockRepository.GenerateStub <IMappingProcessor>();

            mappingProcessor.Stub(o => o.ProcessMappings(null, null, null, null, 0))
            .IgnoreArguments()
            .WhenCalled(m => buildDetail = (BuildDetail)m.Arguments[2]);

            Func <BuildDetail, IBuildDetail, IPostDeployAction> postDeployActionFactory = (a, b) => MockRepository.GenerateStub <IPostDeployAction>();

            var deployer = new Deployer(reader, buildServer, mappingProcessor, postDeployActionFactory);

            // Act
            deployer.ExecuteDeploymentProcess(statusChanged, 0);

            // Assert
            Assert.AreEqual(global::TfsDeployer.TeamFoundation.BuildStatus.PartiallySucceeded, buildDetail.Status);
        }
Пример #2
0
        public void Deployer_should_pass_build_definition_name_to_configuration_reader()
        {
            // Arrange
            BuildDetail buildDetail = null;

            var statusChanged = new BuildStatusChangeEvent {
                StatusChange = new Change()
            };
            var mappingProcessor = MockRepository.GenerateStub <IMappingProcessor>();

            var tfsBuildDetail = new StubBuildDetail {
                BuildDefinition = { Name = "foo" }
            };
            var buildServer = MockRepository.GenerateStub <IBuildServer>();

            buildServer.Stub(o => o.GetBuild(null, null, null, QueryOptions.None))
            .IgnoreArguments()
            .Return(tfsBuildDetail);

            var reader = MockRepository.GenerateStub <IConfigurationReader>();

            reader.Stub(o => o.ReadMappings(Arg <BuildDetail> .Is.Anything)).WhenCalled(m => buildDetail = (BuildDetail)m.Arguments[0]);

            Func <BuildDetail, IBuildDetail, IPostDeployAction> postDeployActionFactory = (a, b) => MockRepository.GenerateStub <IPostDeployAction>();

            var deployer = new Deployer(reader, buildServer, mappingProcessor, postDeployActionFactory);

            // Act
            deployer.ExecuteDeploymentProcess(statusChanged, 0);

            // Assert
            Assert.AreEqual("foo", buildDetail.BuildDefinition.Name);
        }
Пример #3
0
        public void PostDeployAction_should_set_KeepForever_and_save_build_when_RetainBuild_is_specified()
        {
            // Arrange
            var alert       = MockRepository.GenerateStub <IAlert>();
            var buildServer = MockRepository.GenerateStub <IBuildServer>();

            var buildDetail = new BuildDetail();

            var tfsBuildDetail = new StubBuildDetail();

            ((IBuildDetail)tfsBuildDetail).KeepForever = false;
            buildServer.Stub(o => o.GetBuild(null, null, null, QueryOptions.None))
            .IgnoreArguments()
            .Return(tfsBuildDetail);

            var mapping = new Mapping {
                RetainBuildSpecified = true, RetainBuild = true
            };

            var result = new DeployAgentResult {
                HasErrors = false, Output = string.Empty
            };

            var postDeployAction = new PostDeployAction(buildDetail, tfsBuildDetail, alert);

            // Act
            postDeployAction.DeploymentFinished(mapping, result);

            // Assert
            Assert.AreEqual(true, ((IBuildDetail)tfsBuildDetail).KeepForever, "KeepForever");
            Assert.AreEqual(1, tfsBuildDetail.SaveCount, "Save()");
        }
Пример #4
0
        public void Deployer_should_pass_event_id_to_mapping_processor()
        {
            // Arrange
            const int eventId = 11;

            var statusChanged = new BuildStatusChangeEvent {
                StatusChange = new Change()
            };
            var reader = MockRepository.GenerateStub <IConfigurationReader>();

            var tfsBuildDetail = new StubBuildDetail {
                Status = Microsoft.TeamFoundation.Build.Client.BuildStatus.PartiallySucceeded
            };
            var buildServer = MockRepository.GenerateStub <IBuildServer>();

            buildServer.Stub(o => o.GetBuild(null, null, null, QueryOptions.None))
            .IgnoreArguments()
            .Return(tfsBuildDetail);

            var mappingProcessor = MockRepository.GenerateStub <IMappingProcessor>();

            Func <BuildDetail, IBuildDetail, IPostDeployAction> postDeployActionFactory = (a, b) => MockRepository.GenerateStub <IPostDeployAction>();

            var deployer = new Deployer(reader, buildServer, mappingProcessor, postDeployActionFactory);

            // Act
            deployer.ExecuteDeploymentProcess(statusChanged, eventId);

            // Assert
            mappingProcessor.AssertWasCalled(o => o.ProcessMappings(
                                                 Arg <IEnumerable <Mapping> > .Is.Anything,
                                                 Arg <BuildStatusChangeEvent> .Is.Anything,
                                                 Arg <BuildDetail> .Is.Anything,
                                                 Arg <IPostDeployAction> .Is.Anything,
                                                 Arg <int> .Is.Equal(eventId)
                                                 ));
        }