Beispiel #1
0
        public void ObsoleteDoesNotFindsMigrationsInNestedNamespaceWhenLoadNestedNamespacesDisabled()
        {
            var conventions = new MigrationRunnerConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new DefaultMigrationInformationLoader(conventions, asm, "FluentMigrator.Tests.Integration.Migrations.Nested", false, null);

            List <Type> expected = new List <Type>
            {
                typeof(Integration.Migrations.Nested.NotGrouped),
            };

            var         migrationList = loader.LoadMigrations();
            List <Type> actual        = migrationList.Select(m => m.Value.Migration.GetType()).ToList();

            CollectionAssert.AreEquivalent(expected, actual);
        }
Beispiel #2
0
        public void CanLoadDefaultVersionTableMetaData()
        {
            var runnerContext = new Mock <IRunnerContext>();

            var runner = new Mock <IMigrationRunner>();

            runner.SetupGet(r => r.Processor.Options).Returns(new ProcessorOptions());
            runner.SetupGet(r => r.RunnerContext).Returns(runnerContext.Object);

            var conventions = new MigrationRunnerConventions();
            var asm         = "s".GetType().Assembly;
            var loader      = new VersionLoader(runner.Object, asm, ConventionSets.NoSchemaName, conventions, runnerContext.Object);

            var versionTableMetaData = loader.GetVersionTableMetaData();

            versionTableMetaData.ShouldBeOfType <DefaultVersionTableMetaData>();
        }
        public void CanLoadCustomVersionTableMetaData()
        {
            var runnerContext = new Mock <IRunnerContext>();

            var runner = new Mock <IMigrationRunner>();

            runner.SetupGet(r => r.Processor.Options).Returns(new TestMigrationProcessorOptions());
            runner.SetupGet(r => r.RunnerContext).Returns(runnerContext.Object);

            var conventions = new MigrationRunnerConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new VersionLoader(runner.Object, asm, ConventionSets.NoSchemaName, conventions);

            var versionTableMetaData = loader.GetVersionTableMetaData();

            versionTableMetaData.ShouldBeOfType <TestVersionTableMetaData>();
        }
Beispiel #4
0
        public void ObsoleteShouldHandleTransactionlessMigrations()
        {
            var conventions = new MigrationRunnerConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new DefaultMigrationInformationLoader(conventions, asm, "FluentMigrator.Tests.Unit.DoesHandleTransactionLessMigrations", null);

            var list = loader.LoadMigrations().ToList();

            list.Count().ShouldBe(2);

            list[0].Value.Migration.GetType().ShouldBe(typeof(DoesHandleTransactionLessMigrations.MigrationThatIsTransactionLess));
            list[0].Value.TransactionBehavior.ShouldBe(TransactionBehavior.None);
            list[0].Value.Version.ShouldBe(1);

            list[1].Value.Migration.GetType().ShouldBe(typeof(DoesHandleTransactionLessMigrations.MigrationThatIsNotTransactionLess));
            list[1].Value.TransactionBehavior.ShouldBe(TransactionBehavior.Default);
            list[1].Value.Version.ShouldBe(2);
        }
Beispiel #5
0
        public void VersionDescriptionMigrationOnlyRunOnceEvenIfExistenceChecksReturnFalse()
        {
            var runnerContext = new Mock <IRunnerContext>();
            var conventions   = new MigrationRunnerConventions();
            var processor     = new Mock <IMigrationProcessor>();
            var runner        = new Mock <IMigrationRunner>();
            var asm           = Assembly.GetExecutingAssembly();

            runner.SetupGet(r => r.Processor).Returns(processor.Object);
            runner.SetupGet(r => r.RunnerContext).Returns(runnerContext.Object);

            processor.Setup(p => p.ColumnExists(new TestVersionTableMetaData().SchemaName, TestVersionTableMetaData.TABLE_NAME, TestVersionTableMetaData.APPLIED_ON_COLUMN_NAME)).Returns(false);

            var loader = new VersionLoader(runner.Object, asm, ConventionSets.NoSchemaName, conventions, runnerContext.Object);

            loader.LoadVersionInfo();

            runner.Verify(r => r.Up(loader.VersionDescriptionMigration), Times.Once());
        }
Beispiel #6
0
        public void VersionSchemaMigrationOnlyRunOnceEvenIfExistenceChecksReturnFalse()
        {
            var runnerContext = new Mock <IRunnerContext>();
            var conventions   = new MigrationRunnerConventions();
            var processor     = new Mock <IMigrationProcessor>();
            var runner        = new Mock <IMigrationRunner>();
            var asm           = Assembly.GetExecutingAssembly();

            runner.SetupGet(r => r.Processor).Returns(processor.Object);
            runner.SetupGet(r => r.RunnerContext).Returns(runnerContext.Object);

            processor.Setup(p => p.SchemaExists(It.IsAny <string>())).Returns(false);

            var loader = new VersionLoader(runner.Object, asm, ConventionSets.NoSchemaName, conventions, runnerContext.Object);

            loader.LoadVersionInfo();

            runner.Verify(r => r.Up(loader.VersionSchemaMigration), Times.Once());
        }
        public void CanFindMigrationsInAssembly()
        {
            var conventions = new MigrationRunnerConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new DefaultMigrationInformationLoader(conventions, asm, "FluentMigrator.Tests.Integration.Migrations.Interleaved.Pass1", null);

            SortedList <long, IMigrationInfo> migrationList = loader.LoadMigrations();

            //if this works, there will be at least one migration class because i've included on in this code file
            var en    = migrationList.GetEnumerator();
            int count = 0;

            while (en.MoveNext())
            {
                count++;
            }

            count.ShouldBeGreaterThan(0);
        }
Beispiel #8
0
        public void CanSetupApplicationContext()
        {
            var applicationContext = "Test context";

            var runnerContext = new Mock <IRunnerContext>();

            runnerContext.SetupGet(r => r.ApplicationContext).Returns(applicationContext);

            var runner = new Mock <IMigrationRunner>();

            runner.SetupGet(r => r.Processor.Options).Returns(new ProcessorOptions());
            runner.SetupGet(r => r.RunnerContext).Returns(runnerContext.Object);

            var conventions = new MigrationRunnerConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new VersionLoader(runner.Object, asm, ConventionSets.NoSchemaName, conventions, runnerContext.Object);

            var versionTableMetaData = loader.GetVersionTableMetaData();

            versionTableMetaData.ApplicationContext.ShouldBe(applicationContext);
        }
Beispiel #9
0
        public void RemoveVersionTableShouldNotRemoveSchemaIfItDidNotOwnTheSchema()
        {
            var runnerContext = new Mock <IRunnerContext>();
            var processor     = new Mock <IMigrationProcessor>();
            var runner        = new Mock <IMigrationRunner>();

            runner.SetupGet(r => r.Processor).Returns(processor.Object);
            runner.SetupGet(r => r.RunnerContext).Returns(runnerContext.Object);

            var conventions = new MigrationRunnerConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new VersionLoader(runner.Object, asm, ConventionSets.NoSchemaName, conventions, runnerContext.Object);

            ((TestVersionTableMetaData)loader.VersionTableMetaData).OwnsSchema = false;

            processor.Setup(p => p.Process(It.Is <DeleteTableExpression>(expression =>
                                                                         expression.SchemaName == loader.VersionTableMetaData.SchemaName &&
                                                                         expression.TableName == loader.VersionTableMetaData.TableName)))
            .Verifiable();

            loader.RemoveVersionTable();

            processor.Verify(p => p.Process(It.IsAny <DeleteSchemaExpression>()), Times.Never());
        }