def test_post_ok(self):
        contract = create_contract(self)
        contract_id = contract.data.id
        contract_before_document_post = get_contract(self, contract_id)
        assert contract_before_document_post.documents == []

        response = post_document(self, contract)
        assert response.status == '201 Created'

        contract_after_document_post = get_contract(self, contract_id)
        assert len(contract_after_document_post.documents) == 1
Example #2
0
 def test_set_terminal_status_with_allowed_role(self):
     contract, _ = prepare_milestones_all_met(self)
     self.app.authorization = ('Basic', ('caravan', ''))
     patch_contract(
         self,
         contract,
         {'data': {
             'status': 'terminated'
         }},
     )
     terminated_contract = get_contract(self, contract.data.id)
     self.assertEqual(terminated_contract.status, 'terminated')
Example #3
0
    def test_patch_notMet(self):
        contract, milestones = prepare_milestones(self)
        financing_milestone = Milestone(milestones[0])
        assert financing_milestone.type_ == 'financing'

        response = patch_milestone(
            self,
            contract,
            financing_milestone.id,
            {'data': {
                'status': 'notMet'
            }},
        )

        self.assertEqual(response.status, '200 OK')
        related_contract = get_contract(self, contract.data.id)
        self.assertEqual(related_contract.status, 'pending.unsuccessful')
Example #4
0
    def test_milestone_patch_reporting_dateMet_partiallyMet(self):
        contract, milestones = prepare_milestones_reporting(self)
        reporting_milestone = milestones[2]
        assert reporting_milestone.type_ == 'reporting'
        dateMet_to_set = reporting_milestone.dueDate + timedelta(days=5)

        response = patch_milestone(
            self, contract, reporting_milestone.id,
            {'data': {
                'dateMet': dateMet_to_set.isoformat()
            }})

        self.assertEqual(response.status, '200 OK')
        patched_reporting_milestone = get_milestone(self, contract.data.id,
                                                    reporting_milestone['id'])
        assert patched_reporting_milestone.dateMet == dateMet_to_set, 'dateMet was not set'
        assert patched_reporting_milestone.status == 'partiallyMet'
        updated_contract = get_contract(self, contract.data.id)
        assert updated_contract.status == 'pending.terminated', 'Contract status was not updated'
Example #5
0
    def test_upload_documents_with_milestone_related_types(self):
        contract, milestones = prepare_milestones_approval(self)
        reporting_milestone = Milestone(milestones[2])
        assert reporting_milestone.type_ == 'reporting'
        protocol_types = ('approvalProtocol', 'rejectionProtocol')

        for protocol_type in protocol_types:
            doc_id = post_milestone_document(
                self,
                contract,
                reporting_milestone.id,
                documentType=protocol_type).json['data']['id']

            contract_after_post = get_contract(self, contract.data.id)

            found_doc = None
            for doc in contract_after_post.documents:
                if doc.id == doc_id:
                    found_doc = doc
            assert found_doc, 'document was not attached to the contract'
            assert found_doc.documentType == protocol_type
Example #6
0
    def test_milestone_patch_approval_dateMet(self):
        contract, milestones = prepare_milestones_approval(self)
        approval_milestone = Milestone(milestones[1])
        assert approval_milestone.type_ == 'approval'
        dateMet_to_set = approval_milestone.dueDate - timedelta(days=5)

        response = patch_milestone(
            self, contract, approval_milestone.id,
            {'data': {
                'dateMet': dateMet_to_set.isoformat()
            }})

        self.assertEqual(response.status, '200 OK')
        patched_approval_milestone = get_milestone(self, contract.data.id,
                                                   approval_milestone['id'])
        assert patched_approval_milestone.dateMet == dateMet_to_set, 'dateMet was not set'
        assert patched_approval_milestone.status == 'met'
        reporting_milestone = get_milestone(self, contract.data.id,
                                            milestones[2]['id'])
        assert reporting_milestone.status == 'processing', 'Reporting milestone status must be `processing`'
        assert reporting_milestone.dueDate is not None
        updated_contract = get_contract(self, contract.data.id)
        assert updated_contract.status == 'active', 'Contract status was not updated'
Example #7
0
    def test_milestone_patch_financing_dateMet_partially_met(self):
        contract, milestones = prepare_milestones(self)
        financing_milestone = Milestone(milestones[0])
        assert financing_milestone.type_ == 'financing'
        dateMet_to_set = financing_milestone.dueDate + timedelta(days=5)

        response = patch_milestone(
            self, contract, financing_milestone.id,
            {'data': {
                'dateMet': dateMet_to_set.isoformat()
            }})

        self.assertEqual(response.status, '200 OK')
        patched_financing_milestone = get_milestone(self, contract.data.id,
                                                    financing_milestone.id)
        assert patched_financing_milestone.dateMet == dateMet_to_set, 'dateMet was not set'
        assert patched_financing_milestone.status == 'partiallyMet', 'dateMet was not set'
        approval_milestone = get_milestone(self, contract.data.id,
                                           milestones[1]['id'])
        assert approval_milestone.status == 'processing'
        assert approval_milestone.dueDate is not None
        updated_contract = get_contract(self, contract.data.id)
        assert updated_contract.status == 'active.approval', 'Contract status was not updated'