public void The_Corresponding_Relationship_Should_Also_Have_The_Column_Removed()
        {
            // Create database and relationships
            Database db = RelationshipDatabaseLoader.GetDb();

            Relationship relationship = db.Tables[1].Relationships[0];
            Assert.That(relationship.PrimaryKey, Is.SameAs(db.Tables[0].Keys[0]));
            Assert.That(relationship.ForeignKey, Is.SameAs(db.Tables[1].Keys[0]));
            Assert.That(relationship.PrimaryKey.Columns[0].Name, Is.EqualTo("Column1"));
            Assert.That(relationship.PrimaryKey.Columns[1].Name, Is.EqualTo("Column2"));

            IKey originalKey = db.Tables[1].Keys[0];

            IKey newKey = new Key(originalKey.Name, originalKey.Keytype);
            newKey.Parent = new Table("Table2");
            newKey.Parent.AddColumn(new Column("Column2"));
            newKey.Description = "new description";
            newKey.AddColumn("Column2");

            KeyChangeOperation op = new KeyChangeOperation(db.Tables[1].Keys[0], newKey);
            op.RunOperation();
            op.RunSecondStep();

            // Make sure the relationship is still the same, and has the same references.
            Relationship relationship2 = db.Tables[1].Relationships[0];
            Assert.That(relationship2, Is.SameAs(relationship));
            Assert.That(relationship2.PrimaryKey, Is.SameAs(db.Tables[0].Keys[0]));
            Assert.That(relationship2.ForeignKey, Is.SameAs(db.Tables[1].Keys[0]));
            Assert.That(relationship2.PrimaryKey.Columns, Has.Count(2));
            Assert.That(relationship2.ForeignKey.Columns, Has.Count(1));
            Assert.That(relationship2.ForeignKey.Columns[0].Name, Is.EqualTo("Column2"));
        }
Пример #2
0
            public void The_Original_Primary_Key_Should_Be_Modified()
            {
                var db1 = TestDatabaseLoader.TestDatabase();

                IKey originalKey = db1.Tables[0].Keys[0];

                originalKey.Description = "old description";

                IKey newKey = new Key(originalKey.Name);

                newKey.Parent = new Table("Table1");
                newKey.Parent.AddColumn(new Column("Column2"));
                newKey.Description = "new description";
                newKey.AddColumn("Column2");

                KeyChangeOperation op = new KeyChangeOperation(db1.Tables[0].Keys[0], newKey);

                op.RunOperation();
                op.RunSecondStep();

                IKey key = db1.Tables[0].Keys[0];

                Assert.That(db1.Tables[0].Keys, Has.Count(1));
                Assert.That(key, Is.SameAs(originalKey), "Key object should still be the same");
                Assert.That(key.Description, Is.EqualTo("old description"), "Should not change user set properties.");
                Assert.That(key.ReferencedKey, Is.Null);
                Assert.That(key.Columns, Has.Count(1));
                Assert.That(key.Columns[0].Name, Is.EqualTo("Column2"));
                Assert.That(key.Columns[0], Is.Not.SameAs(newKey.Columns[0]));
                Assert.That(key.Columns[0], Is.SameAs(db1.Tables[0].Columns[1]), "The new key should reference existing columns");
                Assert.That(key.Parent, Is.SameAs(db1.Tables[0]), "The new key's parent should be Table1 in the existing database");
            }
Пример #3
0
        public void Modified()
        {
            IKey key = GetKey();
            IMergeOperation <IKey> op = new KeyChangeOperation(key, new Key("KeyV"));

            Assert.That(op.ToString(), Is.EqualTo("DB1.Table2.KeyV Changed"));
        }
Пример #4
0
        public void The_Corresponding_Relationship_Should_Also_Have_The_Column()
        {
            // Create database and relationships
            Database db = RelationshipDatabaseLoader.GetDb();

            Relationship relationship = db.Tables[1].Relationships[0];

            Assert.That(relationship.PrimaryKey, Is.SameAs(db.Tables[0].Keys[0]));
            Assert.That(relationship.ForeignKey, Is.SameAs(db.Tables[1].Keys[0]));
            Assert.That(relationship.ForeignKey.Columns[0].Name, Is.EqualTo("Column1"));

            IKey originalKey = db.Tables[0].Keys[0];

            IKey newKey = new Key(originalKey.Name);

            newKey.Parent = new Table("Table1");
            newKey.Parent.AddColumn(new Column("Column2"));
            newKey.Description = "new description";
            newKey.AddColumn("Column2");

            KeyChangeOperation op = new KeyChangeOperation(db.Tables[0].Keys[0], newKey);

            op.RunOperation();
            op.RunSecondStep();

            // Make sure the relationship is still the same, and has the same references.
            Relationship relationship2 = db.Tables[1].Relationships[0];

            Assert.That(relationship2, Is.SameAs(relationship));
            Assert.That(relationship2.PrimaryKey, Is.SameAs(db.Tables[0].Keys[0]));
            Assert.That(relationship2.ForeignKey, Is.SameAs(db.Tables[1].Keys[0]));
            Assert.That(relationship2.ForeignKey.Columns[0].Name, Is.EqualTo("Column1"));
        }
        public void Modified()
        {
            IKey key = GetKey();
            IMergeOperation<IKey> op = new KeyChangeOperation(key, new Key("KeyV"));

            Assert.That(op.ToString(), Is.EqualTo("DB1.Table2.KeyV Changed"));
        }
            public void The_Original_Foreign_Key_Should_Be_Modified()
            {
                var db1 = RelationshipDatabaseLoader.GetDb();

                IKey originalKey = db1.Tables[1].Keys[0];
                originalKey.Description = "old description";

                IKey newPrimaryKey = new Key(db1.Tables[0].Keys[0].Name);
                newPrimaryKey.Parent = new Table("Table1");
                newPrimaryKey.Parent.AddColumn(new Column("Column1"));
                newPrimaryKey.Description = "new description";
                newPrimaryKey.AddColumn("Column1");

                IKey newForeignKey = new Key(originalKey.Name);
                newForeignKey.Parent = new Table("Table2");
                newForeignKey.Parent.AddColumn(new Column("Column2"));
                newForeignKey.Parent.AddColumn(new Column("Column3"));
                newForeignKey.Description = "new description";
                newForeignKey.AddColumn("Column3"); // This is the change.
                newForeignKey.ReferencedKey = newPrimaryKey;

                KeyChangeOperation op = new KeyChangeOperation(db1.Tables[1].Keys[0], newForeignKey);
                op.RunOperation();
                op.RunSecondStep();

                IKey key = db1.Tables[1].Keys[0];

                Assert.That(db1.Tables[1].Keys, Has.Count(1));
                Assert.That(key, Is.SameAs(originalKey), "Key object should still be the same");
                Assert.That(key.Description, Is.EqualTo("old description"), "Should not change user set properties.");
                Assert.That(key.ReferencedKey, Is.SameAs(db1.Tables[0].Keys[0]));
                Assert.That(key.Columns, Has.Count(1));
                Assert.That(key.Columns[0].Name, Is.EqualTo("Column3"));
                Assert.That(key.Columns[0], Is.Not.SameAs(newForeignKey.Columns[0]));
                Assert.That(key.Columns[0], Is.SameAs(db1.Tables[1].Columns[2]), "The new key should reference existing columns");
                Assert.That(key.Parent, Is.SameAs(db1.Tables[1]), "The new key's parent should be Table1 in the existing database");
            }