public void GivenSaveProjectActivityAndSuccessfullySavedExistingProject_WhenFinishingSaveProjectActivity_ThenDoNotUpdateProjectAndProjectOwnerWithMessage() { // Given const string fileName = "A"; string filePath = $@"C:\\folder\{fileName}.rtd"; var mocks = new MockRepository(); var storeProject = mocks.Stub <IStoreProject>(); var project = mocks.StrictMock <IProject>(); var projectOwner = mocks.StrictMock <IProjectOwner>(); mocks.ReplayAll(); var activity = new SaveProjectActivity(project, filePath, true, storeProject, projectOwner); activity.Run(); // Precondition Assert.AreEqual(ActivityState.Executed, activity.State); // When Action call = () => { activity.LogState(); activity.Finish(); }; // Assert Tuple <string, LogLevelConstant> expectedMessage = Tuple.Create("Opslaan van bestaand project is gelukt.", LogLevelConstant.Info); TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedMessage, 1); Assert.AreEqual(ActivityState.Finished, activity.State); mocks.VerifyAll(); }
public void GivenActivitySavingStagedProject_WhenCancelling_ThenProjectSavedWithAdditionalLogMessage(bool saveExistingProject) { // Given const string filePath = "A"; var mocks = new MockRepository(); var project = mocks.Stub <IProject>(); var projectOwner = mocks.Stub <IProjectOwner>(); if (!saveExistingProject) { projectOwner.Expect(po => po.SetProject(project, filePath)); } var storeProject = mocks.StrictMock <IStoreProject>(); storeProject.Stub(sp => sp.HasStagedProject) .Return(true); storeProject.Expect(sp => sp.SaveProjectAs(filePath)); mocks.ReplayAll(); var calledCancel = false; var activity = new SaveProjectActivity(project, filePath, saveExistingProject, storeProject, projectOwner); activity.ProgressChanged += (sender, args) => { if (calledCancel) { activity.Cancel(); calledCancel = true; } }; // When Action call = () => { activity.Run(); // Cancel called mid-progress but beyond 'point of no return' activity.LogState(); activity.Finish(); }; // Then string prefix = saveExistingProject ? "bestaand " : ""; TestHelper.AssertLogMessagesWithLevelAreGenerated(call, new[] { Tuple.Create($"Opslaan van {prefix}project is gestart.", LogLevelConstant.Info), Tuple.Create($"Opslaan van {prefix}project is gelukt.", LogLevelConstant.Info) }, 2); Assert.AreEqual(ActivityState.Finished, activity.State); mocks.VerifyAll(); }
public void GivenActivityStagingProject_WhenCancelling_ThenProjectNotSavedWithAdditionalLogMessages(bool saveExistingProject) { // Given const string filePath = "A"; var mocks = new MockRepository(); var project = mocks.Stub <IProject>(); var projectOwner = mocks.StrictMock <IProjectOwner>(); var storeProject = mocks.StrictMock <IStoreProject>(); storeProject.Stub(sp => sp.HasStagedProject) .Return(false); using (mocks.Ordered()) { storeProject.Expect(sp => sp.StageProject(project)); storeProject.Expect(sp => sp.SaveProjectAs(filePath)) .Repeat.Never(); } mocks.ReplayAll(); var activity = new SaveProjectActivity(project, filePath, saveExistingProject, storeProject, projectOwner); activity.ProgressChanged += (sender, args) => activity.Cancel(); // When Action call = () => { activity.Run(); // Cancel called mid-progress activity.LogState(); activity.Finish(); }; // Then string prefix = saveExistingProject ? "bestaand " : ""; TestHelper.AssertLogMessagesWithLevelAreGenerated(call, new[] { Tuple.Create($"Opslaan van {prefix}project is gestart.", LogLevelConstant.Info), Tuple.Create($"Opslaan van {prefix}project is geannuleerd.", LogLevelConstant.Warn) }, 2); Assert.AreEqual(ActivityState.Canceled, activity.State); mocks.VerifyAll(); }