Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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();
        }