public async Task Migrations_in_a_race_do_not_throw() { InitializeDatabase <MigrationsTestEventStore>(); var columnName = Any.CamelCaseName(3); var barrier = new Barrier(2); var migrator = new AnonymousMigrator(c => { c.Execute(string.Format(@"alter table [eventstore].[events] add {0} nvarchar(50) null", columnName)); barrier.SignalAndWait(10000); }, version); var task1 = Task.Run(() => InitializeDatabase <MigrationsTestEventStore>(migrator)); var task2 = Task.Run(() => InitializeDatabase <MigrationsTestEventStore>(migrator)); await Task.WhenAll(task1, task2); using (var context = new MigrationsTestEventStore()) { var result = context.QueryDynamic( @"SELECT * FROM sys.columns WHERE name='@columnName'", new Dictionary <string, object> { { "columnName", columnName } }).Single(); result.Should().BeEmpty(); } }
public void Migrations_are_not_run_more_than_once() { var callCount = 0; var migrator = new AnonymousMigrator(c => { callCount++; }, version); InitializeDatabase <MigrationsTestEventStore>(migrator); InitializeDatabase <MigrationsTestEventStore>(migrator); callCount.Should().Be(1); }
public void When_a_migration_signals_that_it_was_not_applied_then_no_record_is_created_in_the_migrations_table() { var migrator = new AnonymousMigrator(c => new MigrationResult { MigrationWasApplied = false }, version); InitializeDatabase <MigrationsTestEventStore>(migrator); GetAppliedVersions <MigrationsTestEventStore>() .Should().NotContain(v => v == version.ToString()); }
public void Migrations_run_in_the_specified_order() { var calls = new List <string>(); var first = new AnonymousMigrator(c => { calls.Add("first"); }, new Version(version.Major, version.Minor, version.Build, 1)); var second = new AnonymousMigrator(c => { calls.Add("second"); }, new Version(version.Major, version.Minor, version.Build, 2)); InitializeDatabase <MigrationsTestEventStore>(second, first); calls.Should().ContainInOrder("first", "second"); }
public void A_migration_with_an_earlier_version_number_can_be_applied_later_if_they_have_different_scopes() { var higherVersion = new AnonymousMigrator( c => { }, new Version(version.Major, version.Minor, version.Build, 2), "Scope1"); var lowerVersion = new AnonymousMigrator( c => { }, new Version(version.Major, version.Minor, version.Build), "Scope2"); InitializeDatabase <MigrationsTestEventStore>(higherVersion); InitializeDatabase <MigrationsTestEventStore>(lowerVersion); var appliedMigrations = GetAppliedVersions <MigrationsTestEventStore>(); appliedMigrations.Should().Contain(m => m == version + ".2"); appliedMigrations.Should().Contain(m => m == version.ToString()); }