Example #1
0
    def test_complete_integration(self):
        # initialize pillow with one data source
        data_source_1 = get_sample_data_source()
        data_source_1.save()
        ds_1_domain = data_source_1.domain
        table_manager = ConfigurableReportTableManagerMixin(
            [DynamicDataSourceProvider()])
        table_manager.bootstrap()
        self.assertEqual(1, len(table_manager.table_adapters_by_domain))
        self.assertEqual(
            1, len(table_manager.table_adapters_by_domain[ds_1_domain]))
        self.assertEqual(
            data_source_1._id,
            table_manager.table_adapters_by_domain[ds_1_domain][0].config._id)

        data_source_2 = self._copy_data_source(data_source_1)
        data_source_2.save()
        self.assertFalse(table_manager.needs_bootstrap())
        # should call _pull_in_new_and_modified_data_sources
        table_manager.bootstrap_if_needed()
        self.assertEqual(1, len(table_manager.table_adapters_by_domain))
        self.assertEqual(
            2, len(table_manager.table_adapters_by_domain[ds_1_domain]))
        self.assertEqual(
            {data_source_1._id, data_source_2._id},
            set([
                table_adapter.config._id for table_adapter in
                table_manager.table_adapters_by_domain[ds_1_domain]
            ]))