Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 5
0
        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")
            );
        }
Exemplo n.º 7
0
        public void PropertiesGetSet_Test()
        {
            var d = new TableDefinition("name");

            TestsHelper.TestPublicPropertiesGetSet(d);
        }
Exemplo n.º 8
0
        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"));
        }
Exemplo n.º 9
0
        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"));
        }
Exemplo n.º 10
0
        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"));
        }
Exemplo n.º 11
0
        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"));
        }