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")); }
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); }
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); } }
public void Migrate_ValidFilesWithoutLogFile_SavesFileAtNewLocation() { // Setup const string newVersion = "17.1"; string sourceFilePath = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath(); var fromVersionedFile = new ProjectVersionedFile(sourceFilePath); string targetFilePath = TestHelper.GetScratchPadPath(nameof(Migrate_ValidFilesWithoutLogFile_SavesFileAtNewLocation)); var migrator = new ProjectFileMigrator(); using (new FileDisposeHelper(targetFilePath)) { // Call migrator.Migrate(fromVersionedFile, newVersion, targetFilePath); // Assert var toVersionedFile = new ProjectVersionedFile(targetFilePath); Assert.AreEqual(newVersion, toVersionedFile.GetVersion()); } }
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); } }
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); }
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(); }