Beispiel #1
0
        public void DatabaseGenerator_NoTransaction()
        {
            var oldApplications = new List <ConceptApplication> {
                BaseCi.CreateApplication("A", new SimpleConceptImplementation()),
                BaseCi.CreateApplication("B", new NoTransactionConceptImplementation()),
                BaseCi.CreateApplication("C", new SimpleConceptImplementation())
            };
            var newApplications = new List <NewConceptApplication> {
                BaseCi.CreateApplication("D", new SimpleConceptImplementation()),
                BaseCi.CreateApplication("E", new NoTransactionConceptImplementation()),
                BaseCi.CreateApplication("F", new SimpleConceptImplementation())
            };

            var sqlExecuter           = new MockSqlExecuter();
            var sqlTransactionBatches = new SqlTransactionBatches(sqlExecuter, new NullConfiguration(), new ConsoleLogProvider());
            var databaseGenerator     = new DatabaseGenerator_Accessor(sqlTransactionBatches);

            databaseGenerator.ApplyChangesToDatabase(oldApplications, newApplications, oldApplications, newApplications);

            var executedSql = TestUtility.Dump(sqlExecuter.executedScriptsWithTransaction, scripts =>
                                               (scripts.Item2 ? "TRAN" : "NOTRAN") + ": " + string.Join(", ", scripts.Item1));

            executedSql = ClearSqlForReport(executedSql);

            Assert.AreEqual(
                "TRAN: remove C, NOTRAN: remove B, TRAN: remove A, create D, NOTRAN: create E, TRAN: create F",
                executedSql);
        }
Beispiel #2
0
            public static NewConceptApplication CreateApplication(string name, IConceptDatabaseDefinition implementation)
            {
                var conceptInfo = new BaseCi {
                    Name = name
                };

                return(new NewConceptApplication(conceptInfo, implementation)
                {
                    CreateQuery = implementation.CreateDatabaseStructure(conceptInfo),
                    RemoveQuery = implementation.RemoveDatabaseStructure(conceptInfo),
                    DependsOn = new ConceptApplicationDependency[] { },
                    ConceptImplementationType = implementation.GetType(),
                });
            }
Beispiel #3
0
        public void ExtractDependenciesFromConceptInfosTest()
        {
            var a  = BaseCi.CreateApplication("A");
            var b  = BaseCi.CreateApplication("B");
            var c  = BaseCi.CreateApplication("C");
            var r1 = MultipleReferencingCi.CreateApplication("1", a, b);
            var r2 = MultipleReferencingCi.CreateApplication("2", b, c);
            var r3 = MultipleReferencingCi.CreateApplication("3", r1, r2);
            var r5 = MultipleReferencingCi.CreateApplication("5", c, c);
            var r4 = MultipleReferencingCi.CreateApplication("4", c, r5);

            var all = new List <NewConceptApplication> {
                a, b, c, r1, r2, r3, r4, r5
            };
            var dependencies = new DatabaseGenerator_Accessor().ExtractDependenciesFromConceptInfos(all);

            string result = string.Join(" ", dependencies
                                        .Select(d => ((dynamic)d).DependsOn.ConceptInfo.Name + "<" + ((dynamic)d).Dependent.ConceptInfo.Name)
                                        .OrderBy(str => str));

            Console.WriteLine(result);

            Assert.AreEqual("1<3 2<3 5<4 A<1 A<3 B<1 B<2 B<3 C<2 C<3 C<4 C<5", result);
        }