Example #1
0
    def test_create_hr(self):
        """Creating new hr reporting requirements

        When none currently existing
        """
        AppliedIndicatorFactory(is_high_frequency=True,
                                lower_result=self.lower_result)
        requirement_qs = ReportingRequirement.objects.filter(
            intervention=self.intervention,
            report_type=ReportingRequirement.TYPE_HR,
        )
        init_count = requirement_qs.count()
        data = {
            "report_type":
            ReportingRequirement.TYPE_HR,
            "reporting_requirements": [{
                "due_date": datetime.date(2001, 4, 15)
            }, {
                "due_date": datetime.date(2001, 5, 15)
            }]
        }
        serializer = InterventionReportingRequirementCreateSerializer(
            data=data, context=self.context)
        self.assertTrue(serializer.is_valid())
        serializer.create(serializer.validated_data)
        self.assertEqual(requirement_qs.count(), init_count + 2)
Example #2
0
    def test_create_qpr(self):
        """Creating new qpr reporting requirements

        When none currently existing
        """
        requirement_qs = ReportingRequirement.objects.filter(
            intervention=self.intervention,
            report_type=ReportingRequirement.TYPE_QPR,
        )
        init_count = requirement_qs.count()
        data = {
            "report_type":
            ReportingRequirement.TYPE_QPR,
            "reporting_requirements": [{
                "start_date": datetime.date(2001, 1, 1),
                "end_date": datetime.date(2001, 3, 31),
                "due_date": datetime.date(2001, 4, 15),
            }, {
                "start_date": datetime.date(2001, 4, 1),
                "end_date": datetime.date(2001, 5, 31),
                "due_date": datetime.date(2001, 5, 15),
            }]
        }
        serializer = InterventionReportingRequirementCreateSerializer(
            data=data, context=self.context)
        self.assertTrue(serializer.is_valid())
        serializer.create(serializer.validated_data)
        self.assertEqual(requirement_qs.count(), init_count + 2)
 def test_update_create_qpr(self):
     """Updating existing qpr reporting requirements and create new"""
     report_type = ReportingRequirement.TYPE_QPR
     requirement_qs = ReportingRequirement.objects.filter(
         intervention=self.intervention,
         report_type=report_type,
     )
     data = {
         "report_type": report_type,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }, {
             "start_date": datetime.date(2001, 4, 1),
             "end_date": datetime.date(2001, 5, 30),
             "due_date": datetime.date(2001, 5, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertTrue(serializer.is_valid())
     serializer.create(serializer.validated_data)
     self.assertEqual(requirement_qs.count(), 2)
    def test_update_create_hr(self):
        """Updating existing hr reporting requirements and create new"""
        AppliedIndicatorFactory(
            is_high_frequency=True,
            lower_result=self.lower_result
        )
        report_type = ReportingRequirement.TYPE_HR
        data = {
            "report_type": report_type,
            "reporting_requirements": [{
                "start_date": datetime.date(2001, 3, 15),
                "due_date": datetime.date(2001, 4, 15),
                "end_date": datetime.date(2001, 4, 15),
            }, {
                "start_date": datetime.date(2001, 4, 16),
                "due_date": datetime.date(2001, 6, 15),
                "end_date": datetime.date(2001, 6, 15),
            }]
        }
        serializer = InterventionReportingRequirementCreateSerializer(
            data=data,
            context=self.context
        )
        self.assertTrue(serializer.is_valid())
        serializer.create(serializer.validated_data)

        requirement_qs_count = ReportingRequirement.objects.filter(
            intervention=self.intervention,
            report_type=report_type,
        ).count()
        self.assertEqual(requirement_qs_count, 2)
Example #5
0
 def test_validation_invalid_report_type(self):
     data = {"report_type": "wrong", "reporting_requirements": []}
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['report_type'],
                      ['"wrong" is not a valid choice.'])
    def test_create_hr(self):
        """Creating new hr reporting requirements

        When none currently existing
        """
        AppliedIndicatorFactory(
            is_high_frequency=True,
            lower_result=self.lower_result
        )
        requirement_qs = ReportingRequirement.objects.filter(
            intervention=self.intervention,
            report_type=ReportingRequirement.TYPE_HR,
        )
        data = {
            "report_type": ReportingRequirement.TYPE_HR,
            "reporting_requirements": [
                {"start_date": datetime.date(2001, 3, 15),
                 "due_date": datetime.date(2001, 4, 15),
                 "end_date": datetime.date(2001, 4, 15)},
                {"start_date": datetime.date(2001, 4, 16),
                 "due_date": datetime.date(2001, 5, 15),
                 "end_date": datetime.date(2001, 5, 15)}
            ]
        }
        serializer = InterventionReportingRequirementCreateSerializer(
            data=data,
            context=self.context
        )
        self.assertTrue(serializer.is_valid())
        serializer.create(serializer.validated_data)
        self.assertEqual(requirement_qs.count(), 2)
Example #7
0
 def test_update_qpr(self):
     """Updating existing qpr reporting requirements"""
     report_type = ReportingRequirement.TYPE_QPR
     requirement = ReportingRequirementFactory(
         intervention=self.intervention,
         report_type=report_type,
         start_date=datetime.date(2001, 1, 3),
         due_date=datetime.date(2001, 4, 15),
     )
     requirement_qs = ReportingRequirement.objects.filter(
         intervention=self.intervention,
         report_type=report_type,
     )
     init_count = requirement_qs.count()
     data = {
         "report_type":
         report_type,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertTrue(serializer.is_valid())
     serializer.create(serializer.validated_data)
     self.assertEqual(requirement_qs.count(), init_count)
     req_updated = ReportingRequirement.objects.get(pk=requirement.pk)
     self.assertEqual(req_updated.start_date, datetime.date(2001, 1, 1))
     self.assertEqual(req_updated.end_date, datetime.date(2001, 3, 31))
     self.assertEqual(req_updated.due_date, datetime.date(2001, 4, 15))
 def test_validation_hr_with_gaps(self):
     AppliedIndicatorFactory(
         is_high_frequency=True,
         lower_result=self.lower_result
     )
     data = {
         "report_type": ReportingRequirement.TYPE_HR,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "due_date": datetime.date(2001, 3, 10),
             "end_date": datetime.date(2001, 3, 10),
         }, {
             "start_date": datetime.date(2001, 4, 10),
             "due_date": datetime.date(2001, 5, 15),
             "end_date": datetime.date(2001, 5, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'],
         {"start_date": 'Next start date needs to be one day after previous end date.'}
     )
Example #9
0
 def test_update_create_hr(self):
     """Updating existing hr reporting requirements and create new"""
     AppliedIndicatorFactory(is_high_frequency=True,
                             lower_result=self.lower_result)
     report_type = ReportingRequirement.TYPE_HR
     requirement = ReportingRequirementFactory(
         intervention=self.intervention,
         report_type=report_type,
         due_date=datetime.date(2001, 4, 15),
     )
     requirement_qs = ReportingRequirement.objects.filter(
         intervention=self.intervention,
         report_type=report_type,
     )
     init_count = requirement_qs.count()
     data = {
         "report_type":
         report_type,
         "reporting_requirements": [{
             "due_date": datetime.date(2001, 4, 15),
         }, {
             "due_date": datetime.date(2001, 6, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertTrue(serializer.is_valid())
     serializer.create(serializer.validated_data)
     self.assertEqual(requirement_qs.count(), init_count + 1)
     req_updated = ReportingRequirement.objects.get(pk=requirement.pk)
     self.assertEqual(req_updated.start_date, None)
     self.assertEqual(req_updated.end_date, req_updated.due_date)
     self.assertEqual(req_updated.due_date, datetime.date(2001, 4, 15))
Example #10
0
 def test_validation_missing_reporting_requirements(self):
     data = {}
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['reporting_requirements'],
                      ['This field is required.'])
Example #11
0
 def test_validation_empty_reporting_requirements(self):
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['reporting_requirements'],
                      ['This field cannot be empty.'])
 def test_validation_missing_reporting_requirements(self):
     data = {}
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'],
         ['This field is required.']
     )
 def test_validation_invalid_report_type(self):
     data = {
         "report_type": "wrong",
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['report_type'],
         ['"wrong" is not a valid choice.']
     )
Example #14
0
 def test_validation_pd_has_no_start(self):
     intervention = InterventionFactory(in_amendment=True)
     result_link = InterventionResultLinkFactory(intervention=intervention)
     lower_result = LowerResultFactory(result_link=result_link)
     AppliedIndicatorFactory(lower_result=lower_result)
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context={"intervention": intervention})
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['non_field_errors'],
                      ['PD needs to have a start date.'])
 def test_validation_empty_reporting_requirements(self):
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'],
         ['This field cannot be empty.']
     )
Example #16
0
 def test_validation_qpr_missing_fields(self):
     data = {
         "report_type":
         ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['reporting_requirements'], [{
         "start_date": ['This field is required.']
     }])
Example #17
0
 def test_validation_hr(self):
     AppliedIndicatorFactory(is_high_frequency=True,
                             lower_result=self.lower_result)
     data = {
         "report_type":
         ReportingRequirement.TYPE_HR,
         "reporting_requirements": [{
             "due_date": datetime.date(2001, 4, 15)
         }, {
             "due_date": datetime.date(2001, 5, 15)
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertTrue(serializer.is_valid())
Example #18
0
 def test_validation_pd_status(self):
     intervention = InterventionFactory(start=datetime.date(2001, 1, 1),
                                        status=Intervention.CLOSED)
     result_link = InterventionResultLinkFactory(intervention=intervention)
     lower_result = LowerResultFactory(result_link=result_link)
     AppliedIndicatorFactory(lower_result=lower_result)
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context={"intervention": intervention})
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['non_field_errors'],
         ['Changes not allowed when PD not in amendment state.'])
 def test_validation_hr_indicator_invalid(self):
     self.assertFalse(self.indicator.is_high_frequency)
     data = {
         "report_type":
         ReportingRequirement.TYPE_HR,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 3, 15),
             "due_date": datetime.date(2001, 4, 15)
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['non_field_errors'],
         ["Indicator needs to be either cluster or high frequency."])
Example #20
0
 def test_validation_qpr(self):
     data = {
         "report_type":
         ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }, {
             "start_date": datetime.date(2001, 4, 1),
             "end_date": datetime.date(2001, 5, 31),
             "due_date": datetime.date(2001, 5, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertTrue(serializer.is_valid())
Example #21
0
 def test_validation_qpr_start_early(self):
     data = {
         "report_type":
         ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "start_date": datetime.date(2000, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['reporting_requirements'], {
         "start_date":
         'Start date needs to be on or after PD start date.'
     })
 def test_validation_qpr_missing_fields(self):
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'],
         [{"start_date": ['This field is required.']}]
     )
 def test_validation_qpr_early_start(self):
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "start_date": datetime.date(2000, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'],
         {"start_date": 'Start date needs to be on or after PD start date.'}
     )
 def test_validation_qpr(self):
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }, {
             "start_date": datetime.date(2001, 4, 1),
             "end_date": datetime.date(2001, 5, 31),
             "due_date": datetime.date(2001, 5, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertTrue(serializer.is_valid())
 def test_validation_pd_has_no_start(self):
     intervention = InterventionFactory(in_amendment=True)
     result_link = InterventionResultLinkFactory(intervention=intervention)
     lower_result = LowerResultFactory(result_link=result_link)
     AppliedIndicatorFactory(lower_result=lower_result)
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context={"intervention": intervention}
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['non_field_errors'],
         ['PD needs to have a start date.']
     )
 def test_validation_hr_early_start(self):
     AppliedIndicatorFactory(is_high_frequency=True,
                             lower_result=self.lower_result)
     data = {
         "report_type":
         ReportingRequirement.TYPE_HR,
         "reporting_requirements": [{
             "start_date": datetime.date(2000, 1, 1),
             "due_date": datetime.date(2001, 4, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(serializer.errors['reporting_requirements'], {
         "start_date":
         'Start date needs to be on or after PD start date.'
     })
 def test_validation_hr_indicator_invalid(self):
     self.assertFalse(self.indicator.is_high_frequency)
     data = {
         "report_type": ReportingRequirement.TYPE_HR,
         "reporting_requirements": [
             {"start_date": datetime.date(2001, 3, 15),
              "due_date": datetime.date(2001, 4, 15),
              "end_date": datetime.date(2001, 4, 15)}
         ]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['non_field_errors'],
         ["Indicator needs to be either cluster or high frequency."]
     )
 def test_validation_hr(self):
     AppliedIndicatorFactory(
         is_high_frequency=True,
         lower_result=self.lower_result
     )
     data = {
         "report_type": ReportingRequirement.TYPE_HR,
         "reporting_requirements": [
             {"start_date": datetime.date(2001, 3, 15),
              "due_date": datetime.date(2001, 4, 15),
              "end_date": datetime.date(2001, 4, 15)},
             {"start_date": datetime.date(2001, 4, 16),
              "due_date": datetime.date(2001, 5, 15),
              "end_date": datetime.date(2001, 5, 15)}
         ]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertTrue(serializer.is_valid())
 def test_validation_pd_status(self):
     intervention = InterventionFactory(
         start=datetime.date(2001, 1, 1),
         status=Intervention.CLOSED
     )
     result_link = InterventionResultLinkFactory(intervention=intervention)
     lower_result = LowerResultFactory(result_link=result_link)
     AppliedIndicatorFactory(lower_result=lower_result)
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": []
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context={"intervention": intervention}
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['non_field_errors'],
         ['Changes not allowed when PD not in amendment state.']
     )
 def test_validation_qpr_with_gaps(self):
     data = {
         "report_type":
         ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }, {
             "start_date": datetime.date(2001, 4, 10),
             "end_date": datetime.date(2001, 4, 30),
             "due_date": datetime.date(2001, 5, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data, context=self.context)
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'], {
             "start_date":
             'Next start date needs to be one day after previous end date.'
         })
 def test_validation_qpr_with_gaps(self):
     data = {
         "report_type": ReportingRequirement.TYPE_QPR,
         "reporting_requirements": [{
             "start_date": datetime.date(2001, 1, 1),
             "end_date": datetime.date(2001, 3, 31),
             "due_date": datetime.date(2001, 4, 15),
         }, {
             "start_date": datetime.date(2001, 4, 10),
             "end_date": datetime.date(2001, 4, 30),
             "due_date": datetime.date(2001, 5, 15),
         }]
     }
     serializer = InterventionReportingRequirementCreateSerializer(
         data=data,
         context=self.context
     )
     self.assertFalse(serializer.is_valid())
     self.assertEqual(
         serializer.errors['reporting_requirements'],
         {"start_date": 'Next start date needs to be one day after previous end date.'}
     )
    def test_validation_hr_missing_fields(self):
        data = {
            "report_type": ReportingRequirement.TYPE_HR,
            "reporting_requirements": [{
                "start_date": datetime.date(2001, 4, 15),
            }]
        }
        serializer = InterventionReportingRequirementCreateSerializer(
            data=data,
            context=self.context
        )
        self.assertFalse(serializer.is_valid())

        data["reporting_requirements"] = [{
            "due_date": datetime.date(2001, 4, 15),
            "end_date": datetime.date(2001, 4, 15),
        }]
        serializer = InterventionReportingRequirementCreateSerializer(
            data=data,
            context=self.context
        )
        self.assertFalse(serializer.is_valid())