Index: Core/Common/src/Core.Common.Base/Storage/MigrationRequired.cs =================================================================== diff -u -r3d088548dfdebfd5c3adbbd67075b42e134f5c03 -r98cf6c4d8b075673ed441617ae8179914e3eab67 --- Core/Common/src/Core.Common.Base/Storage/MigrationRequired.cs (.../MigrationRequired.cs) (revision 3d088548dfdebfd5c3adbbd67075b42e134f5c03) +++ Core/Common/src/Core.Common.Base/Storage/MigrationRequired.cs (.../MigrationRequired.cs) (revision 98cf6c4d8b075673ed441617ae8179914e3eab67) @@ -39,6 +39,11 @@ /// /// Migration workflow aborted. /// - Aborted + Aborted, + + /// + /// Migration workflow failed. + /// + Failed } } \ No newline at end of file Index: Core/Gui/src/Core.Gui/Commands/StorageCommandHandler.cs =================================================================== diff -u -rf29cd4e0c4b452d785cae19cd258012978b25366 -r98cf6c4d8b075673ed441617ae8179914e3eab67 --- Core/Gui/src/Core.Gui/Commands/StorageCommandHandler.cs (.../StorageCommandHandler.cs) (revision f29cd4e0c4b452d785cae19cd258012978b25366) +++ Core/Gui/src/Core.Gui/Commands/StorageCommandHandler.cs (.../StorageCommandHandler.cs) (revision 98cf6c4d8b075673ed441617ae8179914e3eab67) @@ -111,31 +111,26 @@ } log.Info(Resources.Creating_new_project_started); - var errorOccurred = false; - IProject newProject = null; try { - newProject = projectFactory.CreateNewProject(); + IProject newProject = projectFactory.CreateNewProject(); + + if (newProject == null) + { + log.Info(Resources.StorageCommandHandler_NewProject_Creating_new_project_canceled); + return; + } + + projectOwner.SetProject(newProject, null); + log.Info(Resources.Creating_new_project_successful); } catch (ProjectFactoryException e) { log.Error(e.Message); + projectOwner.SetProject(null, null); log.Info(Resources.StorageCommandHandler_NewProject_Creating_new_project_failed); - errorOccurred = true; } - - if (newProject == null && !errorOccurred) - { - log.Info(Resources.StorageCommandHandler_NewProject_Creating_new_project_canceled); - } - - projectOwner.SetProject(newProject, null); - - if (newProject != null) - { - log.Info(Resources.Creating_new_project_successful); - } } public string GetExistingProjectFilePath() @@ -217,12 +212,20 @@ /// is not a valid project file. private bool OpenExistingProjectCore(string filePath) { - OpenProjectActivity.ProjectMigrationConstructionProperties migrationProperties; - if (PrepareProjectMigration(filePath, out migrationProperties) == MigrationRequired.Aborted) + MigrationRequired migrationRequired = PrepareProjectMigration( + filePath, out OpenProjectActivity.ProjectMigrationConstructionProperties migrationProperties); + + if (migrationRequired == MigrationRequired.Failed) { + projectOwner.SetProject(null, null); return false; } + if (migrationRequired == MigrationRequired.Aborted) + { + return false; + } + return MigrateAndOpenProject(filePath, migrationProperties); } Index: Core/Gui/src/Core.Gui/Forms/Main/MainWindow.xaml.cs =================================================================== diff -u -re3002162ba9aa7f50147c45c18ca1c34a49a7ff9 -r98cf6c4d8b075673ed441617ae8179914e3eab67 --- Core/Gui/src/Core.Gui/Forms/Main/MainWindow.xaml.cs (.../MainWindow.xaml.cs) (revision e3002162ba9aa7f50147c45c18ca1c34a49a7ff9) +++ Core/Gui/src/Core.Gui/Forms/Main/MainWindow.xaml.cs (.../MainWindow.xaml.cs) (revision 98cf6c4d8b075673ed441617ae8179914e3eab67) @@ -449,8 +449,8 @@ if (!string.IsNullOrEmpty(projectPath)) { commands.StorageCommands.OpenExistingProject(projectPath); - CloseBackstage(); } + CloseBackstage(); } private void CloseBackstage() Index: Core/Gui/test/Core.Gui.Test/Commands/StorageCommandHandlerTest.cs =================================================================== diff -u -rf29cd4e0c4b452d785cae19cd258012978b25366 -r98cf6c4d8b075673ed441617ae8179914e3eab67 --- Core/Gui/test/Core.Gui.Test/Commands/StorageCommandHandlerTest.cs (.../StorageCommandHandlerTest.cs) (revision f29cd4e0c4b452d785cae19cd258012978b25366) +++ Core/Gui/test/Core.Gui.Test/Commands/StorageCommandHandlerTest.cs (.../StorageCommandHandlerTest.cs) (revision 98cf6c4d8b075673ed441617ae8179914e3eab67) @@ -98,7 +98,6 @@ var projectOwner = mocks.StrictMock(); projectOwner.Stub(po => po.Project).Return(mocks.Stub()); projectOwner.Stub(po => po.ProjectFilePath).Return(null); - projectOwner.Expect(po => po.SetProject(null, null)); var projectFactory = mocks.StrictMock(); projectFactory.Stub(pf => pf.CreateNewProject()) @@ -377,7 +376,8 @@ var projectOwner = mocks.StrictMock(); projectOwner.Stub(po => po.Project).Return(project); - projectOwner.Expect(po => po.SetProject(project, null)) + projectOwner.Expect(po => po.SetProject(null, null)) + .IgnoreArguments() .Repeat.Never(); var inquiryHelper = mocks.Stub(); @@ -401,6 +401,48 @@ } [Test] + public void OpenExistingProject_ShouldMigrateFailed_SetProjectNullAndReturnsFalse() + { + // Setup + const string fileName = "newProject"; + var pathToSomeValidFile = $"C://folder/directory/{fileName}.rtd"; + + var projectStorage = mocks.StrictMock(); + + var projectMigrator = mocks.StrictMock(); + projectMigrator.Expect(pm => pm.ShouldMigrate(pathToSomeValidFile)).Return(MigrationRequired.Failed); + + var project = mocks.Stub(); + var projectFactory = mocks.StrictMock(); + projectFactory.Expect(pf => pf.CreateNewProject()) + .Return(project) + .Repeat.Never(); + + var projectOwner = mocks.StrictMock(); + projectOwner.Stub(po => po.Project).Return(project); + projectOwner.Expect(po => po.SetProject(null, null)); + + var inquiryHelper = mocks.Stub(); + var mainWindowController = mocks.Stub(); + mocks.ReplayAll(); + + var storageCommandHandler = new StorageCommandHandler( + projectStorage, + projectMigrator, + projectFactory, + projectOwner, + inquiryHelper, + mainWindowController); + + // Call + bool result = storageCommandHandler.OpenExistingProject(pathToSomeValidFile); + + // Assert + Assert.IsFalse(result); + mocks.VerifyAll(); + } + + [Test] public void OpenExistingProject_DetermineMigrationLocationButCancelled_LeaveCurrentProjectUnaffectedAndReturnsFalse() { // Setup @@ -418,9 +460,6 @@ var project = mocks.Stub(); var projectFactory = mocks.StrictMock(); - projectFactory.Expect(pf => pf.CreateNewProject()) - .Return(project) - .Repeat.Never(); var projectOwner = mocks.StrictMock(); projectOwner.Stub(po => po.Project).Return(project); Index: Riskeer/Migration/src/Riskeer.Migration/ProjectMigrator.cs =================================================================== diff -u -r5f408923a88c6207e2191d52faaebb856e0e2e7e -r98cf6c4d8b075673ed441617ae8179914e3eab67 --- Riskeer/Migration/src/Riskeer.Migration/ProjectMigrator.cs (.../ProjectMigrator.cs) (revision 5f408923a88c6207e2191d52faaebb856e0e2e7e) +++ Riskeer/Migration/src/Riskeer.Migration/ProjectMigrator.cs (.../ProjectMigrator.cs) (revision 98cf6c4d8b075673ed441617ae8179914e3eab67) @@ -96,7 +96,7 @@ string errorMessage = string.Format(MigrationCoreStorageResources.Migrate_From_Version_0_To_Version_1_Not_Supported, version, currentDatabaseVersion); log.Error(errorMessage); - return MigrationRequired.Aborted; + return MigrationRequired.Failed; } string query = string.Format(Resources.ProjectMigrator_Migrate_Outdated_project_file_update_to_current_version_0_inquire, Index: Riskeer/Migration/test/Riskeer.Migration.Test/ProjectMigratorTest.cs =================================================================== diff -u -r5f408923a88c6207e2191d52faaebb856e0e2e7e -r98cf6c4d8b075673ed441617ae8179914e3eab67 --- Riskeer/Migration/test/Riskeer.Migration.Test/ProjectMigratorTest.cs (.../ProjectMigratorTest.cs) (revision 5f408923a88c6207e2191d52faaebb856e0e2e7e) +++ Riskeer/Migration/test/Riskeer.Migration.Test/ProjectMigratorTest.cs (.../ProjectMigratorTest.cs) (revision 98cf6c4d8b075673ed441617ae8179914e3eab67) @@ -127,7 +127,7 @@ } [Test] - public void ShouldMigrate_OutdatedProjectUnsupported_ReturnsAbortedAndGeneratesLogMessages() + public void ShouldMigrate_OutdatedProjectUnsupported_ReturnsFailedAndGeneratesLogMessages() { // Setup var mocks = new MockRepository(); @@ -147,7 +147,7 @@ // Assert var expectedMessage = $"Het migreren van een projectbestand met versie '{fileVersion}' naar versie '{currentDatabaseVersion}' is niet ondersteund."; TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage); - Assert.AreEqual(MigrationRequired.Aborted, shouldMigrate); + Assert.AreEqual(MigrationRequired.Failed, shouldMigrate); mocks.VerifyAll(); }