public void Given172Project_WhenUpgradedTo173_ThenProjectAsExpected()
        {
            // Given
            string sourceFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Migration.Core,
                                                               "MigrationTestProject172.rtd");
            var fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Given172Project_WhenUpgradedTo173_ThenProjectAsExpected));
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(nameof(Given172Project_WhenUpgradedTo173_ThenProjectAsExpected), ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(logFilePath))
                using (new FileDisposeHelper(targetFilePath))
                {
                    // When
                    migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                    // Then
                    using (var reader = new MigratedDatabaseReader(targetFilePath))
                    {
                        AssertTablesContentMigrated(reader, sourceFilePath);

                        AssertVersions(reader);
                        AssertDatabase(reader);

                        AssertMacroStabilityInwardsOutput(reader);
                    }

                    AssertLogDatabase(logFilePath);
                }
        }
Пример #2
0
        private bool MigrateToTargetLocation(string sourceFilePath, string targetLocation)
        {
            if (!CreateInitializedDatabaseLogFile())
            {
                return(false);
            }

            try
            {
                var versionedFile = new ProjectVersionedFile(sourceFilePath);
                fileMigrator.Migrate(versionedFile, currentDatabaseVersion, targetLocation);
                string message = string.Format(Resources.ProjectMigrator_MigrateToTargetLocation_Outdated_projectfile_0_succesfully_updated_to_target_filepath_1_version_2_,
                                               sourceFilePath, targetLocation, currentDatabaseVersion);
                log.Info(message);

                LogMigrationMessages();

                return(true);
            }
            catch (CriticalMigrationException e)
            {
                string errorMessage = string.Format(Resources.ProjectMigrator_MigrateToTargetLocation_Updating_outdated_projectfile_0_failed_with_exception_1_,
                                                    sourceFilePath, e.Message);
                log.Error(errorMessage, e);
                return(false);
            }
            finally
            {
                TryCleanupDatabaseLogFile();
            }
        }
Пример #3
0
        public void Migrate_ValidFilesWithLogFile_SavesFileAtNewLocation()
        {
            // Setup
            const string newVersion        = "17.1";
            string       sourceFilePath    = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var          fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Migrate_ValidFilesWithLogFile_SavesFileAtNewLocation));
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(nameof(Migrate_ValidFilesWithLogFile_SavesFileAtNewLocation), ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(logFilePath))
                using (new FileDisposeHelper(targetFilePath))
                {
                    // Call
                    migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                    // Assert
                    var toVersionedFile = new ProjectVersionedFile(targetFilePath);
                    Assert.AreEqual(newVersion, toVersionedFile.GetVersion());
                }
        }
Пример #4
0
        public void Migrate_TargetFileNotWritable_ThrowsCriticalDatabaseMigrationException()
        {
            // Setup
            const string newVersion        = "17.1";
            string       sourceFilePath    = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var          fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Migrate_TargetFileNotWritable_ThrowsCriticalDatabaseMigrationException));
            var    migrator       = new ProjectFileMigrator();

            using (new FileDisposeHelper(targetFilePath))
            {
                FileAttributes attributes = File.GetAttributes(targetFilePath);
                File.SetAttributes(targetFilePath, attributes | FileAttributes.ReadOnly);

                try
                {
                    // Call
                    TestDelegate call = () => migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                    // Assert
                    var exception = Assert.Throws <CriticalMigrationException>(call);
                    StringAssert.StartsWith("Het gemigreerde projectbestand is aangemaakt op '",
                                            exception.Message);
                    StringAssert.EndsWith($"', maar er is een onverwachte fout opgetreden tijdens het verplaatsen naar '{targetFilePath}'.",
                                          exception.Message);
                    Assert.IsInstanceOf <UnauthorizedAccessException>(exception.InnerException);
                }
                finally
                {
                    File.SetAttributes(targetFilePath, attributes);
                }
            }
        }
        public void GivenConsole_WhenMigrateCalledWithArguments_MigratesToNewVersion()
        {
            // Given
            string sourceFilePath  = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            string targetFilePath  = TestHelper.GetScratchPadPath($"{nameof(RiskeerMigrationConsoleTest)}.{nameof(GivenConsole_WhenMigrateCalledWithArguments_MigratesToNewVersion)}");
            var    console         = new RiskeerMigrationConsole();
            string expectedVersion = ProjectVersionHelper.GetCurrentDatabaseVersion();

            using (new FileDisposeHelper(targetFilePath))
            {
                using (var consoleOutput = new ConsoleOutput())
                {
                    // When
                    console.ExecuteConsoleTool(new[]
                    {
                        sourceFilePath,
                        targetFilePath
                    });

                    // Then
                    string expected = Environment.NewLine
                                      + $"Het projectbestand '{sourceFilePath}' is succesvol gemigreerd naar '{targetFilePath}' (versie {expectedVersion})."
                                      + Environment.NewLine;
                    string consoleText = consoleOutput.GetConsoleOutput();
                    Assert.AreEqual(expected, consoleText);

                    var toVersionedFile = new ProjectVersionedFile(targetFilePath);
                    Assert.AreEqual(expectedVersion, toVersionedFile.GetVersion());
                }
            }

            Assert.AreEqual(ErrorCode.ErrorSuccess, environmentControl.ErrorCodeCalled);
        }
Пример #6
0
        public void ShouldMigrate_OutdatedProjectUnsupported_ReturnsNotSupportedAndGeneratesLogMessages()
        {
            // Setup
            var mocks         = new MockRepository();
            var inquiryHelper = mocks.Stub <IInquiryHelper>();

            mocks.ReplayAll();

            string sourceFilePath = ProjectMigrationTestHelper.GetOutdatedUnSupportedProjectFilePath();
            var    versionedFile  = new ProjectVersionedFile(sourceFilePath);
            string fileVersion    = versionedFile.GetVersion();

            var migrator      = new ProjectMigrator(inquiryHelper);
            var shouldMigrate = MigrationRequired.Yes;

            // Call
            void Call() => shouldMigrate = migrator.ShouldMigrate(sourceFilePath);

            // Assert
            var expectedMessage = $"Het migreren van een projectbestand met versie '{fileVersion}' naar versie '{currentDatabaseVersion}' is niet ondersteund.";

            TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage);
            Assert.AreEqual(MigrationRequired.NotSupported, shouldMigrate);

            mocks.VerifyAll();
        }
Пример #7
0
        private static void MigrateFile(string sourceFilePath, string targetFilePath)
        {
            string newVersion        = ProjectVersionHelper.GetCurrentDatabaseVersion();
            var    fromVersionedFile = new ProjectVersionedFile(sourceFilePath);
            var    migrator          = new ProjectFileMigrator();

            migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);
        }
Пример #8
0
        private static void MigrateCommand(string filePath, string toFilePath)
        {
            ValidateMigrationArguments(filePath, toFilePath);
            var migrator   = new ProjectFileMigrator();
            var sourceFile = new ProjectVersionedFile(filePath);

            migrator.Migrate(sourceFile, currentDatabaseVersion, toFilePath);
            System.Console.WriteLine(Resources.CommandMigrate_Successful_Migration_From_Location_0_To_Location_1_Version_2,
                                     filePath, toFilePath, currentDatabaseVersion);
        }
Пример #9
0
        public void Constructor_ValidfilePath_ExpectedProperties()
        {
            // Setup
            string filePath = TestHelper.GetTestDataPath(nameof(Constructor_ValidfilePath_ExpectedProperties));

            // Call
            var versionedFile = new ProjectVersionedFile(filePath);

            // Assert
            Assert.AreEqual(filePath, versionedFile.Location);
        }
Пример #10
0
        public void GetVersion_ParameteredConstructor_ExpectedProperties(string file, string expectedVersion)
        {
            // Setup
            string filePath   = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Migration.Core, file);
            var    sourceFile = new ProjectVersionedFile(filePath);

            // Call
            string version = sourceFile.GetVersion();

            // Assert
            Assert.AreEqual(expectedVersion, version);
        }
Пример #11
0
        public void NeedsMigrate_NeedsMigrate_ReturnsTrue()
        {
            // Setup
            string sourceFilePath = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var    versionedFile  = new ProjectVersionedFile(sourceFilePath);
            var    migrator       = new ProjectFileMigrator();

            // Call
            bool needsMigrate = migrator.NeedsMigrate(versionedFile, "17.1");

            // Assert
            Assert.IsTrue(needsMigrate);
        }
Пример #12
0
        public void Given164Project_WhenUpgradedTo171_ThenProjectAsExpected()
        {
            // Given
            string sourceFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Migration.Core,
                                                               "MigrationTestProject164.rtd");
            var fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Given164Project_WhenUpgradedTo171_ThenProjectAsExpected));
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(nameof(Given164Project_WhenUpgradedTo171_ThenProjectAsExpected), ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(logFilePath))
                using (new FileDisposeHelper(targetFilePath))
                {
                    // When
                    migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                    // Then
                    using (var reader = new MigratedDatabaseReader(targetFilePath))
                    {
                        AssertTablesContentMigrated(reader, sourceFilePath);

                        AssertDuneErosionFailureMechanism(reader);
                        AssertClosingStructuresFailureMechanism(reader, sourceFilePath);
                        AssertGrassCoverErosionInwardsFailureMechanism(reader);
                        AssertGrassCoverErosionOutwardsFailureMechanism(reader);
                        AssertHeightStructuresFailureMechanism(reader);
                        AssertPipingFailureMechanism(reader);
                        AssertStabilityPointStructuresFailureMechanism(reader);
                        AssertStabilityStoneCoverFailureMechanism(reader);
                        AssertWaveImpactAsphaltCoverFailureMechanism(reader);

                        AssertHydraulicBoundaryLocations(reader);
                        AssertDikeProfiles(reader);
                        AssertForeshoreProfiles(reader);
                        AssertStochasticSoilModels(reader);
                        AssertSurfaceLines(reader);
                        AssertSoilLayers(reader, sourceFilePath);
                        AssertBackgroundData(reader);

                        AssertVersions(reader);
                        AssertDatabase(reader);
                    }

                    AssertLogDatabase(logFilePath);
                }
        }
        private static IEnumerable <TestCaseData> ProjectFilesToMigrate()
        {
            string unsupportedProjectFilePath = ProjectMigrationTestHelper.GetOutdatedUnSupportedProjectFilePath();
            var    unsupportedVersionedFile   = new ProjectVersionedFile(unsupportedProjectFilePath);
            string unsupportedVersion         = unsupportedVersionedFile.GetVersion();

            string supportedProjectFilePath = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var    supportedVersionedFile   = new ProjectVersionedFile(supportedProjectFilePath);
            string supportedVersion         = supportedVersionedFile.GetVersion();

            yield return(new TestCaseData(unsupportedProjectFilePath, unsupportedVersion, false).SetName("UnsupportedProjectVersion"));

            yield return(new TestCaseData(supportedProjectFilePath, supportedVersion, true).SetName("SupportedProjectVersion"));
        }
Пример #14
0
        public void GetVersion_FileDoesNotExist_ThrowsCriticalFileReadException()
        {
            // Setup
            string filePath = TestHelper.GetTestDataPath(nameof(GetVersion_FileDoesNotExist_ThrowsCriticalFileReadException));

            var sourceFile = new ProjectVersionedFile(filePath);

            // Precondition
            Assert.IsFalse(File.Exists(filePath), $"File should not exist at location '{filePath}'");

            // Call
            TestDelegate call = () => sourceFile.GetVersion();

            // Assert
            Assert.Throws <CriticalFileReadException>(call);
        }
Пример #15
0
        public void Migrate_UnsupportedVersion_ThrowsCriticalDatabaseMigrationException()
        {
            // Setup
            string sourceFilePath    = ProjectMigrationTestHelper.GetOutdatedUnSupportedProjectFilePath();
            var    fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Migrate_UnsupportedVersion_ThrowsCriticalDatabaseMigrationException));
            var    migrator       = new ProjectFileMigrator();

            // Call
            TestDelegate call = () => migrator.Migrate(fromVersionedFile, "17.1", targetFilePath);

            // Assert
            string message = Assert.Throws <CriticalMigrationException>(call).Message;

            Assert.AreEqual("Het migreren van een projectbestand met versie '8' naar versie '17.1' is niet ondersteund.", message);
        }
Пример #16
0
        public void Migrate_TargetFilePathEqualsSourcePath_ThrowsCriticalDatabaseMigrationException()
        {
            // Setup
            const string newVersion        = "17.1";
            string       sourceFilePath    = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var          fromVersionedFile = new ProjectVersionedFile(sourceFilePath);
            var          migrator          = new ProjectFileMigrator();

            // Call
            TestDelegate call = () => migrator.Migrate(fromVersionedFile, newVersion, sourceFilePath);

            // Assert
            var exception = Assert.Throws <CriticalMigrationException>(call);

            Assert.AreEqual("Het doelprojectpad moet anders zijn dan het bronprojectpad.",
                            exception.Message);
        }
Пример #17
0
        public void GetVersion_FileCannotBeRead_ThrowsCriticalFileReadException()
        {
            // Setup
            string file     = Path.GetRandomFileName();
            string filePath = TestHelper.GetScratchPadPath(file);

            var sourceFile = new ProjectVersionedFile(filePath);

            using (var fileDisposeHelper = new FileDisposeHelper(filePath))
            {
                fileDisposeHelper.LockFiles();

                // Call
                TestDelegate call = () => sourceFile.GetVersion();

                // Assert
                Assert.Throws <CriticalFileReadException>(call);
            }
        }
Пример #18
0
        private static void IsVersionSupportedCommand(string location)
        {
            ValidateIsVersionSupportedArgument(location);

            var    versionedFile = new ProjectVersionedFile(location);
            var    migrator      = new ProjectFileMigrator();
            string version       = versionedFile.GetVersion();

            bool isSupported = migrator.IsVersionSupported(version);

            if (isSupported)
            {
                System.Console.WriteLine(Resources.CommandSupported_File_Able_To_Migrate_To_Version_0, currentDatabaseVersion);
            }
            else
            {
                ConsoleHelper.WriteErrorLine(MigrationCoreStorageResources.Migrate_From_Version_0_To_Version_1_Not_Supported,
                                             version, currentDatabaseVersion);
            }
        }
Пример #19
0
        public void GivenProject_WhenSpecialCharacterInPath_DoesNotThrowException(string sourceFile,
                                                                                  string newVersion)
        {
            // Given
            string fileToCopy     = Path.Combine(testDataPath, sourceFile);
            string sourceFilePath = TestHelper.GetScratchPadPath($"\'[]!`~@#$%^€&()-_=+;, {sourceFile}");

            File.Copy(fileToCopy, sourceFilePath, true);

            // Precondition
            Assert.IsTrue(File.Exists(sourceFilePath));
            var fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string name           = $"{nameof(GivenProject_WhenSpecialCharacterInPath_DoesNotThrowException)} \'[]!`~@#$%^€&()-_=+;,";
            string targetFilePath = TestHelper.GetScratchPadPath(name);
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(name, sourceFile, ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            try
            {
                using (new FileDisposeHelper(logFilePath))
                    using (new FileDisposeHelper(targetFilePath))
                    {
                        // When
                        TestDelegate call = () => migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                        // Then
                        Assert.DoesNotThrow(call);
                    }
            }
            finally
            {
                File.Delete(sourceFilePath);
            }
        }
Пример #20
0
        public void Migrate_ValidFilesWithNonExistingLogFile_ThrowsCriticalDatabaseMigrationException()
        {
            // Setup
            const string newVersion        = "17.1";
            string       sourceFilePath    = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var          fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Migrate_ValidFilesWithNonExistingLogFile_ThrowsCriticalDatabaseMigrationException));
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(nameof(Migrate_ValidFilesWithNonExistingLogFile_ThrowsCriticalDatabaseMigrationException), ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(targetFilePath))
            {
                // Call
                TestDelegate call = () => migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                // Assert
                var exception = Assert.Throws <CriticalMigrationException>(call);
                Assert.IsInstanceOf <SQLiteException>(exception.InnerException);
            }
        }
Пример #21
0
        public MigrationRequired ShouldMigrate(string filePath)
        {
            if (filePath == null)
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            ValidateProjectPath(filePath, nameof(filePath), Resources.ProjectMigrator_Source_Descriptor);

            var    versionedFile = new ProjectVersionedFile(filePath);
            string version       = versionedFile.GetVersion();

            if (version.Equals(currentDatabaseVersion))
            {
                return(MigrationRequired.No);
            }

            if (!fileMigrator.IsVersionSupported(version))
            {
                string errorMessage = string.Format(MigrationCoreStorageResources.Migrate_From_Version_0_To_Version_1_Not_Supported,
                                                    version, currentDatabaseVersion);
                log.Error(errorMessage);
                return(MigrationRequired.NotSupported);
            }

            string query = string.Format(Resources.ProjectMigrator_Migrate_Outdated_project_file_update_to_current_version_0_inquire,
                                         currentDatabaseVersion);

            if (inquiryHelper.InquireContinuation(query))
            {
                return(MigrationRequired.Yes);
            }

            GenerateMigrationCancelledLogMessage(filePath);
            return(MigrationRequired.Aborted);
        }
Пример #22
0
        public void GivenEmpty164Project_WhenNoChangesMadeAndMigratingToLatestVersion_ThenLogDatabaseContainsMessagesSayingNoChangesMade()
        {
            // Given
            string sourceFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Migration.Core,
                                                               "Empty valid Release 16.4.rtd");
            var fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(
                nameof(GivenEmpty164Project_WhenNoChangesMadeAndMigratingToLatestVersion_ThenLogDatabaseContainsMessagesSayingNoChangesMade));
            string logFilePath = TestHelper.GetScratchPadPath(
                string.Concat(nameof(GivenEmpty164Project_WhenNoChangesMadeAndMigratingToLatestVersion_ThenLogDatabaseContainsMessagesSayingNoChangesMade), ".log"));
            var migrator = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(logFilePath))
                using (new FileDisposeHelper(targetFilePath))
                {
                    // When
                    migrator.Migrate(fromVersionedFile, latestVersion, targetFilePath);

                    using (var reader = new MigrationLogDatabaseReader(logFilePath))
                    {
                        ReadOnlyCollection <MigrationLogMessage> messages = reader.GetMigrationLogMessages();
                        Assert.AreEqual(16, messages.Count);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("5", "17.1", "Gevolgen van de migratie van versie 16.4 naar versie 17.1:"),
                            messages[0]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("5", "17.1", "* Geen aanpassingen."),
                            messages[1]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("17.1", "17.2", "Gevolgen van de migratie van versie 17.1 naar versie 17.2:"),
                            messages[2]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("17.1", "17.2", "* Geen aanpassingen."),
                            messages[3]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("17.2", "17.3", "Gevolgen van de migratie van versie 17.2 naar versie 17.3:"),
                            messages[4]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("17.2", "17.3", "* Geen aanpassingen."),
                            messages[5]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("17.3", "18.1", "Gevolgen van de migratie van versie 17.3 naar versie 18.1:"),
                            messages[6]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("17.3", "18.1", "* Geen aanpassingen."),
                            messages[7]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("18.1", "19.1", "Gevolgen van de migratie van versie 18.1 naar versie 19.1:"),
                            messages[8]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("18.1", "19.1", "* Geen aanpassingen."),
                            messages[9]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("19.1", "21.1", "Gevolgen van de migratie van versie 19.1 naar versie 21.1:"),
                            messages[10]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("19.1", "21.1", "* Geen aanpassingen."),
                            messages[11]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("21.1", "22.1", "Gevolgen van de migratie van versie 21.1 naar versie 22.1:"),
                            messages[12]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("21.1", "22.1", "* De oorspronkelijke faalmechanismen zijn omgezet naar het nieuwe formaat.\r\n* Alle toetsoordelen zijn verwijderd."),
                            messages[13]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("22.1", $"{latestVersion}", $"Gevolgen van de migratie van versie 22.1 naar versie {latestVersion}:"),
                            messages[14]);
                        MigrationLogTestHelper.AssertMigrationLogMessageEqual(
                            new MigrationLogMessage("22.1", $"{latestVersion}", "* Geen aanpassingen."),
                            messages[15]);
                    }
                }
        }
Пример #23
0
        public void GivenMigratorAndSupportedFile_WhenValidTargetLocationGiven_ThenFileSuccessfullyMigrates()
        {
            // Given
            string sourceFilePath = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();

            string targetFile = $"{nameof(ProjectMigratorTest)}." +
                                $"{nameof(GivenMigratorAndSupportedFile_WhenValidTargetLocationGiven_ThenFileSuccessfullyMigrates)}.rtd";
            string targetFilePath = Path.Combine(TestHelper.GetScratchPadPath(), testDirectory, targetFile);

            var mocks         = new MockRepository();
            var inquiryHelper = mocks.Stub <IInquiryHelper>();

            mocks.ReplayAll();

            var logDirectory = $"{nameof(GivenMigratorAndSupportedFile_WhenValidTargetLocationGiven_ThenFileSuccessfullyMigrates)}_log";

            using (new DirectoryDisposeHelper(TestHelper.GetScratchPadPath(), logDirectory))
                using (new UseCustomSettingsHelper(new TestSettingsHelper
                {
                    TempPath = TestHelper.GetScratchPadPath(logDirectory)
                }))
                {
                    var migrator = new ProjectMigrator(inquiryHelper);

                    var migrationSuccessful = false;

                    // When
                    void Call() => migrationSuccessful = migrator.Migrate(sourceFilePath, targetFilePath);

                    // Then
                    string expectedMessage = $"Het projectbestand '{sourceFilePath}' is succesvol gemigreerd naar '{targetFilePath}' " +
                                             $"(versie {currentDatabaseVersion}).";
                    var migrationLog = new StringBuilder();
                    migrationLog.AppendLine("Door de migratie is het project aangepast. Bekijk het migratierapport door op details te klikken.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 16.4 naar versie 17.1:");
                    migrationLog.AppendLine("* Alle berekende resultaten zijn verwijderd.");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie kruin en binnentalud'");
                    migrationLog.AppendLine("    - De naam van dijkprofiel '1' is veranderd naar '102' en wordt ook gebruikt als ID.");
                    migrationLog.AppendLine("    - De naam van dijkprofiel '10' is veranderd naar '104' en wordt ook gebruikt als ID.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 17.1 naar versie 17.2:");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + De omgevingswaarde is gelijk gesteld aan 1/30000.");
                    migrationLog.AppendLine("  + De signaleringsparameter is gelijk gesteld aan 1/30000 (voorheen de waarde van de norm).");
                    migrationLog.AppendLine("  + De norm van het traject is gelijk gesteld aan de signaleringsparameter.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Hoogte kunstwerk'");
                    migrationLog.AppendLine("    - Het ID van kunstwerk 'Id' is veranderd naar 'Id00003'.");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP7'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Betrouwbaarheid sluiting kunstwerk'");
                    migrationLog.AppendLine("    - Het ID van kunstwerk 'id' is veranderd naar 'id00002'.");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP8'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Golfklappen op asfaltbekleding'");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP9'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie buitentalud'");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP10'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Stabiliteit steenzetting'");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP11'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Sterkte en stabiliteit puntconstructies'");
                    migrationLog.AppendLine("    - Het ID van kunstwerk 'anId' is veranderd naar 'anId000000002'.");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP12'.");
                    migrationLog.AppendLine("* Traject: 'Demo traject'");
                    migrationLog.AppendLine("  + De omgevingswaarde is gelijk gesteld aan 1/1000.");
                    migrationLog.AppendLine("  + De signaleringsparameter is gelijk gesteld aan 1/30000 (voorheen de waarde van de norm).");
                    migrationLog.AppendLine("  + De norm van het traject is gelijk gesteld aan de signaleringsparameter.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 17.2 naar versie 17.3:");
                    migrationLog.AppendLine("* Geen aanpassingen.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 17.3 naar versie 18.1:");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Piping'");
                    migrationLog.AppendLine("    - De waarde '3.2' voor de verschuiving van parameter 'Verzadigd gewicht' van ondergrondlaag 'HotPinkLayer' is ongeldig en is veranderd naar NaN.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Sterkte en stabiliteit langsconstructies'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Technische innovaties'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Wateroverdruk bij asfaltbekleding'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Betrouwbaarheid sluiting kunstwerk'");
                    migrationLog.AppendLine("    - De waarde van '0' van parameter 'Aantal identieke doorstroomopeningen' van berekening 'Nieuwe berekening' is ongeldig en is veranderd naar 1.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Macrostabiliteit buitenwaarts'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Golfklappen op asfaltbekleding'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie buitentalud'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding afschuiven binnentalud'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding afschuiven buitentalud'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Microstabiliteit'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Piping bij kunstwerk'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Stabiliteit steenzetting'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Duinafslag'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 18.1 naar versie 19.1:");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Er worden standaardwaarden conform WBI2017 gebruikt voor de HLCD bestandsinformatie.");
                    migrationLog.AppendLine("  + De waarde voor de transparantie van de achtergrondkaart is aangepast naar 0.60.");
                    migrationLog.AppendLine("* Traject: 'Demo traject'");
                    migrationLog.AppendLine("  + Er worden standaardwaarden conform WBI2017 gebruikt voor de HLCD bestandsinformatie.");
                    migrationLog.AppendLine("  + De waarde voor de transparantie van de achtergrondkaart is aangepast naar 0.60.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 19.1 naar versie 21.1:");
                    migrationLog.AppendLine("* Geen aanpassingen.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 21.1 naar versie 22.1:");
                    migrationLog.AppendLine("* De oorspronkelijke faalmechanismen zijn omgezet naar het nieuwe formaat.\r\n* Alle toetsoordelen zijn verwijderd.");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie kruin en binnentalud'");
                    migrationLog.AppendLine("    - De waarden van de doelkans voor HBN en overslagdebiet zijn veranderd naar de trajectnorm.");
                    migrationLog.AppendLine("* Traject: 'Demo traject'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie kruin en binnentalud'");
                    migrationLog.AppendLine("    - De waarden van de doelkans voor HBN en overslagdebiet zijn veranderd naar de trajectnorm.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 22.1 naar versie 22.2:");
                    migrationLog.AppendLine("* Geen aanpassingen.");

                    Tuple <string, LogLevelConstant>[] expectedLogMessagesAndLevel =
                    {
                        Tuple.Create(expectedMessage,         LogLevelConstant.Info),
                        Tuple.Create(migrationLog.ToString(), LogLevelConstant.Info)
                    };
                    TestHelper.AssertLogMessagesWithLevelAreGenerated(Call, expectedLogMessagesAndLevel, 2);

                    Assert.IsTrue(migrationSuccessful);

                    var toVersionedFile = new ProjectVersionedFile(targetFilePath);
                    Assert.AreEqual(currentDatabaseVersion, toVersionedFile.GetVersion());
                }

            string logPath = Path.Combine(TestHelper.GetScratchPadPath(), logDirectory, "RiskeerMigrationLog.sqlite");

            Assert.IsFalse(File.Exists(logPath));

            mocks.VerifyAll();
        }