예제 #1
0
        public void Dispatches_visitor()
        {
            var operation = new DropUniqueConstraintOperation("dbo.MyTable", "MyUC");

            var sqlGeneratorMock = new Mock <MigrationOperationSqlGenerator>(new RelationalTypeMapper());
            var builder          = new IndentedStringBuilder();

            operation.GenerateSql(sqlGeneratorMock.Object, builder);

            sqlGeneratorMock.Verify(g => g.Generate(operation, builder), Times.Once());

            var codeGeneratorMock = new Mock <MigrationCodeGenerator>(new Mock <ModelCodeGenerator>().Object);

            builder = new IndentedStringBuilder();
            operation.GenerateCode(codeGeneratorMock.Object, builder);

            codeGeneratorMock.Verify(g => g.Generate(operation, builder), Times.Once());

            var visitorMock = new Mock <MigrationOperationVisitor <object> >();
            var context     = new object();

            operation.Accept(visitorMock.Object, context);

            visitorMock.Verify(v => v.Visit(operation, context), Times.Once());
        }
        public void Visit_with_drop_unique_constraint_operation()
        {
            var model  = new DatabaseModel();
            var column = new Column("Foo", typeof(int));
            var table  = new Table("dbo.MyTable", new[] { column });

            table.AddUniqueConstraint(new UniqueConstraint("UC", new[] { column }));

            var operation = new DropUniqueConstraintOperation("dbo.MyTable", "UC");

            model.AddTable(table);

            Assert.Equal(1, table.UniqueConstraints.Count);

            operation.Accept(new DatabaseModelModifier(), model);

            Assert.Equal(0, table.UniqueConstraints.Count);
        }