From 9128892f98c81855848e1a8219a485a797728f45 Mon Sep 17 00:00:00 2001 From: Daniel Bloxham Date: Mon, 17 Jan 2022 16:34:07 +0000 Subject: [PATCH 1/2] Fixing migrations for CompetencyAssessmentQuestionRoleRequirements in HEEDLS-741 --- ...smentQuestionRoleRequirementsPrimaryKey.cs | 23 +++++++----- ...tencyAssessmentQuestionRoleRequirements.cs | 31 +++++++++------- ...tencyAssessmentQuestionRoleRequirements.cs | 37 +++++++++++++++++++ ...tencyAssessmentQuestionRoleRequirements.cs | 29 +++++++++++++++ .../SeleniumServerFactory.cs | 6 ++- 5 files changed, 101 insertions(+), 25 deletions(-) create mode 100644 DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs create mode 100644 DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs diff --git a/DigitalLearningSolutions.Data.Migrations/202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey.cs b/DigitalLearningSolutions.Data.Migrations/202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey.cs index b14a4fe543..1a160d151e 100644 --- a/DigitalLearningSolutions.Data.Migrations/202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey.cs +++ b/DigitalLearningSolutions.Data.Migrations/202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey.cs @@ -5,22 +5,25 @@ [Migration(202201111021)] public class ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey: Migration { + // This migration is undone in 202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements + // and does not need to be run again, so it has been commented out + public override void Up() { - Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Delete.Column("ID").FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns("SelfAssessmentID", "CompetencyID"); + //Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Delete.Column("ID").FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns("SelfAssessmentID", "CompetencyID"); } public override void Down() { - Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Alter.Table("CompetencyAssessmentQuestionRoleRequirements").AddColumn("ID").AsInt32().NotNullable().Identity(); - Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .OnTable("CompetencyAssessmentQuestionRoleRequirements").Column("ID"); + //Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Alter.Table("CompetencyAssessmentQuestionRoleRequirements").AddColumn("ID").AsInt32().NotNullable().Identity(); + //Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .OnTable("CompetencyAssessmentQuestionRoleRequirements").Column("ID"); } } } diff --git a/DigitalLearningSolutions.Data.Migrations/202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements.cs b/DigitalLearningSolutions.Data.Migrations/202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements.cs index d481493a31..2f5167c662 100644 --- a/DigitalLearningSolutions.Data.Migrations/202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements.cs +++ b/DigitalLearningSolutions.Data.Migrations/202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements.cs @@ -5,26 +5,29 @@ [Migration(202201120821)] public class ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements: Migration { + // This migration is undone in 202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements + // and does not need to be run again, so it has been commented out + public override void Up() { - Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Alter.Table("CompetencyAssessmentQuestionRoleRequirements").AddColumn("ID").AsInt32().NotNullable().Identity(); - Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .OnTable("CompetencyAssessmentQuestionRoleRequirements").Column("ID"); - Create.UniqueConstraint("IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID") - .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns("SelfAssessmentID", "CompetencyID"); + //Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Alter.Table("CompetencyAssessmentQuestionRoleRequirements").AddColumn("ID").AsInt32().NotNullable().Identity(); + //Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .OnTable("CompetencyAssessmentQuestionRoleRequirements").Column("ID"); + //Create.UniqueConstraint("IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID") + // .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns("SelfAssessmentID", "CompetencyID"); } public override void Down() { - Delete.UniqueConstraint("IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID") - .FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Delete.Column("ID").FromTable("CompetencyAssessmentQuestionRoleRequirements"); - Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") - .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns("SelfAssessmentID", "CompetencyID"); + //Delete.UniqueConstraint("IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID") + // .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Delete.Column("ID").FromTable("CompetencyAssessmentQuestionRoleRequirements"); + //Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + // .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns("SelfAssessmentID", "CompetencyID"); } } } diff --git a/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs b/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs new file mode 100644 index 0000000000..7f0d00b000 --- /dev/null +++ b/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs @@ -0,0 +1,37 @@ +namespace DigitalLearningSolutions.Data.Migrations +{ + using FluentMigrator; + + [Migration(202201171115)] + public class UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements : Migration + { + public override void Up() + { + if (Schema.Table("CompetencyAssessmentQuestionRoleRequirements").Constraint( + "IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID" + ).Exists()) + { + // This undoes the changes from 202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements + Delete.UniqueConstraint("IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID") + .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + } + else if (!Schema.Table("CompetencyAssessmentQuestionRoleRequirements").Column("ID").Exists()) + { + // This undoes the changes from 202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey + Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + Alter.Table("CompetencyAssessmentQuestionRoleRequirements").AddColumn("ID").AsInt32().NotNullable() + .Identity(); + Create.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") + .OnTable("CompetencyAssessmentQuestionRoleRequirements").Column("ID"); + } + } + + public override void Down() + { + // The Up migration reverts the database to how it should be. + // Previous migrations that should not be run have been commented out. + // Thus this Down migration does not need to do anything. + } + } +} diff --git a/DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs b/DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs new file mode 100644 index 0000000000..d9967aff6f --- /dev/null +++ b/DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs @@ -0,0 +1,29 @@ +namespace DigitalLearningSolutions.Data.Migrations +{ + using FluentMigrator; + + [Migration(202217011130)] + public class AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements : Migration + { + public override void Up() + { + Create.UniqueConstraint( + "IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID_AssessmentQuestionID_LevelValue" + ) + .OnTable("CompetencyAssessmentQuestionRoleRequirements").Columns( + "SelfAssessmentID", + "CompetencyID", + "AssessmentQuestionID", + "LevelValue" + ); + } + + public override void Down() + { + Delete.UniqueConstraint( + "IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID_AssessmentQuestionID_LevelValue" + ) + .FromTable("CompetencyAssessmentQuestionRoleRequirements"); + } + } +} diff --git a/DigitalLearningSolutions.Web.AutomatedUiTests/SeleniumServerFactory.cs b/DigitalLearningSolutions.Web.AutomatedUiTests/SeleniumServerFactory.cs index 984e7ebe4a..7d2178aee7 100644 --- a/DigitalLearningSolutions.Web.AutomatedUiTests/SeleniumServerFactory.cs +++ b/DigitalLearningSolutions.Web.AutomatedUiTests/SeleniumServerFactory.cs @@ -31,7 +31,11 @@ protected sealed override TestServer CreateServer(IWebHostBuilder builder) RootUri = host.ServerFeatures.Get().Addresses.First(); // Fake Server to satisfy the return type - return new TestServer(new WebHostBuilder().UseStartup().UseSerilog()); + return new TestServer(new WebHostBuilder() + .UseStartup() + .UseSerilog() + .ConfigureAppConfiguration(configBuilder => { configBuilder.AddConfiguration(GetConfigForUiTests()); } + )); } protected sealed override IWebHostBuilder CreateWebHostBuilder() From cee3eed1f81a8fea55fe571b05932d5fb3a13317 Mon Sep 17 00:00:00 2001 From: Daniel Bloxham Date: Tue, 18 Jan 2022 08:26:00 +0000 Subject: [PATCH 2/2] HEEDLS-741 - adjust comment and fix migration ID date --- ...grationsForCompetencyAssessmentQuestionRoleRequirements.cs | 4 ++-- ...nstraintToCompetencyAssessmentQuestionRoleRequirements.cs} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename DigitalLearningSolutions.Data.Migrations/{202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs => 202201171130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs} (94%) diff --git a/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs b/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs index 7f0d00b000..2692421c9c 100644 --- a/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs +++ b/DigitalLearningSolutions.Data.Migrations/202201171115_UndoPreviousConstraintMigrationsForCompetencyAssessmentQuestionRoleRequirements.cs @@ -11,13 +11,13 @@ public override void Up() "IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID" ).Exists()) { - // This undoes the changes from 202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements + // This undoes the unwanted changes from 202201120821_ChangeUniqueConstraintsOnCompetencyAssessmentQuestionRoleRequirements Delete.UniqueConstraint("IX_CompetencyAssessmentQuestionRoleRequirements_SelfAssessmentID_CompetencyID") .FromTable("CompetencyAssessmentQuestionRoleRequirements"); } else if (!Schema.Table("CompetencyAssessmentQuestionRoleRequirements").Column("ID").Exists()) { - // This undoes the changes from 202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey + // This undoes the unwanted changes from 202201111021_ChangeCompetencyAssessmentQuestionRoleRequirementsPrimaryKey Delete.PrimaryKey("PK_CompetencyAssessmentQuestionRoleRequirements") .FromTable("CompetencyAssessmentQuestionRoleRequirements"); Alter.Table("CompetencyAssessmentQuestionRoleRequirements").AddColumn("ID").AsInt32().NotNullable() diff --git a/DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs b/DigitalLearningSolutions.Data.Migrations/202201171130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs similarity index 94% rename from DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs rename to DigitalLearningSolutions.Data.Migrations/202201171130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs index d9967aff6f..5858f842f5 100644 --- a/DigitalLearningSolutions.Data.Migrations/202217011130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs +++ b/DigitalLearningSolutions.Data.Migrations/202201171130_AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements.cs @@ -2,7 +2,7 @@ { using FluentMigrator; - [Migration(202217011130)] + [Migration(202201171130)] public class AddUniqueConstraintToCompetencyAssessmentQuestionRoleRequirements : Migration { public override void Up()