private void when_validate_a_snapshot_step() { act = () => { _actualResult = _validator.Validate(_snapshotStep, "Environment01"); }; context["the step already exists and successfully deployed"] = () => { before = () => { _snapshotStep = new SnapshotStep { ProjectId = "Project01.1", ReleaseId = "Release01.1" }; }; it["should be resolved as valid"] = () => { _actualResult.should_be_false(); }; }; context["the step already exists and failed to deploy"] = () => { before = () => { _snapshotStep = new SnapshotStep { ProjectId = "Project01.2", ReleaseId = "Release01.2" }; }; it["should be resolved as invalid"] = () => { _actualResult.should_be_true(); }; }; context["the step does not exist"] = () => { before = () => { _snapshotStep = new SnapshotStep { ProjectId = "SomeName", ReleaseId = "SomeRelease" }; }; it["should be resolved as invalid"] = () => { _actualResult.should_be_true(); }; }; }
public void Deploy(Snapshot snapshot) { Log.Info($"Snapshot deployment to {_environment.Name} started."); var environmentId = _environment.Id; foreach (var step in snapshot.Steps.OrderBy(x => x.Index)) { var valid = _steps.Validate(step, environmentId); if (valid) { _stepDeployer.Deploy(step, environmentId); } else { Log.Info( $"Deployment step {step.Index} project {step.ProjectName} version {step.ReleaseVersion}. Already deployed. Skipping."); } } Log.Info($"Snapshot deployment to {_environment.Name} finished."); }
private void when_deploy_a_snapshot() { act = () => _deployer.Deploy(_snapshot); context["with a step"] = () => { before = () => { _snapshotStep1 = new SnapshotStep { ProjectId = "Project01", ReleaseId = "Release01" }; _snapshot.Steps = new[] { _snapshotStep1 }; A.CallTo(() => _stepDeployer.Deploy(_snapshotStep1, _environment.Id)).DoesNothing(); A.CallTo(() => _validator.Validate(_snapshotStep1, _environment.Id)).Returns(true); }; it["should deploy the step"] = () => { var step = _snapshotStep1; A.CallTo(() => _stepDeployer.Deploy(step, A <string> ._)).MustHaveHappened(); }; it["should deploy to a configured environment"] = () => { var id = _environment.Id; A.CallTo(() => _stepDeployer.Deploy(A <SnapshotStep> ._, id)).MustHaveHappened(); }; }; context["with two steps"] = () => { before = () => { _snapshotStep1 = new SnapshotStep { Index = 1, ProjectId = "Project01", ReleaseId = "Release01" }; _snapshotStep2 = new SnapshotStep { Index = 2, ProjectId = "Project02", ReleaseId = "Release02" }; _snapshot.Steps = new[] { _snapshotStep2, _snapshotStep1 }; A.CallTo(() => _validator.Validate(A <SnapshotStep> ._, _environment.Id)).Returns(true); A.CallTo(() => _stepDeployer.Deploy(A <SnapshotStep> ._, _environment.Id)).DoesNothing(); }; it["should deploy in correct order"] = () => { var id = _environment.Id; A.CallTo(() => _stepDeployer.Deploy(_snapshotStep1, id)).MustHaveHappened() .Then(A.CallTo(() => _stepDeployer.Deploy(_snapshotStep2, id)).MustHaveHappened()); }; }; context["with a step is not valid"] = () => { before = () => { _snapshotStep1 = new SnapshotStep { Index = 1, ProjectId = "Project01", ReleaseId = "Release01" }; _snapshot.Steps = new[] { _snapshotStep1 }; A.CallTo(() => _validator.Validate(A <SnapshotStep> ._, _environment.Id)).Returns(false); A.CallTo(() => _stepDeployer.Deploy(A <SnapshotStep> ._, _environment.Id)).DoesNothing(); }; it["should skip the step"] = () => { A.CallTo(() => _stepDeployer.Deploy(_snapshotStep1, _environment.Id)).MustNotHaveHappened(); }; }; }