コード例 #1
0
    def test_cso_types(self):
        '''Verify the cso_types portion of the response'''
        PartnerFactory(cso_type=PartnerOrganization.CSO_TYPES['International'])
        # These should be filtered out of the endpoint response (https://github.com/unicef/etools/issues/510)
        PartnerFactory(cso_type=None)
        PartnerFactory(cso_type='')

        response = self.forced_auth_req('get', self.url)
        d = self._assertResponseFundamentals(response)
        self.assertEqual(d['cso_types'], [{'value': PartnerOrganization.CSO_TYPES['International'],
                                           'label': PartnerOrganization.CSO_TYPES['International']}])
コード例 #2
0
 def test_run_all_checks(self):
     PartnerFactory(
         short_name='A name'
     )  # make a good one as well just to ensure it's not flagging everything
     partner_bad = PartnerFactory()
     checks.bootstrap_checks(default_is_active=True)
     checks.run_all_checks()
     self.assertEqual(1, FlaggedIssue.objects.count())
     issue = FlaggedIssue.objects.first()
     self.assertEqual(PartnersMustHaveShortNameTestCheck.check_id,
                      issue.issue_id)
     self.assertEqual(partner_bad, issue.content_object)
コード例 #3
0
ファイル: test_models.py プロジェクト: nixworks/etools
    def test_notification(self):
        agreement = AgreementFactory(partner=PartnerFactory(name=b'xyz'))
        notification = NotificationFactory(sender=agreement)

        self.assertIn(u'Email Notification from', six.text_type(notification))
        self.assertIn(u'for xyz', six.text_type(notification))

        agreement = AgreementFactory(partner=PartnerFactory(
            name=u'R\xe4dda Barnen'))
        notification = NotificationFactory(sender=agreement)
        self.assertIn(u'Email Notification from', six.text_type(notification))
        self.assertIn(u'for R\xe4dda Barnen', six.text_type(notification))
コード例 #4
0
    def test_recheck(self):
        partner_bad = PartnerFactory()
        checks.bootstrap_checks(default_is_active=True)
        checks.run_all_checks()
        self.assertEqual(1, FlaggedIssue.objects.count())
        issue = FlaggedIssue.objects.first()
        self.assertEqual(PartnersMustHaveShortNameTestCheck.check_id,
                         issue.issue_id)
        self.assertEqual(partner_bad, issue.content_object)
        self.assertEqual(ISSUE_STATUS_NEW, issue.issue_status)
        update_date = issue.date_updated
        # initial recheck should not do anything except modify timestamps
        issue = FlaggedIssue.objects.get(pk=issue.pk)
        issue.recheck()
        self.assertEqual(ISSUE_STATUS_NEW, issue.issue_status)
        self.assertNotEqual(update_date, issue.date_updated)
        update_date = issue.date_updated

        # recheck after fixing the issue should update the status to resolved
        partner_bad.short_name = 'Name added'
        partner_bad.save()
        issue = FlaggedIssue.objects.get(pk=issue.pk)
        issue.recheck()
        self.assertEqual(ISSUE_STATUS_RESOLVED, issue.issue_status)
        self.assertNotEqual(update_date, issue.date_updated)
        update_date = issue.date_updated

        # recheck after re-creating the issue should update the status to reactivated
        partner_bad.short_name = ''
        partner_bad.save()
        issue = FlaggedIssue.objects.get(pk=issue.pk)
        issue.recheck()
        self.assertEqual(ISSUE_STATUS_REACTIVATED, issue.issue_status)
        self.assertNotEqual(update_date, issue.date_updated)
コード例 #5
0
    def test_invalid_pca(self):
        """The agreement transition validation fails if;
        - Agreement type is PCA
        AND there exists an agreement that has ALL of the following;
        - same partner
        - status is SIGNED
        - agreement type is PCA
        - same country programme
        - start date > 2015-07-01
        """
        partner = PartnerFactory()
        country = CountryProgrammeFactory()
        AgreementFactory(
            partner=partner,
            agreement_type=Agreement.PCA,
            status=Agreement.SIGNED,
            country_programme=country,
            start=datetime.date.today()
        )
        agreement = AgreementFactory(
            partner=partner,
            agreement_type=Agreement.PCA,
            country_programme=country,
        )

        with self.assertRaises(TransitionError):
            agreements.agreement_transition_to_signed_valid(agreement)
コード例 #6
0
 def setUpTestData(cls):
     cls.unicef_staff = UserFactory(is_staff=True)
     partner = PartnerFactory(
         partner_type='Government',
         vendor_number='Vendor No',
         short_name="Short Name",
         alternate_name="Alternate Name",
         shared_with=["DPKO", "ECA"],
         address="Address 123",
         phone_number="Phone no 1234567",
         email="*****@*****.**",
         rating="High",
         core_values_assessment_date=datetime.date.today(),
         total_ct_cp=10000,
         total_ct_cy=20000,
         deleted_flag=False,
         blocked=False,
         type_of_assessment="Type of Assessment",
         last_assessment_date=datetime.date.today(),
     )
     partnerstaff = PartnerStaffFactory(partner=partner)
     cls.agreement = AgreementFactory(
         partner=partner,
         country_programme=CountryProgrammeFactory(wbs="random WBS"),
         attached_agreement="fake_attachment.pdf",
         start=datetime.date.today(),
         end=datetime.date.today(),
         signed_by_unicef_date=datetime.date.today(),
         signed_by=cls.unicef_staff,
         signed_by_partner_date=datetime.date.today()
     )
     cls.agreement.authorized_officers.add(partnerstaff)
     cls.agreement.save()
コード例 #7
0
 def setUpTestData(cls):
     cls.unicef_staff = UserFactory(is_staff=True)
     partner = PartnerFactory(
         partner_type='Government',
         vendor_number='Vendor No',
         short_name="Short Name",
         alternate_name="Alternate Name",
         shared_with=["DPKO", "ECA"],
         address="Address 123",
         phone_number="Phone no 1234567",
         email="*****@*****.**",
         rating="High",
         core_values_assessment_date=datetime.date.today(),
         total_ct_cp=10000,
         total_ct_cy=20000,
         deleted_flag=False,
         blocked=False,
         type_of_assessment="Type of Assessment",
         last_assessment_date=datetime.date.today(),
     )
     partnerstaff = PartnerStaffFactory(partner=partner)
     agreement = AgreementFactory(
         partner=partner,
         country_programme=CountryProgrammeFactory(wbs="random WBS"),
         attached_agreement="fake_attachment.pdf",
         start=datetime.date.today(),
         end=datetime.date.today(),
         signed_by_unicef_date=datetime.date.today(),
         signed_by=cls.unicef_staff,
         signed_by_partner_date=datetime.date.today()
     )
     agreement.authorized_officers.add(partnerstaff)
     agreement.save()
     AgreementFactory(signed_by_unicef_date=datetime.date.today())
     cls.intervention = InterventionFactory(
         agreement=agreement,
         document_type='SHPD',
         status='draft',
         start=datetime.date.today(),
         end=datetime.date.today(),
         submission_date=datetime.date.today(),
         submission_date_prc=datetime.date.today(),
         review_date_prc=datetime.date.today(),
         signed_by_unicef_date=datetime.date.today(),
         signed_by_partner_date=datetime.date.today(),
         unicef_signatory=cls.unicef_staff,
         population_focus="Population focus",
         partner_authorized_officer_signatory=partnerstaff,
         country_programme=agreement.country_programme,
     )
     cls.ib = InterventionBudgetFactory(
         intervention=cls.intervention,
         currency="USD"
     )
     cls.planned_visit = InterventionPlannedVisitsFactory(
         intervention=cls.intervention,
     )
     cls.attachment = InterventionAttachmentFactory(
         intervention=cls.intervention,
     )
コード例 #8
0
 def test_recheck_all_open_issues(self):
     """Check that recheck_all_open_issues call changes those issues
     that are not resolved
     And handles invalid issues
     """
     partner = PartnerFactory(short_name='A name')
     issue_resolved = FlaggedIssueFactory(
         content_object=partner,
         issue_id='partners_must_have_short_name',
         issue_status=ISSUE_STATUS_RESOLVED,
     )
     issue_new = FlaggedIssueFactory(
         content_object=partner,
         issue_id='partners_must_have_short_name',
         issue_status=ISSUE_STATUS_NEW,
     )
     issue_bad = FlaggedIssueFactory(
         content_object=partner,
         issue_status=ISSUE_STATUS_NEW,
     )
     checks.recheck_all_open_issues()
     issue_resolved_updated = FlaggedIssue.objects.get(pk=issue_resolved.pk)
     self.assertEqual(issue_resolved_updated.date_updated,
                      issue_resolved.date_updated)
     issue_new_updated = FlaggedIssue.objects.get(pk=issue_new.pk)
     self.assertNotEqual(issue_new_updated.date_updated,
                         issue_new.date_updated)
     issue_bad_updated = FlaggedIssue.objects.get(pk=issue_bad.pk)
     self.assertEqual(issue_bad_updated.date_updated,
                      issue_bad.date_updated)
コード例 #9
0
    def test_recheck_with_metadata(self):
        partner_bad = PartnerFactory(name='bar')
        checks.bootstrap_checks(default_is_active=True)
        checks.run_all_checks()
        self.assertEqual(1, FlaggedIssue.objects.count())
        issue = FlaggedIssue.objects.first()
        self.assertEqual(PartnersNameMustBeFooTestCheck.check_id,
                         issue.issue_id)
        self.assertEqual(partner_bad, issue.content_object)
        self.assertEqual(ISSUE_STATUS_NEW, issue.issue_status)

        partner_bad.name = 'foo'
        partner_bad.save()
        issue = FlaggedIssue.objects.get(pk=issue.pk)
        issue.recheck()
        self.assertEqual(ISSUE_STATUS_RESOLVED, issue.issue_status)
コード例 #10
0
ファイル: test_commands.py プロジェクト: nixworks/etools
 def setUpTestData(cls):
     cls.file_type_partner = AttachmentFileTypeFactory(
         code="partners_partner_assessment")
     cls.file_type_agreement = AttachmentFileTypeFactory(
         code="partners_agreement")
     cls.file_type_assessment = AttachmentFileTypeFactory(
         code="partners_assessment_report")
     cls.file_type_agreement_amendment = AttachmentFileTypeFactory(
         code="partners_agreement_amendment")
     cls.file_type_intervention_prc_review = AttachmentFileTypeFactory(
         code="partners_intervention_prc_review")
     cls.file_type_intervention_signed_pd = AttachmentFileTypeFactory(
         code="partners_intervention_signed_pd")
     cls.file_type_intervention_amendment = AttachmentFileTypeFactory(
         code="partners_intervention_amendment_signed")
     cls.file_type_intervention_attachment = AttachmentFileTypeFactory(
         code="partners_intervention_attachment")
     cls.partner = PartnerFactory(core_values_assessment="sample.pdf")
     cls.agreement = AgreementFactory(attached_agreement="sample.pdf")
     cls.assessment = AssessmentFactory(report="sample.pdf")
     cls.agreement_amendment = AgreementAmendmentFactory(
         signed_amendment="sample.pdf")
     cls.intervention = InterventionFactory(
         prc_review_document="prc_sample.pdf",
         signed_pd_document="pd_sample.pdf")
     cls.intervention_amendment = InterventionAmendmentFactory(
         signed_amendment="sample.pdf")
     cls.intervention_attachment = InterventionAttachmentFactory(
         attachment="sample.pdf")
コード例 #11
0
 def setUpTestData(cls):
     cls.url = reverse("partners_api:partner-hact")
     cls.unicef_staff = UserFactory(is_staff=True)
     cls.partner = PartnerFactory(
         total_ct_cp=10.00,
         total_ct_cy=8.00,
     )
コード例 #12
0
ファイル: test_utils.py プロジェクト: nixworks/etools
 def test_partner_staff(self):
     partner = PartnerFactory()
     partner_staff = PartnerStaffFactory(partner=partner)
     fields = utils.get_to_many_field_names(partner_staff.__class__)
     # check many_to_one field
     self.assertIn("signed_interventions", fields)
     # check many_to_many field
     self.assertIn("agreement_authorizations", fields)
コード例 #13
0
ファイル: test_forms.py プロジェクト: nixworks/etools
 def test_clean_email_no_change(self):
     """Ensure valid if no change in email """
     partner = PartnerFactory()
     staff = PartnerStaffFactory(
         partner=partner,
         email="*****@*****.**",
     )
     form = forms.PartnerStaffMemberForm(self.data, instance=staff)
     self.assertTrue(form.is_valid())
コード例 #14
0
ファイル: test_models.py プロジェクト: nixworks/etools
 def test_get_or_new_returns_saved(self):
     issue_id = 'test-return-saved'
     partner = PartnerFactory()
     issue = FlaggedIssueFactory(content_object=partner,
                                 issue_id=issue_id,
                                 message='test message')
     self.assertTrue(issue.pk is not None)
     issue_back = FlaggedIssue.get_or_new(partner, issue_id)
     # make sure we got the same one back
     self.assertEqual(issue.pk, issue_back.pk)
コード例 #15
0
 def test_get(self):
     partner = PartnerFactory()
     agreement = AgreementFactory(partner=partner)
     intervention_1 = InterventionFactory(agreement=agreement)
     intervention_2 = InterventionFactory(agreement=agreement)
     intervention_3 = InterventionFactory()
     res = tags.get_interventions(partner.pk)
     self.assertIn(intervention_1.number, res)
     self.assertIn(intervention_2.number, res)
     self.assertNotIn(intervention_3.number, res)
コード例 #16
0
 def test_save_records_update_name(self):
     """Check that partner organization record is updated,
     name changed
     """
     partner = PartnerFactory(name="New",
                              vendor_number=self.data["VENDOR_CODE"])
     response = self.adapter._save_records([self.data])
     self.assertEqual(response, 1)
     partner_updated = PartnerOrganization.objects.get(pk=partner.pk)
     self.assertEqual(partner_updated.name, self.data["VENDOR_NAME"])
コード例 #17
0
 def test_delete(self):
     partner = PartnerFactory()
     response = self.forced_auth_req(
         'delete',
         reverse('partners_api:partner-delete', args=[partner.pk]),
         user=self.unicef_staff,
     )
     self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
     self.assertFalse(
         PartnerOrganization.objects.filter(pk=partner.pk).exists()
     )
コード例 #18
0
ファイル: test_models.py プロジェクト: nixworks/etools
    def test_flagged_issue(self):
        partner = PartnerFactory()
        issue = FlaggedIssueFactory(content_object=partner,
                                    issue_id="321",
                                    message='test message')
        self.assertEqual(six.text_type(issue), u"test message")

        issue = FlaggedIssueFactory(content_object=partner,
                                    issue_id="321",
                                    message=u"R\xe4dda Barnen")
        self.assertEqual(six.text_type(issue), u"R\xe4dda Barnen")
コード例 #19
0
 def test_save_records_update_deleted_flag(self):
     """Check that partner organization record is updated,
     deleted_flag changed
     """
     self.data["MARKED_FOR_DELETION"] = True
     partner = PartnerFactory(name=self.data["VENDOR_NAME"],
                              vendor_number=self.data["VENDOR_CODE"],
                              deleted_flag=False)
     response = self.adapter._save_records([self.data])
     self.assertEqual(response, 1)
     partner_updated = PartnerOrganization.objects.get(pk=partner.pk)
     self.assertTrue(partner_updated.deleted_flag)
コード例 #20
0
 def setUpTestData(cls):
     cls.unicef_staff = UserFactory(is_staff=True)
     cls.partner = PartnerFactory(
         partner_type=PartnerType.CIVIL_SOCIETY_ORGANIZATION,
         cso_type="International",
         hidden=False,
         vendor_number="DDD",
         short_name="Short name",
     )
     cls.url = reverse(
         'partners_api:partner-delete',
         args=[cls.partner.pk]
     )
コード例 #21
0
ファイル: test_forms.py プロジェクト: nixworks/etools
 def test_clean_activate(self):
     """If staff member made active, ensure user not already associated
     with another partner
     """
     UserFactory(email="*****@*****.**")
     partner = PartnerFactory()
     staff = PartnerStaffFactory(
         partner=partner,
         email="*****@*****.**",
         active=False
     )
     form = forms.PartnerStaffMemberForm(self.data, instance=staff)
     self.assertTrue(form.is_valid())
コード例 #22
0
 def test_save_records_update(self):
     """Check that partner organization record is NOT updated,
     if no change
     """
     PartnerFactory(
         name=self.data["VENDOR_NAME"],
         vendor_number=self.data["VENDOR_CODE"],
         country=self.data["COUNTRY"],
         partner_type="UN Agency",
         total_ct_cp=self.data["TOTAL_CASH_TRANSFERRED_CP"],
         total_ct_cy=self.data["TOTAL_CASH_TRANSFERRED_CY"],
     )
     response = self.adapter._save_records([self.data])
     self.assertEqual(response, 1)
コード例 #23
0
ファイル: test_views.py プロジェクト: nixworks/etools
 def setUpTestData(cls):
     cls.unicef_user = UserFactory(is_staff=True)
     cls.partner = PartnerFactory(
         name="Partner Name",
         partner_type=PartnerType.UN_AGENCY,
         shared_with=[PartnerOrganization.AGENCY_CHOICES.UN],
         rating=PartnerOrganization.RATING_HIGH,
         total_ct_cp=200.0,
         total_ct_cy=150.0,
         net_ct_cy=100.0,
         reported_cy=300.0,
         total_ct_ytd=400.0,
     )
     cls.url = reverse("hact_api:hact-history")
コード例 #24
0
ファイル: test_serializers.py プロジェクト: nixworks/etools
    def setUpTestData(cls):
        cls.user = UserFactory()

        cls.partner = PartnerFactory(partner_type=PartnerType.CIVIL_SOCIETY_ORGANIZATION)

        cls.today = datetime.date.today()

        # The serializer examines context['request'].user during the course of its operation. If that's not set, the
        # serializer will fail. It doesn't need a real request object, just something with a .user attribute, so
        # that's what I create here.
        class Stub(object):
            pass
        cls.fake_request = Stub()
        cls.fake_request.user = cls.user
コード例 #25
0
ファイル: test_forms.py プロジェクト: nixworks/etools
 def test_clean_email_change(self):
     """Email address may not be changed"""
     self.data["email"] = "*****@*****.**"
     partner = PartnerFactory()
     staff = PartnerStaffFactory(
         partner=partner,
         email="*****@*****.**",
     )
     form = forms.PartnerStaffMemberForm(self.data, instance=staff)
     self.assertFalse(form.is_valid())
     self.assertIn(
         "User emails cannot be changed, please remove the user and add another one: [email protected]",
         form.errors["__all__"]
     )
コード例 #26
0
 def test_valid(self):
     partner = PartnerFactory()
     user = UserFactory()
     staff = PartnerStaffFactory(
         partner=partner,
     )
     agreement = AgreementFactory(
         partner=partner,
         signed_by_unicef_date=datetime.date.today(),
         signed_by=user,
         signed_by_partner_date=datetime.date.today(),
         partner_manager=staff,
     )
     self.assertTrue(agreements.signatures_valid(agreement))
コード例 #27
0
ファイル: test_models.py プロジェクト: nixworks/etools
    def setUpTestData(cls):
        cls.aggregate_hact = AggregateHactFactory()
        cls.partner = PartnerFactory(
            name="Partner Name",
            partner_type=PartnerType.CIVIL_SOCIETY_ORGANIZATION,
            shared_with=[PartnerOrganization.AGENCY_CHOICES.UN],
            rating=PartnerOrganization.RATING_HIGH,
            total_ct_cp=200.0,
            total_ct_cy=400.0,
            net_ct_cy=110000.0,
            reported_cy=300.0,
            total_ct_ytd=140000.0,
        )
        cls.partner2 = PartnerFactory(
            name="Partner Name",
            partner_type=PartnerType.GOVERNMENT,
            shared_with=[PartnerOrganization.AGENCY_CHOICES.UNHCR],
            rating=PartnerOrganization.RATING_LOW,
            total_ct_cp=200.0,
            total_ct_cy=2200.0,
            net_ct_cy=510000.0,
            reported_cy=52000.0,
            total_ct_ytd=550000.0,
        )

        AuditFactory(
            status=Engagement.FINAL,
            audit_opinion=Audit.OPTION_UNQUALIFIED,
            date_of_draft_report_to_unicef=datetime(datetime.today().year, 1,
                                                    3),
            additional_supporting_documentation_provided=1000.0,
            justification_provided_and_accepted=20000.0,
            write_off_required=30000.0,
            amount_refunded=400000.0,
            audited_expenditure=50.0,
            financial_findings=999.0,
        )
コード例 #28
0
 def test_invalid(self):
     tomorrow = datetime.date.today() + datetime.timedelta(days=1)
     partner = PartnerFactory()
     user = UserFactory()
     staff = PartnerStaffFactory(
         partner=partner,
     )
     agreement = AgreementFactory(
         partner=partner,
         signed_by_unicef_date=datetime.date.today(),
         signed_by=user,
         signed_by_partner_date=tomorrow,
         partner_manager=staff,
     )
     self.assertFalse(agreements.signatures_valid(agreement))
コード例 #29
0
 def test_delete_with_cash_trxs(self):
     partner = PartnerFactory(total_ct_cp=20.00)
     response = self.forced_auth_req(
         'delete',
         reverse('partners_api:partner-delete', args=[partner.pk]),
         user=self.unicef_staff,
     )
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertEqual(
         response.data[0],
         "This partner has cash transactions associated to it"
     )
     self.assertTrue(
         PartnerOrganization.objects.filter(pk=partner.pk).exists()
     )
コード例 #30
0
 def test_save_records_update_date(self):
     """Check that partner organization record is updated,
     last assessment date changed
     """
     self.data["DATE_OF_ASSESSMENT"] = "4-Apr-17"
     partner = PartnerFactory(
         name=self.data["VENDOR_NAME"],
         vendor_number=self.data["VENDOR_CODE"],
         country=self.data["COUNTRY"],
         last_assessment_date=datetime.date(2017, 4, 5),
     )
     response = self.adapter._save_records([self.data])
     self.assertEqual(response, 1)
     partner_updated = PartnerOrganization.objects.get(pk=partner.pk)
     self.assertEqual(partner_updated.last_assessment_date,
                      datetime.date(2017, 4, 4))