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)
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()
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)
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, }, )
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"]
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"]
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"]
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"]
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"]
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"]
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"]
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
def test_eu_overseas_region(self): barrier = BarrierFactory(trading_bloc="TB00016", country=None) serializer = BarrierCsvExportSerializer(barrier) assert ["Europe"] == serializer.data["overseas_region"]
def test_summary_is_not_official_sensitive(self): barrier = BarrierFactory(is_summary_sensitive=False) serializer = BarrierCsvExportSerializer(barrier) assert barrier.summary == serializer.data["summary"]
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)
def test_has_value_for_is_top_priority(self): barrier = BarrierFactory() serialised_data = BarrierCsvExportSerializer(barrier).data assert "is_top_priority" in serialised_data.keys()