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."); }
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); }
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); }
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); }
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(); }
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); }
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)); }
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"); }
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); }
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); }
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); }
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(); }
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); }
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(); }
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 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)); }
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); }
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); }
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); }
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); }
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); }