def test_merge_table_adapters(self): data_source_1 = get_sample_data_source() data_source_1.save() ds_1_domain = data_source_1.domain table_manager = ConfigurableReportTableManagerMixin( [MockDataSourceProvider({ds_1_domain: [data_source_1]})]) table_manager.bootstrap() # test in same domain data_source_2 = self._copy_data_source(data_source_1) data_source_2.save() table_manager._add_data_sources_to_table_adapters([data_source_2]) 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, data_source_2}, set([ table_adapter.config for table_adapter in table_manager.table_adapters_by_domain[ds_1_domain] ])) # test in a new domain data_source_3 = self._copy_data_source(data_source_1) ds3_domain = 'new_domain' data_source_3.domain = ds3_domain data_source_3.save() table_manager._add_data_sources_to_table_adapters([data_source_3]) # should now be 2 domains in the map self.assertEqual(2, len(table_manager.table_adapters_by_domain)) # ensure domain 1 unchanged self.assertEqual( {data_source_1, data_source_2}, set([ table_adapter.config for table_adapter in table_manager.table_adapters_by_domain[ds_1_domain] ])) self.assertEqual( 1, len(table_manager.table_adapters_by_domain[ds3_domain])) self.assertEqual( data_source_3, table_manager.table_adapters_by_domain[ds3_domain][0].config) # finally pass in existing data sources and ensure they modify in place table_manager._add_data_sources_to_table_adapters( [data_source_1, data_source_3]) self.assertEqual(2, len(table_manager.table_adapters_by_domain)) self.assertEqual( {data_source_1, data_source_2}, set([ table_adapter.config for table_adapter in table_manager.table_adapters_by_domain[ds_1_domain] ])) self.assertEqual( data_source_3, table_manager.table_adapters_by_domain[ds3_domain][0].config)