コード例 #1
0
 def test_filter_by_data_source(self):
     """Check datasource filter works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company, PartnersFilter(data_source=MatchFilter("zap")), [])
     names = {r['name'] for r in recs}
     expected = {self.partner_a.name}
     self.assertEqual(expected, names)
コード例 #2
0
 def test_filter_by_uri(self):
     """Check uri filter works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(uri=MatchFilter("http://www.asdf.com/")), [])
     names = {r['name'] for r in recs}
     expected = {self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #3
0
 def test_filter_by_uri(self):
     """Check uri filter works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(uri="http://www.asdf.com/"),
         [])
     names = set([r['name'] for r in recs])
     expected = {self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #4
0
 def test_filter_by_data_source(self):
     """Check datasource filter works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(data_source="zap"),
         [])
     names = set([r['name'] for r in recs])
     expected = {self.partner_a.name}
     self.assertEqual(expected, names)
コード例 #5
0
 def test_filter_by_tags_or(self):
     """Show only partner with correct tags in 'or' configuration."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(tags=[['EaSt', 'wEsT']]),
         [])
     names = set([r['name'] for r in recs])
     expected = {self.partner_a.name, self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #6
0
 def test_filter_by_date_after(self):
     """Should show only partner with last_action_time after date."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(
             date=DateRangeFilter([datetime(2015, 10, 1), None])), [])
     names = {r['name'] for r in recs}
     expected = {self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #7
0
 def test_order(self):
     """Check ordering results works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(),
         ["-name"])
     names = [r['name'] for r in recs]
     expected = [self.partner_b.name, self.partner_a.name]
     self.assertEqual(expected, names)
コード例 #8
0
 def test_filter_by_date_before(self):
     """Should show only partner with last_action_time before date."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(
             date=DateRangeFilter([None, datetime(2015, 9, 30)])),
         [])
     names = {r['name'] for r in recs}
     expected = {self.partner_a.name}
     self.assertEqual(expected, names)
コード例 #9
0
    def test_filter_by_tags_and(self):
        """Show only partner with correct tags in 'and' configuration."""
        ds = PartnersDataSource()
        recs = ds.run_unaggregated(
            self.company,
            PartnersFilter(tags=[['EaSt'], ['wEsT']]),
            [])
        names = set([r['name'] for r in recs])
        expected = set()
        self.assertEqual(expected, names)

        # Now try adding another tag.
        self.partner_a.tags.add(self.west_tag)
        recs = ds.run_unaggregated(
            self.company,
            PartnersFilter(tags=[['EaSt'], ['wEsT']]),
            [])
        names = set([r['name'] for r in recs])
        expected = {self.partner_a.name}
        self.assertEqual(expected, names)
コード例 #10
0
 def test_filter_by_date_after(self):
     """Should show only partner with last_action_time after date."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(
             date=[datetime(2015, 10, 1), None]),
         [])
     names = set([r['name'] for r in recs])
     expected = {self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #11
0
 def test_filter_by_empty_things(self):
     """Empty filters should not filter, just like missing filters."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(
             locations={'city': '', 'state': ''}),
         [])
     names = set([r['name'] for r in recs])
     expected = {self.partner_a.name, self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #12
0
 def test_filter_by_tags_or(self):
     """Show only partner with correct tags in 'or' configuration."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(tags=AndGroupFilter([
             OrGroupFilter([MatchFilter('EaSt'), MatchFilter('wEsT')])])),
         [])
     names = {r['name'] for r in recs}
     expected = {self.partner_a.name, self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #13
0
 def test_filter_by_tags_or(self):
     """Show only partner with correct tags in 'or' configuration."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(tags=AndGroupFilter(
             [OrGroupFilter([MatchFilter('EaSt'),
                             MatchFilter('wEsT')])])), [])
     names = {r['name'] for r in recs}
     expected = {self.partner_a.name, self.partner_b.name}
     self.assertEqual(expected, names)
コード例 #14
0
 def test_filter_by_city(self):
     """Should show only partners with correct city."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(locations=CompositeAndFilter({
             'city':
             MatchFilter('Los Angeles'),
         })), [])
     names = [r['name'] for r in recs]
     expected = [self.partner_b.name]
     self.assertEqual(expected, names)
コード例 #15
0
 def test_values(self):
     """Check limiting values works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(),
         ["name", "uri"])
     expected = [
         {'name': self.partner_a.name, 'uri': 'http://www.example.com/'},
         {'name': self.partner_b.name, 'uri': 'http://www.asdf.com/'},
     ]
     self.assertEqual(expected, recs)
コード例 #16
0
 def test_filter_by_city(self):
     """Should show only partners with correct city."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(
             locations={
                 'city': 'Los Angeles'
             }),
         [])
     names = [r['name'] for r in recs]
     expected = [self.partner_b.name]
     self.assertEqual(expected, names)
コード例 #17
0
 def test_filter_by_state(self):
     """Should show only partners with correct state."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(
         self.company,
         PartnersFilter(
             locations=CompositeAndFilter({
                 'state': MatchFilter('CA'),
             })),
         [])
     names = [r['name'] for r in recs]
     expected = [self.partner_b.name]
     self.assertEqual(expected, names)
コード例 #18
0
    def test_filter_by_tags_and(self):
        """Show only partner with correct tags in 'and' configuration."""
        ds = PartnersDataSource()
        recs = ds.run_unaggregated(
            self.company,
            PartnersFilter(tags=AndGroupFilter([
                OrGroupFilter([MatchFilter('EaSt')]),
                OrGroupFilter([MatchFilter('wEsT')])
            ])), [])
        names = {r['name'] for r in recs}
        expected = set()
        self.assertEqual(expected, names)

        # Now try adding another tag.
        self.partner_a.tags.add(self.west_tag)
        recs = ds.run_unaggregated(
            self.company,
            PartnersFilter(tags=AndGroupFilter([
                OrGroupFilter([MatchFilter('EaSt')]),
                OrGroupFilter([MatchFilter('wEsT')])
            ])), [])
        names = {r['name'] for r in recs}
        expected = {self.partner_a.name}
        self.assertEqual(expected, names)
コード例 #19
0
 def test_values(self):
     """Check limiting values works at all."""
     ds = PartnersDataSource()
     recs = ds.run_unaggregated(self.company, PartnersFilter(),
                                ["name", "uri"])
     expected = [
         {
             'name': self.partner_a.name,
             'uri': 'http://www.example.com/'
         },
         {
             'name': self.partner_b.name,
             'uri': 'http://www.asdf.com/'
         },
     ]
     self.assertEqual(expected, recs)
コード例 #20
0
    def test_run_unfiltered(self):
        """Make sure we only get data for this user."""
        ds = PartnersDataSource()
        recs = ds.run_unaggregated(self.company, PartnersFilter(), [])
        names = set([r['name'] for r in recs])
        expected = {self.partner_a.name, self.partner_b.name}
        self.assertEqual(expected, names)
        expected_tags = {
            self.partner_a.pk: {'east'},
            self.partner_b.pk: {'west'},
        }

        def tags_by_pk(rec):
            return (rec['partner_id'], set(t['name'] for t in rec['tags']))

        found_tags = dict(tags_by_pk(r) for r in recs)

        self.assertEqual(expected_tags, found_tags)
コード例 #21
0
    def test_run_unfiltered(self):
        """Make sure we only get data for this user."""
        ds = PartnersDataSource()
        recs = ds.run_unaggregated(self.company, PartnersFilter(), [])
        names = {r['name'] for r in recs}
        expected = {self.partner_a.name, self.partner_b.name}
        self.assertEqual(expected, names)
        expected_tags = {
            self.partner_a.pk: {'east'},
            self.partner_b.pk: {'west'},
        }

        def tags_by_pk(rec):
            return (rec['partner_id'], set(t['name'] for t in rec['tags']))

        found_tags = dict(tags_by_pk(r) for r in recs)

        self.assertEqual(expected_tags, found_tags)