コード例 #1
0
ファイル: DeployServiceTests.cs プロジェクト: wurdum/deployer
        public void IfDeployThrowsExShouldBeHandled(DeployMode mode)
        {
            var cFactory = DefaultMocks.GetConfFactory();

            var validator = new Mock <IValidator>();

            validator.Setup(v => v.IsValidForInstall()).Returns(true);
            validator.Setup(v => v.IsValidForUpdate()).Returns(true);

            var correctDeployers = DefaultMocks.GetMockedDeployers(3).ToList();
            var deployersWithEx  = correctDeployers.ToList();
            var deployerWithEx   = new Mock <IDeployer>();

            deployerWithEx.Setup(d => d.Name).Returns(string.Format("deployer-{0}", 4));
            deployerWithEx.Setup(d => d.Install()).Throws(new DeployException("deploy ex install"));
            deployerWithEx.Setup(d => d.Update()).Throws(new DeployException("deploy ex update"));
            deployersWithEx.Add(deployerWithEx);

            var settingsMock = new Mock <IConf>();

            settingsMock.Setup(s => s.SurveyPath).Returns(new SurveyPaths(_surveyPath, null));
            settingsMock.Setup(s => s.Survey).Returns(new Survey(null, null, mode));
            settingsMock.Setup(s => s.PackageManager).Returns(new PackageManagerStub());

            var dsFactory = DefaultMocks.GetServiceFactory(mode);

            dsFactory.Setup(f => f.CreateDeployExHandlerObj(It.IsAny <IDeployEvents>(), It.IsAny <IConf>(), It.IsAny <IServiceLogger>(), It.IsAny <ISession>()))
            .Returns(new DeployExceptionHandlerStub());
            dsFactory.Setup(f => f.CreateValidatorsList(It.IsAny <IConf>())).Returns(new List <IValidator> {
                validator.Object
            });
            dsFactory.Setup(f => f.CreateDeployersList(It.IsAny <IConf>())).Returns(deployersWithEx.Select(d => d.Object));

            using (var service = new DeployService(dsFactory.Object, cFactory.Object))
                ConsumeService(service, mode);

            if (mode == DeployMode.Install)
            {
                validator.Verify(v => v.IsValidForInstall(), Times.Once());
            }
            else
            {
                validator.Verify(v => v.IsValidForUpdate(), Times.Once());
            }

            foreach (var deployer in correctDeployers)
            {
                if (mode == DeployMode.Install)
                {
                    deployer.Verify(d => d.Install(), Times.Once());
                    deployer.Verify(d => d.InstallRollback(), Times.Once());
                }
                else
                {
                    deployer.Verify(d => d.Update(), Times.Once());
                    deployer.Verify(d => d.UpdateRollback(), Times.Once());
                }
            }
        }
コード例 #2
0
ファイル: DeployServiceTests.cs プロジェクト: wurdum/deployer
        public void ServiceShouldCallAllValidatorsAndDeployers(DeployMode mode)
        {
            var cFactory   = DefaultMocks.GetConfFactory();
            var validators = DefaultMocks.GetMockedValidators(3).ToList();
            var deployers  = DefaultMocks.GetMockedDeployers(3).ToList();
            var dsFactory  = DefaultMocks.GetServiceFactory(mode);

            dsFactory.Setup(f => f.CreateValidatorsList(It.IsAny <IConf>())).Returns(validators.Select(v => v.Object));
            dsFactory.Setup(f => f.CreateDeployersList(It.IsAny <IConf>())).Returns(deployers.Select(v => v.Object));

            using (var service = new DeployService(dsFactory.Object, cFactory.Object))
                ConsumeService(service, mode);

            foreach (var validator in validators)
            {
                if (mode == DeployMode.Install)
                {
                    validator.Verify(v => v.IsValidForInstall(), Times.Once());
                }
                else
                {
                    validator.Verify(v => v.IsValidForUpdate(), Times.Once());
                }
            }
            foreach (var deployer in deployers)
            {
                if (mode == DeployMode.Install)
                {
                    deployer.Verify(d => d.Install(), Times.Once());
                }
                else
                {
                    deployer.Verify(d => d.Update(), Times.Once());
                }
            }
        }