class FieldStaffFactory(factory.DjangoModelFactory): FACTORY_FOR = FieldStaff # Staff ID's start at 100 staff_id = factory.Sequence(lambda n: n + 100) name = factory.Sequence(lambda n: 'field staff {}'.format(n)) phone_number = factory.Sequence(lambda n: get_random_phone_number())
class BulkMessageFactory(factory.DjangoModelFactory): FACTORY_FOR = models.BulkMessage phone_number = factory.Sequence(lambda n: get_random_phone_number()) message = factory.fuzzy.FuzzyText() batch = factory.SubFactory(BatchFactory) sms = factory.SubFactory(SMSFactory)
def setUp(self): self.NUMBER = get_random_phone_number() # Most tests need the number whitelisted, so whitelist by default WhitelistFactory(phone_number=self.NUMBER) self.election = ElectionFactory( polling_start_time=now() - timedelta(hours=1), polling_end_time=now() + timedelta(hours=1), )
class PollingReportFactory(factory.DjangoModelFactory): FACTORY_FOR = models.PollingReport election = factory.LazyAttribute(get_or_create_election) registration_center = factory.SubFactory(RegistrationCenterFactory) period_number = FIRST_PERIOD_NUMBER num_voters = factory.Sequence(int) phone_number = factory.Sequence(lambda n: get_random_phone_number())
def test_numbers_unique(self): number1 = get_random_phone_number() number2 = str(1 + long(number1)) reg = RegistrationCenterFactory() StaffPhone.objects.create(phone_number=number1, registration_center=reg) StaffPhone.objects.create(phone_number=number2, registration_center=reg) obj = StaffPhone(phone_number=number2, registration_center=reg) with self.assertRaises(ValidationError): obj.clean()
def test_search_phone(self): number = get_random_phone_number() target = FieldStaffFactory(phone_number=number, suspended=False) for i in range(2): FieldStaffFactory() url = reverse('browse_fieldstaff') + "?q=%s" % number rsp = self.client.get(url) object_list = rsp.context['object_list'] self.assertEqual(1, len(object_list)) self.assertIn(target, object_list)
def test_create(self): data = { 'name': 'Fred', 'phone_number': get_random_phone_number(), 'staff_id': 892, 'suspended': False, } url = reverse('add_fieldstaff') rsp = self.client.post(url, data=data) self.assertRedirects(rsp, reverse('browse_fieldstaff'))
def test_create_bad(self): data = { 'name': 'Fred', 'phone_number': get_random_phone_number(), 'staff_id': 'wzyw', 'suspended': False, } url = reverse('add_fieldstaff') rsp = self.client.post(url, data=data) self.assertEqual(400, rsp.status_code) self.assertFalse(FieldStaff.objects.filter(name='Fred').exists())
def setUp(self): self.number = get_random_phone_number() self.center = RegistrationCenterFactory() self.citizen = CitizenFactory() self.staffphone = StaffPhone.objects.create(phone_number=self.number, registration_center=self.center) self.conn = self.create_connection(data={'identity': self.number}) self.good_nid = self.citizen.national_id self.bad_nid = get_random_number_string(length=constants.NID_LENGTH) self.short_nid = get_random_number_string(length=constants.NID_LENGTH - 1) self.fields = {'to_addr': settings.REGISTRATION_SHORT_CODE}
def setUp(self): self.number = get_random_phone_number() self.center = RegistrationCenterFactory() self.citizen = CitizenFactory() self.staffphone = StaffPhone.objects.create( phone_number=self.number, registration_center=self.center) self.conn = self.create_connection(data={'identity': self.number}) self.good_nid = self.citizen.national_id self.bad_nid = get_random_number_string(length=constants.NID_LENGTH) self.short_nid = get_random_number_string(length=constants.NID_LENGTH - 1) self.fields = {'to_addr': settings.REGISTRATION_SHORT_CODE}
def test_import_number_twice_works(self): "Importing a number that is already in list shouldn't cause an error" number = get_random_phone_number() self.factory(phone_number=number) file_content = b"%s" % number blackwhitelist_file = ContentFile(file_content, name='bw.txt') data = {'import_file': blackwhitelist_file} rsp = self.client.post(self.url, data=data) # Assert that we redirect self.assertEqual(302, rsp.status_code) bwlist = self.model.objects.values_list('phone_number', flat=True) self.assertEqual(len(bwlist), 1) self.assertIn(number, bwlist)
def test_update(self): staff = FieldStaffFactory(suspended=False) data = { 'name': 'Fred', 'phone_number': get_random_phone_number(), 'staff_id': 892, 'suspended': True, } url = reverse('edit_fieldstaff', kwargs={'pk': staff.pk}) self.client.post(url, data=data) new_staff = FieldStaff.objects.get(pk=staff.pk) self.assertEqual(data['name'], new_staff.name) self.assertEqual(data['phone_number'], new_staff.phone_number) self.assertEqual(data['staff_id'], new_staff.staff_id) self.assertTrue(new_staff.suspended)
def test_valid_form(self): # with all combinations of line endings (\r\n, \n, \r) numbers = [get_random_phone_number() for i in range(4)] punctuated_numbers = [format_phone_number(number) for number in numbers] file_content = b"""%s\r\n%s\n \n%s\r%s""" % ( punctuated_numbers[0], punctuated_numbers[1], punctuated_numbers[2], punctuated_numbers[3], ) blackwhitelist_file = ContentFile(file_content, name='bw.txt') data = {'import_file': blackwhitelist_file} rsp = self.client.post(self.url, data=data) # Assert that we redirect self.assertEqual(302, rsp.status_code) bwlist = self.model.objects.values_list('phone_number', flat=True) for number in numbers: self.assertIn(number, bwlist) self.assertEqual(len(bwlist), 4)
def test_valid_form(self): # with all combinations of line endings (\r\n, \n, \r) numbers = [get_random_phone_number() for i in range(4)] punctuated_numbers = [ format_phone_number(number) for number in numbers ] file_content = b"""%s\r\n%s\n \n%s\r%s""" % ( punctuated_numbers[0], punctuated_numbers[1], punctuated_numbers[2], punctuated_numbers[3], ) blackwhitelist_file = ContentFile(file_content, name='bw.txt') data = {'import_file': blackwhitelist_file} rsp = self.client.post(self.url, data=data) # Assert that we redirect self.assertEqual(302, rsp.status_code) bwlist = self.model.objects.values_list('phone_number', flat=True) for number in numbers: self.assertIn(number, bwlist) self.assertEqual(len(bwlist), 4)
def test_add_dupe_shows_form_error(self): number = get_random_phone_number() self.factory(phone_number=number) f = self.form(data={'phone_number': number}) self.assertFalse(f.is_valid()) self.assertIn('Duplicate value for phone number', f.errors.values()[0])
def test_cleans_phone_number(self): number = get_random_phone_number() punctuated_number = format_phone_number(number) f = self.form(data={'phone_number': punctuated_number}) self.assertTrue(f.is_valid(), f.errors) self.assertEqual(f.cleaned_data['phone_number'], number)
def setUp(self): self.number = get_random_phone_number()
class StaffPhoneFactory(factory.DjangoModelFactory): FACTORY_FOR = models.StaffPhone registration_center = factory.SubFactory(RegistrationCenterFactory) phone_number = factory.Sequence(lambda n: get_random_phone_number())