public void TestGapsAreFound() { var migration = A.Fake<IMigration>(); ImportedMigration[] importedMigrations = { new ImportedMigration(migration, new MigrationMetadata(1, DefaultModuleName, null), false), new ImportedMigration(migration, new MigrationMetadata(2, DefaultModuleName, null), false), new ImportedMigration(migration, new MigrationMetadata(3, DefaultModuleName, null), false), }; IMigrationMetadata[] executedMigrations = { new MigrationMetadata(1, DefaultModuleName, null), new MigrationMetadata(3, DefaultModuleName, null), }; var selector = new MigrationSelector(importedMigrations, executedMigrations); IEnumerable<ApplicableMigration> applicableMigrations; IEnumerable<IMigrationMetadata> unidentifiedMigrations; selector.GetMigrationsTo(long.MaxValue, m => true, out applicableMigrations, out unidentifiedMigrations); Assert.AreEqual(1, applicableMigrations.Count()); Assert.AreEqual(2, applicableMigrations.First().Migration.Metadata.Timestamp); Assert.AreEqual(MigrationDirection.Up, applicableMigrations.First().Direction); CollectionAssert.IsEmpty(unidentifiedMigrations); }
public void TestDuplicateMigrationsThrowInvalidMigrationException() { var migration = MockRepository.GenerateStub<IMigration>(); ImportedMigration[] importedMigrations = { new ImportedMigration(migration, new MigrationMetadata(1, DefaultModuleName, null)), new ImportedMigration(migration, new MigrationMetadata(1, DefaultModuleName, null)), }; IMigrationMetadata[] executedMigrations = { }; var selector = new MigrationSelector(importedMigrations, executedMigrations); Assert.IsNotNull(selector, "Just to satisfy R# and FxCop."); }
public IMigrationBatch Prepare(long timestamp, MigrationOptions options) { // import all migrations IReadOnlyCollection<ImportedMigration> availableMigrations; IReadOnlyCollection<ImportedAggregateMigration> availableAggregateMigrations; _importer.ImportAll(out availableMigrations, out availableAggregateMigrations); // create migration batch var executedMigrations = new List<IMigrationMetadata>(_versioning.ExecutedMigrations); var migrationSelector = new MigrationSelector(availableMigrations, executedMigrations); IEnumerable<ApplicableMigration> applicableMigrations; IEnumerable<IMigrationMetadata> unidentifiedMigrations; migrationSelector.GetMigrationsTo(timestamp, options.MigrationSelector, out applicableMigrations, out unidentifiedMigrations); var migrationAggregator = new MigrationAggregator(applicableMigrations, availableMigrations, availableAggregateMigrations); var migrationSteps = migrationAggregator.Aggregate(); return new MigrationBatch( migrationSteps, unidentifiedMigrations, _versioning, _configuration); }
public void TestRegularCase() { var migration = MockRepository.GenerateStub<IMigration>(); ImportedMigration[] importedMigrations = { new ImportedMigration(migration, new MigrationMetadata(1, DefaultModuleName, null)), new ImportedMigration(migration, new MigrationMetadata(2, DefaultModuleName, null)), new ImportedMigration(migration, new MigrationMetadata(3, DefaultModuleName, null)), }; IMigrationMetadata[] executedMigrations = { new MigrationMetadata(1, DefaultModuleName, null), new MigrationMetadata(2, DefaultModuleName, null), }; var selector = new MigrationSelector(importedMigrations, executedMigrations); IEnumerable<ApplicableMigration> applicableMigrations; IEnumerable<IMigrationMetadata> unidentifiedMigrations; selector.GetMigrationsTo(long.MaxValue, s => true, out applicableMigrations, out unidentifiedMigrations); Assert.AreEqual(1, applicableMigrations.Count()); Assert.AreEqual(3, applicableMigrations.First().Metadata.Timestamp); Assert.AreEqual(MigrationDirection.Up, applicableMigrations.First().Metadata.Direction); CollectionAssert.IsEmpty(unidentifiedMigrations); }
public IMigrationBatch Prepare(long timestamp, MigrationOptions options) { // import all migrations IReadOnlyCollection <ImportedMigration> availableMigrations; IReadOnlyCollection <ImportedAggregateMigration> availableAggregateMigrations; _importer.ImportAll(out availableMigrations, out availableAggregateMigrations); // create migration batch var executedMigrations = new List <IMigrationMetadata>(_versioning.ExecutedMigrations); var migrationSelector = new MigrationSelector(availableMigrations, executedMigrations); IEnumerable <ApplicableMigration> applicableMigrations; IEnumerable <IMigrationMetadata> unidentifiedMigrations; migrationSelector.GetMigrationsTo(timestamp, options.MigrationSelector, out applicableMigrations, out unidentifiedMigrations); var migrationAggregator = new MigrationAggregator(applicableMigrations, availableMigrations, availableAggregateMigrations); var migrationSteps = migrationAggregator.Aggregate(); return(new MigrationBatch( migrationSteps, unidentifiedMigrations, _versioning, _configuration)); }
public void TestRevertingThrowsWhenImpossible() { var migration = MockRepository.GenerateStub<IMigration>(); ImportedMigration[] importedMigrations = { new ImportedMigration(migration, new MigrationMetadata(1, DefaultModuleName, null)), new ImportedMigration(migration, new MigrationMetadata(2, DefaultModuleName, null)), new ImportedMigration(migration, new MigrationMetadata(3, DefaultModuleName, null)), }; IMigrationMetadata[] executedMigrations = { new MigrationMetadata(1, DefaultModuleName, null), new MigrationMetadata(2, DefaultModuleName, null), new MigrationMetadata(3, DefaultModuleName, null), }; var selector = new MigrationSelector(importedMigrations, executedMigrations); IEnumerable<ApplicableMigration> applicableMigrations; IEnumerable<IMigrationMetadata> unidentifiedMigrations; selector.GetMigrationsTo(2, s => true, out applicableMigrations, out unidentifiedMigrations); }