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")); }
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"); }
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_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"); }