Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/MigrationTo181IntegrationTest.cs =================================================================== diff -u -r79ad32f225a4b56628cd515fd2ac82f31f0b7736 -r146a14cd6e338acf7600d9a1fb3da2a00cbb6e13 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/MigrationTo181IntegrationTest.cs (.../MigrationTo181IntegrationTest.cs) (revision 79ad32f225a4b56628cd515fd2ac82f31f0b7736) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/MigrationTo181IntegrationTest.cs (.../MigrationTo181IntegrationTest.cs) (revision 146a14cd6e338acf7600d9a1fb3da2a00cbb6e13) @@ -31,6 +31,22 @@ { public class MigrationTo181IntegrationTest { + /// + /// Enum to indicate the normative norm type. + /// + private enum NormativeNormType + { + /// + /// Represents the lower limit norm. + /// + LowerLimitNorm = 1, + + /// + /// Represents the signaling norm. + /// + SignalingNorm = 2 + } + private const string newVersion = "18.1"; [Test] @@ -63,7 +79,8 @@ AssertDatabase(reader); AssertAssessmentSection(reader, sourceFilePath); - AssertHydraulicBoundaryLocations(reader, sourceFilePath); + AssertHydraulicBoundaryLocationsProperties(reader, sourceFilePath); + AssertHydraulicBoundaryLocationsOnAssessmentSection(reader, sourceFilePath); AssertPipingSoilLayers(reader); AssertHydraRingPreprocessor(reader); @@ -407,85 +424,136 @@ reader.AssertReturnedDataIsValid(validateAssessmentSectionEntities); } - #region Migrated Hydraulic Boundary Locations - - private static void AssertHydraulicBoundaryLocations(MigratedDatabaseReader reader, string sourceFilePath) + private static void AssertHydraulicBoundaryLocationsProperties(MigratedDatabaseReader reader, string sourceFilePath) { - var queryGenerator = new HydraulicLocationValidationQueryGenerator(sourceFilePath); + string validateMigratedHyraulicBoundaryLocations = $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT " + + "COUNT() = (SELECT COUNT() FROM[SOURCEPROJECT].HydraulicLocationEntity) " + + "FROM HydraulicLocationEntity NEW " + + "JOIN[SourceProject].HydraulicLocationEntity AS OLD USING(HydraulicLocationEntityId) " + + "WHERE NEW.AssessmentSectionEntityId = OLD.AssessmentSectionEntityId " + + "AND NEW.LocationId = OLD.LocationId " + + "AND NEW.Name = OLD.Name " + + "AND NEW.LocationX = OLD.LocationX " + + "AND NEW.LocationY = OLD.LocationY " + + "AND NEW.\"Order\" = OLD.\"Order\"; " + + "DETACH DATABASE SOURCEPROJECT;"; + reader.AssertReturnedDataIsValid(validateMigratedHyraulicBoundaryLocations); - reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedHydraulicLocationsValidationQuery()); - reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsValidationQuery()); - reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGenerator.GetHydraulicBoundaryLocationCalculationInputValidationQuery()); + string validateNrOfHydraulicLocationCalculations = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT " + + "COUNT() = 0 " + + "FROM " + + "( " + + "SELECT " + + "COUNT(distinct HydraulicLocationCalculationEntityId) AS NrOfCalculationsPerLocation " + + "FROM [SOURCEPROJECT].HydraulicLocationEntity " + + "LEFT JOIN HydraulicLocationCalculationEntity USING (HydraulicLocationEntityId) " + + "GROUP BY HydraulicLocationEntityId " + + ") " + + "WHERE NrOfCalculationsPerLocation IS NOT 14; " + + "DETACH DATABASE SOURCEPROJECT;"; + reader.AssertReturnedDataIsValid(validateNrOfHydraulicLocationCalculations); - AssertDesignWaterLevelCalculationEntities(reader, queryGenerator); - AssertWaveHeightCalculationEntities(reader, queryGenerator); + const string validateHydraulicBoundaryCalculationInputValues = "SELECT " + + "COUNT() = 0 " + + "FROM HydraulicLocationCalculationEntity " + + "WHERE ShouldIllustrationPointsBeCalculated != 0 AND ShouldIllustrationPointsBeCalculated != 1"; + reader.AssertReturnedDataIsValid(validateHydraulicBoundaryCalculationInputValues); + + string validateNrOfHydraulicLocationCalculationOutputs = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "( " + + "SELECT COUNT() + " + + "( " + + "SELECT COUNT() " + + "FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationOutputEntity " + + ") " + + "FROM [SOURCEPROJECT].HydraulicLocationOutputEntity " + + ") " + + "FROM HydraulicLocationOutputEntity; " + + "DETACH DATABASE SOURCEPROJECT;"; + reader.AssertReturnedDataIsValid(validateNrOfHydraulicLocationCalculationOutputs); } - private static void AssertWaveHeightCalculationEntities(MigratedDatabaseReader reader, HydraulicLocationValidationQueryGenerator queryGenerator) + private static void AssertHydraulicBoundaryLocationsOnAssessmentSection(MigratedDatabaseReader reader, string sourceFilePath) { + var queryGenerator = new HydraulicLocationValidationQueryGeneratorOnAssessmentSection(sourceFilePath); + AssertDesignWaterLevelCalculationEntitiesOnAssessmentSection(reader, queryGenerator); + AssertWaveHeightCalculationEntitiesOnAssessmentSection(reader, queryGenerator); + } + + #region Migrated Hydraulic Boundary Locations on Assessment section + + private static void AssertWaveHeightCalculationEntitiesOnAssessmentSection(MigratedDatabaseReader reader, + HydraulicLocationValidationQueryGeneratorOnAssessmentSection queryGenerator) + { reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForFactorizedSignalingNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForFactorizedSignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForSignalingNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForSignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForLowerLimitNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForLowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForFactorizedLowerLimitNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForFactorizedLowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedWaveHeightCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.LowerLimitNorm)); + NormativeNormType.LowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedWaveHeightCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.SignalingNorm)); + NormativeNormType.SignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedWaveHeightCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.LowerLimitNorm)); + NormativeNormType.LowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedWaveHeightCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.SignalingNorm)); + NormativeNormType.SignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNewCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForFactorizedLowerLimitNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForFactorizedLowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNewCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForFactorizedSignalingNorm)); - reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGenerator.GetNewCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); - reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGenerator.GetNewCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaveHeightCalculationsForFactorizedSignalingNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForFactorizedSignalingNorm)); + reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGeneratorOnAssessmentSection.GetNewCalculationOutputsValidationQuery( + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); + reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGeneratorOnAssessmentSection.GetNewCalculationOutputsValidationQuery( + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaveHeightCalculationsForFactorizedSignalingNorm)); } - private static void AssertDesignWaterLevelCalculationEntities(MigratedDatabaseReader reader, HydraulicLocationValidationQueryGenerator queryGenerator) + private static void AssertDesignWaterLevelCalculationEntitiesOnAssessmentSection(MigratedDatabaseReader reader, + HydraulicLocationValidationQueryGeneratorOnAssessmentSection queryGenerator) { reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedSignalingNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedSignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForSignalingNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForSignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForLowerLimitNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForLowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNrOfHydraulicBoundaryLocationCalculationsPerAssessmentSectionValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedDesignWaterLevelCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.LowerLimitNorm)); + NormativeNormType.LowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedDesignWaterLevelCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.SignalingNorm)); + NormativeNormType.SignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedDesignWaterLevelCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.LowerLimitNorm)); + NormativeNormType.LowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetMigratedDesignWaterLevelCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.NormativeNormType.SignalingNorm)); + NormativeNormType.SignalingNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNewCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); reader.AssertReturnedDataIsValid(queryGenerator.GetNewCalculationsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedSignalingNorm)); - reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGenerator.GetNewCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); - reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGenerator.GetNewCalculationOutputsValidationQuery( - HydraulicLocationValidationQueryGenerator.CalculationType.WaterLevelCalculationsForFactorizedSignalingNorm)); + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedSignalingNorm)); + reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGeneratorOnAssessmentSection.GetNewCalculationOutputsValidationQuery( + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedLowerLimitNorm)); + reader.AssertReturnedDataIsValid(HydraulicLocationValidationQueryGeneratorOnAssessmentSection.GetNewCalculationOutputsValidationQuery( + HydraulicLocationValidationQueryGeneratorOnAssessmentSection.CalculationType.WaterLevelCalculationsForFactorizedSignalingNorm)); } /// /// Class to generate queries which can be used if the hydraulic boundary locations - /// are correctly migrated. + /// are correctly migrated on the assessment section level. /// - private class HydraulicLocationValidationQueryGenerator + private class HydraulicLocationValidationQueryGeneratorOnAssessmentSection { /// /// Enum to indicate the hydraulic location calculation type. @@ -533,28 +601,15 @@ WaveHeightCalculationsForFactorizedLowerLimitNorm = 8 } - public enum NormativeNormType - { - /// - /// Represents the lower limit norm. - /// - LowerLimitNorm = 1, - - /// - /// Represents the signaling norm. - /// - SignalingNorm = 2 - } - private readonly string sourceFilePath; /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The file path of the database to be verified. /// Thrown when /// is null or empty. - public HydraulicLocationValidationQueryGenerator(string sourceFilePath) + public HydraulicLocationValidationQueryGeneratorOnAssessmentSection(string sourceFilePath) { if (string.IsNullOrEmpty(sourceFilePath)) { @@ -566,61 +621,6 @@ } /// - /// Generates a query to validate the migrated hydraulic boundary locations. - /// - /// The query to validate the migrated hydraulic boundary locations. - public string GetMigratedHydraulicLocationsValidationQuery() - { - return $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + - "SELECT " + - "COUNT() = (SELECT COUNT() FROM[SOURCEPROJECT].HydraulicLocationEntity) " + - "FROM HydraulicLocationEntity NEW " + - "JOIN[SourceProject].HydraulicLocationEntity AS OLD USING(HydraulicLocationEntityId) " + - "WHERE NEW.AssessmentSectionEntityId = OLD.AssessmentSectionEntityId " + - "AND NEW.LocationId = OLD.LocationId " + - "AND NEW.Name = OLD.Name " + - "AND NEW.LocationX = OLD.LocationX " + - "AND NEW.LocationY = OLD.LocationY " + - "AND NEW.\"Order\" = OLD.\"Order\"; " + - "DETACH DATABASE SOURCEPROJECT;"; - } - - /// - /// Generates a query to validate that the number of hydraulic boundary calculations matches - /// with the number of hydraulic locations. - /// - /// The query to validate the hydraulic boundary locations. - public string GetNrOfHydraulicBoundaryLocationCalculationsValidationQuery() - { - return $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + - "SELECT " + - "COUNT() = 0 " + - "FROM " + - "( " + - "SELECT " + - "COUNT(distinct HydraulicLocationCalculationEntityId) AS NrOfCalculationsPerLocation " + - "FROM [SOURCEPROJECT].HydraulicLocationEntity " + - "LEFT JOIN HydraulicLocationCalculationEntity USING (HydraulicLocationEntityId) " + - "GROUP BY HydraulicLocationEntityId " + - ") " + - "WHERE NrOfCalculationsPerLocation IS NOT 8; " + - "DETACH DATABASE SOURCEPROJECT;"; - } - - /// - /// Generates a query to validate if the created hydraulic boundary location calculation inputs have valid - /// values. - /// - /// The query to validate the hydraulic boundary location calculation inputs. - public static string GetHydraulicBoundaryLocationCalculationInputValidationQuery() - { - return "SELECT " + - "COUNT() = 0 " + - "FROM HydraulicLocationCalculationEntity " + - "WHERE ShouldIllustrationPointsBeCalculated != 0 AND ShouldIllustrationPointsBeCalculated != 1"; - } - - /// /// Generates a query to validate the number of created hydraulic boundary location calculations per assessment section. /// /// The type of calculation that should be validated. @@ -634,15 +634,15 @@ "(" + "SELECT " + "sourceAse.AssessmentSectionEntityId, " + - "COUNT(distinct HydraulicLocationEntityId) AS OLDCount, " + - "NEWCount " + + "COUNT(distinct HydraulicLocationEntityId) AS OldCount, " + + "NewCount " + "FROM [SOURCEPROJECT].HydraulicLocationEntity sourceHle " + "JOIN [SOURCEPROJECT].AssessmentSectionEntity sourceAse ON sourceHle.AssessmentSectionEntityId = sourceAse.AssessmentSectionEntityId " + "LEFT JOIN " + "(" + "SELECT " + "ase.AssessmentSectionEntityId, " + - "COUNT(distinct HydraulicLocationEntityId) AS NEWCount " + + "COUNT(distinct HydraulicLocationEntityId) AS NewCount " + "FROM AssessmentSectionEntity ase " + $"JOIN HydraulicLocationCalculationCollectionEntity hlcce ON ase.HydraulicLocationCalculationCollectionEntity{(int) calculationType}Id " + "= hlcce.HydraulicLocationCalculationCollectionEntityId " + @@ -652,7 +652,7 @@ ") USING(AssessmentSectionEntityId) " + "GROUP BY sourceAse.AssessmentSectionEntityId " + ") " + - "WHERE OLDCount IS NOT NewCount; " + + "WHERE OldCount IS NOT NewCount; " + "DETACH DATABASE SOURCEPROJECT;"; } @@ -713,8 +713,8 @@ "JOIN HydraulicLocationCalculationCollectionToHydraulicCalculationEntity USING (HydraulicLocationCalculationCollectionEntityId) " + "JOIN HydraulicLocationCalculationEntity USING (HydraulicLocationCalculationEntityId) " + "JOIN HydraulicLocationOutputEntity NEW USING (HydraulicLocationCalculationEntityId) " + - "JOIN [SOURCEPROJECT].HydraulicLocationOutputEntity OLD ON NEW.HydraulicLocationOutputEntityId = OLD.HydraulicLocationEntityOutputId " + - "WHERE NEW.GeneralResultSubMechanismIllustrationPointEntityId IS OLD.GeneralResultSubMechanismIllustrationPointEntityId " + + "JOIN [SOURCEPROJECT].HydraulicLocationOutputEntity OLD ON " + + "NEW.GeneralResultSubMechanismIllustrationPointEntityId IS OLD.GeneralResultSubMechanismIllustrationPointEntityId " + "AND NEW.Result IS OLD.Result " + "AND NEW.TargetProbability IS OLD.TargetProbability " + "AND NEW.TargetReliability IS OLD.TargetReliability " + @@ -781,8 +781,8 @@ "JOIN HydraulicLocationCalculationCollectionToHydraulicCalculationEntity USING (HydraulicLocationCalculationCollectionEntityId) " + "JOIN HydraulicLocationCalculationEntity USING (HydraulicLocationCalculationEntityId) " + "JOIN HydraulicLocationOutputEntity NEW USING (HydraulicLocationCalculationEntityId) " + - "JOIN [SOURCEPROJECT].HydraulicLocationOutputEntity OLD ON NEW.HydraulicLocationOutputEntityId = OLD.HydraulicLocationEntityOutputId " + - "WHERE NEW.GeneralResultSubMechanismIllustrationPointEntityId IS OLD.GeneralResultSubMechanismIllustrationPointEntityId " + + "JOIN [SOURCEPROJECT].HydraulicLocationOutputEntity OLD ON " + + "NEW.GeneralResultSubMechanismIllustrationPointEntityId IS OLD.GeneralResultSubMechanismIllustrationPointEntityId " + "AND NEW.Result IS OLD.Result " + "AND NEW.TargetProbability IS OLD.TargetProbability " + "AND NEW.TargetReliability IS OLD.TargetReliability " +