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()); } } }
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()); } } }