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
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')
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')
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'
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
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'
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'