public void UpgradeDatabase_UpgradingMissingTable_ShouldOnlyCreateIt() { var process = new ProcessDefinition(Constants.AccountProcessName); process.IsStateEnabled = true; var table = new TableDefinition(Constants.AccountProcessName); table.Relationships.Add(new TableRelationshipDefinition {FKTableName = "fkt"}); table.FieldList.Add(new TableFieldDefinition {IsPrimaryKey = true}); process.TableList.Add(table); var actionsCalled = new List<MethodBase>(); var gen = new MockDatabaseGenerator(actionsCalled.Add, null); gen.UpgradeDatabase(process); Assert.AreEqual(29, actionsCalled.Count); Assert.IsTrue(Contains(actionsCalled, "GetTableDefinition")); Assert.IsTrue(Contains(actionsCalled, "GetCreateTableSql")); Assert.IsTrue(Contains(actionsCalled, "GetAddForeignKeySql")); Assert.IsTrue(Contains(actionsCalled, "GetInsertUpdateStates")); Assert.IsTrue(Contains(actionsCalled, "GetPrimaryKeyAlterConstraintSql")); Assert.IsTrue(Contains(actionsCalled, "ExecuteSql")); Assert.IsTrue(Contains(actionsCalled, "GetCreateAuditTable")); Assert.IsTrue(Contains(actionsCalled, "GetAuditTriggerScript")); Assert.IsTrue(Contains(actionsCalled, "GetCreateIndexesSql")); Assert.IsTrue(Contains(actionsCalled, "GetCreateBinaryContentTable")); Assert.IsTrue(Contains(actionsCalled, "GetApprovalAllowDelegationFixScript")); // If process name equals Constants.AccountProcessName Assert.IsTrue(Contains(actionsCalled, "GetAccountsLdapProfileFixScript")); }
public void UpgradeDatabase_DerivedProcess_CreatesForeignKeyToBaseTable() { var process = new ProcessDefinition("name"); var table = new TableDefinition("name"); table.AddBaseProcess("BaseProcessName", process.Name); table.FieldList.Add(new TableFieldDefinition { IsPrimaryKey = true, IsIdentity = true, GenerateDbColumn = true, ColumnName = "Id" }); process.TableList.Add(table); var actionsCalled = new List<MethodBase>(); var gen = new MockDatabaseGenerator(actionsCalled.Add, null); gen.UpgradeDatabase(process); Assert.IsTrue(Contains(actionsCalled, "GetAddForeignKeySql")); }
public void UpgradeDatabase_UpgradingExistingTable_UseIdentityInsertOnlyIfHasIdentityColumn() { var process = new ProcessDefinition("name"); var table = new TableDefinition("name"); table.Relationships.Add(new TableRelationshipDefinition { Name = "FK_1", FKTableName = "fkt" }); table.FieldList.Add(new TableFieldDefinition { IsPrimaryKey = true, IsIdentity = true, GenerateDbColumn = true, ColumnName = "Id" }); process.TableList.Add(table); var dbTable = DbTableDefinition.Create("table", new DbColumnDefinition[] { }, new[] { DbForeignKeyDefinition.Create("FK_1", string.Empty, new[] { "Id" }, "table", new[] { "Id" }) }); var actionsCalled = new List<MethodBase>(); var gen = new MockDatabaseGenerator(actionsCalled.Add, dbTable); gen.UpgradeDatabase(process); Assert.IsFalse(Contains(actionsCalled, "GetIdentityInsertSql")); table.FieldList.Clear(); table.FieldList.Add(new TableFieldDefinition { IsPrimaryKey = true, IsIdentity = false, GenerateDbColumn = true, ColumnName = "Id" }); actionsCalled.Clear(); gen.UpgradeDatabase(process); Assert.IsFalse(Contains(actionsCalled, "GetIdentityInsertSql")); }
public void UpgradeDatabase_GetFKConstraintsSql_WontBeCalled_IfPrimaryKeyNotFound() { var process = new ProcessDefinition("name"); var table = new TableDefinition("name"); table.Relationships.Add(new TableRelationshipDefinition { FKTableName = "fkt" }); table.FieldList.Add(new TableFieldDefinition { IsPrimaryKey = true, IsIdentity = true, GenerateDbColumn = true, ColumnName = "Id" }); process.TableList.Add(table); var dbTable = DbTableDefinition.Create( "table", new DbColumnDefinition[] { }, new[] { DbForeignKeyDefinition.Create(string.Empty, string.Empty, new[] { "IdNew" }, "table", new[] { "IdNew" }) }); var actionsCalled = new List<MethodBase>(); var gen = new MockDatabaseGenerator(actionsCalled.Add, dbTable); gen.UpgradeDatabase(process); Assert.IsFalse(Contains(actionsCalled, "GetFKConstraintsSql")); }
public void UpgradeDatabase_UpgradingExistingTable_ShouldUpdateIt() { var process = new ProcessDefinition("name"); process.IsStateEnabled = true; var table = new TableDefinition("name"); table.Relationships.Add(new TableRelationshipDefinition { Name = "FK_1", FKTableName = "fkt" }); table.FieldList.Add(new TableFieldDefinition { IsPrimaryKey = true, IsIdentity = true, GenerateDbColumn = true, ColumnName = Constants.IdColumnName}); process.TableList.Add(table); var dbTable = DbTableDefinition.Create( "table", new DbColumnDefinition[] { }, new[] { DbForeignKeyDefinition.Create("FK_1", string.Empty, new[] { Constants.IdColumnName }, "table", new[] { Constants.IdColumnName }) }); var actionsCalled = new List<MethodBase>(); var gen = new MockDatabaseGenerator(actionsCalled.Add, dbTable); gen.UpgradeDatabase(process); Assert.IsTrue(Contains(actionsCalled, "GetTableDefinition")); Assert.IsFalse(Contains(actionsCalled, "GetBeginTransactionSql")); Assert.IsTrue(Contains(actionsCalled, "GetDropTableSql")); Assert.IsTrue(Contains(actionsCalled, "GetCreateTableSql")); Assert.IsFalse(Contains(actionsCalled, "GetIdentityInsertSql")); Assert.IsFalse(Contains(actionsCalled, "GetDataCopySql")); Assert.IsFalse(Contains(actionsCalled, "GetDropFKConstraintsSql")); Assert.IsTrue(Contains(actionsCalled, "GetInsertUpdateStates")); Assert.IsTrue(Contains(actionsCalled, "GetDropTableSql")); Assert.IsFalse(Contains(actionsCalled, "GetDropPKConstraintsSql")); Assert.IsFalse(Contains(actionsCalled, "GetRenameTableSql")); Assert.IsTrue(Contains(actionsCalled, "GetPrimaryKeyAlterConstraintSql")); Assert.IsFalse(Contains(actionsCalled, "GetAddForeignKeySql")); Assert.IsFalse(Contains(actionsCalled, "GetFKConstraintsSql")); Assert.IsFalse(Contains(actionsCalled, "GetCommitTransactionSql")); Assert.IsTrue(Contains(actionsCalled, "GetCreateAuditTable")); Assert.IsTrue(Contains(actionsCalled, "GetAuditTriggerScript")); Assert.IsTrue(Contains(actionsCalled, "ExecuteSql")); }