public override void CanDeleteDataForAllRowsWithCustomSchema()
        {
            var expression = GeneratorTestHelper.GetDeleteDataAllRowsExpression();

            expression.SchemaName = "TestSchema";

            var result = Generator.Generate(expression);

            result.ShouldBe("DELETE FROM [TestSchema].[TestTable1] WHERE 1 = 1");
        }
        public override void CanAlterColumnWithCustomSchema()
        {
            //TODO: This will fail if there are any keys attached
            var expression = GeneratorTestHelper.GetAlterColumnExpression();

            expression.SchemaName = "TestSchema";

            var result = Generator.Generate(expression);

            result.ShouldBe("ALTER TABLE [TestSchema].[TestTable1] ALTER COLUMN [TestColumn1] NVARCHAR(20) NOT NULL");
        }
        public void CanCreateTableWithDefaultSchema()
        {
            var expression = GeneratorTestHelper.GetCreateTableExpression();

            var sql = generator.Generate(expression);

            sql.ShouldBe("CREATE TABLE [dbo].[TestTable1] ([TestColumn1] NVARCHAR(255) NOT NULL, [TestColumn2] INT NOT NULL)");
        }
        public void CanInsertDataWithDefaultSchema()
        {
            var expression = GeneratorTestHelper.GetInsertDataExpression();
            var sql        = generator.Generate(expression);

            var expected = "INSERT INTO [dbo].[TestTable1] ([Id], [Name], [Website]) VALUES (1, 'Just''in', 'codethinked.com');";

            expected += @" INSERT INTO [dbo].[TestTable1] ([Id], [Name], [Website]) VALUES (2, 'Na\te', 'kohari.org')";

            sql.ShouldBe(expected);
        }
        public override void CanCreateTableWithCustomColumnTypeWithCustomSchema()
        {
            var expression = GeneratorTestHelper.GetCreateTableExpression();

            expression.SchemaName = "TestSchema";
            expression.Columns[0].IsPrimaryKey = true;
            expression.Columns[1].Type         = null;
            expression.Columns[1].CustomType   = "[timestamp]";

            var result = Generator.Generate(expression);

            result.ShouldBe("CREATE TABLE [TestSchema].[TestTable1] ([TestColumn1] NVARCHAR(255) NOT NULL, [TestColumn2] [timestamp] NOT NULL, PRIMARY KEY ([TestColumn1]))");
        }
예제 #6
0
        public void CanDropColumnWithDefaultSchema()
        {
            //This does not work if it is a primary key
            var expression = GeneratorTestHelper.GetDeleteColumnExpression();

            var sql = generator.Generate(expression);

            string expected = "DECLARE @default sysname, @sql nvarchar(max);" + Environment.NewLine + Environment.NewLine +
                              "-- get name of default constraint" + Environment.NewLine +
                              "SELECT @default = name" + Environment.NewLine +
                              "FROM sys.default_constraints" + Environment.NewLine +
                              "WHERE parent_object_id = object_id('[dbo].[TestTable1]')" + Environment.NewLine +
                              "AND type = 'D'" + Environment.NewLine +
                              "AND parent_column_id = (" + Environment.NewLine +
                              "SELECT column_id" + Environment.NewLine +
                              "FROM sys.columns" + Environment.NewLine +
                              "WHERE object_id = object_id('[dbo].[TestTable1]')" + Environment.NewLine +
                              "AND name = 'TestColumn1'" + Environment.NewLine +
                              ");" + Environment.NewLine + Environment.NewLine +
                              "-- create alter table command to drop constraint as string and run it" + Environment.NewLine +
                              "SET @sql = N'ALTER TABLE [dbo].[TestTable1] DROP CONSTRAINT ' + @default;" + Environment.NewLine +
                              "EXEC sp_executesql @sql;" + Environment.NewLine + Environment.NewLine +
                              "-- now we can finally drop column" + Environment.NewLine +
                              "ALTER TABLE [dbo].[TestTable1] DROP COLUMN [TestColumn1];" + Environment.NewLine;

            sql.ShouldBe(expected);
        }
예제 #7
0
        public override void CanCreateClusteredIndexWithCustomSchema()
        {
            var expression = GeneratorTestHelper.GetCreateIndexExpression();

            expression.Index.SchemaName  = "TestSchema";
            expression.Index.IsClustered = true;

            var result = Generator.Generate(expression);

            result.ShouldBe("CREATE CLUSTERED INDEX [TestIndex] ON [TestSchema].[TestTable1] ([TestColumn1] ASC)");
        }
예제 #8
0
        public void CanAddColumnWithDefaultSchema()
        {
            var expression = GeneratorTestHelper.GetCreateColumnExpression();
            var sql        = generator.Generate(expression);

            sql.ShouldBe("ALTER TABLE [dbo].[TestTable1] ADD [TestColumn1] NVARCHAR(5) NOT NULL");
        }
예제 #9
0
        public override void CanCreateNullableColumnWithCustomDomainTypeAndCustomSchema()
        {
            var expression = GeneratorTestHelper.GetCreateColumnExpressionWithNullableCustomType();

            expression.SchemaName = "TestSchema";

            var result = Generator.Generate(expression);

            result.ShouldBe("ALTER TABLE [TestSchema].[TestTable1] ADD [TestColumn1] MyDomainType NULL");
        }
        public void CanCreateTableWithIgnoredRowGuidCol()
        {
            var expression = new CreateTableExpression()
            {
                TableName = "TestTable1",
            };

            var serviceProvider = new ServiceCollection().BuildServiceProvider();
            var querySchema     = new Mock <IQuerySchema>();

            new CreateTableExpressionBuilder(expression, new MigrationContext(querySchema.Object, serviceProvider, null, null))
            .WithColumn("Id").AsGuid().PrimaryKey().RowGuid();

            var result = Generator.Generate(expression);

            result.ShouldBe("CREATE TABLE [dbo].[TestTable1] ([Id] UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL, PRIMARY KEY ([Id]))");
        }