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();
}