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)
Esempio n. 7
0
    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)
Esempio n. 16
0
 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
Esempio n. 17
0
 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