예제 #1
0
 def test_is_not_top_priority_barrier(self):
     tag_title = "Very Important Thing"
     tag = BarrierTagFactory(title=tag_title, is_top_priority_tag=False)
     barrier = BarrierFactory(tags=(tag, ),
                              status_date=datetime.date.today())
     serialised_data = BarrierCsvExportSerializer(barrier).data
     assert ("is_top_priority" in serialised_data.keys()
             and serialised_data["is_top_priority"] is False)
예제 #2
0
 def test_delivery_confidence_in_response(self):
     user = create_test_user(sso_user_id=self.sso_creator["user_id"])
     barrier: Barrier = BarrierFactory()
     barrier_progress_update_on_track = BarrierProgressUpdate.objects.create(
         barrier=barrier,
         status=PROGRESS_UPDATE_CHOICES.ON_TRACK,
         created_by=user)
     barrier.progress_updates.add(barrier_progress_update_on_track)
     serialised_data = BarrierCsvExportSerializer(barrier).data
     assert "delivery_confidence" in serialised_data.keys()
예제 #3
0
    def test_valuation_assessment_midpoint(self):
        impact_level = 6
        barrier = BarrierFactory()
        EconomicImpactAssessmentFactory(barrier=barrier, impact=impact_level)
        serialised_data = BarrierCsvExportSerializer(barrier).data

        expected_midpoint_value = ECONOMIC_ASSESSMENT_IMPACT_MIDPOINTS[
            impact_level]
        assert ("valuation_assessment_midpoint" in serialised_data.keys()
                and serialised_data["valuation_assessment_midpoint"]
                == expected_midpoint_value)
예제 #4
0
def generate_s3_and_send_email(
    barrier_ids: List[int],
    s3_filename: str,
    email: str,
    first_name: str,
    field_titles: Dict[str, str],
) -> None:
    queryset = Barrier.objects.filter(id__in=barrier_ids)
    serializer = BarrierCsvExportSerializer(queryset, many=True)

    # save the download event in the database
    BarrierSearchCSVDownloadEvent.objects.create(
        email=email,
        barrier_ids=",".join(barrier_ids),
    )

    presigned_url = generate_and_upload_to_s3(s3_filename, field_titles,
                                              serializer)
    client = NotificationsAPIClient(settings.NOTIFY_API_KEY)
    client.send_email_notification(
        email_address=email,
        template_id=settings.NOTIFY_GENERATED_FILE_ID,
        personalisation={
            "first_name": first_name.capitalize(),
            "file_name": s3_filename,
            "file_url": presigned_url,
        },
    )
예제 #5
0
    def test_link(self):
        """ Use barrier code for the link in the CSV """
        barrier = BarrierFactory()
        expected_link = f"{settings.DMAS_BASE_URL}/barriers/{barrier.code}"

        serializer = BarrierCsvExportSerializer(barrier)
        assert expected_link == serializer.data["link"]
예제 #6
0
    def test_summary_is_official_sensitive(self):
        """ If the summary is marked sensitive mask it in the CSV """
        barrier = BarrierFactory(is_summary_sensitive=True)
        expected_summary = "OFFICIAL-SENSITIVE (see it on DMAS)"

        serializer = BarrierCsvExportSerializer(barrier)
        assert expected_summary == serializer.data["summary"]
예제 #7
0
    def test_status_date_is_null(self):
        expected_status_date = None
        barrier = BarrierFactory()
        barrier.status_date = None
        barrier.save()

        serializer = BarrierCsvExportSerializer(barrier)
        assert expected_status_date == serializer.data["status_date"]
예제 #8
0
    def test_ecomomic_assessment_is_none(self):
        """ Default to None if there's no Assessment for the Barrier """
        expected_explanation = None
        barrier = BarrierFactory()

        serializer = BarrierCsvExportSerializer(barrier)
        assert expected_explanation == serializer.data[
            "economic_assessment_explanation"]
예제 #9
0
    def test_resolved_date(self):
        expected_resolved_date = "02/2022"
        barrier = BarrierFactory()
        barrier.status_date = datetime.datetime(2022, 2, 17)
        barrier.status = 4
        barrier.save()

        serializer = BarrierCsvExportSerializer(barrier)
        assert expected_resolved_date == serializer.data["resolved_date"]
예제 #10
0
    def test_economic_assessment(self):
        """ Include Assessment Explanation in the CSV """
        expected_explanation = "Wibble wobble!"
        barrier = BarrierFactory()
        EconomicAssessmentFactory(barrier=barrier,
                                  approved=True,
                                  explanation=expected_explanation)

        serializer = BarrierCsvExportSerializer(barrier)
        assert expected_explanation == serializer.data[
            "economic_assessment_explanation"]
예제 #11
0
    def test_government_organisations(self):
        org1 = Organisation.objects.get(id=1)
        org2 = OrganisationFactory(organisation_type=0)
        barrier = BarrierFactory()
        barrier.organisations.add(org1, org2)

        assert 2 == barrier.organisations.count()
        assert 1 == barrier.government_organisations.count()

        serializer = BarrierCsvExportSerializer(barrier)
        assert 1 == len(serializer.data["government_organisations"])
        assert [org1.name] == serializer.data["government_organisations"]
예제 #12
0
 def get_content_written_to_csv(self, queryset):
     field_titles = BarrierListS3EmailFile.field_titles
     serializer = BarrierCsvExportSerializer(queryset, many=True)
     mocked_open = mock_open()
     with patch("api.barriers.tasks.NamedTemporaryFile", mocked_open):
         with create_named_temporary_file() as temporary_file:
             write_to_temporary_file(temporary_file, field_titles,
                                     serializer)
     mock_handle = mocked_open()
     written = "".join(
         [str(call.args[0]) for call in mock_handle.write.mock_calls])
     return written
예제 #13
0
 def test_eu_overseas_region(self):
     barrier = BarrierFactory(trading_bloc="TB00016", country=None)
     serializer = BarrierCsvExportSerializer(barrier)
     assert ["Europe"] == serializer.data["overseas_region"]
예제 #14
0
    def test_summary_is_not_official_sensitive(self):
        barrier = BarrierFactory(is_summary_sensitive=False)

        serializer = BarrierCsvExportSerializer(barrier)
        assert barrier.summary == serializer.data["summary"]
예제 #15
0
 def test_value_for_is_top_priority_is_bool(self):
     barrier = BarrierFactory()
     serialised_data = BarrierCsvExportSerializer(barrier).data
     assert "is_top_priority" in serialised_data.keys() and isinstance(
         serialised_data["is_top_priority"], bool)
예제 #16
0
 def test_has_value_for_is_top_priority(self):
     barrier = BarrierFactory()
     serialised_data = BarrierCsvExportSerializer(barrier).data
     assert "is_top_priority" in serialised_data.keys()