public void FinalizeTablesFromVariedParsers()
        {
            // Just make sure that this doesn't throw an exception

            var cdp = TestCustomDataProcessor.CreateTestCustomDataProcessor(TestTable1.SourceParserId);

            var sourceCooker = new TestSourceDataCooker()
            {
                Path = new DataCookerPath(TestTable2.SourceParserId, "CookerId1")
            };
            var sourceCookerReference = new TestSourceDataCookerReference(false)
            {
                availability = DataExtensionAvailability.Available, Path = sourceCooker.Path
            };

            cdp.ExtensionRepository.sourceCookersByPath.Add(sourceCooker.Path, sourceCookerReference);

            Assert.IsTrue(cdp.ExtensibilitySupport.AddTable(TestTable2.TableDescriptor));

            cdp.ExtensibilitySupport.FinalizeTables();

            var requiredCookers = cdp.ExtensibilitySupport.GetAllRequiredSourceDataCookers();

            Assert.AreEqual(0, requiredCookers.Count);

            var dataRetrieval = cdp.ExtensibilitySupport.GetDataExtensionRetrieval(TestTable2.TableDescriptor);

            Assert.IsNull(dataRetrieval);
        }
        public void AddTableWithNoRequiredDataExtensions()
        {
            var cdp = TestCustomDataProcessor.CreateTestCustomDataProcessor();

            var tableDescriptorWithNoRequirements = new TableDescriptor(
                Guid.Parse("{94267E78-5B18-4FA7-A6C0-8E21B06DF65A}"),
                "Simple Test Table",
                "This table has no required data extensions");

            Assert.IsFalse(cdp.ExtensibilitySupport.AddTable(tableDescriptorWithNoRequirements));
        }
        public void GetDataExtensionRetrievalWithoutFinalizeThrows()
        {
            // Just make sure that this doesn't throw an exception

            var cdp = TestCustomDataProcessor.CreateTestCustomDataProcessor(TestTable1.SourceParserId);

            var sourceCooker = new TestSourceDataCooker()
            {
                Path = new DataCookerPath(TestTable1.SourceParserId, "CookerId1")
            };
            var sourceCookerReference = new TestSourceDataCookerReference(false)
            {
                availability = DataExtensionAvailability.Available, Path = sourceCooker.Path
            };

            cdp.ExtensionRepository.sourceCookersByPath.Add(sourceCooker.Path, sourceCookerReference);

            Assert.IsTrue(cdp.ExtensibilitySupport.AddTable(TestTable1.TableDescriptor));

            Assert.ThrowsException <InvalidOperationException>(() => cdp.ExtensibilitySupport.GetDataExtensionRetrieval(TestTable1.TableDescriptor));
        }
        public void AddTableWithMissingRequirements()
        {
            // Just make sure that this doesn't throw an exception

            var cdp = TestCustomDataProcessor.CreateTestCustomDataProcessor(TestTable1.SourceParserId);

            Assert.IsTrue(cdp.ExtensibilitySupport.AddTable(TestTable1.TableDescriptor));

            // Not adding the source data cooker that is required by the table, so we expect that FinalizeTables will
            // remove the table.
            //

            cdp.ExtensibilitySupport.FinalizeTables();

            var requiredCookers = cdp.ExtensibilitySupport.GetAllRequiredSourceDataCookers();

            Assert.AreEqual(0, requiredCookers.Count);

            var dataRetrieval = cdp.ExtensibilitySupport.GetDataExtensionRetrieval(TestTable2.TableDescriptor);

            Assert.IsNull(dataRetrieval);
        }
        public void AddTableWithRequiredDataExtensions()
        {
            var cdp = TestCustomDataProcessor.CreateTestCustomDataProcessor();

            Assert.IsTrue(cdp.ExtensibilitySupport.AddTable(TestTable1.TableDescriptor));
        }