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 Create_ReturnsValidDefinition() { var d = new TableDefinition("name"); Assert.AreEqual("name", d.Name); Assert.AreEqual(0, d.FieldList.Count); Assert.AreEqual(0, d.Relationships.Count); }
public void AddingRelationship_GeneratesPrefixWithMaxNumber() { var d = new TableDefinition(); d.Relationships.Add(new TableRelationshipDefinition { FKName = "fk", FKTableName = "fkt" }); Assert.AreEqual("f0", d.Relationships[0].Prefix); d.Relationships.Add(new TableRelationshipDefinition { FKName = "fk", FKTableName = "fkt" }); Assert.AreEqual("f1", d.Relationships[1].Prefix); }
/// <summary> /// Adds the existing records classes. /// </summary> /// <param name="assemblyCode">The assembly code.</param> /// <param name="processView">The process view.</param> /// <param name="viewConfig">The view configuration.</param> /// <param name="process">The process.</param> /// <param name="assemblyGenerator">The assembly generator.</param> private static void AddExistingRecordsClasses(StringBuilder assemblyCode, IProcessView processView, DataCollectProcessViewConfigurator viewConfig, IProcessDefinition process, AssemblyGeneratorBase assemblyGenerator) { var dcConfig = (DataCollectViewConfig) processView.ViewConfiguration; var table = new TableDefinition { Name = process.Name }; assemblyCode.AppendFormat( @" [Serializable] public class {0} : BaseReferenceInfo<{0}> {{ {1} public static ReferenceFieldDefinition GetFieldDefinition() {{ ReferenceFieldDefinition fieldDefinition = null; {2} return fieldDefinition; }} }} ", GetExistingRecordsChildClassName(processView, viewConfig, process), AssemblyGeneratorBase.GetDisplaylistRefEditableChildProperties(table, dcConfig.ReferenceField), assemblyGenerator.GetReferenceDefinition(new TableDefinition {Name = process.Name}, dcConfig.ReferenceField, "fieldDefinition")); assemblyCode.AppendFormat( @" [Serializable] public class {0} : BaseReferenceInfoList<{0}, {1}> {{ public static void BeginGetList(int pageNumber, int pageSize, SortList sorting, string filter, System.Action<object, IDataPortalResult> callback) {{ DataPortal.BeginFetch<{0}>(new PagedCriteria {{ PageNumber = pageNumber, PageSize = pageSize, SortColumns = sorting, Filter = filter }}, (o, result) => callback(o, result)); }} public void Assign(IReverseCrossReferenceItem item) {{ IsReadOnly = false; Add(({1})item); IsReadOnly = true; }} public void Load(IEnumerable<IReverseCrossReferenceItem> items) {{ IsReadOnly = false; Clear(); AddRange(items.Cast<{1}>()); IsReadOnly = true; }} }} ", GetExistingRecordsListClassName(processView, viewConfig, process), GetExistingRecordsChildClassName(processView, viewConfig, process)); }
public void ProcessDefinitionExtensions_GetTableNameByFieldNameWithEmptyFieldName_ReturnsNull() { var d = new ProcessDefinition("name"); var t = new TableDefinition("table"); var f = new TableFieldDefinition() {SystemName = "field"}; t.FieldList.Add(f); d.TableList.Add(t); Assert.AreEqual(null, d.GetTableNameByFieldName(string.Empty)); }
/// <summary> /// Adds the existing records classes. /// </summary> /// <param name="assemblyCode">The assembly code.</param> /// <param name="processView">The process view.</param> /// <param name="viewConfig">The view configuration.</param> /// <param name="process">The process.</param> /// <param name="assemblyGenerator">The assembly generator.</param> private static void AddExistingRecordsClasses(StringBuilder assemblyCode, IProcessView processView, DataCollectProcessViewConfigurator viewConfig, IProcessDefinition process, AssemblyGeneratorBase assemblyGenerator) { var dcConfig = (DataCollectViewConfig)processView.ViewConfiguration; var table = new TableDefinition {Name = process.Name}; assemblyCode.AppendFormat( @" [Serializable] public class {0} : BaseReferenceInfo<{0}> {{ {1} public static {0} Get{0}(SafeDataReader reader) {{ return DataPortal.FetchChild<{0}>(reader); }} private void Child_Fetch(SafeDataReader reader) {{ var displayName = new System.Text.StringBuilder(); {2} }} public static Cebos.Veyron.SharedTypes.ReferenceFieldDefinition GetFieldDefinition() {{ Cebos.Veyron.SharedTypes.ReferenceFieldDefinition fieldDefinition = null; {3} return fieldDefinition; }} }} ", GetExistingRecordsChildClassName(processView, viewConfig, process), AssemblyGeneratorBase.GetDisplaylistRefEditableChildProperties(table, dcConfig.ReferenceField), ((ServerAssemblyGenerator)assemblyGenerator).GetReverseCrossRefChildPropertiesLoad(dcConfig.ReferenceField), assemblyGenerator.GetReferenceDefinition(table, dcConfig.ReferenceField, "fieldDefinition") ); }
public void PropertiesGetSet_Test() { var d = new TableDefinition("name"); TestsHelper.TestPublicPropertiesGetSet(d); }
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_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_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_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")); }