public void CreateDataRetrievalForTable_NotAvailableCookerThrows()
        {
            var cookedDataRetrieval     = new TestCookedDataRetrieval();
            var dataExtensionRepository = new TestDataExtensionRepository();

            var dataCookerReference = new TestCompositeDataCookerReference(false)
            {
                availability = DataExtensionAvailability.Error,
                Path         = new DataCookerPath("CompositeCooker1"),
            };

            var tableReference = new TestTableExtensionReference(false)
            {
                availability    = DataExtensionAvailability.IndirectError,
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{F0F20004-E159-447B-B122-BD820C2A9908}"), "Test Table", "Test Table"),
            };

            dataExtensionRepository.compositeCookersByPath.Add(dataCookerReference.Path, dataCookerReference);
            dataExtensionRepository.tablesById.Add(tableReference.TableDescriptor.Guid, tableReference);

            var dataExtensionRetrievalFactory =
                new DataExtensionRetrievalFactory(cookedDataRetrieval, dataExtensionRepository);

            Assert.ThrowsException <ArgumentException>(() =>
                                                       dataExtensionRetrievalFactory.CreateDataRetrievalForTable(tableReference.TableDescriptor.Guid));
        }
コード例 #2
0
        public void ConstructorTest2()
        {
            var table1 = new TestTableExtensionReference(false)
            {
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{ADE569AF-4460-4DCC-A7C8-9748737AE592}"),
                    "Table1",
                    "Table1 Description",
                    "General",
                    false,
                    TableLayoutStyle.GraphAndTable,
                    new[] { Source1Cooker1Path }),
                BuildTableAction = (tableBuilder, dataRetrieval) => {},
                availability     = DataExtensionAvailability.MissingRequirement,
            };

            var testRepo = new TestDataExtensionRepository();

            testRepo.tablesById.Add(table1.TableDescriptor.Guid, table1);

            var tableSelector = new TableExtensionSelector(testRepo);

            Assert.AreEqual(tableSelector.Tables.Count, 0);
            Assert.AreEqual(tableSelector.TableCategories.Count, 0);
        }
コード例 #3
0
        public void ConstructorTest3()
        {
            var table1 = new TestTableExtensionReference(false)
            {
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{ADE569AF-4460-4DCC-A7C8-9748737AE592}"),
                    "Table1",
                    "Table1 Description",
                    "General",
                    false,
                    TableLayoutStyle.GraphAndTable,
                    new[] { Source1Cooker1Path }),
                BuildTableAction = (tableBuilder, dataRetrieval) => { },
                availability     = DataExtensionAvailability.Available,
            };

            var table2 = new TestTableExtensionReference(false)
            {
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{42F33CCB-D1D4-48CD-BAF0-853A508C638D}"),
                    "Table2",
                    "Table1 Description",
                    "Specific",
                    false,
                    TableLayoutStyle.GraphAndTable,
                    new[] { Source1Cooker1Path }),
                BuildTableAction = (tableBuilder, dataRetrieval) => { },
                availability     = DataExtensionAvailability.Available,
            };

            var table3 = new TestTableExtensionReference(false)
            {
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{3A613426-6550-49AA-89F0-C6BBB6039EB4}"),
                    "Table3",
                    "Table1 Description",
                    "General",
                    false,
                    TableLayoutStyle.GraphAndTable,
                    new[] { Source1Cooker1Path }),
                BuildTableAction = (tableBuilder, dataRetrieval) => { },
                availability     = DataExtensionAvailability.Available,
            };

            var testRepo = new TestDataExtensionRepository();

            testRepo.tablesById.Add(table1.TableDescriptor.Guid, table1);
            testRepo.tablesById.Add(table2.TableDescriptor.Guid, table2);
            testRepo.tablesById.Add(table3.TableDescriptor.Guid, table3);

            var tableSelector = new TableExtensionSelector(testRepo);

            Assert.AreEqual(tableSelector.Tables.Count, 3);
            Assert.AreEqual(tableSelector.TableCategories.Count, 2);
            Assert.IsTrue(tableSelector.TableCategories.Contains(table2.TableDescriptor.Category));
            Assert.IsTrue(tableSelector.TableCategories.Contains(table1.TableDescriptor.Category));
        }
        public void CreateDataRetrievalForTableSucceeds()
        {
            var cookedDataRetrieval     = new TestCookedDataRetrieval();
            var dataExtensionRepository = new TestDataExtensionRepository();

            var sourceDataCookerReference1 = new TestSourceDataCookerReference(false)
            {
                availability = DataExtensionAvailability.Available,
                Path         = new DataCookerPath("Source1", "SourceCooker1"),
            };

            var dataCookerReference = new TestCompositeDataCookerReference(false)
            {
                availability = DataExtensionAvailability.Available,
                Path         = new DataCookerPath("CompositeCooker1"),
            };

            dataCookerReference.requiredDataCookers.Add(sourceDataCookerReference1.Path);

            var tableReference = new TestTableExtensionReference(false)
            {
                availability    = DataExtensionAvailability.Available,
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{F0F20004-E159-447B-B122-BD820C2A9908}"), "Test Table", "Test Table"),
            };

            dataExtensionRepository.sourceCookersByPath.Add(sourceDataCookerReference1.Path, sourceDataCookerReference1);
            dataExtensionRepository.compositeCookersByPath.Add(dataCookerReference.Path, dataCookerReference);
            dataExtensionRepository.tablesById.Add(tableReference.TableDescriptor.Guid, tableReference);

            var dataExtensionRetrievalFactory =
                new DataExtensionRetrievalFactory(cookedDataRetrieval, dataExtensionRepository);

            var dataRetrieval = dataExtensionRetrievalFactory.CreateDataRetrievalForTable(tableReference.TableDescriptor.Guid);

            Assert.IsNotNull(dataRetrieval);

            // check that the cache is working as expected

            var dataRetrieval2 = dataExtensionRetrievalFactory.CreateDataRetrievalForTable(tableReference.TableDescriptor.Guid);

            Assert.IsNotNull(dataRetrieval2);
            Assert.IsTrue(object.ReferenceEquals(dataRetrieval, dataRetrieval2));
        }
コード例 #5
0
        private static void AddRequiredDataExtensions(
            TestTableExtensionReference table,
            TestDataExtensionRepository testRepo)
        {
            foreach (var cookerPath in table.RequiredDataCookers)
            {
                if (SourceCookersByPath.TryGetValue(cookerPath, out var sourceCookerReference))
                {
                    testRepo.sourceCookersByPath.Add(cookerPath, sourceCookerReference);
                }
                else if (CompositeCookersByPath.TryGetValue(cookerPath, out var compositeCookerReference))
                {
                    testRepo.compositeCookersByPath.Add(cookerPath, compositeCookerReference);
                }
            }

            if (table.DependencyState != null)
            {
                testRepo.FinalizeDataExtensions();
            }
        }
コード例 #6
0
        public void GetSourceDataCookersForTablesTest1()
        {
            var requiredDataCookers = new List <DataCookerPath>
            {
                Source1Cooker1Path,
            };

            var table1 = new TestTableExtensionReference
            {
                TableDescriptor = new TableDescriptor(
                    Guid.Parse("{ADE569AF-4460-4DCC-A7C8-9748737AE592}"),
                    "Table1",
                    "Table1 Description",
                    "General",
                    false,
                    TableLayoutStyle.GraphAndTable,
                    requiredDataCookers),
                BuildTableAction = (tableBuilder, dataRetrieval) => { },
            };

            var testRepo = new TestDataExtensionRepository();

            testRepo.tablesById.Add(table1.TableDescriptor.Guid, table1);

            AddRequiredDataExtensions(table1, testRepo);

            var tableSelector = new TableExtensionSelector(testRepo);

            Assert.AreEqual(tableSelector.Tables.Count, 1);

            var requiredSourceDataCookers = tableSelector.GetSourceDataCookersForTables(new [] { table1.TableDescriptor.Guid });

            Assert.AreEqual(requiredSourceDataCookers.Count, 1);

            var sourceId = requiredDataCookers[0].SourceParserId;

            Assert.IsTrue(requiredSourceDataCookers.ContainsKey(sourceId));
            Assert.AreEqual(requiredSourceDataCookers[sourceId].Count(), 1);
        }