def test_filter_by_tags_and(self): """Show only commrec with correct tags in 'and' configuration.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=AndGroupFilter([ OrGroupFilter([MatchFilter('EaSt')]), OrGroupFilter([MatchFilter('wEsT')])])), []) subjects = {r['subject'] for r in recs} expected = set() self.assertEqual(expected, subjects) # Now try adding another tag. self.record_1.tags.add(self.west_tag) self.record_1.save() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=AndGroupFilter([ OrGroupFilter([MatchFilter('EaSt')]), OrGroupFilter([MatchFilter('wEsT')])])), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject} self.assertEqual(expected, subjects)
def test_filter_by_tags_and(self): """Show only commrec with correct tags in 'and' configuration.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=AndGroupFilter([ OrGroupFilter([MatchFilter('EaSt')]), OrGroupFilter([MatchFilter('wEsT')]) ])), []) subjects = {r['subject'] for r in recs} expected = set() self.assertEqual(expected, subjects) # Now try adding another tag. self.record_1.tags.add(self.west_tag) self.record_1.save() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=AndGroupFilter([ OrGroupFilter([MatchFilter('EaSt')]), OrGroupFilter([MatchFilter('wEsT')]) ])), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject} self.assertEqual(expected, subjects)
def test_filter_by_date_after(self): """Should show only commrec with last_action_time after date.""" ds = CommRecordsDataSource() date_range = DateRangeFilter([datetime(2015, 10, 1), None]) recs = ds.run_unaggregated(self.company, CommRecordsFilter(date_time=date_range), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_city(self): """Should show only commrecs with correct city.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(locations=CompositeAndFilter( {'city': MatchFilter('Los Angeles')})), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_communication_type(self): """Check communication_type filter works at all.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( communication_type=OrGroupFilter([MatchFilter('email')])), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject} self.assertEqual(expected, subjects)
def test_filter_by_tags(self): """Show only commrec with correct tags.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=[['EaSt']]), []) subjects = set([r['subject'] for r in recs]) expected = {self.record_1.subject, self.record_2.subject} self.assertEqual(expected, subjects)
def test_filter_by_communication_type(self): """Check communication_type filter works at all.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(communication_type='Email'), []) subjects = set([r['subject'] for r in recs]) expected = {self.record_1.subject} self.assertEqual(expected, subjects)
def test_filter_by_contact(self): """Check partner filter works at all.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(contact=[self.sue.pk]), []) subjects = set([r['subject'] for r in recs]) expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_run_unfiltered(self): """Make sure we only get data for this user.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated(self.company, CommRecordsFilter(), []) subjects = {r['subject'] for r in recs} expected = { self.record_1.subject, self.record_2.subject, self.record_3.subject, } self.assertEqual(expected, subjects)
def test_run_unfiltered(self): """Make sure we only get data for this user.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated(self.company, CommRecordsFilter(), []) subjects = set([r['subject'] for r in recs]) expected = { self.record_1.subject, self.record_2.subject, self.record_3.subject, } self.assertEqual(expected, subjects)
def test_filter_by_date_after(self): """Should show only commrec with last_action_time after date.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( date_time=[datetime(2015, 10, 1), None]), []) subjects = set([r['subject'] for r in recs]) expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_state(self): """Should show only commrecs with correct state.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( locations=CompositeAndFilter({'state': MatchFilter('CA')})), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_date_before(self): """Should show only commrec with last_action_time before date.""" ds = CommRecordsDataSource() date_range = DateRangeFilter( [None, datetime(2015, 9, 30)]) recs = ds.run_unaggregated( self.company, CommRecordsFilter(date_time=date_range), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject, self.record_2.subject} self.assertEqual(expected, subjects)
def test_filter_by_partner_tags_untagged(self): """ Check that we can find a record attached to an untagged partner. """ self.partner_b.tags.clear() ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(partner_tags=UnlinkedFilter()), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_city(self): """Should show only commrecs with correct city.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( locations={ 'city': 'Los Angeles' }), []) subjects = set([r['subject'] for r in recs]) expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_partner_tags(self): """ Test that we can filter by partner tags. """ ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(partner_tags=AndGroupFilter( [OrGroupFilter([MatchFilter('rigHt')])])), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_contact(self): """ Check partner filter works at all. """ ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( contact=OrGroupFilter([MatchFilter(self.sue.pk)])), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_tags_unlinked(self): """ Only return untagged commrecs. """ self.record_1.tags.clear() ds = CommRecordsDataSource() recs = ds.run_unaggregated(self.company, CommRecordsFilter(tags=UnlinkedFilter()), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject} self.assertEqual(expected, subjects)
def test_order(self): """Check ordering results works at all.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(), ["-subject"]) subjects = [r['subject'] for r in recs] expected = [ self.record_3.subject, self.record_2.subject, self.record_1.subject, ] self.assertEqual(expected, subjects)
def test_filter_by_tags(self): """ Show only commrec with correct tags. """ ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=AndGroupFilter([ OrGroupFilter([MatchFilter('EaSt')])])), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject, self.record_2.subject} self.assertEqual(expected, subjects)
def test_filter_by_tags_unlinked(self): """ Only return untagged commrecs. """ self.record_1.tags.clear() ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(tags=UnlinkedFilter()), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject} self.assertEqual(expected, subjects)
def test_filter_by_partner(self): """ Check partner filter works at all. """ ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( partner=OrGroupFilter([MatchFilter(self.partner_a.pk)])), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject, self.record_2.subject} self.assertEqual(expected, subjects)
def test_filter_by_partner_tags_untagged(self): """ Check that we can find a record attached to an untagged partner. """ self.partner_b.tags.clear() ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(partner_tags=UnlinkedFilter()), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_filter_by_tags(self): """ Show only commrec with correct tags. """ ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( tags=AndGroupFilter([OrGroupFilter([MatchFilter('EaSt')])])), []) subjects = {r['subject'] for r in recs} expected = {self.record_1.subject, self.record_2.subject} self.assertEqual(expected, subjects)
def test_filter_by_empty_things(self): """Empty filters should not filter, just like missing filters.""" ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( locations={'city': '', 'state': ''}), []) subjects = set([r['subject'] for r in recs]) expected = { self.record_1.subject, self.record_2.subject, self.record_3.subject, } self.assertEqual(expected, subjects)
def test_filter_by_partner_tags(self): """ Test that we can filter by partner tags. """ ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter( partner_tags=AndGroupFilter([ OrGroupFilter([MatchFilter('rigHt')])])), []) subjects = {r['subject'] for r in recs} expected = {self.record_3.subject} self.assertEqual(expected, subjects)
def test_values(self): """ Check limiting values works at all """ self.maxDiff = 10000 ds = CommRecordsDataSource() recs = ds.run_unaggregated( self.company, CommRecordsFilter(), ["partner", "subject"]) expected = [ {'partner': u'aaa', 'subject': u'record 1'}, {'partner': u'aaa', 'subject': u'record 2'}, {'partner': u'bbb', 'subject': u'record 3'}, ] self.assertEqual(expected, recs)
def test_values(self): """ Check limiting values works at all """ self.maxDiff = 10000 ds = CommRecordsDataSource() recs = ds.run_unaggregated(self.company, CommRecordsFilter(), ["partner", "subject"]) expected = [ { 'partner': u'aaa', 'subject': u'record 1' }, { 'partner': u'aaa', 'subject': u'record 2' }, { 'partner': u'bbb', 'subject': u'record 3' }, ] self.assertEqual(expected, recs)