コード例 #1
0
        public void ShouldSetPropertiesForAddTable()
        {
            var      schemaName = "schemaName";
            var      tableName  = "tableName";
            var      column1    = Column.VarChar("name", new CharacterLength(50), null, Nullable.NotNull, "''", "default constraint name", "varchar column");
            Identity identity   = new Identity();
            var      column2    = Column.Int("int column", identity, "test int column");

            Column[] columnlist         = new Column[] { column1, column2 };
            bool     fileTable          = true;
            var      fileGroup          = "fileGroup";
            var      textImageFileGroup = "textImageFileGroup";
            var      fileStremFileGroup = "fileGroup";

            string[] options = new string[] { "option1", "option2" };

            var op = new AddTableOperation(schemaName, tableName, columnlist, fileTable, fileGroup, textImageFileGroup, fileStremFileGroup, options);

            Assert.That(op.SchemaName, Is.EqualTo(schemaName));
            Assert.That(op.Name, Is.EqualTo(tableName));
            Assert.That(op.Columns.Contains(column1));
            Assert.That(op.Columns.Contains(column2));
            Assert.That(op.Columns.Count, Is.EqualTo(2));
            Assert.That(op.FileTable, Is.EqualTo(true));
            Assert.That(op.FileGroup, Is.EqualTo(fileGroup));
            Assert.That(op.TextImageFileGroup, Is.EqualTo(textImageFileGroup));
            Assert.That(op.FileStreamFileGroup, Is.EqualTo(fileStremFileGroup));
            Assert.That(op.Options.Contains("option1"));
            Assert.That(op.Options.Contains("option2"));
            Assert.That(op.Options.Count, Is.EqualTo(2));
            Assert.That(op.ObjectName, Is.EqualTo(string.Format("{0}.{1}", schemaName, tableName)));
        }
コード例 #2
0
        public void ShouldRemoveDefaultExpressionWhenMergingRemoveDefaultConstraint(string columnName)
        {
            var columns = new Column[]
            {
                Column.Int("id", null, "description"),
                Column.VarChar("column", new CharacterLength(50), "collation", Nullable.Null, "default", "default constraint name", "description")
            };
            var op = new AddTableOperation("schema", "table", columns, false, "filegroup", "textimagefilegroup", "filestreamfilegroup", new string[0]);
            var addDefaultConstraintOp = new RemoveDefaultConstraintOperation("SCHEMA", "TABLE", columnName, "NAME");

            op.Merge(addDefaultConstraintOp);
            Assert.That(op.Disabled, Is.False);
            if (String.IsNullOrEmpty(columnName))
            {
                Assert.That(addDefaultConstraintOp.Disabled, Is.False);
                Assert.That(columns[0].DefaultExpression, Is.Null);
                Assert.That(columns[1].DefaultExpression, Is.EqualTo("default"));
            }
            else
            {
                Assert.That(addDefaultConstraintOp.Disabled, Is.True);
                Assert.That(columns[0].DefaultExpression, Is.Null);
                Assert.That(columns[1].DefaultExpression, Is.Null);
            }
        }
コード例 #3
0
        public void ShouldNotRenameTableIfTableIsRenamedAfterColumnsAreRenamed()
        {
            var columns = new[]
            {
                Column.Int("c1", Nullable.NotNull, null, null, "description"),
                Column.VarChar("c2", new CharacterLength(1008), "collation", Nullable.NotNull, null, null, "description")
            };
            var op = new AddTableOperation("schema", "table", columns, false, "file group", "textimagefilegroup", "filestreamfilegroup", new string[0]);
            var renameColumn1Op = new RenameColumnOperation("SCHEMA", "TABLE", "C1", "C1New");
            var renameColumn2Op = new RenameColumnOperation("SCHEMA", "TABLE", "C2", "C2New");
            var renameTableOp   = new RenameObjectOperation("SCHEMA", "TABLE", "T1New");

            renameColumn2Op.Merge(renameTableOp);
            renameColumn1Op.Merge(renameTableOp);
            op.Merge(renameTableOp);

            renameColumn1Op.Merge(renameColumn2Op);
            op.Merge(renameColumn2Op);

            op.Merge(renameColumn1Op);

            Assert.That(op.Disabled, Is.False);
            Assert.That(renameColumn1Op.Disabled, Is.True);
            Assert.That(renameColumn2Op.Disabled, Is.True);
            Assert.That(renameTableOp.Disabled, Is.True);
            Assert.That(columns[0].Name, Is.EqualTo("C1New"));
            Assert.That(columns[1].Name, Is.EqualTo("C2New"));
            Assert.That(renameColumn2Op.TableName, Is.EqualTo("T1New"));
            Assert.That(renameColumn1Op.TableName, Is.EqualTo("T1New"));
            Assert.That(op.Name, Is.EqualTo("T1New"));
        }
コード例 #4
0
        public void ShouldWriteQueryForAddTableWithFileTableFalse()
        {
            var      schemaName = "schemaName";
            var      tableName  = "tableName";
            var      column1    = Column.VarChar("name", new CharacterLength(50), null, Nullable.NotNull, "''", "default constraint name", "varchar column");
            Identity identity   = new Identity();
            var      column2    = Column.Int("int column", identity, "test int column");

            Column[] columnlist         = new Column[] { column1, column2 };
            bool     fileTable          = false;
            var      fileGroup          = "fileGroup";
            var      textImageFileGroup = "textImageFileGroup";
            var      fileStremFileGroup = "fileGroup";

            string[] options = new string[] { "option1", "option2" };

            var op            = new AddTableOperation(schemaName, tableName, columnlist, fileTable, fileGroup, textImageFileGroup, fileStremFileGroup, options);
            var expectedQuery =
                $@"create table [schemaName].[tableName] ({Environment.NewLine}" +
                $"    [name] varchar(50) not null constraint [default constraint name] default '',{Environment.NewLine}" +
                $"    [int column] int identity not null{Environment.NewLine})" +
                $"{Environment.NewLine}" +
                $"on fileGroup{Environment.NewLine}" +
                $"textimage_on textImageFileGroup{Environment.NewLine}" +
                $"filestream_on fileGroup{Environment.NewLine}" +
                "with ( option1, option2 )";

            Assert.That(op.ToQuery(), Is.EqualTo(expectedQuery));
        }
コード例 #5
0
        public void ShouldReplaceColumnsIfUpdatedByMerge()
        {
            var columns = new Column[]
            {
                Column.Int("id", null, "description"),
                Column.VarChar("name", new CharacterLength(50), "collation", Nullable.Null, null, null, "description"),
                Column.Char("flag", new CharacterLength(1), "collation", Nullable.NotNull, null, null, "description")
            };
            var op = new AddTableOperation("schema", "table", columns, false, "filegroup", "textimagefilegroup", "filetreamfilegroup", new string[0]);

            var updatedColumns = new Column[]
            {
                Column.BigInt("ID", new Identity(), "new_description"),
                Column.NVarChar("NAME", new CharacterLength(25), "new collation", Nullable.NotNull, "default", "default constraint name", "new description"),
                Column.NVarChar("donotexist", new CharacterLength(25), "new collation", Nullable.NotNull, "default", "default constraint name", "new description")
            };
            var updateOp = new UpdateTableOperation("schema", "table", null, updatedColumns, null);

            op.Merge(updateOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(updateOp.Disabled, Is.True);
            Assert.That(op.Columns[0], Is.SameAs(updatedColumns[0]));
            Assert.That(op.Columns[1], Is.SameAs(updatedColumns[1]));
            Assert.That(op.Columns[2], Is.SameAs(columns[2]));
        }
コード例 #6
0
        public void ShouldMergeWithUpdateTableOperationOnce()
        {
            var columns = new[]
            {
                Column.Int("ID", Nullable.NotNull, null, null, null),
                Column.VarChar("Name", new CharacterLength(500), null, Nullable.NotNull, null, null, null),
            };
            var addTableOp         = new AddTableOperation("skma", "Farmers", columns, false, null, null, null, new string[0]);
            var updateNameColumnOp = new UpdateTableOperation("skma", "Farmers",
                                                              new[] { Column.VarChar("NAME", new CharacterLength(50), null, Nullable.NotNull, null, null, null) }, null,
                                                              null);
            var updateZipColumnOp = new UpdateTableOperation("skma", "Farmers",
                                                             new[] { Column.VarChar("Zip", new CharacterLength(10), null, Nullable.Null, null, null, null) }, null, null);
            var renameZipColumnOp = new RenameColumnOperation("skma", "Farmers", "ZIP", "ZipCode");

            updateZipColumnOp.Merge(renameZipColumnOp);
            updateNameColumnOp.Merge(renameZipColumnOp);
            addTableOp.Merge(renameZipColumnOp);

            updateNameColumnOp.Merge(updateZipColumnOp);
            addTableOp.Merge(updateZipColumnOp);

            addTableOp.Merge(updateNameColumnOp);
            Assert.That(addTableOp.Disabled, Is.False);
            Assert.That(updateNameColumnOp.Disabled, Is.True);
            Assert.That(updateZipColumnOp.Disabled, Is.True);
            Assert.That(renameZipColumnOp.Disabled, Is.True);
            Assert.That(addTableOp.Columns.Count, Is.EqualTo(3));
            Assert.That(addTableOp.Columns[0].Name, Is.EqualTo("ID"));
            Assert.That(addTableOp.Columns[1].Name, Is.EqualTo("NAME"));
            Assert.That(addTableOp.Columns[2].Name, Is.EqualTo("ZipCode"));
        }
コード例 #7
0
        public void ShouldRenameColumnMultipleTimes()
        {
            var columns = new[]
            {
                Column.Int("c1", Nullable.NotNull, null, null, "description"),
            };
            var op = new AddTableOperation("schema", "table", columns, false, "file group", "textimagefilegroup", "filestreamfilegroup", new string[0]);
            var renameColumn1Op = new RenameColumnOperation("SCHEMA", "TABLE", "C1", "C1New");
            var renameColumn2Op = new RenameColumnOperation("SCHEMA", "TABLE", "C1New", "C2");

            renameColumn1Op.Merge(renameColumn2Op);
            op.Merge(renameColumn2Op);

            op.Merge(renameColumn1Op);

            Assert.That(renameColumn2Op.Disabled, Is.True);
            Assert.That(renameColumn2Op.Name, Is.EqualTo("C1New"));
            Assert.That(renameColumn2Op.NewName, Is.EqualTo("C2"));

            Assert.That(renameColumn1Op.Disabled, Is.True);
            Assert.That(renameColumn1Op.Name, Is.EqualTo("C1"));
            Assert.That(renameColumn1Op.NewName, Is.EqualTo("C2"));

            Assert.That(op.Disabled, Is.False);
            Assert.That(op.Columns[0].Name, Is.EqualTo("C2"));
        }
コード例 #8
0
        public void ShouldDisableWhenMergedWithRemoveOperation()
        {
            var op       = new AddTableOperation("schema", "name", new Column[0], false, "filegroup", "textimagefilegroup", "filestreamgroup", new string[0]);
            var removeOp = new RemoveTableOperation("SCHEMA", "NAME");

            op.Merge(removeOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(removeOp.Disabled, Is.True);
        }
コード例 #9
0
        public void ShouldNotRemoveRowGuidColFromColumnWhenMergingRemoveRowGuidColumnOperationAndTheColumnIsNotAUniqueIdentifier()
        {
            var columns = new Column[]
            {
                Column.NVarChar("name", new CharacterLength(50), "collation", Nullable.Null, null, null, "description"),
            };
            var op = new AddTableOperation("schema", "table", columns, false, "file group", "text image file group", "file stream file group", new string[0]);
            var addRowGuidColOp = new AddRowGuidColOperation("SCHEMA", "TABLE", "name");

            op.Merge(addRowGuidColOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(addRowGuidColOp.Disabled, Is.False);
            Assert.That(op.Columns[0].RowGuidCol, Is.False);
        }
コード例 #10
0
        public void ShouldFormatOneColumnTable()
        {
            var schemaName = "schemaName";
            var tableName  = "tableName";
            var column1    = Column.VarChar("name", new CharacterLength(50), null, Nullable.NotNull, "''", "default constraint name", "varchar column");

            Column[] columnlist = { column1 };

            var op            = new AddTableOperation(schemaName, tableName, columnlist, false, null, null, null, null);
            var expectedQuery =
                $@"create table [schemaName].[tableName] ({Environment.NewLine}" +
                $"    [name] varchar(50) not null constraint [default constraint name] default ''{Environment.NewLine})";

            Assert.That(op.ToQuery(), Is.EqualTo(expectedQuery));
        }
コード例 #11
0
        public void ShouldRemoveRowGuidColFromColumnWhenMergingRemoveRowGuidColumnOperation()
        {
            var columns = new Column[]
            {
                Column.UniqueIdentifier("name", true, Nullable.NotNull, "default expression", "default constraint name", "description"),
                Column.UniqueIdentifier("name2", true, Nullable.NotNull, "default expression", "default constraint name", "description"),
            };
            var op = new AddTableOperation("schema", "table", columns, false, "file group", "text image file group", "file stream file group", new string[0]);
            var addRowGuidColOp = new RemoveRowGuidColOperation("SCHEMA", "TABLE", "name");

            op.Merge(addRowGuidColOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(addRowGuidColOp.Disabled, Is.True);
            Assert.That(op.Columns[0].RowGuidCol, Is.False);
            Assert.That(op.Columns[1].RowGuidCol, Is.True);
        }
コード例 #12
0
        public void ShouldRenameColumnsIfRenamedByMerge()
        {
            var columns = new []
            {
                Column.Int("id", null, "description"),
                Column.VarChar("name", new CharacterLength(50), "collation", Nullable.Null, null, null, "description")
            };
            var op             = new AddTableOperation("schema", "table", columns, false, "filegroup", "textimagefilegroup", "filestreamfilegroup", new string[0]);
            var renameColumnOp = new RenameColumnOperation("SCHEMA", "TABLE", "NAME", "newname");

            op.Merge(renameColumnOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(renameColumnOp.Disabled, Is.True);
            Assert.That(columns[0].Name, Is.EqualTo("id"));
            Assert.That(columns[1].Name, Is.EqualTo("newname"));
        }
コード例 #13
0
        public void ShouldNotAddDefaultExpressionIfUsingWithValuesClauseWhenMerging()
        {
            var columns = new Column[]
            {
                Column.Int("id", null, "description"),
                Column.VarChar("column", new CharacterLength(50), "collation", Nullable.Null, null, null, "description")
            };
            var op = new AddTableOperation("schema", "table", columns, false, "file group", "text image file group", "filestreamfilegroup", new string[0]);
            var addDefaultConstraintOp =
                new AddDefaultConstraintOperation("SCHEMA", "TABLE", "NAME", "COLUMN", "default", true);

            op.Merge(addDefaultConstraintOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(addDefaultConstraintOp.Disabled, Is.False);
            Assert.That(columns[0].DefaultExpression, Is.Null);
            Assert.That(columns[1].DefaultExpression, Is.Null);
        }
コード例 #14
0
        public void ShouldDeleteColumnsIfDeletedByMerge()
        {
            var columns = new []
            {
                Column.Int("id", null, "description"),
                Column.VarChar("name", new CharacterLength(50), "collation", Nullable.Null, null, null, "description"),
                Column.Char("flag", new CharacterLength(1), "collation", Nullable.NotNull, null, null, "description")
            };
            var op = new AddTableOperation("schema", "table", columns, false, "filegroup", "textimagefilegroup", "filetreamfilegroup", new string[0]);

            var updateOp = new UpdateTableOperation("schema", "table", null, null, new string[] { "ID", "NAME", "IDONOTEXIST" });

            op.Merge(updateOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(updateOp.Disabled, Is.True);
            Assert.That(op.Columns.Count, Is.EqualTo(1));
            Assert.That(op.Columns[0], Is.SameAs(columns[2]));
        }
コード例 #15
0
        public void ShouldRenameColumnDefaultConstraintIfMergedWithRenameOperation()
        {
            var columns = new[]
            {
                Column.Bit("no default", Nullable.NotNull, null, null, null),
                Column.Int("Name", Nullable.NotNull, null, "DF_ID", null),
                Column.VarChar("ID2", new CharacterLength(500), null, Nullable.NotNull, null, "name", null),
            };
            var op       = new AddTableOperation("schema", "table", columns, false, null, null, null, new string[0]);
            var renameOp = new RenameObjectOperation("SCHEMA", "NAME", "NEW NAME");

            op.Merge(renameOp);
            Assert.That(op.Name, Is.EqualTo("table"));
            Assert.That(op.Columns[0].DefaultConstraintName, Is.Null);
            Assert.That(op.Columns[1].DefaultConstraintName, Is.EqualTo("DF_ID"));
            Assert.That(op.Columns[2].DefaultConstraintName, Is.EqualTo("NEW NAME"));
            Assert.That(op.Disabled, Is.False);
            Assert.That(renameOp.Disabled, Is.True);
        }
コード例 #16
0
        public void ShouldNotMergeDefaultConstraintNameWhenMergingAddDefaultConstraintWithValuesOp()
        {
            var columns = new[]
            {
                Column.Int("ID", Nullable.NotNull, null, null, null),
                Column.VarChar("Name", new CharacterLength(500), null, Nullable.NotNull, null, null, null),
            };
            var op = new AddTableOperation("schema", "table", columns, false, null, null, null, new string[0]);
            var addDefaultConstraintOp =
                new AddDefaultConstraintOperation("SCHEMA", "TABLE", "DF_NAME", "NAME", "expression", true);

            op.Merge(addDefaultConstraintOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(addDefaultConstraintOp.Disabled, Is.False);
            Assert.That(op.Columns[0].DefaultExpression, Is.Null);
            Assert.That(op.Columns[0].DefaultConstraintName, Is.Null);
            Assert.That(op.Columns[1].DefaultExpression, Is.Null);
            Assert.That(op.Columns[1].DefaultConstraintName, Is.Null);
        }
コード例 #17
0
        public void ShouldWriteQueryForAddTableWithAllOptionsTrue()
        {
            var      schemaName = "schemaName";
            var      tableName  = "tableName";
            var      column1    = Column.VarChar("name", new CharacterLength(50), null, Nullable.NotNull, "''", "default constraint name", "varchar column");
            Identity identity   = new Identity();
            var      column2    = Column.Int("int column", identity, "test int column");

            Column[] columnlist         = new Column[] { column1, column2 };
            bool     fileTable          = true;
            var      fileGroup          = "fileGroup";
            var      textImageFileGroup = "textImageFileGroup";
            var      fileStremFileGroup = "fileGroup";

            string[] options = new string[] { "option1", "option2" };

            var op            = new AddTableOperation(schemaName, tableName, columnlist, fileTable, fileGroup, textImageFileGroup, fileStremFileGroup, options);
            var expectedQuery = String.Format(@"create table [schemaName].[tableName] as FileTable{0}on fileGroup{0}textimage_on textImageFileGroup{0}filestream_on fileGroup{0}with ( option1, option2 )", Environment.NewLine);

            Assert.That(op.ToQuery(), Is.EqualTo(expectedQuery));
        }
コード例 #18
0
        public void ShouldWriteQueryForAddTableWithNoOptions()
        {
            var      schemaName = "schemaName";
            var      tableName  = "tableName";
            var      column1    = Column.VarChar("name", new CharacterLength(50), null, Nullable.NotNull, "''", "default constraint name", "varchar column");
            Identity identity   = new Identity();
            var      column2    = Column.Int("int column", identity, "test int column");

            Column[] columnlist         = new Column[] { column1, column2 };
            bool     fileTable          = true;
            var      fileGroup          = "";
            var      textImageFileGroup = "";
            var      fileStremFileGroup = "";

            string[] options = new string[] { };

            var op            = new AddTableOperation(schemaName, tableName, columnlist, fileTable, fileGroup, textImageFileGroup, fileStremFileGroup, options);
            var expectedQuery = @"create table [schemaName].[tableName] as FileTable";

            Assert.That(op.ToQuery(), Is.EqualTo(expectedQuery));
        }
コード例 #19
0
        public void ShouldAddNewColumnsToARenamedTable()
        {
            var addTableOp = new AddTableOperation("schema", "name", null, false, "file group", "text image file group",
                                                   "file stream file group", null);
            var renameTableOp = new RenameObjectOperation("schema", "name", "new table");
            var newColumns    = new[]
            {
                Column.TinyInt("errorId", Nullable.Null, null, null, "some description")
            };
            var updateTableOp = new UpdateTableOperation("schema", "new table", newColumns, null, null);

            addTableOp.Merge(renameTableOp);

            renameTableOp.Merge(updateTableOp);
            addTableOp.Merge(updateTableOp);

            Assert.That(renameTableOp.Disabled, Is.True);
            Assert.That(updateTableOp.Disabled, Is.True);
            Assert.That(addTableOp.Disabled, Is.False);
            Assert.That(addTableOp.Columns, Is.Not.Empty);
            Assert.That(addTableOp.Columns, Has.Count.EqualTo(1));
            Assert.That(addTableOp.Columns[0], Is.SameAs(newColumns[0]));
            Assert.That(addTableOp.Name, Is.EqualTo("new table"));
        }