def test_get_column_mappings(self): """We produce appropriate data structure for mapping""" raw_data = [ { "from_field": "raw_data_0", "to_field": "destination_0", "to_table_name": "PropertyState" }, { "from_field": "raw_data_1", "to_field": "destination_1", "to_table_name": "PropertyState" }, { "from_field": "raw_data_2", "to_field": "destination_0", "to_table_name": "TaxLotState" }, ] Column.create_mappings(raw_data, self.fake_org, self.fake_user) expected = { u'raw_data_0': (u'PropertyState', u'destination_0'), u'raw_data_1': (u'PropertyState', u'destination_1'), u'raw_data_2': (u'TaxLotState', u'destination_0'), } test_mapping, no_concat = ColumnMapping.get_column_mappings(self.fake_org) self.assertDictEqual(test_mapping, expected) self.assertEqual(no_concat, [])
def test_save_column_mapping_by_file(self): self.mapping_import_file = os.path.abspath("./seed/tests/data/test_mapping.csv") Column.create_mappings_from_file(self.mapping_import_file, self.fake_org, self.fake_user) expected = { u'City': (u'PropertyState', u'city'), u'Custom ID': (u'PropertyState', u'custom_id_1'), u'Zip': (u'PropertyState', u'postal_code'), u'GBA': (u'PropertyState', u'gross_floor_area'), u'PM Property ID': (u'PropertyState', u'pm_property_id'), u'BLDGS': (u'PropertyState', u'building_count'), u'AYB_YearBuilt': (u'PropertyState', u'year_build'), u'State': (u'PropertyState', u'state'), u'Address': (u'PropertyState', u'address_line_1'), u'Owner': (u'PropertyState', u'owner'), u'Raw Column': (u'Table Name', u'Field Name'), u'Property Type': (u'PropertyState', u'property_type'), u'UBI': (u'TaxLotState', u'jurisdiction_tax_lot_id') } test_mapping, _ = ColumnMapping.get_column_mappings(self.fake_org) self.assertItemsEqual(expected, test_mapping)
def test_save_mappings_dict(self): """ Test the way of saving mappings, which is dict-based instead of list of list of list. """ test_map = [ { 'from_field': 'eui', 'to_field': 'site_eui', 'to_table_name': 'PropertyState', }, { 'from_field': 'address', 'to_field': 'address', 'to_table_name': 'TaxLotState' }, { 'from_field': 'Wookiee', 'to_field': 'Dothraki', 'to_table_name': 'PropertyState', }, { 'from_field': 'Ewok', 'to_field': 'Merovingian', 'to_table_name': 'TaxLotState', }, { 'from_field': 'Ewok', 'to_field': 'Hattin', 'to_table_name': 'TaxLotState', }, ] seed_models.Column.create_mappings(test_map, self.fake_org, self.fake_user) test_mapping, _ = ColumnMapping.get_column_mappings(self.fake_org) expected = { u'Wookiee': (u'PropertyState', u'Dothraki'), u'address': (u'TaxLotState', u'address'), u'eui': (u'PropertyState', u'site_eui'), # u'Ewok': (u'TaxLotState', u'Merovingian'), # this does not show up because it was set before the last one u'Ewok': (u'TaxLotState', u'Hattin'), } self.assertDictEqual(expected, test_mapping) self.assertTrue(test_mapping['Ewok'], 'Hattin') c_wookiee = Column.objects.filter(column_name='Wookiee')[0] # Since the raw column is wookiee, then it should NOT be extra data self.assertEqual(c_wookiee.is_extra_data, False) self.assertEqual(c_wookiee.table_name, '') c_merovingian = Column.objects.filter(column_name='Merovingian')[0] self.assertEqual(c_merovingian.is_extra_data, True) self.assertEqual(c_merovingian.table_name, 'TaxLotState') # Check the database for the mapped columns since create_mappings does not return anything! cm = ColumnMapping.objects.filter(super_organization=self.fake_org, column_raw__in=[c_wookiee]).first() column = cm.column_mapped.first() self.assertEqual(column.is_extra_data, True) self.assertEqual(column.table_name, "PropertyState") self.assertEqual(column.column_name, "Dothraki") # test by table name sorting test_mapping = ColumnMapping.get_column_mappings_by_table_name(self.fake_org) expected = { u'PropertyState': { u'Wookiee': (u'PropertyState', u'Dothraki'), u'eui': (u'PropertyState', u'site_eui'), }, u'TaxLotState': { u'address': (u'TaxLotState', u'address'), u'Ewok': (u'TaxLotState', u'Hattin'), } } self.assertDictEqual(test_mapping, expected)
def test_save_mappings_dict(self): """ Test the way of saving mappings, which is dict-based instead of list of list of list. """ test_map = [ { 'from_field': 'eui', 'to_field': 'site_eui', 'to_table_name': 'PropertyState', }, { 'from_field': 'address', 'to_field': 'address', 'to_table_name': 'TaxLotState' }, { 'from_field': 'Wookiee', 'to_field': 'Dothraki', 'to_table_name': 'PropertyState', }, { 'from_field': 'Ewok', 'to_field': 'Merovingian', 'to_table_name': 'TaxLotState', }, { 'from_field': 'Ewok', 'to_field': 'Hattin', 'to_table_name': 'TaxLotState', }, ] seed_models.Column.create_mappings(test_map, self.fake_org, self.fake_user) test_mapping, _ = ColumnMapping.get_column_mappings(self.fake_org) expected = { u'Wookiee': (u'PropertyState', u'Dothraki'), u'address': (u'TaxLotState', u'address'), u'eui': (u'PropertyState', u'site_eui'), # u'Ewok': (u'TaxLotState', u'Merovingian'), # this does not show up because it was set before the last one u'Ewok': (u'TaxLotState', u'Hattin'), } self.assertDictEqual(expected, test_mapping) self.assertTrue(test_mapping['Ewok'], 'Hattin') c_wookiee = Column.objects.filter(column_name='Wookiee')[0] self.assertEqual(c_wookiee.is_extra_data, True) c_merovingian = Column.objects.filter(column_name='Merovingian')[0] self.assertEqual(c_merovingian.is_extra_data, True) self.assertEqual(c_merovingian.table_name, 'TaxLotState') # Check the database for the mapped columns since create_mappings doesn't return anything! cm = ColumnMapping.objects.filter(super_organization=self.fake_org, column_raw__in=[c_wookiee]).first() column = cm.column_mapped.first() self.assertEqual(column.is_extra_data, True) self.assertEqual(column.table_name, "PropertyState") self.assertEqual(column.column_name, "Dothraki") # test by table name sorting test_mapping = ColumnMapping.get_column_mappings_by_table_name(self.fake_org) expected = { u'PropertyState': { u'Wookiee': (u'PropertyState', u'Dothraki'), u'eui': (u'PropertyState', u'site_eui'), }, u'TaxLotState': { u'address': (u'TaxLotState', u'address'), u'Ewok': (u'TaxLotState', u'Hattin'), } } self.assertDictEqual(test_mapping, expected)