def test_composite_and_missing_in_db(self): """ Pass through branches of a CompositeAndFilter not indexed by the data source. """ self.maxDiff = 10000 result = adorn_filter( None, self.ds, ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter('indy'), 'state': MatchFilter('IN'), 'county': MatchFilter('marion'), }))) self.assertEqual([{ 'locations': { 'city': ['indy'], 'state': ['IN'], 'county': ['marion'], }, }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(locations=CompositeAndFilter( { 'city': MatchFilter({ 'value': 'indy', 'display': 'Indy' }), 'state': MatchFilter({ 'value': 'IN', 'display': 'Indiana' }), 'county': MatchFilter('marion'), })), result)
def test_and_group(self): """Test adorning an AndGroupFilter.""" self.maxDiff = 10000 result = adorn_filter(None, self.ds, ContactsFilter( tags=AndGroupFilter([ OrGroupFilter([ MatchFilter('a'), MatchFilter('c'), ]), OrGroupFilter([ MatchFilter('b'), MatchFilter('d'), ]), ]))) self.assertEqual([{ 'tags': ['a', 'c', 'b', 'd'], }], self.ds.adorn_calls) self.assertEqual(ContactsFilter( tags=AndGroupFilter([ OrGroupFilter([ MatchFilter( {'value': 'a', 'display': 'A', 'hexcolor': 'aaaaaa'}), MatchFilter('c')]), OrGroupFilter([ MatchFilter( {'value': 'b', 'display': 'B', 'hexcolor': 'bbbbbb'}), MatchFilter('d')])])), result)
def test_or_group(self): """Test adorning an OrGroupFilter.""" self.maxDiff = 10000 result = adorn_filter( None, self.ds, ContactsFilter(tags=OrGroupFilter([ MatchFilter('a'), MatchFilter('b'), MatchFilter('c'), ]))) self.assertEqual([{ 'tags': ['a', 'b', 'c'], }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(tags=OrGroupFilter([ MatchFilter({ 'value': 'a', 'display': 'A', 'hexcolor': 'aaaaaa' }), MatchFilter({ 'value': 'b', 'display': 'B', 'hexcolor': 'bbbbbb' }), MatchFilter('c'), ])), result)
def test_composite_and(self): """Test adorning a CompositeAndFilter.""" self.maxDiff = 10000 result = adorn_filter( None, self.ds, ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter('indy'), 'state': MatchFilter('IN'), }))) self.assertEqual([{ 'locations': { 'city': ['indy'], 'state': ['IN'], }, }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(locations=CompositeAndFilter( { 'city': MatchFilter({ 'value': 'indy', 'display': 'Indy' }), 'state': MatchFilter({ 'value': 'IN', 'display': 'Indiana' }), })), result)
def test_composite_and_missing_in_db(self): """ Pass through branches of a CompositeAndFilter not indexed by the data source. """ self.maxDiff = 10000 result = adorn_filter(None, self.ds, ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter('indy'), 'state': MatchFilter('IN'), 'county': MatchFilter('marion'), }))) self.assertEqual([{ 'locations': { 'city': ['indy'], 'state': ['IN'], 'county': ['marion'], }, }], self.ds.adorn_calls) self.assertEqual(ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter({'value': 'indy', 'display': 'Indy'}), 'state': MatchFilter({'value': 'IN', 'display': 'Indiana'}), 'county': MatchFilter('marion'), })), result)
def test_passthrough_missing(self): """Pass through items not indexed by the data source.""" result = adorn_filter( None, self.ds, ContactsFilter(partner=OrGroupFilter( [MatchFilter(1), MatchFilter(2)]))) self.assertEqual([{ 'partner': [1, 2], }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(partner=OrGroupFilter( [MatchFilter(1), MatchFilter(2)])), result)
def adorn_filter(self, company, filter_spec): """Get a version of the filter help added where available. company: company model object for this run. filter_spec: string with json object for the current user filter. returns: a json object shaped like filter_spec values on fields with help available will be replaced with help """ filter_obj = self.build_filter(filter_spec) return plain_filter(adorn_filter(company, self.ds, filter_obj))
def test_passthrough_missing(self): """Pass through items not indexed by the data source.""" result = adorn_filter(None, self.ds, ContactsFilter( partner=OrGroupFilter([ MatchFilter(1), MatchFilter(2)]))) self.assertEqual([{ 'partner': [1, 2], }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(partner=OrGroupFilter([ MatchFilter(1), MatchFilter(2)])), result)
def test_match(self): """Test adorning a bare MatchFilter.""" result = adorn_filter(None, self.ds, ContactsFilter( date=MatchFilter('dt'), tags=MatchFilter('a'))) self.assertEqual([{ 'date': ['dt'], 'tags': ['a'], }], self.ds.adorn_calls) self.assertEqual(ContactsFilter( date=MatchFilter('dt'), tags=MatchFilter( {'value': 'a', 'display': 'A', 'hexcolor': 'aaaaaa'})), result)
def test_match(self): """Test adorning a bare MatchFilter.""" result = adorn_filter( None, self.ds, ContactsFilter(date=MatchFilter('dt'), tags=MatchFilter('a'))) self.assertEqual([{ 'date': ['dt'], 'tags': ['a'], }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(date=MatchFilter('dt'), tags=MatchFilter({ 'value': 'a', 'display': 'A', 'hexcolor': 'aaaaaa' })), result)
def test_passthrough_missing_composite_and(self): """ Pass through when all branches of a CompositeAndFilter are not indexed by the data source. """ result = adorn_filter(None, self.ds, ContactsFilter( partner=CompositeAndFilter({ 'a': MatchFilter(1), 'b': MatchFilter(2) }))) self.assertEqual([{ 'partner': {'a': [1], 'b': [2]}, }], self.ds.adorn_calls) self.assertEqual(ContactsFilter( partner=CompositeAndFilter({ 'a': MatchFilter(1), 'b': MatchFilter(2) })), result)
def test_composite_and_partial_filter(self): """ Only one branch of a CompositeAndFilter is specified. """ self.maxDiff = 10000 result = adorn_filter(None, self.ds, ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter('indy'), }))) self.assertEqual([{ 'locations': { 'city': ['indy'], }, }], self.ds.adorn_calls) self.assertEqual(ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter({'value': 'indy', 'display': 'Indy'}), })), result)
def test_composite_and(self): """Test adorning a CompositeAndFilter.""" self.maxDiff = 10000 result = adorn_filter(None, self.ds, ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter('indy'), 'state': MatchFilter('IN'), }))) self.assertEqual([{ 'locations': { 'city': ['indy'], 'state': ['IN'], }, }], self.ds.adorn_calls) self.assertEqual(ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter({'value': 'indy', 'display': 'Indy'}), 'state': MatchFilter({'value': 'IN', 'display': 'Indiana'}), })), result)
def test_passthrough_missing_composite_and(self): """ Pass through when all branches of a CompositeAndFilter are not indexed by the data source. """ result = adorn_filter( None, self.ds, ContactsFilter(partner=CompositeAndFilter({ 'a': MatchFilter(1), 'b': MatchFilter(2) }))) self.assertEqual([{ 'partner': { 'a': [1], 'b': [2] }, }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(partner=CompositeAndFilter({ 'a': MatchFilter(1), 'b': MatchFilter(2) })), result)
def test_composite_and_partial_filter(self): """ Only one branch of a CompositeAndFilter is specified. """ self.maxDiff = 10000 result = adorn_filter( None, self.ds, ContactsFilter( locations=CompositeAndFilter({ 'city': MatchFilter('indy'), }))) self.assertEqual([{ 'locations': { 'city': ['indy'], }, }], self.ds.adorn_calls) self.assertEqual( ContactsFilter(locations=CompositeAndFilter({ 'city': MatchFilter({ 'value': 'indy', 'display': 'Indy' }), })), result)
def get_default_filter(self, data_type, company): filter_spec = PartnersFilter( date=DateRangeFilter([datetime(2014, 1, 1), datetime.now()])) adorned = adorn_filter(company, self, filter_spec) return adorned
def get_default_filter(self, data_type, company): filter_spec = PartnersFilter(date=DateRangeFilter( [datetime(2014, 1, 1), datetime.now()])) adorned = adorn_filter(company, self, filter_spec) return adorned