|
10 | 10 | from django.core import management |
11 | 11 | from rest_framework import status |
12 | 12 |
|
13 | | -from api.models import Country, DisasterType, District, Region, RegionName |
| 13 | +from api.models import Country, DisasterType, District, Event, Region, RegionName |
14 | 14 | from api.utils import get_model_name |
15 | 15 | from deployments.factories.project import SectorFactory |
16 | 16 | from deployments.factories.user import UserFactory |
|
30 | 30 | ProposedAction, |
31 | 31 | ) |
32 | 32 | from dref.tasks import send_dref_email |
| 33 | +from lang.serializers import TranslatedModelSerializerMixin |
33 | 34 | from main.test_case import APITestCase |
34 | 35 |
|
35 | 36 |
|
@@ -2664,6 +2665,79 @@ def test_dref_final_report_finalize(self, mock_translation): |
2664 | 2665 | self.assert_200(response) |
2665 | 2666 | self.assertEqual(response.data["status"], Dref.Status.FINALIZED) |
2666 | 2667 |
|
| 2668 | + @patch.object( |
| 2669 | + TranslatedModelSerializerMixin, |
| 2670 | + "trigger_field_translation", |
| 2671 | + ) |
| 2672 | + def test_create_event_from_dref(self, mock_trigger_translation): |
| 2673 | + region = Region.objects.create(name=RegionName.ASIA_PACIFIC) |
| 2674 | + country = Country.objects.create(name="Test countrynpl", region=region) |
| 2675 | + district = District.objects.create(name="test district", country=country) |
| 2676 | + disaster_type = DisasterType.objects.create(name="test disaster") |
| 2677 | + dref = DrefFactory.create( |
| 2678 | + title="Test Title", |
| 2679 | + disaster_type=disaster_type, |
| 2680 | + event_description="Test event description", |
| 2681 | + event_date="2021-10-10", |
| 2682 | + glide_code="GLIDE123", |
| 2683 | + created_by=self.user, |
| 2684 | + country=country, |
| 2685 | + status=Dref.Status.FINALIZED, |
| 2686 | + type_of_dref=Dref.DrefType.ASSESSMENT, |
| 2687 | + ) |
| 2688 | + dref.district.set([district]) |
| 2689 | + url = f"/api/v2/dref/{dref.id}/approve/" |
| 2690 | + self.authenticate(self.root_user) |
| 2691 | + response = self.client.post(url) |
| 2692 | + self.assert_200(response) |
| 2693 | + |
| 2694 | + dref.refresh_from_db() |
| 2695 | + |
| 2696 | + dref_event_id = response.data["event"] |
| 2697 | + event_instance = Event.objects.get(id=dref_event_id) |
| 2698 | + |
| 2699 | + # Translation triggered |
| 2700 | + mock_trigger_translation.assert_called_once() |
| 2701 | + |
| 2702 | + translated_event = mock_trigger_translation.call_args.args[0] |
| 2703 | + |
| 2704 | + self.assertEqual( |
| 2705 | + translated_event.pk, |
| 2706 | + event_instance.pk, |
| 2707 | + ) |
| 2708 | + |
| 2709 | + self.assertEqual( |
| 2710 | + { |
| 2711 | + event_instance.name, |
| 2712 | + event_instance.dtype.id, |
| 2713 | + event_instance.summary, |
| 2714 | + event_instance.disaster_start_date.date(), |
| 2715 | + event_instance.glide, |
| 2716 | + event_instance.source, |
| 2717 | + }, |
| 2718 | + { |
| 2719 | + dref.title, |
| 2720 | + dref.disaster_type.id, |
| 2721 | + dref.event_description, |
| 2722 | + dref.event_date, |
| 2723 | + dref.glide_code, |
| 2724 | + Event.EventSource.DREF, |
| 2725 | + }, |
| 2726 | + ) |
| 2727 | + self.assertEqual( |
| 2728 | + list(event_instance.regions.values_list("id", flat=True)), |
| 2729 | + [dref.country.region.id], |
| 2730 | + ) |
| 2731 | + self.assertEqual( |
| 2732 | + list(event_instance.countries.values_list("id", flat=True)), |
| 2733 | + [dref.country.id], |
| 2734 | + ) |
| 2735 | + self.assertEqual( |
| 2736 | + list(event_instance.districts.values_list("id", flat=True)), |
| 2737 | + [district.id], |
| 2738 | + ) |
| 2739 | + self.assertTrue(event_instance.auto_generated) |
| 2740 | + |
2667 | 2741 |
|
2668 | 2742 | User = get_user_model() |
2669 | 2743 |
|
|
0 commit comments