private void when_deploy_a_snapshot_step() { act = () => { _deployer.Deploy(_step, _environmentId); }; context["and task executed successfully"] = () => { before = () => { _task = new TaskResource { State = TaskState.Success }; A.CallTo(() => _taskFactory.Create(A <SnapshotStep> ._, A <string> ._)).Returns(_task); A.CallTo(() => _taskWaiter.Wait(A <TaskResource> ._)).Returns(_task); }; it["should create a task"] = () => { A.CallTo(() => _taskFactory.Create(_step, _environmentId)).MustHaveHappened(); }; it["should wait for task to complete"] = () => { A.CallTo(() => _taskWaiter.Wait(_task)).MustHaveHappened(); }; }; context["and task failed to execute"] = () => { before = () => { A.CallTo(() => _taskFactory.Create(A <SnapshotStep> ._, A <string> ._)).Returns(null); var taskResource = new TaskResource { State = TaskState.Failed }; A.CallTo(() => _taskWaiter.Wait(A <TaskResource> ._)).Returns(taskResource); }; it["should throw index out of range exception"] = expect <IndexOutOfRangeException>(); }; }
public void Deploy(SnapshotStep step, string environmentId) { Log.Info($"Deployment step {step.Index} project {step.ProjectName} version {step.ReleaseVersion}. Started."); var task = _taskResources.Create(step, environmentId); task = _executedTaskResources.Wait(task); Log.Debug("Validating deployment task state.."); if (task.State != TaskState.Success) { var message = $"Deployment task for project {step.ProjectName} finished with {task.State} state."; throw new IndexOutOfRangeException(message); } Log.Info($"Deployment step {step.Index} project {step.ProjectName} version {step.ReleaseVersion}. Finished."); }