def test_encode_filter_interface(self): """Test that filter interface is serialized properly.""" self.maxDiff = 10000 report_config = ReportConfiguration([ ColumnConfiguration(column='name', format='text'), ColumnConfiguration(column='date', format='us_date', filter_interface='date_range', filter_display='Date'), ColumnConfiguration(column='locations', format='city_state_list', filter_interface='city_state', filter_display='Locations', help=True), ColumnConfiguration(column='tags', format='comma_sep', filter_interface='search_multiselect', filter_display='Tags', help=True), ColumnConfiguration(column='partner', format='text', filter_interface='search_multiselect', filter_display='Partners', help=True), ]) self.assertEquals( { 'filters': [ { 'display': 'Date', 'filter': 'date', 'interface_type': 'date_range', }, { 'display': 'Locations', 'filter': 'locations', 'interface_type': 'city_state', }, { 'display': 'Tags', 'filter': 'tags', 'interface_type': 'search_multiselect', }, { 'display': 'Partners', 'filter': 'partner', 'interface_type': 'search_multiselect', }, ], 'help': { 'partner': True, 'tags': True, 'locations': True, }, }, self.driver.encode_filter_interface(report_config))
def test_build_config(self): """ Test building a report configuration from the DB. Here, we expect that an appropriate format should be selected for each of the columns configured *except* when that column is marked as ``filter_only```. For those columns, we expect format to be ``''``. """ expected_config = ReportConfiguration(columns=[ ColumnConfiguration(column='date', alias='Date', format='us_datetime', filter_interface='date_range', filter_display='Date'), ColumnConfiguration(column='', alias='Contact Location', format=None, help=True, filter_interface=u'city_state', filter_display=u'Contact Location'), ColumnConfiguration(column='locations', alias='Location', format='city_state_list', filter_interface='city_state', filter_display='Location', help=True), ColumnConfiguration(column='tags', alias='Tags', format='tags_list', filter_interface='tags', filter_display='Tags', help=True), ColumnConfiguration(column='partner', alias='Partners', format='text', filter_interface='search_multiselect', filter_display='Partners', help=True), ColumnConfiguration(column='name', alias='Name', format='text'), ColumnConfiguration(column='email', alias='Email', format='text'), ColumnConfiguration(column='phone', alias='Phone', format='text'), ColumnConfiguration(column='notes', alias='Notes', format='text'), ]) config_model = self.dynamic_models['configuration']['contacts'] # Add a filter_only column. ConfigurationColumnFactory.create( alias='Contact Location', filter_interface_type='city_state', filter_interface_display='Contact Location', filter_only=True, configuration=config_model, multi_value_expansion=False, has_help=True) self.maxDiff = 10000 self.assertEqual(expected_config.columns, config_model.build_configuration().columns)
def build_configuration(self): return ReportConfiguration([ ColumnConfiguration(column=cm.column_name, alias=cm.alias, format=cm.output_format, filter_interface=cm.filter_interface_type, filter_display=cm.filter_interface_display, help=cm.has_help) for cm in (self.configurationcolumn_set.filter( is_active=True).order_by('order')) ])
def setUp(self): super(TestReportConfig, self).setUp() # Realistic contacts report configuration self.contacts_config = ReportConfiguration(columns=[ ColumnConfiguration(column='name', format='text'), ColumnConfiguration(column='partner', format='text', filter_interface='search_multiselect', filter_display='Partners'), ColumnConfiguration(column='email', format='text'), ColumnConfiguration(column='phone', format='text'), ColumnConfiguration(column='date', format='us_date', filter_interface='date_range', filter_display='Date'), ColumnConfiguration(column='notes', format='text'), ColumnConfiguration(column='locations', format='city_state_list', filter_interface='city_state', filter_display='Locations'), ColumnConfiguration(column='tags', format='comma_sep', filter_interface='search_multiselect', filter_display='Tags'), ]) # Realistic extracted contact records. self.test_data = [{ 'date': datetime(2015, 10, 3), 'email': u'*****@*****.**', 'locations': [{ 'city': u'Indianapolis', 'state': u'IN' }, { 'city': u'Chicago', 'state': u'IL' }], 'name': u'john adams', 'notes': u'', 'partner': u'aaa', 'phone': u'84104391', 'tags': [u'east'] }, { 'date': datetime(2015, 9, 30), 'email': u'*****@*****.**', 'locations': [ { 'city': u'Los Angeles', 'state': u'CA' }, ], 'name': u'Sue Baxter', 'notes': u'', 'partner': u'bbb', 'phone': u'84104391', 'tags': [u'west'] }]
class TestReportConfig(TestCase): def setUp(self): super(TestReportConfig, self).setUp() # Realistic contacts report configuration self.contacts_config = ReportConfiguration(columns=[ ColumnConfiguration(column='name', format='text'), ColumnConfiguration(column='partner', format='text', filter_interface='search_multiselect', filter_display='Partners'), ColumnConfiguration(column='email', format='text'), ColumnConfiguration(column='phone', format='text'), ColumnConfiguration(column='date', format='us_date', filter_interface='date_range', filter_display='Date'), ColumnConfiguration(column='notes', format='text'), ColumnConfiguration(column='locations', format='city_state_list', filter_interface='city_state', filter_display='Locations'), ColumnConfiguration(column='tags', format='comma_sep', filter_interface='search_multiselect', filter_display='Tags'), ]) # Realistic extracted contact records. self.test_data = [{ 'date': datetime(2015, 10, 3), 'email': u'*****@*****.**', 'locations': [{ 'city': u'Indianapolis', 'state': u'IN' }, { 'city': u'Chicago', 'state': u'IL' }], 'name': u'john adams', 'notes': u'', 'partner': u'aaa', 'phone': u'84104391', 'tags': [u'east'] }, { 'date': datetime(2015, 9, 30), 'email': u'*****@*****.**', 'locations': [ { 'city': u'Los Angeles', 'state': u'CA' }, ], 'name': u'Sue Baxter', 'notes': u'', 'partner': u'bbb', 'phone': u'84104391', 'tags': [u'west'] }] def test_header(self): """Test that the formatter can get an ordered list of columns.""" header = self.contacts_config.get_header() self.assertEqual([ 'name', 'partner', 'email', 'phone', 'date', 'notes', 'locations', 'tags' ], header) def test_records(self): """Test that records are formatted properly.""" self.maxDiff = 10000 rec = self.contacts_config.format_record(self.test_data[0], []) self.assertEqual( { 'name': 'john adams', 'partner': 'aaa', 'email': '*****@*****.**', 'phone': '84104391', 'date': '10/03/2015', 'notes': '', 'locations': "Indianapolis, IN, Chicago, IL", 'tags': 'east', }, rec) rec = self.contacts_config.format_record(self.test_data[1], []) self.assertEqual( { 'name': 'Sue Baxter', 'partner': 'bbb', 'email': '*****@*****.**', 'phone': '84104391', 'date': '09/30/2015', 'notes': '', 'locations': 'Los Angeles, CA', 'tags': 'west', }, rec) def test_formatting_limit_columns(self): """Test that records contain only desired columns.""" self.maxDiff = 10000 rec = self.contacts_config.format_record(self.test_data[0], ['partner', 'name']) self.assertEqual({ 'name': 'john adams', 'partner': 'aaa', }, rec) def test_formatting_ignores_invalid_columns(self): """Test that records contain only desired and valid columns.""" self.maxDiff = 10000 rec = self.contacts_config.format_record(self.test_data[0], ['partner', 'name', 'ZZZZZ']) self.assertEqual({ 'name': 'john adams', 'partner': 'aaa', }, rec)
def setUp(self): super(TestReportConfig, self).setUp() # Realistic contacts report configuration self.contacts_config = ReportConfiguration( columns=[ ColumnConfiguration( column='name', format='text'), ColumnConfiguration( column='partner', format='text', filter_interface='search_multiselect', filter_display='Partners'), ColumnConfiguration( column='email', format='text'), ColumnConfiguration( column='phone', format='text'), ColumnConfiguration( column='date', format='us_date', filter_interface='date_range', filter_display='Date'), ColumnConfiguration( column='notes', format='text'), ColumnConfiguration( column='locations', format='city_state_list', filter_interface='city_state', filter_display='Locations'), ColumnConfiguration( column='tags', format='comma_sep', filter_interface='search_multiselect', filter_display='Tags'), ]) # Realistic extracted contact records. self.test_data = [ { 'date': datetime(2015, 10, 3), 'email': u'*****@*****.**', 'locations': [ {'city': u'Indianapolis', 'state': u'IN'}, {'city': u'Chicago', 'state': u'IL'} ], 'name': u'john adams', 'notes': u'', 'partner': u'aaa', 'phone': u'84104391', 'tags': [u'east'] }, { 'date': datetime(2015, 9, 30), 'email': u'*****@*****.**', 'locations': [ {'city': u'Los Angeles', 'state': u'CA'}, ], 'name': u'Sue Baxter', 'notes': u'', 'partner': u'bbb', 'phone': u'84104391', 'tags': [u'west'] } ]
class TestReportConfig(TestCase): def setUp(self): super(TestReportConfig, self).setUp() # Realistic contacts report configuration self.contacts_config = ReportConfiguration( columns=[ ColumnConfiguration( column='name', format='text'), ColumnConfiguration( column='partner', format='text', filter_interface='search_multiselect', filter_display='Partners'), ColumnConfiguration( column='email', format='text'), ColumnConfiguration( column='phone', format='text'), ColumnConfiguration( column='date', format='us_date', filter_interface='date_range', filter_display='Date'), ColumnConfiguration( column='notes', format='text'), ColumnConfiguration( column='locations', format='city_state_list', filter_interface='city_state', filter_display='Locations'), ColumnConfiguration( column='tags', format='comma_sep', filter_interface='search_multiselect', filter_display='Tags'), ]) # Realistic extracted contact records. self.test_data = [ { 'date': datetime(2015, 10, 3), 'email': u'*****@*****.**', 'locations': [ {'city': u'Indianapolis', 'state': u'IN'}, {'city': u'Chicago', 'state': u'IL'} ], 'name': u'john adams', 'notes': u'', 'partner': u'aaa', 'phone': u'84104391', 'tags': [u'east'] }, { 'date': datetime(2015, 9, 30), 'email': u'*****@*****.**', 'locations': [ {'city': u'Los Angeles', 'state': u'CA'}, ], 'name': u'Sue Baxter', 'notes': u'', 'partner': u'bbb', 'phone': u'84104391', 'tags': [u'west'] } ] def test_header(self): """Test that the formatter can get an ordered list of columns.""" header = self.contacts_config.get_header() self.assertEqual([ 'name', 'partner', 'email', 'phone', 'date', 'notes', 'locations', 'tags'], header) def test_records(self): """Test that records are formatted properly.""" self.maxDiff = 10000 rec = self.contacts_config.format_record(self.test_data[0], []) self.assertEqual({ 'name': 'john adams', 'partner': 'aaa', 'email': '*****@*****.**', 'phone': '84104391', 'date': '10/03/2015', 'notes': '', 'locations': "Indianapolis, IN, Chicago, IL", 'tags': 'east', }, rec) rec = self.contacts_config.format_record(self.test_data[1], []) self.assertEqual({ 'name': 'Sue Baxter', 'partner': 'bbb', 'email': '*****@*****.**', 'phone': '84104391', 'date': '09/30/2015', 'notes': '', 'locations': 'Los Angeles, CA', 'tags': 'west', }, rec) def test_formatting_limit_columns(self): """Test that records contain only desired columns.""" self.maxDiff = 10000 rec = self.contacts_config.format_record( self.test_data[0], ['partner', 'name']) self.assertEqual({ 'name': 'john adams', 'partner': 'aaa', }, rec) def test_formatting_ignores_invalid_columns(self): """Test that records contain only desired and valid columns.""" self.maxDiff = 10000 rec = self.contacts_config.format_record( self.test_data[0], ['partner', 'name', 'ZZZZZ']) self.assertEqual({ 'name': 'john adams', 'partner': 'aaa', }, rec)