Similarity Analyser 2.4.0 - http://www.harukizaemon.com/simian Copyright (c) 2003-2015 Simon Harris. All rights reserved. Simian is not free unless used solely for non-commercial or evaluation purposes. {failOnDuplication=true, ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, reportDuplicateText=true, threshold=6} Found 6 duplicate lines in the following files: Between lines 3304 and 3309 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3278 and 3283 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3239 and 3244 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2900 and 2905 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.post_json('/tenders/{}/cancellations'.format(self.tender_id), {'data': { 'reason': 'cancellation reason', 'status': 'active', "cancellationOf": "lot", "relatedLot": self.initial_lots[0]['id'] }}) ===================================================================== Found 6 duplicate lines in the following files: Between lines 2372 and 2378 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1281 and 1287 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 612 and 618 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py dateSigned = get_now().isoformat() response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": dateSigned, "status": "active"}}) self.assertEqual(response.json['data']['status'], 'active') self.assertEqual(response.json['data']['dateSigned'], dateSigned) ===================================================================== Found 6 duplicate lines in the following files: Between lines 3131 and 3136 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3073 and 3078 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.get('/tenders/{}/contracts/{}/documents/{}'.format( self.tender_id, self.contract_id, doc_id)) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(doc_id, response.json["data"]["id"]) self.assertEqual('name.doc', response.json["data"]["title"]) ===================================================================== Found 7 duplicate lines in the following files: Between lines 1828 and 1836 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1784 and 1792 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1806 and 1814 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, "200 OK") self.assertEqual(response.json['data']['status'], 'cancelled') self.assertNotIn('mergedInto', response.json['data']) # Check main contract response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) self.assertEqual(response.status, "200 OK") self.assertEqual(len(response.json['data']), 4) ===================================================================== Found 7 duplicate lines in the following files: Between lines 3237 and 3244 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3276 and 3283 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py key = response.json["data"]["url"].split('?')[-1] response = self.app.post_json('/tenders/{}/cancellations'.format(self.tender_id), {'data': { 'reason': 'cancellation reason', 'status': 'active', "cancellationOf": "lot", "relatedLot": self.initial_lots[0]['id'] }}) ===================================================================== Found 7 duplicate lines in the following files: Between lines 1171 and 1177 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2282 and 2288 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 555 and 561 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1184 and 1190 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2295 and 2301 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {'data': { 'title': 'complaint title', 'description': 'complaint description', 'author': test_organization, 'status': 'claim' }}) self.assertEqual(response.status, '201 Created') ===================================================================== Found 7 duplicate lines in the following files: Between lines 606 and 613 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1275 and 1282 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2413 and 2420 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"satisfied": True, "status": "resolved"}}) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['data']["status"], "resolved") # And try sign contract again dateSigned = get_now().isoformat() response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( ===================================================================== Found 7 duplicate lines in the following files: Between lines 1345 and 1353 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1367 and 1375 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, "200 OK") self.assertEqual(response.json['data']['status'], 'cancelled') self.assertNotIn('mergedInto', response.json['data']) # Check main contract response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) self.assertEqual(response.status, "200 OK") self.assertEqual(len(response.json['data']), 3) ===================================================================== Found 7 duplicate lines in the following files: Between lines 209 and 216 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 278 and 285 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 349 and 356 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 48 and 55 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) ===================================================================== Found 7 duplicate lines in the following files: Between lines 565 and 571 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1086 and 1092 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1558 and 1564 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Update complaintPeriod for additional award tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} ===================================================================== Found 7 duplicate lines in the following files: Between lines 2789 and 2795 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2829 and 2835 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2943 and 2949 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2971 and 2977 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2989 and 2995 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3018 and 3024 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, '404 Not Found') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['status'], 'error') self.assertEqual(response.json['errors'], [ {u'description': u'Not Found', u'location': u'url', u'name': u'contract_id'} ]) ===================================================================== Found 7 duplicate lines in the following files: Between lines 2478 and 2484 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 379 and 385 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 467 and 473 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Update complaintPeriod for additional award tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now + timedelta(days=1)).isoformat(), "endDate": (now + timedelta(days=1)).isoformat()} ===================================================================== Found 7 duplicate lines in the following files: Between lines 2953 and 2959 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3109 and 3115 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3263 and 3269 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, '404 Not Found') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['status'], 'error') self.assertEqual(response.json['errors'], [ {u'description': u'Not Found', u'location': u'body', u'name': u'file'} ]) ===================================================================== Found 7 duplicate lines in the following files: Between lines 69 and 76 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 124 and 131 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 177 and 184 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1493 and 1500 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 823 and 830 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 887 and 894 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py status=422) self.assertEqual(response.status, '422 Unprocessable Entity') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "additionalAwardIDs", ===================================================================== Found 7 duplicate lines in the following files: Between lines 2495 and 2502 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2517 and 2524 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 480 and 487 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1573 and 1580 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"dateSigned": dateSigned}}, status=422) self.assertEqual(response.status, '422 Unprocessable Entity') self.assertIn("Contract signature date should be after additional awards complaint period end date", response.json['errors'][0]['description'][0]) tender = self.db.get(self.tender_id) now = get_now() ===================================================================== Found 7 duplicate lines in the following files: Between lines 411 and 418 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2424 and 2431 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.json['data']['status'], 'active') self.assertEqual(response.json['data']['dateSigned'], dateSigned) def test_additional_awards_dateSigned(self): """ Try set dateSigned before end complaint period for additional awards """ authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards ===================================================================== Found 7 duplicate lines in the following files: Between lines 2384 and 2390 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1246 and 1252 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2322 and 2328 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2337 and 2343 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 578 and 584 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1209 and 1215 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2185 and 2192 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py status=403) self.assertEqual(response.status, '403 Forbidden') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "data", ===================================================================== Found 7 duplicate lines in the following files: Between lines 2586 and 2592 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2596 and 2602 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, '422 Unprocessable Entity') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['status'], 'error') self.assertEqual(response.json['errors'], [ {u'description': u'Data not available', u'location': u'body', u'name': u'data'} ]) ===================================================================== Found 7 duplicate lines in the following files: Between lines 2455 and 2462 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1954 and 1961 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2030 and 2037 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2157 and 2164 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2257 and 2264 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2107 and 2114 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Merge contracts response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, contract_response.json['data'][0]['id'], self.tender_token), {"data": {"additionalAwardIDs": first_additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, contract_response.json['data'][2]['id'], self.tender_token), ===================================================================== Found 7 duplicate lines in the following files: Between lines 2798 and 2804 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2838 and 2844 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2859 and 2865 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2934 and 2940 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2962 and 2968 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2980 and 2986 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3008 and 3014 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, '404 Not Found') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['status'], 'error') self.assertEqual(response.json['errors'], [ {u'description': u'Not Found', u'location': u'url', u'name': u'tender_id'} ]) ===================================================================== Found 8 duplicate lines in the following files: Between lines 1337 and 1347 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 676 and 686 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {'data': {'status': 'cancelled'}}) self.assertEqual(response.status, "200 OK") # Check cancel award response = self.app.get('/tenders/{}/contracts/{}?acc_token'.format( self.tender_id, second_contract['id'], self.tender_token)) self.assertEqual(response.status, "200 OK") self.assertEqual(response.json['data']['status'], 'cancelled') self.assertNotIn('mergedInto', response.json['data']) ===================================================================== Found 8 duplicate lines in the following files: Between lines 1781 and 1791 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1342 and 1352 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.get('/tenders/{}/contracts/{}?acc_token'.format( self.tender_id, second_contract['id'], self.tender_token)) self.assertEqual(response.status, "200 OK") self.assertEqual(response.json['data']['status'], 'cancelled') self.assertNotIn('mergedInto', response.json['data']) # Check main contract response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) self.assertEqual(response.status, "200 OK") ===================================================================== Found 8 duplicate lines in the following files: Between lines 2688 and 2695 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 556 and 563 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py 'title': 'complaint title', 'description': 'complaint description', 'author': test_organization, 'status': 'claim' }}) self.assertEqual(response.status, '201 Created') complaint = response.json['data'] owner_token = response.json['access']['token'] ===================================================================== Found 8 duplicate lines in the following files: Between lines 554 and 561 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2281 and 2288 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1170 and 1177 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.post_json('/tenders/{}/awards/{}/complaints'.format(self.tender_id, second_contract['awardID']), {'data': { 'title': 'complaint title', 'description': 'complaint description', 'author': test_organization, 'status': 'claim' }}) self.assertEqual(response.status, '201 Created') ===================================================================== Found 8 duplicate lines in the following files: Between lines 787 and 794 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 138 and 145 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 85 and 92 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 29 and 36 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], ===================================================================== Found 8 duplicate lines in the following files: Between lines 1586 and 1594 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 491 and 499 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": dateSigned}}) self.assertEqual(response.status, '200 OK') self.assertEqual(response.json['data']['dateSigned'], dateSigned) ===================================================================== Found 8 duplicate lines in the following files: Between lines 896 and 905 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 832 and 841 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py } ]) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format( self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] self.assertNotIn('additionalAwardIDs', first_contract) self.assertNotIn('mergedInto', second_contract) self.assertNotEqual(second_contract['status'], 'merged') ===================================================================== Found 8 duplicate lines in the following files: Between lines 1492 and 1500 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 886 and 894 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 822 and 830 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"additionalAwardIDs": additionalAwardIDs}}, status=422) self.assertEqual(response.status, '422 Unprocessable Entity') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "additionalAwardIDs", ===================================================================== Found 9 duplicate lines in the following files: Between lines 2493 and 2502 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 478 and 487 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1571 and 1580 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": dateSigned}}, status=422) self.assertEqual(response.status, '422 Unprocessable Entity') self.assertIn("Contract signature date should be after additional awards complaint period end date", response.json['errors'][0]['description'][0]) tender = self.db.get(self.tender_id) now = get_now() ===================================================================== Found 9 duplicate lines in the following files: Between lines 3119 and 3128 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3140 and 3149 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(doc_id, response.json["data"]["id"]) key = response.json["data"]["url"].split('?')[-1] response = self.app.get('/tenders/{}/contracts/{}/documents/{}?{}'.format( self.tender_id, self.contract_id, doc_id, key)) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/msword') self.assertEqual(response.content_length, 8) ===================================================================== Found 9 duplicate lines in the following files: Between lines 3035 and 3043 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3229 and 3237 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py def test_create_tender_contract_document(self): response = self.app.post('/tenders/{}/contracts/{}/documents'.format( self.tender_id, self.contract_id), upload_files=[('file', 'name.doc', 'content')]) self.assertEqual(response.status, '201 Created') self.assertEqual(response.content_type, 'application/json') doc_id = response.json["data"]['id'] self.assertIn(doc_id, response.headers['Location']) self.assertEqual('name.doc', response.json["data"]["title"]) key = response.json["data"]["url"].split('?')[-1] ===================================================================== Found 9 duplicate lines in the following files: Between lines 1194 and 1202 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2305 and 2313 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Update complaintPeriod for awards tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][2]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} ===================================================================== Found 9 duplicate lines in the following files: Between lines 403 and 412 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1114 and 1123 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": dateSigned, "status": "active"}}) self.assertEqual(response.status, '200 OK') self.assertEqual(response.json['data']['status'], 'active') self.assertEqual(response.json['data']['dateSigned'], dateSigned) ===================================================================== Found 10 duplicate lines in the following files: Between lines 1224 and 1234 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2399 and 2409 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1261 and 1271 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 593 and 603 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2352 and 2362 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"status": "answered", "resolutionType": "resolved", "resolution": "resolution text " * 2} }) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['data']["status"], "answered") self.assertEqual(response.json['data']["resolutionType"], "resolved") self.assertEqual(response.json['data']["resolution"], "resolution text " * 2) response = self.app.patch_json( ===================================================================== Found 10 duplicate lines in the following files: Between lines 566 and 576 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 486 and 495 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 398 and 407 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), ===================================================================== Found 10 duplicate lines in the following files: Between lines 3214 and 3223 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2875 and 2884 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Create award response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': { 'suppliers': [test_organization], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'lotID': self.initial_lots[0]['id'] }}) award = response.json['data'] self.award_id = award['id'] self.app.patch_json('/tenders/{}/awards/{}'.format(self.tender_id, self.award_id), {"data": {"status": "active"}}) ===================================================================== Found 10 duplicate lines in the following files: Between lines 245 and 256 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1026 and 1037 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1715 and 1726 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Set status active for first contract response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {'data': {'status': 'active'}}) self.assertEqual(response.json['data']['status'], 'active') # and check tender status response = self.app.get('/tenders/{}'.format(self.tender_id)) self.assertEqual(response.json['data']['status'], 'complete') ===================================================================== Found 10 duplicate lines in the following files: Between lines 308 and 318 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 239 and 249 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # set stand still period tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Set status active for first contract response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( ===================================================================== Found 11 duplicate lines in the following files: Between lines 1032 and 1045 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 320 and 333 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {'data': {'status': 'active'}}) self.assertEqual(response.json['data']['status'], 'active') # and check tender status response = self.app.get('/tenders/{}'.format(self.tender_id)) self.assertEqual(response.json['data']['status'], 'complete') def test_standstill_period(self): """ Create two awards and merged them and try set status active for main contract while additional award has stand still period """ authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards ===================================================================== Found 11 duplicate lines in the following files: Between lines 3170 and 3181 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3291 and 3302 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py def test_patch_tender_contract_document(self): response = self.app.post('/tenders/{}/contracts/{}/documents'.format( self.tender_id, self.contract_id), upload_files=[('file', 'name.doc', 'content')]) self.assertEqual(response.status, '201 Created') self.assertEqual(response.content_type, 'application/json') doc_id = response.json["data"]['id'] self.assertIn(doc_id, response.headers['Location']) response = self.app.patch_json('/tenders/{}/contracts/{}/documents/{}'.format(self.tender_id, self.contract_id, doc_id), {"data": {"description": "document description"}}) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(doc_id, response.json["data"]["id"]) ===================================================================== Found 11 duplicate lines in the following files: Between lines 593 and 604 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1224 and 1235 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"status": "answered", "resolutionType": "resolved", "resolution": "resolution text " * 2} }) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['data']["status"], "answered") self.assertEqual(response.json['data']["resolutionType"], "resolved") self.assertEqual(response.json['data']["resolution"], "resolution text " * 2) response = self.app.patch_json( '/tenders/{}/awards/{}/complaints/{}?acc_token={}'.format(self.tender_id, second_contract['awardID'], ===================================================================== Found 12 duplicate lines in the following files: Between lines 1275 and 1289 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 606 and 620 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"satisfied": True, "status": "resolved"}}) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['data']["status"], "resolved") # And try sign contract again dateSigned = get_now().isoformat() response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": dateSigned, "status": "active"}}) self.assertEqual(response.json['data']['status'], 'active') self.assertEqual(response.json['data']['dateSigned'], dateSigned) def test_cancel_award(self): ===================================================================== Found 12 duplicate lines in the following files: Between lines 1195 and 1207 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1107 and 1118 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1579 and 1590 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][2]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), ===================================================================== Found 13 duplicate lines in the following files: Between lines 2383 and 2396 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1245 and 1258 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"dateSigned": get_now().isoformat(), "status": "active"}}, status=403) self.assertEqual(response.status, '403 Forbidden') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "data", "description": "Can't sign contract before reviewing all additional complaints" } ]) # Lets resolve second complaint response = self.app.patch_json( ===================================================================== Found 13 duplicate lines in the following files: Between lines 1169 and 1182 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2280 and 2293 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Create complaint on first additional award response = self.app.post_json('/tenders/{}/awards/{}/complaints'.format(self.tender_id, second_contract['awardID']), {'data': { 'title': 'complaint title', 'description': 'complaint description', 'author': test_organization, 'status': 'claim' }}) self.assertEqual(response.status, '201 Created') second_award_complaint = response.json['data'] second_award_complaint_owner_token = response.json['access']['token'] # Create complaint on second additional award response = self.app.post_json( ===================================================================== Found 13 duplicate lines in the following files: Between lines 1708 and 1723 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2051 and 2066 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py self.assertEqual(fourth_contract["status"], "merged") # set stand still period tender = self.db.get(self.tender_id) now = get_now() for award in tender['awards']: award['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Set status active for first contract response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {'data': {'status': 'active'}}) self.assertEqual(response.json['data']['status'], 'active') ===================================================================== Found 13 duplicate lines in the following files: Between lines 1243 and 1255 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2319 and 2331 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2334 and 2346 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 575 and 587 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1206 and 1218 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": get_now().isoformat(), "status": "active"}}, status=403) self.assertEqual(response.status, '403 Forbidden') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "data", "description": "Can't sign contract before reviewing all additional complaints" } ]) ===================================================================== Found 14 duplicate lines in the following files: Between lines 1795 and 1813 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1356 and 1374 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # Cancel second additional award response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, third_contract['awardID'], self.tender_token), {'data': {'status': 'cancelled'}}) self.assertEqual(response.status, "200 OK") # Check second cancel award response = self.app.get('/tenders/{}/contracts/{}?acc_token'.format( self.tender_id, third_contract['id'], self.tender_token)) self.assertEqual(response.status, "200 OK") self.assertEqual(response.json['data']['status'], 'cancelled') self.assertNotIn('mergedInto', response.json['data']) # Check main contract response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) self.assertEqual(response.status, "200 OK") ===================================================================== Found 14 duplicate lines in the following files: Between lines 2231 and 2246 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2131 and 2146 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2082 and 2097 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2004 and 2019 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1928 and 1943 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1850 and 1865 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1667 and 1682 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1605 and 1620 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1462 and 1477 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1388 and 1403 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1126 and 1141 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1043 and 1058 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 978 and 993 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1730 and 1745 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1291 and 1306 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1515 and 1530 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2429 and 2444 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards ===================================================================== Found 15 duplicate lines in the following files: Between lines 1710 and 1726 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1021 and 1037 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py # set stand still period tender = self.db.get(self.tender_id) now = get_now() for award in tender['awards']: award['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Set status active for first contract response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {'data': {'status': 'active'}}) self.assertEqual(response.json['data']['status'], 'active') # and check tender status response = self.app.get('/tenders/{}'.format(self.tender_id)) self.assertEqual(response.json['data']['status'], 'complete') ===================================================================== Found 16 duplicate lines in the following files: Between lines 908 and 924 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 259 and 275 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 190 and 206 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py """ Create two awards and merged them """ authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': { 'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0]['relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], ===================================================================== Found 16 duplicate lines in the following files: Between lines 1202 and 1218 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 571 and 587 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py "endDate": (now - timedelta(days=1)).isoformat()} self.db.save(tender) # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": get_now().isoformat(), "status": "active"}}, status=403) self.assertEqual(response.status, '403 Forbidden') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "data", "description": "Can't sign contract before reviewing all additional complaints" } ]) ===================================================================== Found 17 duplicate lines in the following files: Between lines 385 and 403 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1094 and 1112 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py "endDate": (now + timedelta(days=1)).isoformat()} self.db.save(tender) dateSigned = get_now().isoformat() # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"status": "active"}}, status=403) self.assertEqual(response.status, '403 Forbidden') self.assertIn("Can't sign contract before stand-still additional awards period end", response.json['errors'][0]['description']) tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} ===================================================================== Found 17 duplicate lines in the following files: Between lines 473 and 491 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1566 and 1584 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py "endDate": (now + timedelta(days=1)).isoformat()} self.db.save(tender) dateSigned = get_now().isoformat() # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": dateSigned}}, status=422) self.assertEqual(response.status, '422 Unprocessable Entity') self.assertIn("Contract signature date should be after additional awards complaint period end date", response.json['errors'][0]['description'][0]) tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} ===================================================================== Found 21 duplicate lines in the following files: Between lines 1289 and 1312 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1728 and 1751 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py def test_cancel_award(self): """ Create two awards and merged them and then cancel both """ authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts ===================================================================== Found 21 duplicate lines in the following files: Between lines 2429 and 2452 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1928 and 1951 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2004 and 2027 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2082 and 2105 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2131 and 2154 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2231 and 2254 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts contract_response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_additionalAwardIDs = [awards_response[1].json['data']['id']] ===================================================================== Found 21 duplicate lines in the following files: Between lines 2427 and 2450 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1513 and 1536 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py def test_additional_awards_dateSigned(self): """ Try set dateSigned before end complaint period for additional awards """ authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts ===================================================================== Found 22 duplicate lines in the following files: Between lines 138 and 162 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 85 and 109 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 29 and 53 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0][ 'relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], 'lotID': self.initial_bids[0]['lotValues'][1][ 'relatedLot']}}) first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization ===================================================================== Found 23 duplicate lines in the following files: Between lines 3098 and 3122 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 3252 and 3276 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py def test_put_tender_contract_document(self): response = self.app.post('/tenders/{}/contracts/{}/documents'.format( self.tender_id, self.contract_id), upload_files=[('file', 'name.doc', 'content')]) self.assertEqual(response.status, '201 Created') self.assertEqual(response.content_type, 'application/json') doc_id = response.json["data"]['id'] self.assertIn(doc_id, response.headers['Location']) response = self.app.put('/tenders/{}/contracts/{}/documents/{}'.format(self.tender_id, self.contract_id, doc_id), status=404, upload_files=[('invalid_name', 'name.doc', 'content')]) self.assertEqual(response.status, '404 Not Found') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['status'], 'error') self.assertEqual(response.json['errors'], [ {u'description': u'Not Found', u'location': u'body', u'name': u'file'} ]) response = self.app.put('/tenders/{}/contracts/{}/documents/{}'.format( self.tender_id, self.contract_id, doc_id), upload_files=[('file', 'name.doc', 'content2')]) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(doc_id, response.json["data"]["id"]) key = response.json["data"]["url"].split('?')[-1] ===================================================================== Found 24 duplicate lines in the following files: Between lines 868 and 894 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 804 and 830 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] # Active two awards self.app.authorization = authorization self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, second_award_id, self.tender_token), {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] # Try merge first contract to second additionalAwardIDs = [second_contract['awardID']] response = self.app.patch_json( '/tenders/{}/contracts/{}?acc_token={}'.format(self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}, status=422) self.assertEqual(response.status, '422 Unprocessable Entity') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "additionalAwardIDs", ===================================================================== Found 26 duplicate lines in the following files: Between lines 446 and 479 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 358 and 391 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') response = self.app.get('/tenders/{}/contracts?acc_token={}'.format( self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract['id'], second_contract['mergedInto']) self.assertEqual(second_contract['status'], 'merged') # Update complaintPeriod for additional award tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now + timedelta(days=1)).isoformat(), "endDate": (now + timedelta(days=1)).isoformat()} self.db.save(tender) dateSigned = get_now().isoformat() # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), ===================================================================== Found 27 duplicate lines in the following files: Between lines 2334 and 2362 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1206 and 1234 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"dateSigned": get_now().isoformat(), "status": "active"}}, status=403) self.assertEqual(response.status, '403 Forbidden') self.assertEqual(response.json['errors'], [ { "location": "body", "name": "data", "description": "Can't sign contract before reviewing all additional complaints" } ]) # Lets resolve first complaint response = self.app.patch_json( '/tenders/{}/awards/{}/complaints/{}?acc_token={}'.format(self.tender_id, second_contract['awardID'], second_award_complaint['id'], self.tender_token), {"data": {"status": "answered", "resolutionType": "resolved", "resolution": "resolution text " * 2} }) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['data']["status"], "answered") self.assertEqual(response.json['data']["resolutionType"], "resolved") self.assertEqual(response.json['data']["resolution"], "resolution text " * 2) response = self.app.patch_json( ===================================================================== Found 28 duplicate lines in the following files: Between lines 259 and 290 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 190 and 221 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py """ Create two awards and merged them """ authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': { 'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0]['relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], 'lotID': self.initial_bids[0]['lotValues'][1]['relatedLot']}}) first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, second_award_id, self.tender_token), {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] ===================================================================== Found 30 duplicate lines in the following files: Between lines 138 and 171 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 85 and 118 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0][ 'relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], 'lotID': self.initial_bids[0]['lotValues'][1][ 'relatedLot']}}) first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization self.app.patch_json( '/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) self.app.patch_json( '/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, second_award_id, self.tender_token), {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] ===================================================================== Found 34 duplicate lines in the following files: Between lines 1388 and 1429 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1126 and 1167 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1043 and 1084 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 978 and 1019 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1291 and 1332 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1515 and 1556 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID'], third_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') # Get contracts and check fields response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract["id"], second_contract["mergedInto"]) self.assertEqual(first_contract["id"], third_contract["mergedInto"]) self.assertEqual(second_contract["status"], "merged") self.assertEqual(third_contract["status"], "merged") ===================================================================== Found 35 duplicate lines in the following files: Between lines 1605 and 1646 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1667 and 1708 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1850 and 1891 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1730 and 1771 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts contract_response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) additionalAwardIDs = [award_response.json['data']['id'] for award_response in awards_response[1:]] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, contract_response.json['data'][0]['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') # Get contracts and check fields response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract, fourth_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract["id"], second_contract["mergedInto"]) self.assertEqual(first_contract["id"], third_contract["mergedInto"]) self.assertEqual(first_contract["id"], fourth_contract["mergedInto"]) self.assertEqual(second_contract["status"], "merged") self.assertEqual(third_contract["status"], "merged") self.assertEqual(fourth_contract["status"], "merged") ===================================================================== Found 36 duplicate lines in the following files: Between lines 1388 and 1432 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1291 and 1335 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID'], third_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') # Get contracts and check fields response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract["id"], second_contract["mergedInto"]) self.assertEqual(first_contract["id"], third_contract["mergedInto"]) self.assertEqual(second_contract["status"], "merged") self.assertEqual(third_contract["status"], "merged") # Cancel additional award response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( ===================================================================== Found 38 duplicate lines in the following files: Between lines 331 and 377 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 191 and 237 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': { 'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0]['relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], 'lotID': self.initial_bids[0]['lotValues'][1]['relatedLot']}}) first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, second_award_id, self.tender_token), {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') response = self.app.get('/tenders/{}/contracts?acc_token={}'.format( self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract['id'], second_contract['mergedInto']) self.assertEqual(second_contract['status'], 'merged') ===================================================================== Found 40 duplicate lines in the following files: Between lines 2231 and 2278 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2131 and 2178 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2004 and 2051 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1928 and 1975 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 2429 and 2476 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts contract_response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_additionalAwardIDs = [awards_response[1].json['data']['id']] second_additionalAwardIDs = [awards_response[3].json['data']['id']] # Merge contracts response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, contract_response.json['data'][0]['id'], self.tender_token), {"data": {"additionalAwardIDs": first_additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, contract_response.json['data'][2]['id'], self.tender_token), {"data": {"additionalAwardIDs": second_additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') # Get contracts and check fields response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract, fourth_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], first_additionalAwardIDs) self.assertEqual(third_contract["additionalAwardIDs"], second_additionalAwardIDs) self.assertEqual(first_contract["id"], second_contract["mergedInto"]) self.assertEqual(third_contract["id"], fourth_contract["mergedInto"]) self.assertEqual(second_contract["status"], "merged") self.assertEqual(fourth_contract["status"], "merged") ===================================================================== Found 41 duplicate lines in the following files: Between lines 909 and 958 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 416 and 465 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 502 and 551 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 622 and 671 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 704 and 753 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': { 'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0]['relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], 'lotID': self.initial_bids[0]['lotValues'][1][ 'relatedLot']}}) first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization self.app.patch_json( '/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) self.app.patch_json( '/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, second_award_id, self.tender_token), {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') response = self.app.get('/tenders/{}/contracts?acc_token={}'.format( self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract['id'], second_contract['mergedInto']) self.assertEqual(second_contract['status'], 'merged') ===================================================================== Found 43 duplicate lines in the following files: Between lines 622 and 674 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 704 and 756 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards first_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': { 'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][0]['value'], 'lotID': self.initial_bids[0]['lotValues'][0]['relatedLot']}}) second_award_response = self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][1]['value'], 'lotID': self.initial_bids[0]['lotValues'][1][ 'relatedLot']}}) first_award = first_award_response.json['data'] first_award_id = first_award['id'] second_award = second_award_response.json['data'] second_award_id = second_award['id'] self.app.authorization = authorization self.app.patch_json( '/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, first_award_id, self.tender_token), {"data": {"status": "active"}}) self.app.patch_json( '/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, second_award_id, self.tender_token), {"data": {"status": "active"}}) response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') response = self.app.get('/tenders/{}/contracts?acc_token={}'.format( self.tender_id, self.tender_token)) first_contract, second_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract['id'], second_contract['mergedInto']) self.assertEqual(second_contract['status'], 'merged') # Cancel additional award response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( ===================================================================== Found 48 duplicate lines in the following files: Between lines 1043 and 1100 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py Between lines 1515 and 1572 in /data/kroman0/src/openprocurement/src/openprocurement.api/src/openprocurement/api/tests/contract.py authorization = self.app.authorization self.app.authorization = ('Basic', ('token', '')) # set admin role # create two awards awards_response = list() for i in range(len(self.initial_lots)): awards_response.append( self.app.post_json('/tenders/{}/awards'.format(self.tender_id), {'data': {'suppliers': self.initial_bids[0]['tenderers'], 'status': 'pending', 'bid_id': self.initial_bids[0]['id'], 'value': self.initial_bids[0]['lotValues'][i]['value'], 'lotID': self.initial_bids[0]['lotValues'][i]['relatedLot']}})) self.app.authorization = authorization # active all awards for award in awards_response: self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format( self.tender_id, award.json['data']['id'], self.tender_token), {"data": {"status": "active"}}) # get created contracts response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract = response.json['data'] additionalAwardIDs = [second_contract['awardID'], third_contract['awardID']] response = self.app.patch_json('/tenders/{}/contracts/{}?acc_token={}'.format( self.tender_id, first_contract['id'], self.tender_token), {"data": {"additionalAwardIDs": additionalAwardIDs}}) self.assertEqual(response.status, '200 OK') # Get contracts and check fields response = self.app.get('/tenders/{}/contracts?acc_token={}'.format(self.tender_id, self.tender_token)) first_contract, second_contract, third_contract = response.json['data'] self.assertEqual(first_contract["additionalAwardIDs"], additionalAwardIDs) self.assertEqual(first_contract["id"], second_contract["mergedInto"]) self.assertEqual(first_contract["id"], third_contract["mergedInto"]) self.assertEqual(second_contract["status"], "merged") self.assertEqual(third_contract["status"], "merged") # Update complaintPeriod for additional award tender = self.db.get(self.tender_id) now = get_now() tender['awards'][0]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][1]['complaintPeriod'] = {"startDate": (now - timedelta(days=1)).isoformat(), "endDate": (now - timedelta(days=1)).isoformat()} tender['awards'][2]['complaintPeriod'] = {"startDate": (now + timedelta(days=1)).isoformat(), "endDate": (now + timedelta(days=1)).isoformat()} self.db.save(tender) dateSigned = get_now().isoformat() # Try set status active for main contract response = self.app.patch_json("/tenders/{}/contracts/{}?acc_token={}".format( self.tender_id, first_contract['id'], self.tender_token), ===================================================================== Found 2296 duplicate lines in 145 blocks in 1 files Processed a total of 2762 significant (3327 raw) lines in 1 files Processing time: 0.382sec