def setUpTestData(cls):
     factory = DataFactory()
     cls.months = factory.create_months_array(start_date="2018-02-01",
                                              num_months=6)
     # Our NCSO and tariff data extends further than our prescribing data by
     # a couple of months
     cls.prescribing_months = cls.months[:-2]
     # Create some CCGs (we need more than one so we can test aggregation
     # across CCGs at the All England level)
     cls.ccgs = [factory.create_ccg() for _ in range(2)]
     # Populate those CCGs with practices
     cls.practices = []
     for ccg in cls.ccgs:
         for _ in range(2):
             cls.practices.append(factory.create_practice(ccg=ccg))
     # Create some presentations
     cls.presentations = factory.create_presentations(6)
     # Create drug tariff and price concessions costs for these presentations
     factory.create_tariff_and_ncso_costings_for_presentations(
         cls.presentations, months=cls.months)
     # Create prescribing for each of the practices we've created
     for practice in cls.practices:
         factory.create_prescribing_for_practice(
             practice,
             presentations=cls.presentations,
             months=cls.prescribing_months)
     # Pull out an individual practice and CCG to use in our tests
     cls.practice = cls.practices[0]
     cls.ccg = cls.ccgs[0]
    def test_all_england_alerts_sent(self):
        factory = DataFactory()

        # Create an All England bookmark, send alerts, and make sure one email
        # is sent to correct user
        bookmark = factory.create_org_bookmark(None)
        call_command(CMD_NAME)
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, [bookmark.user.email])
    def test_alert_signup_form(self):
        factory = DataFactory()
        user = factory.create_user()
        url = '/practice/{}/concessions/'.format(self.practice.code)

        # Check form is displayed when user not loged in.
        response = self.client.get(url)
        self.assertContains(response, 'Get email updates')

        # Now log user in.
        self.client.force_login(user)

        # Check form is displayed when user has no bookmarks.
        response = self.client.get(url)
        self.assertContains(response, 'Get email updates')

        # Create bookmarks for CCG and All England, and check that form is
        # still displayed.
        factory.create_ncso_concessions_bookmark(self.ccg, user)
        factory.create_ncso_concessions_bookmark(None, user)
        response = self.client.get(url)
        self.assertContains(response, 'Get email updates')

        # Create bookmark for practice, and check that form is not displayed.
        factory.create_ncso_concessions_bookmark(self.practice, user)
        response = self.client.get(url)
        self.assertNotContains(response, 'Get email updates')
        self.assertContains(response, 'already signed up')
Пример #4
0
    def test_all_england_alert_signup_form(self):
        factory = DataFactory()
        user = factory.create_user()
        url = "/all-england/concessions/".format(self.practice.code)

        # Check form is displayed when user not loged in.
        response = self.client.get(url)
        self.assertContains(response, "Get email updates")

        # Now log user in.
        self.client.force_login(user)

        # Check form is displayed when user has no bookmarks.
        response = self.client.get(url)
        self.assertContains(response, "Get email updates")

        # Create bookmarks for practice and CCG, and check that form is still
        # displayed.
        factory.create_ncso_concessions_bookmark(self.practice, user)
        factory.create_ncso_concessions_bookmark(self.ccg, user)
        response = self.client.get(url)
        self.assertContains(response, "Get email updates")

        # Create bookmark for All England, and check that form is not displayed.
        factory.create_ncso_concessions_bookmark(None, user)
        response = self.client.get(url)
        self.assertNotContains(response, "Get email updates")
        self.assertContains(response, "already signed up")
Пример #5
0
    def test_pcn_alerts_sent(self):
        """Create a PCN bookmark, send alerts, and make sure an email is sent
        to correct user, and that its contents mention PCNs

        """
        factory = DataFactory()
        pcn = PCN.objects.get(pk="E00000011")
        bookmark = factory.create_org_bookmark(pcn)
        call_command(CMD_NAME)
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, [bookmark.user.email])
        self.assertIn("PCN", mail.outbox[0].body)
Пример #6
0
    def setUpTestData(self):
        self.api_prefix = "/api/1.0"
        factory = DataFactory()
        self.months = factory.create_months_array(start_date="2018-02-01")
        self.ccgs = [factory.create_ccg() for _ in range(2)]
        self.practices = []
        for ccg in self.ccgs:
            for _ in range(2):
                self.practices.append(factory.create_practice(ccg=ccg, setting=4))
        self.presentations = factory.create_presentations(2, vmpp_per_presentation=2)
        factory.create_tariff_and_ncso_costings_for_presentations(
            presentations=self.presentations, months=self.months
        )

        # Create prescribing for each of the practices we've created
        for practice in self.practices:
            factory.create_prescribing_for_practice(
                practice, presentations=self.presentations, months=self.months
            )
Пример #7
0
    def test_vmp(self):
        rsp = self.client.get("/dmd/vmp/318412000/")
        self.assertContains(rsp,
                            "<td>Name</td><td>Acebutolol 100mg capsules</td>",
                            html=True)
        self.assertNotContains(rsp, "Analyse prescribing")
        self.assertNotContains(rsp, "See prices paid")

        factory = DataFactory()
        practice = factory.create_practice()
        presentation = Presentation.objects.create(bnf_code="0204000C0AAAAAA",
                                                   name="Acebut HCl_Cap 100mg")
        factory.create_prescribing_for_practice(practice, [presentation])
        stop_patching = patch_global_matrixstore(matrixstore_from_postgres())
        try:
            rsp = self.client.get("/dmd/vmp/318412000/")
            self.assertContains(rsp, "Analyse prescribing")
            self.assertContains(rsp, "See prices paid")
        finally:
            stop_patching()
    def test_all_england_alert_signup(self):
        factory = DataFactory()
        user = factory.create_user(email='*****@*****.**')
        factory.create_ncso_concessions_bookmark(self.practice)

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 1)

        url = '/all-england/concessions/'
        data = {
            'email': '*****@*****.**',
            'newsletters': ['alerts'],
        }
        response = self.client.post(url, data, follow=True)
        self.assertContains(
            response, "Check your email and click the confirmation link")

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 2)
        bookmark = NCSOConcessionBookmark.objects.order_by('id').last()
        self.assertEqual(bookmark.practice, None)
        self.assertEqual(bookmark.pct, None)
        self.assertEqual(bookmark.user.email, '*****@*****.**')
        self.assertEqual(bookmark.approved, True)
Пример #9
0
    def test_send_alerts(self):
        factory = DataFactory()

        # Create a bookmark, send alerts, and make sure one email is sent to
        # correct user
        bookmark = factory.create_org_bookmark(None)
        call_command('send_all_england_alerts')
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, [bookmark.user.email])

        # Create another bookmark, send alerts again and make sure email is
        # only sent to new user
        mail.outbox = []
        bookmark2 = factory.create_org_bookmark(None)
        call_command('send_all_england_alerts')
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, [bookmark2.user.email])

        # Try sending alerts again and make sure no emails are sent
        mail.outbox = []
        call_command('send_all_england_alerts')
        self.assertEqual(len(mail.outbox), 0)
    def test_counts(self):
        factory = DataFactory()
        factory.create_measure(tags=['tag1'])
        factory.create_measure(tags=['tag1', 'tag2'])

        tags = _lazy_load_measure_tags(self.path)
        self.assertEqual(tags['tag1']['count'], 2)
        self.assertEqual(tags['tag2']['count'], 1)
Пример #11
0
    def test_counts(self):
        factory = DataFactory()
        factory.create_measure(tags=["tag1"])
        factory.create_measure(tags=["tag1", "tag2"])

        tags = _lazy_load_measure_tags(self.path)
        self.assertEqual(tags["tag1"]["count"], 2)
        self.assertEqual(tags["tag2"]["count"], 1)
    def setUp(self):
        self.api_prefix = "/api/1.0"
        factory = DataFactory()
        self.months = factory.create_months_array(start_date="2018-02-01")
        self.ccgs = [factory.create_ccg() for _ in range(2)]
        self.practices = []
        for ccg in self.ccgs:
            for _ in range(2):
                self.practices.append(factory.create_practice(ccg=ccg))
        self.presentations = factory.create_presentations(
            2, vmpp_per_presentation=2)
        factory.create_tariff_and_ncso_costings_for_presentations(
            presentations=self.presentations, months=self.months)

        # Create prescribing for each of the practices we've created
        for practice in self.practices:
            factory.create_prescribing_for_practice(
                practice, presentations=self.presentations, months=self.months)

        # Refresh vw__medians_for_tariff materialized view
        with connection.cursor() as cursor:
            cursor.execute("REFRESH MATERIALIZED VIEW vw__medians_for_tariff")
        super(TestAPISpendingViewsGhostGenerics, self).setUp()
    def test_alert_signup(self):
        factory = DataFactory()
        factory.create_user(email="*****@*****.**")
        factory.create_ncso_concessions_bookmark(None)

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 1)

        url = "/practice/{}/concessions/".format(self.practice.code)
        data = {"email": "*****@*****.**", "practice": self.practice.code}
        response = self.client.post(url, data, follow=True)
        self.assertContains(response,
                            "alerts about NCSO concessions for Practice 5")

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 2)
        bookmark = NCSOConcessionBookmark.objects.last()
        self.assertEqual(bookmark.practice, self.practice)
        self.assertEqual(bookmark.user.email, "*****@*****.**")
    def test_all_england_alert_signup(self):
        factory = DataFactory()
        factory.create_user(email="*****@*****.**")
        factory.create_ncso_concessions_bookmark(self.practice)

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 1)

        url = "/all-england/concessions/"
        data = {"email": "*****@*****.**"}
        response = self.client.post(url, data, follow=True)
        self.assertContains(
            response, "alerts about NCSO concessions for the NHS in England")

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 2)
        bookmark = NCSOConcessionBookmark.objects.order_by("id").last()
        self.assertEqual(bookmark.practice, None)
        self.assertEqual(bookmark.pct, None)
        self.assertEqual(bookmark.user.email, "*****@*****.**")
    def test_send_alerts(self, attach_image):
        factory = DataFactory()

        # Create a bookmark, send alerts, and make sure one email is sent.
        factory.create_ncso_concessions_bookmark(self.ccg)
        call_command("send_ncso_concessions_alerts", "2019-02-14")
        self.assertEqual(len(mail.outbox), 1)

        # Create another bookmark, send alerts for same date as above, and make
        # sure only one email is sent.
        mail.outbox = []
        factory.create_ncso_concessions_bookmark(self.practice)
        call_command("send_ncso_concessions_alerts", "2019-02-14")
        self.assertEqual(len(mail.outbox), 1)

        # Send alerts for new date, and make sure two emails are sent.
        mail.outbox = []
        call_command("send_ncso_concessions_alerts", "2019-02-15")
        self.assertEqual(len(mail.outbox), 2)
Пример #16
0
    def test_all_england_alert_signup(self):
        factory = DataFactory()
        factory.create_user(email="*****@*****.**")
        factory.create_ncso_concessions_bookmark(self.practice)

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 1)

        url = "/all-england/concessions/"
        data = {"email": "*****@*****.**", "newsletters": ["alerts"]}
        response = self.client.post(url, data, follow=True)
        self.assertContains(
            response, "Check your email and click the confirmation link")

        self.assertEqual(NCSOConcessionBookmark.objects.count(), 2)
        bookmark = NCSOConcessionBookmark.objects.order_by("id").last()
        self.assertEqual(bookmark.practice, None)
        self.assertEqual(bookmark.pct, None)
        self.assertEqual(bookmark.user.email, "*****@*****.**")
        self.assertEqual(bookmark.approved, True)
 def setUpClass(cls):
     super(TestSpendingViews, cls).setUpClass()
     factory = DataFactory()
     cls.months = factory.create_months_array(start_date="2018-02-01",
                                              num_months=6)
     # Our NCSO and tariff data extends further than our prescribing data by
     # a couple of months
     cls.prescribing_months = cls.months[:-2]
     # Create some high level orgs
     cls.regional_team = factory.create_regional_team()
     cls.stp = factory.create_stp()
     # Create some CCGs (we need more than one so we can test aggregation
     # across CCGs at the All England level)
     cls.ccgs = [
         factory.create_ccg(stp=cls.stp, regional_team=cls.regional_team)
         for _ in range(2)
     ]
     # Create a PCN (one will do)
     cls.pcn = factory.create_pcn()
     # Populate those CCGs with practices
     cls.practices = []
     for ccg in cls.ccgs:
         for _ in range(2):
             cls.practices.append(
                 factory.create_practice(ccg=ccg, pcn=cls.pcn))
     # Create some presentations
     cls.presentations = factory.create_presentations(
         6, vmpp_per_presentation=2)
     # Create drug tariff and price concessions costs for these presentations
     factory.create_tariff_and_ncso_costings_for_presentations(
         cls.presentations, months=cls.months)
     # Create prescribing for each of the practices we've created
     for practice in cls.practices:
         factory.create_prescribing_for_practice(
             practice,
             presentations=cls.presentations,
             months=cls.prescribing_months)
     # Pull out an individual practice and CCG to use in our tests
     cls.practice = cls.practices[0]
     cls.ccg = cls.ccgs[0]