Exemplo n.º 1
0
        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.");
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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);
        }