public void ShouldDisableViewColumnPropertyIfViewRemovedByMerge()
        {
            var op       = new AddExtendedPropertyOperation("schema", "view", "column", "name", "value", true);
            var removeOp = new RemoveViewOperation("SCHEMA", "VIEW");

            op.Merge(removeOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(removeOp.Disabled, Is.False);
        }
        public void ShouldDisableAddSchemaPropertyIfRemovedByMerge()
        {
            var op       = new AddExtendedPropertyOperation("schema", "name", "value");
            var removeOp = new RemoveExtendedPropertyOperation("SCHEMA", "NAME");

            op.Merge(removeOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(removeOp.Disabled, Is.True);
        }
        public void ShouldDisableTableColumnPropertyIfTableRemovedByMerge()
        {
            var op       = new AddExtendedPropertyOperation("schema", "table", "column", "name", "value", false);
            var removeOp = new RemoveTableOperation("SCHEMA", "TABLE");

            op.Merge(removeOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(removeOp.Disabled, Is.False);
        }
        public void ShouldRemoveIfAddingSchemaPropertyAndSchemaGettingRemoved()
        {
            var op             = new AddExtendedPropertyOperation("schema", "name", "value");
            var removeSchemaOp = new RemoveSchemaOperation("SCHEMA");

            op.Merge(removeSchemaOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(removeSchemaOp.Disabled, Is.False);
        }
        public void ShouldDisableAddViewOrTablePropertyIfRemovedByMerge(bool forView)
        {
            var op       = new AddExtendedPropertyOperation("schema", "tableOrView", "name", "value", forView);
            var removeOp = new RemoveExtendedPropertyOperation("SCHEMA", "TABLEORVIEW", "NAME", forView);

            op.Merge(removeOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(removeOp.Disabled, Is.True);
        }
        public void ShouldDisableOperationWhenItsColumnIsRemoved()
        {
            var op            = new AddExtendedPropertyOperation("schema", "table", "column", "name", "value", false);
            var updateTableOp = new UpdateTableOperation("SCHEMA", "TABLE", new Column[0], new Column[0], new[] { "COLUMN" });

            op.Merge(updateTableOp);
            Assert.That(op.Disabled, Is.True);
            Assert.That(updateTableOp.Disabled, Is.False);
        }
        public void ShouldNotDisableOperationWhenItsIsForAViewAndATableWithTheSameNameIsRemoved()
        {
            var op            = new AddExtendedPropertyOperation("schema", "view", "name", "value", true);
            var removeTableOp = new RemoveTableOperation("SCHEMA", "VIEW");

            op.Merge(removeTableOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(removeTableOp.Disabled, Is.False);
        }
        public void ShouldNotDisableOperationWhenItIsForATableAndAViewWithTheSameNameIsRemoved()
        {
            var op           = new AddExtendedPropertyOperation("schema", "table", "name", "value", false);
            var removeViewOp = new RemoveViewOperation("SCHEMA", "TABLE");

            op.Merge(removeViewOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(removeViewOp.Disabled, Is.False);
        }
        public void ShouldUpdateTableOrViewColumnPropertyIfUpdatedByMerge(bool forView)
        {
            var op       = new AddExtendedPropertyOperation("schema", "tableorview", "column", "name", "value", forView);
            var updateOp = new UpdateExtendedPropertyOperation("SCHEMA", "TABLEORVIEW", "COLUMN", "NAME", "newvalue", forView);

            op.Merge(updateOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(updateOp.Disabled, Is.True);
            Assert.That(op.Value, Is.EqualTo("newvalue"));
        }
        public void ShouldUpdateSchemaPropertyIfUpdatedByMerge()
        {
            var op       = new AddExtendedPropertyOperation("schema", "name", "value");
            var updateOp = new UpdateExtendedPropertyOperation("SCHEMA", "NAME", "newvalue");

            op.Merge(updateOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(updateOp.Disabled, Is.True);
            Assert.That(op.Value, Is.EqualTo("newvalue"));
        }
        public void ShouldRemoveIfTableColumnIsRemoved()
        {
            var op       = new AddExtendedPropertyOperation("schema", "table", "column", "name", "value", false);
            var renameOp = new RenameColumnOperation("SCHEMA", "TABLE", "COLUMN", "newcolumn");

            op.Merge(renameOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(renameOp.Disabled, Is.False);
            Assert.That(op.ColumnName, Is.EqualTo("newcolumn"));
        }
        public void ShouldUpdateOperationIfViewIsRenamed()
        {
            var op       = new AddExtendedPropertyOperation("schema", "view", "name", "value", true);
            var renameOp = new RenameObjectOperation("SCHEMA", "VIEW", "newview");

            op.Merge(renameOp);
            Assert.That(op.Disabled, Is.False);
            Assert.That(renameOp.Disabled, Is.False);
            Assert.That(op.TableViewName, Is.EqualTo("newview"));
        }