Beispiel #1
0
def make_empty_book():
    """
    Return an xlwt Workbook object with our sheets & column
    headings, but no data.
    :return: an xlwt Workbook object
    """
    return get_export_workbook([])
Beispiel #2
0
def make_empty_book():
    """
    Return an xlwt Workbook object with our sheets & column
    headings, but no data.
    :return: an xlwt Workbook object
    """
    return get_export_workbook([])
Beispiel #3
0
 def test_provider_delete_provider(self):
     # A provider cannot delete themselves
     provider = ProviderFactory(user=self.user)
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     blank_out_row_for_testing(book, sheet_num=0, row_num=1)
     rsp = self.import_book(book)
     self.assertContains(rsp, "Only staff may delete providers",
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #4
0
 def test_provider_add_provider(self):
     type = ProviderTypeFactory()
     provider = ProviderFactory.build(type=type, user=self.user)  # Doesn't save
     self.assertFalse(provider.id)
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     # self.fail(rsp.content.decode('utf-8'))
     self.assertContains(rsp, "Non-staff users may not create new providers",
                         status_code=BAD_REQUEST)
Beispiel #5
0
 def test_staff_add_provider(self):
     type = ProviderTypeFactory()
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory.build(type=type, user=self.user)  # Doesn't save
     self.assertFalse(provider.id)
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertTrue(Provider.objects.filter(name_en=provider.name_en).exists())
Beispiel #6
0
 def test_staff_delete_provider(self):
     # Staff may delete providers
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     blank_out_row_for_testing(book, sheet_num=0, row_num=1)
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertFalse(Provider.objects.filter(id=provider.id).exists())
Beispiel #7
0
 def test_staff_delete_provider(self):
     # Staff may delete providers
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     blank_out_row_for_testing(book, sheet_num=0, row_num=1)
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertFalse(Provider.objects.filter(id=provider.id).exists())
Beispiel #8
0
 def test_provider_delete_another_provider(self):
     # A provider cannot delete others
     provider = ProviderFactory()
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     blank_out_row_for_testing(book, sheet_num=0, row_num=1)
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "provider: %d is not a provider this user may delete" % provider.id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #9
0
 def test_provider_change_password(self):
     # Providers can change their password
     provider = ProviderFactory(user=self.user)
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     password_column = PROVIDER_HEADINGS.index('password')
     set_cell_value(book, 0, 1, password_column, 'new_password')
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     user = authenticate(email=provider.user.email, password='******')
     self.assertEqual(user, self.user)
Beispiel #10
0
 def test_provider_delete_provider(self):
     # A provider cannot delete themselves
     provider = ProviderFactory(user=self.user)
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     blank_out_row_for_testing(book, sheet_num=0, row_num=1)
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "Only staff may delete providers",
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #11
0
 def test_provider_bad_criterion_id(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory.build(service=service)
     criterion1.id = 'abc'
     book = get_export_workbook([provider], None, [criterion1])
     rsp = self.import_book(book)
     self.assertContains(rsp, "Row 2: id: %s is not a valid ID" % criterion1.id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #12
0
 def test_provider_change_nonexistent_criterion(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory(service=service)
     book = get_export_workbook([provider], None, [criterion1])
     crit_id = criterion1.id
     criterion1.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp, "Row 2: id: No selection criterion with id = %s" % crit_id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #13
0
 def test_provider_add_provider(self):
     type = ProviderTypeFactory()
     provider = ProviderFactory.build(type=type,
                                      user=self.user)  # Doesn't save
     self.assertFalse(provider.id)
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     # self.fail(rsp.content.decode('utf-8'))
     self.assertContains(rsp,
                         "Non-staff users may not create new providers",
                         status_code=BAD_REQUEST)
Beispiel #14
0
 def test_provider_add_criterion_bad_service(self):
     provider = ProviderFactory(user=self.user)
     criterion1 = SelectionCriterionFactory.build()
     service = criterion1.service
     book = get_export_workbook([provider], None, [criterion1])
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "Row 2: service__id: Selection criterion refers to service with ID "
                         "or name '%s' that is not in the 2nd sheet" % service.name_en,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #15
0
 def test_provider_change_anothers_password(self):
     # Providers cannot change another provider's password
     provider = ProviderFactory()
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     password_column = PROVIDER_HEADINGS.index('password')
     set_cell_value(book, 0, 1, password_column, 'new_password')
     rsp = self.import_book(book)
     self.assertEqual(BAD_REQUEST, rsp.status_code, msg=rsp.content.decode('utf-8'))
     user = authenticate(email=provider.user.email,
                         password='******')
     self.assertIsNone(user)
Beispiel #16
0
 def test_staff_add_provider(self):
     type = ProviderTypeFactory()
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory.build(type=type,
                                      user=self.user)  # Doesn't save
     self.assertFalse(provider.id)
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertTrue(
         Provider.objects.filter(name_en=provider.name_en).exists())
Beispiel #17
0
 def test_provider_bad_criteria(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory(service=service)
     criterion2 = SelectionCriterionFactory(service=service)
     # Change the 2nd one's text before exporting
     criterion2.text_en = criterion2.text_ar = criterion2.text_fr = ''
     book = get_export_workbook([provider], None, [criterion1, criterion2])
     rsp = self.import_book(book)
     self.assertContains(rsp, "Selection criterion must have text in at least one language",
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #18
0
 def test_provider_delete_another_provider(self):
     # A provider cannot delete others
     provider = ProviderFactory()
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     blank_out_row_for_testing(book, sheet_num=0, row_num=1)
     rsp = self.import_book(book)
     self.assertContains(
         rsp,
         "provider: %d is not a provider this user may delete" %
         provider.id,
         status_code=BAD_REQUEST,
         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #19
0
 def test_provider_bad_criterion_id(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider,
                              status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory.build(service=service)
     criterion1.id = 'abc'
     book = get_export_workbook([provider], None, [criterion1])
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "Row 2: id: %s is not a valid ID" % criterion1.id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #20
0
 def test_provider_add_criterion_bad_service(self):
     provider = ProviderFactory(user=self.user)
     criterion1 = SelectionCriterionFactory.build()
     service = criterion1.service
     book = get_export_workbook([provider], None, [criterion1])
     rsp = self.import_book(book)
     self.assertContains(
         rsp,
         "Row 2: service__id: Selection criterion refers to service with ID "
         "or name '%s' that is not in the 2nd sheet" % service.name_en,
         status_code=BAD_REQUEST,
         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #21
0
 def test_staff_change_provider_password(self):
     # Staff can change anyone's password
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     password_column = PROVIDER_HEADINGS.index('password')
     set_cell_value(book, 0, 1, password_column, 'new_password')
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     user = authenticate(email=provider.user.email,
                         password='******')
     self.assertEqual(user, provider.user)
Beispiel #22
0
 def test_staff_add_services(self):
     # Staff can add services to any provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory.build(provider=provider, type=type, area_of_service=area)
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_service = Service.objects.get(name_en=service.name_en)
     self.assertEqual(new_service.name_en, service.name_en)
Beispiel #23
0
 def test_provider_change_nonexistent_service(self):
     provider = ProviderFactory(user=self.user)
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider, type=type, area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     service_id = service.id
     service.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp, "%d is not a service this user may import" % service_id,
                         status_code=BAD_REQUEST)
Beispiel #24
0
 def test_provider_add_anothers_service(self):
     # A provider can't add a service to another provider
     provider = ProviderFactory()
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory.build(provider=provider, type=type, area_of_service=area)
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(BAD_REQUEST, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertContains(rsp, "%d is not a provider this user may import" % provider.id,
                         status_code=BAD_REQUEST)
     self.assertContains(rsp, "Non-staff users may not create services for other providers",
                         status_code=BAD_REQUEST)
Beispiel #25
0
 def test_staff_add_bad_provider(self):
     type = ProviderTypeFactory()
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory.build(type=type, user=self.user,
                                      number_of_monthly_beneficiaries=-1)  # Doesn't save
     self.assertFalse(provider.id)
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "Row 2: number_of_monthly_beneficiaries: Ensure this value is "
                         "greater than or equal to 0.",
                         status_code=BAD_REQUEST)
Beispiel #26
0
 def test_provider_change_service(self):
     # A provider can change their existing service
     provider = ProviderFactory(user=self.user)
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider, type=type, area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_service = Service.objects.get(id=service.id)
     self.assertEqual(service.name_en, new_service.name_en)
     self.assertEqual(service.name_fr, new_service.name_fr)
Beispiel #27
0
 def test_provider_change_own_data(self):
     # Non-staff can change their own provider
     provider = ProviderFactory(user=self.user)
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_provider = Provider.objects.get(id=provider.id)
     self.assertEqual(provider.name_en, new_provider.name_en)
     self.assertEqual(provider.name_ar, new_provider.name_ar)
     self.assertEqual(provider.name_fr, new_provider.name_fr)
Beispiel #28
0
 def test_staff_add_providers(self):
     # Remember, only one provider per user
     self.user.is_staff = True
     self.user.save()
     type1 = ProviderTypeFactory()
     provider1 = ProviderFactory.build(type=type1, user=self.user)  # Doesn't save
     user2 = EmailUserFactory()
     type2 = ProviderTypeFactory()
     provider2 = ProviderFactory.build(type=type2, user=user2)  # Doesn't save
     book = get_export_workbook([provider1, provider2])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertTrue(Provider.objects.filter(name_en=provider1.name_en).exists())
     self.assertTrue(Provider.objects.filter(name_en=provider2.name_en).exists())
 def test_provider_change_own_data(self):
     # Non-staff can change their own provider
     provider = ProviderFactory(user=self.user)
     name_fields = generate_translated_fields('name', False)
     # Tweak some data
     for field in name_fields:
         setattr(provider, field, random_string(10))
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_provider = Provider.objects.get(id=provider.id)
     for field in name_fields:
         self.assertEqual(getattr(provider, field),
                          getattr(new_provider, field))
Beispiel #30
0
 def test_provider_change_own_data(self):
     # Non-staff can change their own provider
     provider = ProviderFactory(user=self.user)
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_provider = Provider.objects.get(id=provider.id)
     self.assertEqual(provider.name_en, new_provider.name_en)
     self.assertEqual(provider.name_ar, new_provider.name_ar)
     self.assertEqual(provider.name_fr, new_provider.name_fr)
Beispiel #31
0
 def test_provider_change_nonexistent_criterion(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider,
                              status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory(service=service)
     book = get_export_workbook([provider], None, [criterion1])
     crit_id = criterion1.id
     criterion1.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "Row 2: id: No selection criterion with id = %s" %
                         crit_id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #32
0
 def test_provider_add_bad_service(self):
     provider = ProviderFactory(user=self.user)
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory.build(provider=provider, type=type, area_of_service=area,
                                    name_en=VERY_LONG_STRING,
                                    tuesday_open=time(6, 59),
                                    tuesday_close=time(21, 2))
     self.assertIsNotNone(service.location)
     criterion = SelectionCriterionFactory.build(
         service=service
     )
     book = get_export_workbook([provider], [service], [criterion])
     rsp = self.import_book(book)
     self.assertEqual(BAD_REQUEST, rsp.status_code, msg=rsp.content.decode('utf-8'))
Beispiel #33
0
 def test_staff_add_bad_provider(self):
     type = ProviderTypeFactory()
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory.build(
         type=type, user=self.user,
         number_of_monthly_beneficiaries=-1)  # Doesn't save
     self.assertFalse(provider.id)
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertContains(
         rsp,
         "Row 2: number_of_monthly_beneficiaries: Ensure this value is "
         "greater than or equal to 0.",
         status_code=BAD_REQUEST)
Beispiel #34
0
 def test_provider_bad_criteria(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider,
                              status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory(service=service)
     criterion2 = SelectionCriterionFactory(service=service)
     # Change the 2nd one's text before exporting
     criterion2.text_en = criterion2.text_ar = criterion2.text_fr = ''
     book = get_export_workbook([provider], None, [criterion1, criterion2])
     rsp = self.import_book(book)
     self.assertContains(
         rsp,
         "Selection criterion must have text in at least one language",
         status_code=BAD_REQUEST,
         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #35
0
 def test_staff_add_services(self):
     # Staff can add services to any provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory.build(provider=provider,
                                    type=type,
                                    area_of_service=area)
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_service = Service.objects.get(name_en=service.name_en)
     self.assertEqual(new_service.name_en, service.name_en)
Beispiel #36
0
 def test_staff_change_provider_invalid_id(self):
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     sheet = book.get_sheet(0)
     sheet.write(r=1, c=0, label='xyz')
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "id: xyz is not a valid ID",
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #37
0
 def test_staff_change_provider(self):
     # Staff can change another user's provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_provider = Provider.objects.get(id=provider.id)
     self.assertEqual(provider.name_en, new_provider.name_en)
     self.assertEqual(provider.name_ar, new_provider.name_ar)
     self.assertEqual(provider.name_fr, new_provider.name_fr)
Beispiel #38
0
 def test_provider_change_anothers_service(self):
     # A provider cannot change another provider's existing service
     provider = ProviderFactory()
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider, type=type, area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     # self.fail(rsp.content.decode('utf-8'))
     self.assertEqual(BAD_REQUEST, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertContains(rsp, "%d is not a provider this user may import" % provider.id,
                         status_code=BAD_REQUEST)
     self.assertContains(rsp, "%d is not a service this user may import" % service.id,
                         status_code=BAD_REQUEST)
Beispiel #39
0
 def test_staff_change_services(self):
     # Staff can change anyone's service
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider, type=type, area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_service = Service.objects.get(id=service.id)
     self.assertEqual(service.name_en, new_service.name_en)
     self.assertEqual(service.name_fr, new_service.name_fr)
Beispiel #40
0
    def test_provider_delete_service(self):
        # A provider can delete their existing service
        # by blanking out all the fields except id
        provider = ProviderFactory(user=self.user)
        type = ServiceTypeFactory()
        area = ServiceAreaFactory()
        service = ServiceFactory(provider=provider, type=type, area_of_service=area)
        self.assertTrue(Service.objects.filter(id=service.id).exists())
        book = get_export_workbook([provider], [service], cell_overwrite_ok=True)

        # Now blank out everything about the service except its 'id'
        blank_out_row_for_testing(book, sheet_num=1, row_num=1)

        rsp = self.import_book(book)
        self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
        self.assertFalse(Service.objects.filter(id=service.id).exists())
Beispiel #41
0
    def test_provider_delete_anothers_service(self):
        # A provider cannot delete someone else's service
        provider = ProviderFactory(user=self.user)
        type = ServiceTypeFactory()
        area = ServiceAreaFactory()
        service = ServiceFactory(type=type, area_of_service=area)
        self.assertTrue(Service.objects.filter(id=service.id).exists())
        book = get_export_workbook([provider], [service], cell_overwrite_ok=True)

        # Now blank out everything about the service except its 'id'
        blank_out_row_for_testing(book, sheet_num=1, row_num=1)

        rsp = self.import_book(book)
        self.assertContains(rsp, "%d is not a service this user may delete" % service.id,
                            status_code=BAD_REQUEST,
                            msg_prefix=rsp.content.decode('utf-8'))
Beispiel #42
0
 def test_provider_change_service(self):
     # A provider can change their existing service
     provider = ProviderFactory(user=self.user)
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider,
                              type=type,
                              area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_service = Service.objects.get(id=service.id)
     self.assertEqual(service.name_en, new_service.name_en)
     self.assertEqual(service.name_fr, new_service.name_fr)
 def test_staff_change_provider(self):
     # Staff can change another user's provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     name_fields = generate_translated_fields('name', False)
     # Tweak some data
     for field in name_fields:
         setattr(provider, field, random_string(10))
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_provider = Provider.objects.get(id=provider.id)
     for field in name_fields:
         self.assertEqual(getattr(provider, field),
                          getattr(new_provider, field))
Beispiel #44
0
 def test_staff_change_provider(self):
     # Staff can change another user's provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_provider = Provider.objects.get(id=provider.id)
     self.assertEqual(provider.name_en, new_provider.name_en)
     self.assertEqual(provider.name_ar, new_provider.name_ar)
     self.assertEqual(provider.name_fr, new_provider.name_fr)
 def test_staff_change_provider_invalid_id(self):
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     name_fields = generate_translated_fields('name', False)
     # Tweak some data
     for field in name_fields:
         setattr(provider, field, random_string(10))
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     sheet = book.get_sheet(0)
     sheet.write(r=1, c=0, label='xyz')
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "id: xyz is not a valid ID",
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
 def test_provider_bad_criteria(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider,
                              status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory(service=service)
     criterion2 = SelectionCriterionFactory(service=service)
     # Change the 2nd one's text before exporting
     for field in generate_translated_fields('text', False):
         setattr(criterion2, field, '')
     book = get_export_workbook([provider], None, [criterion1, criterion2])
     rsp = self.import_book(book)
     self.assertContains(
         rsp,
         "Selection criterion must have text in at least one language",
         status_code=BAD_REQUEST,
         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #47
0
 def test_staff_change_provider_invalid_id(self):
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider], cell_overwrite_ok=True)
     sheet = book.get_sheet(0)
     sheet.write(r=1, c=0, label='xyz')
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "id: xyz is not a valid ID",
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
 def test_staff_change_nonexistent_provider(self):
     # Staff can change another user's provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     name_fields = generate_translated_fields('name', False)
     # Tweak some data
     for field in name_fields:
         setattr(provider, field, random_string(10))
     book = get_export_workbook([provider])
     provider_id = provider.id
     provider.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "There is no provider with id=%d" % provider_id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #49
0
 def test_staff_change_nonexistent_provider(self):
     # Staff can change another user's provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider])
     provider_id = provider.id
     provider.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "There is no provider with id=%d" % provider_id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #50
0
 def test_staff_change_nonexistent_provider(self):
     # Staff can change another user's provider
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     # Tweak some data
     provider.name_en = 'Jim-Bob'
     provider.name_ar = 'Ahmed-Bob'
     provider.name_fr = 'Pierre-Bob'
     book = get_export_workbook([provider])
     provider_id = provider.id
     provider.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "There is no provider with id=%d" % provider_id,
                         status_code=BAD_REQUEST,
                         msg_prefix=rsp.content.decode('utf-8'))
Beispiel #51
0
 def test_provider_change_nonexistent_service(self):
     provider = ProviderFactory(user=self.user)
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider,
                              type=type,
                              area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     service_id = service.id
     service.delete()
     rsp = self.import_book(book)
     self.assertContains(rsp,
                         "%d is not a service this user may import" %
                         service_id,
                         status_code=BAD_REQUEST)
Beispiel #52
0
 def test_provider_add_bad_service(self):
     provider = ProviderFactory(user=self.user)
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory.build(provider=provider,
                                    type=type,
                                    area_of_service=area,
                                    name_en=VERY_LONG_STRING,
                                    tuesday_open=time(6, 59),
                                    tuesday_close=time(21, 2))
     self.assertIsNotNone(service.location)
     criterion = SelectionCriterionFactory.build(service=service)
     book = get_export_workbook([provider], [service], [criterion])
     rsp = self.import_book(book)
     self.assertEqual(BAD_REQUEST,
                      rsp.status_code,
                      msg=rsp.content.decode('utf-8'))
Beispiel #53
0
    def test_staff_delete_service(self):
        # A staffer can delete someone else's service
        self.user.is_staff = True
        self.user.save()
        provider = ProviderFactory(user=self.user)
        type = ServiceTypeFactory()
        area = ServiceAreaFactory()
        service = ServiceFactory(type=type, area_of_service=area)
        self.assertTrue(Service.objects.filter(id=service.id).exists())
        book = get_export_workbook([provider], [service],
                                   cell_overwrite_ok=True)

        # Now blank out everything about the service except its 'id'
        blank_out_row_for_testing(book, sheet_num=1, row_num=1)

        rsp = self.import_book(book)
        self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
        self.assertFalse(Service.objects.filter(id=service.id).exists())
Beispiel #54
0
 def test_staff_add_providers(self):
     # Remember, only one provider per user
     self.user.is_staff = True
     self.user.save()
     type1 = ProviderTypeFactory()
     provider1 = ProviderFactory.build(type=type1,
                                       user=self.user)  # Doesn't save
     user2 = EmailUserFactory()
     type2 = ProviderTypeFactory()
     provider2 = ProviderFactory.build(type=type2,
                                       user=user2)  # Doesn't save
     book = get_export_workbook([provider1, provider2])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     self.assertTrue(
         Provider.objects.filter(name_en=provider1.name_en).exists())
     self.assertTrue(
         Provider.objects.filter(name_en=provider2.name_en).exists())
Beispiel #55
0
 def test_staff_change_services(self):
     # Staff can change anyone's service
     self.user.is_staff = True
     self.user.save()
     provider = ProviderFactory()
     type = ServiceTypeFactory()
     area = ServiceAreaFactory()
     service = ServiceFactory(provider=provider,
                              type=type,
                              area_of_service=area)
     service.name_en = 'Radiator Repair'
     service.name_fr = 'Le Marseilles'
     book = get_export_workbook([provider], [service])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     new_service = Service.objects.get(id=service.id)
     self.assertEqual(service.name_en, new_service.name_en)
     self.assertEqual(service.name_fr, new_service.name_fr)
    def test_empty_export(self):
        book = save_and_read_book(get_export_workbook([]))

        self.assertEqual(3, book.nsheets)

        sheet = book.get_sheet(0)
        self.assertEqual(PROVIDER_SHEET_NAME, sheet.name)
        self.assertEqual(1, sheet.nrows)
        self.assertEqual(len(PROVIDER_HEADINGS), sheet.ncols)

        sheet = book.get_sheet(1)
        self.assertEqual(SERVICES_SHEET_NAME, sheet.name)
        self.assertEqual(1, sheet.nrows)
        self.assertEqual(len(SERVICE_HEADINGS), sheet.ncols)

        sheet = book.get_sheet(2)
        self.assertEqual(SELECTION_CRITERIA_SHEET_NAME, sheet.name)
        self.assertEqual(1, sheet.nrows)
        self.assertEqual(len(SELECTION_CRITERIA_HEADINGS), sheet.ncols)
Beispiel #57
0
    def test_provider_delete_anothers_service(self):
        # A provider cannot delete someone else's service
        provider = ProviderFactory(user=self.user)
        type = ServiceTypeFactory()
        area = ServiceAreaFactory()
        service = ServiceFactory(type=type, area_of_service=area)
        self.assertTrue(Service.objects.filter(id=service.id).exists())
        book = get_export_workbook([provider], [service],
                                   cell_overwrite_ok=True)

        # Now blank out everything about the service except its 'id'
        blank_out_row_for_testing(book, sheet_num=1, row_num=1)

        rsp = self.import_book(book)
        self.assertContains(rsp,
                            "%d is not a service this user may delete" %
                            service.id,
                            status_code=BAD_REQUEST,
                            msg_prefix=rsp.content.decode('utf-8'))
Beispiel #58
0
 def test_provider_add_criteria(self):
     provider = ProviderFactory(user=self.user)
     service = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
     criterion1 = SelectionCriterionFactory(service=service)
     criterion2 = SelectionCriterionFactory.build(service=service, text_en="New Criterion!")
     book = get_export_workbook([provider], None, [criterion1, criterion2])
     rsp = self.import_book(book)
     self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8'))
     # Existing one still there
     self.assertTrue(SelectionCriterion.objects.filter(
         service=service,
         text_en=criterion1.text_en,
         id=criterion1.id
     ).exists())
     # New one added
     self.assertTrue(SelectionCriterion.objects.filter(
         service=service,
         text_en=criterion2.text_en
     ).exists())
Beispiel #59
0
    def test_staff_delete_nonexistent_service(self):
        self.user.is_staff = True
        self.user.save()
        provider = ProviderFactory(user=self.user)
        type = ServiceTypeFactory()
        area = ServiceAreaFactory()
        service = ServiceFactory(type=type, area_of_service=area)
        self.assertTrue(Service.objects.filter(id=service.id).exists())
        book = get_export_workbook([provider], [service], cell_overwrite_ok=True)
        service_id = service.id
        service.delete()

        # Now blank out everything about the service except its 'id'
        blank_out_row_for_testing(book, sheet_num=1, row_num=1)

        rsp = self.import_book(book)
        self.assertContains(rsp,
                            "No service with id=%d" % service_id,
                            status_code=BAD_REQUEST,
                            msg_prefix=rsp.content.decode('utf-8'))