public void Run_UnstagedProject_StageAndSaveProjectWithoutAdditionalLogMessages(bool saveExistingProject) { // Setup const string filePath = "A"; var mocks = new MockRepository(); var project = mocks.Stub <IProject>(); var projectOwner = mocks.Stub <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)); } mocks.ReplayAll(); var activity = new SaveProjectActivity(project, filePath, saveExistingProject, storeProject, projectOwner); // Call Action call = () => activity.Run(); // Assert string prefix = saveExistingProject ? "bestaand " : ""; TestHelper.AssertLogMessageIsGenerated(call, $"Opslaan van {prefix}project is gestart.", 1); Assert.AreEqual(ActivityState.Executed, 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 Finish_SuccessfullySavedNewProject_ExpectedProgressMessages(bool hasStagedProject) { // Setup const string fileName = "A"; string filePath = $@"C:\\folder\{fileName}.rtd"; var mocks = new MockRepository(); var project = mocks.Stub <IProject>(); var storeProject = mocks.Stub <IStoreProject>(); storeProject.Stub(sp => sp.HasStagedProject).Return(hasStagedProject); storeProject.Stub(sp => sp.StageProject(project)); storeProject.Stub(sp => sp.SaveProjectAs(filePath)); var projectOwner = mocks.Stub <IProjectOwner>(); mocks.ReplayAll(); var activity = new SaveProjectActivity(project, filePath, false, storeProject, projectOwner); activity.Run(); // Precondition Assert.AreEqual(ActivityState.Executed, activity.State); var progressMessages = new List <string>(); activity.ProgressChanged += (sender, args) => { Assert.AreSame(activity, sender); Assert.AreEqual(EventArgs.Empty, args); progressMessages.Add(activity.ProgressText); }; // Call activity.Finish(); // Assert int totalSteps = hasStagedProject ? 2 : 3; string[] expectedProgressMessages = { $"Stap {totalSteps} van {totalSteps} | Initialiseren van opgeslagen project" }; CollectionAssert.AreEqual(expectedProgressMessages, progressMessages); 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(); }
public void Run_UnstagedProject_ExpectedProgressMessages(bool saveExistingProject) { // Setup const string filePath = "A"; var mocks = new MockRepository(); var project = mocks.Stub <IProject>(); var projectOwner = mocks.Stub <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)); } mocks.ReplayAll(); var progressMessages = new List <string>(); var activity = new SaveProjectActivity(project, filePath, saveExistingProject, storeProject, projectOwner); activity.ProgressChanged += (sender, args) => { Assert.AreSame(activity, sender); Assert.AreEqual(EventArgs.Empty, args); progressMessages.Add(activity.ProgressText); }; // Call activity.Run(); // Assert int totalSteps = saveExistingProject ? 2 : 3; string[] expectedProgressMessages = { $"Stap 1 van {totalSteps} | Voorbereidingen opslaan", $"Stap 2 van {totalSteps} | Project opslaan" }; CollectionAssert.AreEqual(expectedProgressMessages, progressMessages); mocks.VerifyAll(); }
public void GivenSaveProjectActivityAndSuccessfullySavedNewProject_WhenFinishingSaveProjectActivity_ThenUpdateProjectAndProjectOwnerWithMessage() { // Given const string fileName = "A"; string filePath = $@"C:\\folder\{fileName}.rtd"; var mocks = new MockRepository(); var storeProject = mocks.Stub <IStoreProject>(); var project = mocks.Stub <IProject>(); project.Expect(p => p.NotifyObservers()); var projectOwner = mocks.StrictMock <IProjectOwner>(); projectOwner.Expect(po => po.SetProject(project, filePath)); mocks.ReplayAll(); var activity = new SaveProjectActivity(project, filePath, false, storeProject, projectOwner); activity.Run(); // Precondition Assert.AreEqual(ActivityState.Executed, activity.State); // When Action call = () => { activity.LogState(); activity.Finish(); }; // Then Tuple <string, LogLevelConstant> expectedMessage = Tuple.Create("Opslaan van project is gelukt.", LogLevelConstant.Info); TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedMessage, 1); Assert.AreEqual(ActivityState.Finished, activity.State); Assert.AreEqual(fileName, project.Name); mocks.VerifyAll(); }