Exemple #1
0
        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();
        }
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 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();
        }