def setUp(self): super(TestReportsApi, self).setUp() ContactFactory.create( name="a", email="*****@*****.**", partner=self.partner, locations=[ LocationFactory.create( city="Chicago", state="IL"), LocationFactory.create( city="Champaign", state="IL"), ])
def test_contact_locations(self): """ Test that `get_contact_locations` returns a properly formatted string. """ ny = LocationFactory.create_batch(2, city="Albany", state="NY") il = LocationFactory.create(city="Chicago", state="IL") mo = LocationFactory.create(city="St. Louis", state="MO") contacts = ContactFactory.create_batch(4, partner=self.partner) for contact, location in zip(contacts, ny + [il, mo]): contact.locations.add(location) self.assertEqual("Chicago, IL; St. Louis, MO; Albany, NY", "; ".join(self.partner.get_contact_locations()))
def setUp(self): super(TestReportsApi, self).setUp() contact = ContactFactory.create( name="a", email="*****@*****.**", partner=self.partner, locations=[ LocationFactory.create(city="Chicago", state="IL"), LocationFactory.create(city="Champaign", state="IL"), ]) contact.tags.add(TagFactory.create(name="Disability")) contact.tags.add(TagFactory.create(name="Veteran")) contact.tags.add(TagFactory.create(name="Senior"))
def setUp(self): super(TestReportsApi, self).setUp() contact = ContactFactory.create( name="a", email="*****@*****.**", partner=self.partner, locations=[ LocationFactory.create(city="Chicago", state="IL"), LocationFactory.create(city="Champaign", state="IL"), ], ) contact.tags.add(TagFactory.create(name="Disability")) contact.tags.add(TagFactory.create(name="Veteran")) contact.tags.add(TagFactory.create(name="Senior"))
def test_filtered_report(self): """Run a dynamic report with a filter.""" partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create(city="city-%s" % i) ContactFactory.create(name="name-%s" % i, partner=partner, locations=[location]) report_data = (self.dynamic_models['report_type/data_type'] ['contacts/unaggregated']) report = DynamicReport.objects.create(report_data=report_data, filters=json.dumps({ 'locations': { 'city': 'city-2', }, }), owner=self.company) report.regenerate() expected_column_names = { 'name', 'tags', 'notes', 'locations', 'phone', 'partner', 'email', 'date' } self.assertEqual(1, len(report.python)) self.assertEqual('name-2', report.python[0]['name']) self.assertEqual(expected_column_names, set(report.python[0]))
def test_dynamic_contacts_trial_report(self): """Run a trial report.""" self.maxDiff = 10000 self.client.login_user(self.user) partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create(city="city-%s" % i, state="ZZ") # unicode here to push through report generation/download ContactFactory.create(name=u"name-%s \u2019" % i, partner=partner, locations=[location]) report_data = self.find_report_data("contacts") resp = self.client.post( reverse("run_trial_dynamic_report"), data={ "report_data_id": report_data.pk, "name": "The Report", "filter": json.dumps({"locations": {"city": "city-2"}}), "values": json.dumps(["phone", "tags", "email", "name"]), }, ) self.assertEqual(200, resp.status_code) report_content = json.loads(resp.content) self.assertEqual( [{u"email": u"*****@*****.**", u"name": u"name-2 \u2019", u"phone": u"84104391", u"tags": []}], report_content, )
def test_filtered_report(self): """Run a dynamic report with a filter.""" partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create( city="city-%s" % i) ContactFactory.create( name="name-%s" % i, partner=partner, locations=[location]) report_data = ( self.dynamic_models['report_type/data_type'] ['contacts/unaggregated']) report = DynamicReport.objects.create( report_data=report_data, filters=json.dumps({ 'locations': { 'city': 'city-2', }, }), owner=self.company) report.regenerate() expected_column_names = { 'name', 'tags', 'notes', 'locations', 'phone', 'partner', 'email', 'date'} self.assertEqual(1, len(report.python)) self.assertEqual('name-2', report.python[0]['name']) self.assertEqual(expected_column_names, set(report.python[0]))
def test_dynamic_report_with_filter(self): """Create some test data, run filtered, and download a report.""" self.client.login_user(self.user) partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create(city="city-%s" % i) ContactFactory.create(name="name-%s" % i, partner=partner, locations=[location]) report_data = self.find_report_data("contacts") resp = self.client.post( reverse("run_dynamic_report"), data={ "report_data_id": report_data.pk, "name": "The Report", "filter": json.dumps({"locations": {"city": "city-2"}}), }, ) self.assertEqual(200, resp.status_code) report_id = json.loads(resp.content)["id"] report_presentation = self.find_report_presentation(report_data, "json_pass") data = {"id": report_id, "report_presentation_id": report_presentation.pk} resp = self.client.get(reverse("download_dynamic_report"), data) self.assertEquals(200, resp.status_code) response_data = json.loads(resp.content) self.assertEquals(1, len(response_data["records"])) found_name = response_data["records"][0]["Name"] expected_name = u"name-2" self.assertEqual(expected_name, found_name)
def test_location_to_contact_relationship(self): """ Tests adding a Location to Contact. """ location = LocationFactory() # make sure that we can add a location to a contact self.contact.locations.add(location) self.contact.save() self.assertTrue(len(self.contact.locations.all()) > 0) # ensure that we can remove a location self.contact.locations.remove(location) self.assertTrue(len(self.contact.locations.all()) == 0) # make sure that removing a location from a contact doesn't delete that # location entirely self.assertIn(location, Location.objects.all())
def test_dynamic_report_with_filter(self): """Create some test data, run filtered, and download a report.""" self.client.login_user(self.user) partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create(city="city-%s" % i) ContactFactory.create(name="name-%s" % i, partner=partner, locations=[location]) report_data = self.find_report_data('contacts') resp = self.client.post(reverse('run_dynamic_report'), data={ 'report_data_id': report_data.pk, 'name': 'The Report', 'filter': json.dumps({ 'locations': { 'city': 'city-2', }, }), }) self.assertEqual(200, resp.status_code) report_id = json.loads(resp.content)['id'] report_presentation = self.find_report_presentation( report_data, 'json_pass') data = { 'id': report_id, 'report_presentation_id': report_presentation.pk, } resp = self.client.get(reverse('download_dynamic_report'), data) self.assertEquals(200, resp.status_code) response_data = json.loads(resp.content) self.assertEquals(1, len(response_data['records'])) found_name = response_data['records'][0]['Name'] expected_name = u'name-2' self.assertEqual(expected_name, found_name)
def test_dynamic_contacts_trial_report(self): """Run a trial report.""" self.maxDiff = 10000 self.client.login_user(self.user) partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create(city="city-%s" % i, state='ZZ') # unicode here to push through report generation/download ContactFactory.create(name=u"name-%s \u2019" % i, partner=partner, locations=[location]) report_data = self.find_report_data('contacts') resp = self.client.post(reverse('run_trial_dynamic_report'), data={ 'report_data_id': report_data.pk, 'name': 'The Report', 'filter': json.dumps({ 'locations': { 'city': 'city-2', }, }), 'values': json.dumps( ['phone', 'tags', 'email', 'name']), }) self.assertEqual(200, resp.status_code) report_content = json.loads(resp.content) self.assertEqual([ { u'email': u'*****@*****.**', u'name': u'name-2 \u2019', u'phone': u'84104391', u'tags': [], }, ], report_content)
def test_dynamic_report_with_filter(self): """Create some test data, run filtered, and download a report.""" self.client.login_user(self.user) partner = PartnerFactory(owner=self.company) for i in range(0, 10): location = LocationFactory.create( city="city-%s" % i) ContactFactory.create( name="name-%s" % i, partner=partner, locations=[location]) report_presentation = self.find_report_presentation( 'contacts', 'json_pass') resp = self.client.post( reverse('run_dynamic_report'), data={ 'rp_id': report_presentation.pk, 'name': 'The Report', 'filter': json.dumps({ 'locations': { 'city': 'city-2', }, }), }) self.assertEqual(200, resp.status_code) report_id = json.loads(resp.content)['id'] resp = self.client.get(reverse('download_dynamic_report'), {'id': report_id}) self.assertEquals(200, resp.status_code) response_data = json.loads(resp.content) self.assertEquals(1, len(response_data['records'])) found_name = response_data['records'][0]['name'] expected_name = u'name-2' self.assertEqual(expected_name, found_name)
def setUp(self): super(TestCommRecordsDataSource, self).setUp() # A company to work with self.company = CompanyFactory(name='right') self.company.save() # A separate company that should not show up in results. self.other_company = CompanyFactory(name='wrong') self.other_company.save() self.partner_a = PartnerFactory( owner=self.company, uri='http://www.example.com/', data_source="zap", name="aaa") self.partner_b = PartnerFactory( owner=self.company, uri='http://www.asdf.com/', data_source="bcd", name="bbb") # An unapproved parther. Associated data should be filtered out. self.partner_unapp = PartnerFactory( owner=self.company, name="unapproved", approval_status__code=Status.UNPROCESSED) # An archived parther. Associated data should be filtered out. self.partner_archived = PartnerFactory(owner=self.company) self.east_tag = TagFactory.create(name='east', hex_color="aaaaaa") self.west_tag = TagFactory.create(name='west', hex_color="bbbbbb") self.bad_tag = TagFactory.create(name='bad', hex_color="cccccc") self.john_user = UserFactory(email="*****@*****.**") self.john = ContactFactory( partner=self.partner_a, name='john adams', user=self.john_user, email="*****@*****.**", last_action_time='2015-10-03') self.john.locations.add( LocationFactory.create( city="Indianapolis", state="IN")) self.john.locations.add( LocationFactory.create( city="Chicago", state="IL")) self.sue_user = UserFactory(email="*****@*****.**") self.sue = ContactFactory( partner=self.partner_b, name='Sue Baxter', user=self.sue_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.sue.locations.add( LocationFactory.create( address_line_one="123", city="Los Angeles", state="CA")) self.sue.locations.add( LocationFactory.create( address_line_one="234", city="Los Angeles", state="CA")) self.partner_a.primary_contact = self.john self.partner_b.primary_contact = self.sue self.partner_a.save() self.partner_b.save() self.record_1 = ContactRecordFactory( subject='record 1', date_time='2015-09-30 13:23', contact=self.john, contact_type="Email", partner=self.partner_a, location='Indianapolis, IN', tags=[self.east_tag]) self.record_2 = ContactRecordFactory( subject='record 2', date_time='2015-01-01', contact=self.john, contact_type="Meeting Or Event", partner=self.partner_a, location='Indianapolis, IN', tags=[self.east_tag]) self.record_3 = ContactRecordFactory( subject='record 3', date_time='2015-10-03', contact=self.sue, contact_type="Phone", partner=self.partner_b, location='Los Angeles, CA', tags=[self.west_tag]) # Archive archived data here. Doing this earlier in the set up results # in odd exceptions. self.partner_archived.archive()
def setUp(self): super(TestContactsDataSource, self).setUp() # A company to work with self.company = CompanyFactory(name='right') self.company.save() # A separate company that should not show up in results. self.other_company = CompanyFactory(name='wrong') self.other_company.save() self.partner = PartnerFactory(owner=self.company) self.other_partner = PartnerFactory(owner=self.other_company) self.partner_a = PartnerFactory(owner=self.company, name="aaa") self.partner_b = PartnerFactory(owner=self.company, name="bbb") # An unapproved parther. Associated data should be filtered out. self.partner_unapp = PartnerFactory( owner=self.company, name="unapproved", approval_status__code=Status.UNPROCESSED) # An archived parther. Associated data should be filtered out. self.partner_archived = PartnerFactory(owner=self.company) self.east_tag = TagFactory.create(company=self.company, name='east', hex_color="aaaaaa") self.west_tag = TagFactory.create(company=self.company, name='west', hex_color="bbbbbb") self.left_tag = TagFactory.create(company=self.company, name='left', hex_color="cccccc") self.right_tag = TagFactory.create(company=self.company, name='right', hex_color="dddddd") self.bad_tag = TagFactory.create(company=self.company, name='bad', hex_color="cccccc") self.partner_a.tags.add(self.left_tag) self.partner_b.tags.add(self.right_tag) self.john_user = UserFactory(email="*****@*****.**") self.john = ContactFactory(partner=self.partner_a, name='john adams', user=self.john_user, email="*****@*****.**", last_action_time='2015-10-03') self.john.locations.add( LocationFactory.create(city="Indianapolis", state="IN")) self.john.locations.add( LocationFactory.create(city="Chicago", state="IL")) self.john.tags.add(self.east_tag) self.sue_user = UserFactory(email="*****@*****.**") self.sue = ContactFactory(partner=self.partner_b, name='Sue Baxter', user=self.sue_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.sue.locations.add( LocationFactory.create(address_line_one="123", city="Los Angeles", state="CA")) self.sue.locations.add( LocationFactory.create(address_line_one="234", city="Los Angeles", state="CA")) self.sue.tags.add(self.west_tag) # Poision data. Should never show up. self.archived_partner_user = (UserFactory( email="*****@*****.**")) self.archived_partner = ContactFactory( partner=self.partner_archived, name='Archived Partner Contact', user=self.archived_partner_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.archived_partner.locations.add( LocationFactory.create(address_line_one="123", city="Nowhere", state="NO")) self.archived_partner.locations.add( LocationFactory.create(address_line_one="234", city="Nowhere", state="NO")) self.archived_partner.tags.add(self.west_tag) # Poision data. Should never show up. self.archived_contact_user = (UserFactory( email="*****@*****.**")) self.archived_contact = ContactFactory( partner=self.partner_b, name='Archived Contact', user=self.archived_contact_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.archived_contact.locations.add( LocationFactory.create(address_line_one="123", city="Nowhere", state="NO")) self.archived_contact.locations.add( LocationFactory.create(address_line_one="234", city="Nowhere", state="NO")) self.archived_contact.tags.add(self.west_tag) # Poision data. Should never show up. self.unapproved_partner_user = (UserFactory( email="*****@*****.**")) self.unapproved_partner_contact = ContactFactory( partner=self.partner_unapp, name='Unapproved Partner Contact', user=self.unapproved_partner_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.unapproved_partner_contact.locations.add( LocationFactory.create(address_line_one="123", city="Nowhere", state="NO")) self.unapproved_partner_contact.locations.add( LocationFactory.create(address_line_one="234", city="Nowhere", state="NO")) self.unapproved_partner_contact.tags.add(self.west_tag) # Poision data. Should never show up. self.unapproved_contact_user = (UserFactory( email="*****@*****.**")) self.unapproved_contact = ContactFactory( partner=self.partner_b, name='Unapproved Contact', user=self.unapproved_contact_user, email="*****@*****.**", last_action_time='2015-09-30 13:23', approval_status__code=Status.UNPROCESSED) self.unapproved_contact.locations.add( LocationFactory.create(address_line_one="123", city="Nowhere", state="NO")) self.unapproved_contact.locations.add( LocationFactory.create(address_line_one="234", city="Nowhere", state="NO")) self.unapproved_contact.tags.add(self.west_tag) # Poision data. Should never show up. self.wrong_user = UserFactory(email="*****@*****.**") self.wrong = ContactFactory(partner=self.other_partner, name='wrong person', user=self.wrong_user, email="*****@*****.**", last_action_time='2015-09-03') self.wrong.locations.add( LocationFactory.create(city="Los Angeles", state="CA")) self.wrong.tags.add(self.east_tag) self.wrong.tags.add(self.west_tag) self.wrong.tags.add(self.bad_tag) # Archive archived data here. Doing this earlier in the set up results # in odd exceptions. self.partner_archived.archive() self.archived_contact.archive()
def setUp(self): super(TestCommRecordsDataSource, self).setUp() # A company to work with self.company = CompanyFactory(name='right') self.company.save() # A separate company that should not show up in results. self.other_company = CompanyFactory(name='wrong') self.other_company.save() self.partner_a = PartnerFactory(owner=self.company, uri='http://www.example.com/', data_source="zap", name="aaa") self.partner_b = PartnerFactory(owner=self.company, uri='http://www.asdf.com/', data_source="bcd", name="bbb") # An unapproved parther. Associated data should be filtered out. self.partner_unapp = PartnerFactory( owner=self.company, name="unapproved", approval_status__code=Status.UNPROCESSED) # An archived parther. Associated data should be filtered out. self.partner_archived = PartnerFactory(owner=self.company) self.east_tag = TagFactory.create(company=self.company, name='east', hex_color="aaaaaa") self.west_tag = TagFactory.create(company=self.company, name='west', hex_color="bbbbbb") self.north_tag = TagFactory.create(company=self.company, name='north', hex_color="cccccc") self.south_tag = TagFactory.create(company=self.company, name='south', hex_color="dddddd") self.left_tag = TagFactory.create(company=self.company, name='left', hex_color="eeeeee") self.right_tag = TagFactory.create(company=self.company, name='right', hex_color="ffffff") self.bad_tag = TagFactory.create(company=self.company, name='bad', hex_color="cccccc") self.partner_a.tags.add(self.left_tag) self.partner_b.tags.add(self.right_tag) self.john_user = UserFactory(email="*****@*****.**") self.john = ContactFactory(partner=self.partner_a, name='john adams', user=self.john_user, email="*****@*****.**", last_action_time='2015-10-03') self.john.locations.add( LocationFactory.create(city="Indianapolis", state="IN")) self.john.locations.add( LocationFactory.create(city="Chicago", state="IL")) self.john.tags.add(self.north_tag) self.sue_user = UserFactory(email="*****@*****.**") self.sue = ContactFactory(partner=self.partner_b, name='Sue Baxter', user=self.sue_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.sue.locations.add( LocationFactory.create(address_line_one="123", city="Los Angeles", state="CA")) self.sue.locations.add( LocationFactory.create(address_line_one="234", city="Los Angeles", state="CA")) self.sue.tags.add(self.south_tag) self.partner_a.primary_contact = self.john self.partner_b.primary_contact = self.sue self.partner_a.save() self.partner_b.save() self.record_1 = ContactRecordFactory(subject='record 1', date_time='2015-09-30 13:23', contact=self.john, contact_type="Email", partner=self.partner_a, location='Indianapolis, IN', tags=[self.east_tag]) self.record_2 = ContactRecordFactory(subject='record 2', date_time='2015-01-01', contact=self.john, contact_type="Meeting Or Event", partner=self.partner_a, location='Indianapolis, IN', tags=[self.east_tag]) self.record_3 = ContactRecordFactory(subject='record 3', date_time='2015-10-03', contact=self.sue, contact_type="Phone", partner=self.partner_b, location='Los Angeles, CA', tags=[self.west_tag]) # Archive archived data here. Doing this earlier in the set up results # in odd exceptions. self.partner_archived.archive()
def setUp(self): super(TestContactsDataSource, self).setUp() # A company to work with self.company = CompanyFactory(name='right') self.company.save() # A separate company that should not show up in results. self.other_company = CompanyFactory(name='wrong') self.other_company.save() self.partner = PartnerFactory( owner=self.company) self.other_partner = PartnerFactory( owner=self.other_company) self.partner_a = PartnerFactory(owner=self.company, name="aaa") self.partner_b = PartnerFactory(owner=self.company, name="bbb") # An unapproved parther. Associated data should be filtered out. self.partner_unapp = PartnerFactory( owner=self.company, name="unapproved", approval_status__code=Status.UNPROCESSED) # An archived parther. Associated data should be filtered out. self.partner_archived = PartnerFactory(owner=self.company) self.east_tag = TagFactory.create( company=self.company, name='east', hex_color="aaaaaa") self.west_tag = TagFactory.create( company=self.company, name='west', hex_color="bbbbbb") self.left_tag = TagFactory.create( company=self.company, name='left', hex_color="cccccc") self.right_tag = TagFactory.create( company=self.company, name='right', hex_color="dddddd") self.bad_tag = TagFactory.create( company=self.company, name='bad', hex_color="cccccc") self.partner_a.tags.add(self.left_tag) self.partner_b.tags.add(self.right_tag) self.john_user = UserFactory(email="*****@*****.**") self.john = ContactFactory( partner=self.partner_a, name='john adams', user=self.john_user, email="*****@*****.**", last_action_time='2015-10-03') self.john.locations.add( LocationFactory.create( city="Indianapolis", state="IN")) self.john.locations.add( LocationFactory.create( city="Chicago", state="IL")) self.john.tags.add(self.east_tag) self.sue_user = UserFactory(email="*****@*****.**") self.sue = ContactFactory( partner=self.partner_b, name='Sue Baxter', user=self.sue_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.sue.locations.add( LocationFactory.create( address_line_one="123", city="Los Angeles", state="CA")) self.sue.locations.add( LocationFactory.create( address_line_one="234", city="Los Angeles", state="CA")) self.sue.tags.add(self.west_tag) # Poision data. Should never show up. self.archived_partner_user = ( UserFactory(email="*****@*****.**")) self.archived_partner = ContactFactory( partner=self.partner_archived, name='Archived Partner Contact', user=self.archived_partner_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.archived_partner.locations.add( LocationFactory.create( address_line_one="123", city="Nowhere", state="NO")) self.archived_partner.locations.add( LocationFactory.create( address_line_one="234", city="Nowhere", state="NO")) self.archived_partner.tags.add(self.west_tag) # Poision data. Should never show up. self.archived_contact_user = ( UserFactory(email="*****@*****.**")) self.archived_contact = ContactFactory( partner=self.partner_b, name='Archived Contact', user=self.archived_contact_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.archived_contact.locations.add( LocationFactory.create( address_line_one="123", city="Nowhere", state="NO")) self.archived_contact.locations.add( LocationFactory.create( address_line_one="234", city="Nowhere", state="NO")) self.archived_contact.tags.add(self.west_tag) # Poision data. Should never show up. self.unapproved_partner_user = ( UserFactory(email="*****@*****.**")) self.unapproved_partner_contact = ContactFactory( partner=self.partner_unapp, name='Unapproved Partner Contact', user=self.unapproved_partner_user, email="*****@*****.**", last_action_time='2015-09-30 13:23') self.unapproved_partner_contact.locations.add( LocationFactory.create( address_line_one="123", city="Nowhere", state="NO")) self.unapproved_partner_contact.locations.add( LocationFactory.create( address_line_one="234", city="Nowhere", state="NO")) self.unapproved_partner_contact.tags.add(self.west_tag) # Poision data. Should never show up. self.unapproved_contact_user = ( UserFactory(email="*****@*****.**")) self.unapproved_contact = ContactFactory( partner=self.partner_b, name='Unapproved Contact', user=self.unapproved_contact_user, email="*****@*****.**", last_action_time='2015-09-30 13:23', approval_status__code=Status.UNPROCESSED) self.unapproved_contact.locations.add( LocationFactory.create( address_line_one="123", city="Nowhere", state="NO")) self.unapproved_contact.locations.add( LocationFactory.create( address_line_one="234", city="Nowhere", state="NO")) self.unapproved_contact.tags.add(self.west_tag) # Poision data. Should never show up. self.wrong_user = UserFactory(email="*****@*****.**") self.wrong = ContactFactory( partner=self.other_partner, name='wrong person', user=self.wrong_user, email="*****@*****.**", last_action_time='2015-09-03') self.wrong.locations.add( LocationFactory.create( city="Los Angeles", state="CA")) self.wrong.tags.add(self.east_tag) self.wrong.tags.add(self.west_tag) self.wrong.tags.add(self.bad_tag) # Archive archived data here. Doing this earlier in the set up results # in odd exceptions. self.partner_archived.archive() self.archived_contact.archive()