コード例 #1
0
        private static ISupportAdditionalFeatures GetColumn <TNext, TNextFk>(IColumnOptionSyntax <TNext, TNextFk> expression) where TNext : IFluentSyntax where TNextFk : IFluentSyntax
        {
            CreateTableExpressionBuilder cast1 = expression as CreateTableExpressionBuilder;

            if (cast1 != null)
            {
                return(cast1.CurrentColumn);
            }

            AlterTableExpressionBuilder cast2 = expression as AlterTableExpressionBuilder;

            if (cast2 != null)
            {
                return(cast2.CurrentColumn);
            }

            AlterColumnExpressionBuilder cast3 = expression as AlterColumnExpressionBuilder;

            if (cast3 != null)
            {
                return(cast3.GetColumnForType());
            }

            CreateColumnExpressionBuilder cast4 = expression as CreateColumnExpressionBuilder;

            if (cast4 != null)
            {
                return(cast4.GetColumnForType());
            }

            throw new InvalidOperationException("The seeded identity method can only be called on a valid object.");
        }
コード例 #2
0
        public void CallingUniqueNamedAddsIndexExpressionToContext()
        {
            var collectionMock = new Mock <ICollection <IMigrationExpression> >();

            var contextMock = new Mock <IMigrationContext>();

            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);

            var columnMock = new Mock <ColumnDefinition>();

            columnMock.SetupGet(x => x.Name).Returns("BaconId");

            var expressionMock = new Mock <AlterColumnExpression>();

            expressionMock.SetupGet(x => x.SchemaName).Returns("Eggs");
            expressionMock.SetupGet(x => x.TableName).Returns("Bacon");
            expressionMock.SetupGet(x => x.Column).Returns(columnMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.Unique("IX_Bacon_BaconId");

            collectionMock.Verify(x => x.Add(It.Is <CreateIndexExpression>(
                                                 ix => ix.Index.Name == "IX_Bacon_BaconId" &&
                                                 ix.Index.TableName == "Bacon" &&
                                                 ix.Index.SchemaName == "Eggs" &&
                                                 ix.Index.IsUnique &&
                                                 !ix.Index.IsClustered &&
                                                 ix.Index.Columns.All(c => c.Name == "BaconId")
                                                 )));

            contextMock.VerifyGet(x => x.Expressions);
        }
コード例 #3
0
        public void CallingReferencedByAddsNewForeignKeyExpressionToContext()
        {
            var collectionMock = new Mock <ICollection <IMigrationExpression> >();

            var contextMock = new Mock <IMigrationContext>();

            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);

            var columnMock = new Mock <ColumnDefinition>();

            columnMock.SetupGet(x => x.Name).Returns("BaconId");

            var expressionMock = new Mock <AlterColumnExpression>();

            expressionMock.SetupGet(x => x.TableName).Returns("Bacon");
            expressionMock.SetupGet(x => x.Column).Returns(columnMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.ReferencedBy("fk_foo", "FooTable", "BarColumn");

            collectionMock.Verify(x => x.Add(It.Is <CreateForeignKeyExpression>(
                                                 fk => fk.ForeignKey.Name == "fk_foo" &&
                                                 fk.ForeignKey.ForeignTable == "FooTable" &&
                                                 fk.ForeignKey.ForeignColumns.Contains("BarColumn") &&
                                                 fk.ForeignKey.ForeignColumns.Count == 1 &&
                                                 fk.ForeignKey.PrimaryTable == "Bacon" &&
                                                 fk.ForeignKey.PrimaryColumns.Contains("BaconId") &&
                                                 fk.ForeignKey.PrimaryColumns.Count == 1
                                                 )));

            contextMock.VerifyGet(x => x.Expressions);
        }
コード例 #4
0
        public void CallingWithDefaultAddsAlterDefaultConstraintExpression()
        {
            var columnMock = new Mock <ColumnDefinition>();

            var expressionMock = new Mock <AlterColumnExpression>();

            expressionMock.SetupProperty(e => e.Column);

            var expression = expressionMock.Object;

            expression.Column = columnMock.Object;

            var collectionMock = new Mock <ICollection <IMigrationExpression> >();

            var contextMock = new Mock <IMigrationContext>();

            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.WithDefault(SystemMethods.NewGuid);

            columnMock.VerifySet(c => c.DefaultValue = SystemMethods.NewGuid);
            collectionMock.Verify(x => x.Add(It.Is <AlterDefaultConstraintExpression>(e => e.DefaultValue.Equals(SystemMethods.NewGuid))));
            contextMock.VerifyGet(x => x.Expressions);
        }
コード例 #5
0
        public void CallingWithDefaultValueAddsAlterDefaultConstraintExpression()
        {
            const int value = 42;

            var columnMock = new Mock <ColumnDefinition>();

            columnMock.SetupSet(c => c.DefaultValue = value).AtMostOnce();

            var expressionMock = new Mock <AlterColumnExpression>();

            expressionMock.SetupProperty(e => e.Column);

            var expression = expressionMock.Object;

            expression.Column = columnMock.Object;

            var collectionMock = new Mock <ICollection <IMigrationExpression> >();

            collectionMock.Setup(x => x.Add(It.Is <AlterDefaultConstraintExpression>(e => e.DefaultValue.Equals(value)))).AtMostOnce();

            var contextMock = new Mock <IMigrationContext>();

            contextMock.SetupGet(x => x.Expressions).Returns(collectionMock.Object).AtMostOnce();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.WithDefaultValue(value);

            collectionMock.VerifyAll();
            contextMock.VerifyAll();
        }
コード例 #6
0
        public void ColumnHelperSetOnCreation()
        {
            var expressionMock = new Mock <AlterColumnExpression>();
            var contextMock    = new Mock <IMigrationContext>();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            Assert.IsNotNull(builder.ColumnHelper);
        }
コード例 #7
0
        public void CallingOnDeleteOrUpdateSetsOnUpdateAndOnDeleteOnForeignKeyExpression(Rule rule)
        {
            var builder = new AlterColumnExpressionBuilder(null, null)
            {
                CurrentForeignKey = new ForeignKeyDefinition()
            };

            builder.OnDeleteOrUpdate(rule);
            Assert.That(builder.CurrentForeignKey.OnUpdate, Is.EqualTo(rule));
            Assert.That(builder.CurrentForeignKey.OnDelete, Is.EqualTo(rule));
        }
コード例 #8
0
        public void CallingOnTableSetsTableName()
        {
            var expressionMock = new Mock <AlterColumnExpression>();

            var contextMock = new Mock <IMigrationContext>();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.OnTable("Bacon");

            expressionMock.VerifySet(x => x.TableName = "Bacon");
        }
コード例 #9
0
        public void IColumnExpressionBuilder_UsesExpressionColumn()
        {
            var expressionMock = new Mock <AlterColumnExpression>();
            var contextMock    = new Mock <IMigrationContext>();
            var curColumn      = new Mock <ColumnDefinition>().Object;

            expressionMock.SetupGet(n => n.Column).Returns(curColumn);

            var builder            = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            var builderAsInterface = (IColumnExpressionBuilder)builder;

            Assert.AreSame(curColumn, builderAsInterface.Column);
        }
コード例 #10
0
        public void IColumnExpressionBuilder_UsesExpressionSchemaAndTableName()
        {
            var expressionMock = new Mock <AlterColumnExpression>();
            var contextMock    = new Mock <IMigrationContext>();

            expressionMock.SetupGet(n => n.SchemaName).Returns("Fred");
            expressionMock.SetupGet(n => n.TableName).Returns("Flinstone");

            var builder            = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            var builderAsInterface = (IColumnExpressionBuilder)builder;

            Assert.AreEqual("Fred", builderAsInterface.SchemaName);
            Assert.AreEqual("Flinstone", builderAsInterface.TableName);
        }
コード例 #11
0
        private void VerifyColumnHelperCall(Action <AlterColumnExpressionBuilder> callToTest, System.Linq.Expressions.Expression <Action <ColumnExpressionBuilderHelper> > expectedHelperAction)
        {
            var expressionMock = new Mock <AlterColumnExpression>();
            var contextMock    = new Mock <IMigrationContext>();
            var helperMock     = new Mock <ColumnExpressionBuilderHelper>();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.ColumnHelper = helperMock.Object;

            callToTest(builder);

            helperMock.Verify(expectedHelperAction);
        }
コード例 #12
0
        public void CallingSeededIdentitySetsAdditionalProperties()
        {
            var contextMock = new Mock <IMigrationContext>();

            var columnMock = new Mock <ColumnDefinition>();

            columnMock.SetupGet(x => x.Name).Returns("BaconId");

            var expressionMock = new Mock <AlterColumnExpression>();

            expressionMock.SetupGet(x => x.Column).Returns(columnMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.Identity(23, 44);

            columnMock.Object.AdditionalFeatures.ShouldContain(
                new KeyValuePair <string, object>(SqlServerExtensions.IdentitySeed, 23));
            columnMock.Object.AdditionalFeatures.ShouldContain(
                new KeyValuePair <string, object>(SqlServerExtensions.IdentityIncrement, 44));
        }
        public void CallingOnTableSetsTableName()
        {
            var expressionMock = new Mock<AlterColumnExpression>();
            expressionMock.VerifySet(x => x.TableName = "Bacon", Times.AtMostOnce());

            var contextMock = new Mock<IMigrationContext>();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            builder.OnTable("Bacon");

            expressionMock.VerifyAll();
        }
        public void CallingWithDefaultValueAddsAlterDefaultConstraintExpression()
        {
            const int value = 42;

            var columnMock = new Mock<ColumnDefinition>();
            columnMock.VerifySet(c => c.DefaultValue = value, Times.AtMostOnce());

            var expressionMock = new Mock<AlterColumnExpression>();
            expressionMock.SetupProperty(e => e.Column);

            var expression = expressionMock.Object;
            expression.Column = columnMock.Object;

            var collectionMock = new Mock<ICollection<IMigrationExpression>>();
            collectionMock.Verify(x => x.Add(It.Is<AlterDefaultConstraintExpression>(e => e.DefaultValue.Equals(value))), Times.AtMostOnce());

            var contextMock = new Mock<IMigrationContext>();
            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);
            contextMock.VerifyGet(x => x.Expressions, Times.AtMostOnce());

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            builder.WithDefaultValue(value);

            collectionMock.VerifyAll();
            contextMock.VerifyAll();
        }
コード例 #15
0
        public void CallingUniqueNamedAddsIndexExpressionToContext()
        {
            var collectionMock = new Mock<ICollection<IMigrationExpression>>();

            var contextMock = new Mock<IMigrationContext>();
            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);

            var columnMock = new Mock<ColumnDefinition>();
            columnMock.SetupGet(x => x.Name).Returns("BaconId");

            var expressionMock = new Mock<AlterColumnExpression>();
            expressionMock.SetupGet(x => x.SchemaName).Returns("Eggs");
            expressionMock.SetupGet(x => x.TableName).Returns("Bacon");
            expressionMock.SetupGet(x => x.Column).Returns(columnMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.Unique("IX_Bacon_BaconId");

            collectionMock.Verify(x => x.Add(It.Is<CreateIndexExpression>(
                ix => ix.Index.Name == "IX_Bacon_BaconId"
                      && ix.Index.TableName == "Bacon"
                      && ix.Index.SchemaName == "Eggs"
                      && ix.Index.IsUnique
                      && !ix.Index.IsClustered
                      && ix.Index.Columns.All(c => c.Name == "BaconId")
                                                 )));

            contextMock.VerifyGet(x => x.Expressions);
        }
コード例 #16
0
        public void CallingReferencedByAddsNewForeignKeyExpressionToContext()
        {
            var collectionMock = new Mock<ICollection<IMigrationExpression>>();
            collectionMock.Verify(x => x.Add(It.Is<CreateForeignKeyExpression>(
                fk => fk.ForeignKey.Name == "fk_foo" &&
                        fk.ForeignKey.ForeignTable == "FooTable" &&
                        fk.ForeignKey.ForeignColumns.Contains("BarColumn") &&
                        fk.ForeignKey.ForeignColumns.Count == 1 &&
                        fk.ForeignKey.PrimaryTable == "Bacon" &&
                        fk.ForeignKey.PrimaryColumns.Contains("BaconId") &&
                        fk.ForeignKey.PrimaryColumns.Count == 1
                                                )), Times.AtMostOnce());

            var contextMock = new Mock<IMigrationContext>();
            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);
            contextMock.VerifyGet(x => x.Expressions, Times.AtMostOnce());

            var columnMock = new Mock<ColumnDefinition>();
            columnMock.SetupGet(x => x.Name).Returns("BaconId");

            var expressionMock = new Mock<AlterColumnExpression>();
            expressionMock.SetupGet(x => x.TableName).Returns("Bacon");
            expressionMock.SetupGet(x => x.Column).Returns(columnMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            builder.ReferencedBy("fk_foo", "FooTable", "BarColumn");

            collectionMock.VerifyAll();
            contextMock.VerifyAll();
            columnMock.VerifyAll();
            expressionMock.VerifyAll();
        }
コード例 #17
0
        public void CallingSeededIdentitySetsAdditionalProperties()
        {
            var contextMock = new Mock<IMigrationContext>();

            var columnMock = new Mock<ColumnDefinition>();
            columnMock.SetupGet(x => x.Name).Returns("BaconId");

            var expressionMock = new Mock<AlterColumnExpression>();
            expressionMock.SetupGet(x => x.Column).Returns(columnMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            builder.Identity(23, 44);

            columnMock.Object.AdditionalFeatures.ShouldContain(
                new KeyValuePair<string, object>(SqlServerExtensions.IdentitySeed, 23));
            columnMock.Object.AdditionalFeatures.ShouldContain(
                new KeyValuePair<string, object>(SqlServerExtensions.IdentityIncrement, 44));
        }
コード例 #18
0
 public void CallingOnUpdateSetsOnUpdateOnForeignKeyExpression(Rule rule)
 {
     var builder = new AlterColumnExpressionBuilder(null, null) { CurrentForeignKey = new ForeignKeyDefinition() };
     builder.OnUpdate(rule);
     Assert.That(builder.CurrentForeignKey.OnUpdate, Is.EqualTo(rule));
     Assert.That(builder.CurrentForeignKey.OnDelete, Is.EqualTo(Rule.None));
 }
コード例 #19
0
        public void CallingWithDefaultAddsAlterDefaultConstraintExpression()
        {
            var columnMock = new Mock<ColumnDefinition>();

            var expressionMock = new Mock<AlterColumnExpression>();
            expressionMock.SetupProperty(e => e.Column);

            var expression = expressionMock.Object;
            expression.Column = columnMock.Object;

            var collectionMock = new Mock<ICollection<IMigrationExpression>>();

            var contextMock = new Mock<IMigrationContext>();
            contextMock.Setup(x => x.Expressions).Returns(collectionMock.Object);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            builder.WithDefault(SystemMethods.NewGuid);

            columnMock.VerifySet(c => c.DefaultValue = SystemMethods.NewGuid);
            collectionMock.Verify(x => x.Add(It.Is<AlterDefaultConstraintExpression>(e => e.DefaultValue.Equals(SystemMethods.NewGuid))));
            contextMock.VerifyGet(x => x.Expressions);
        }
コード例 #20
0
        public void ColumnHelperSetOnCreation()
        {
            var expressionMock = new Mock<AlterColumnExpression>();
            var contextMock = new Mock<IMigrationContext>();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);

            Assert.IsNotNull(builder.ColumnHelper);
        }
コード例 #21
0
        public void IColumnExpressionBuilder_UsesExpressionColumn()
        {
            var expressionMock = new Mock<AlterColumnExpression>();
            var contextMock = new Mock<IMigrationContext>();
            var curColumn = new Mock<ColumnDefinition>().Object;
            expressionMock.SetupGet(n => n.Column).Returns(curColumn);

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            var builderAsInterface = (IColumnExpressionBuilder)builder;

            Assert.AreSame(curColumn, builderAsInterface.Column);
        }
コード例 #22
0
        public void IColumnExpressionBuilder_UsesExpressionSchemaAndTableName()
        {
            var expressionMock = new Mock<AlterColumnExpression>();
            var contextMock = new Mock<IMigrationContext>();
            expressionMock.SetupGet(n => n.SchemaName).Returns("Fred");
            expressionMock.SetupGet(n => n.TableName).Returns("Flinstone");

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            var builderAsInterface = (IColumnExpressionBuilder)builder;

            Assert.AreEqual("Fred", builderAsInterface.SchemaName);
            Assert.AreEqual("Flinstone", builderAsInterface.TableName);
        }
コード例 #23
0
        private void VerifyColumnHelperCall(Action<AlterColumnExpressionBuilder> callToTest, System.Linq.Expressions.Expression<Action<ColumnExpressionBuilderHelper>> expectedHelperAction)
        {
            var expressionMock = new Mock<AlterColumnExpression>();
            var contextMock = new Mock<IMigrationContext>();
            var helperMock = new Mock<ColumnExpressionBuilderHelper>();

            var builder = new AlterColumnExpressionBuilder(expressionMock.Object, contextMock.Object);
            builder.ColumnHelper = helperMock.Object;

            callToTest(builder);

            helperMock.Verify(expectedHelperAction);
        }