Skip to content

Commit

Permalink
Merge pull request #16 from VolVoz/fixed_bugs_in_award
Browse files Browse the repository at this point in the history
Fixed bugs in award
  • Loading branch information
vmaksymiv committed Feb 16, 2016
2 parents baa12d3 + 69ba23a commit ffce4d1
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 1 deletion.
78 changes: 78 additions & 0 deletions openprocurement/tender/limited/tests/award.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,65 @@ def test_create_tender_award(self):
self.assertEqual(response.json['data']['status'], u'cancelled')
# self.assertIn('Location', response.headers)

def test_canceling_created_award_and_create_new_one(self):
request_path = '/tenders/{}/awards?acc_token={}'.format(self.tender_id, self.tender_token)
response = self.app.post_json(request_path, {'data': {'suppliers': [test_tender_data["procuringEntity"]],
'status': 'pending'}})
self.assertEqual(response.status, '201 Created')
self.assertEqual(response.content_type, 'application/json')
award = response.json['data']
self.assertEqual(award['suppliers'][0]['name'], test_tender_data["procuringEntity"]['name'])
self.assertIn('id', award)
self.assertIn(award['id'], response.headers['Location'])

response = self.app.get(request_path)
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'][-1], award)

response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(
self.tender_id, award['id'], self.tender_token),{"data": {"status": "active"}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data']['status'], u'active')

response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(
self.tender_id, award['id'], self.tender_token), {"data": {"status": "cancelled"}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data']['status'], u'cancelled')

# Create new award
response = self.app.post_json(request_path, {'data': {'suppliers': [test_tender_data["procuringEntity"]],
'status': 'pending'}})
self.assertEqual(response.status, '201 Created')
self.assertEqual(response.content_type, 'application/json')
new_award = response.json['data']
self.assertEqual(new_award['suppliers'][0]['name'], test_tender_data["procuringEntity"]['name'])
self.assertIn('id', new_award)
self.assertIn(new_award['id'], response.headers['Location'])

# Add document to new award
response = self.app.post('/tenders/{}/awards/{}/documents?acc_token={}'.format(
self.tender_id, new_award['id'], self.tender_token), 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"])

response = self.app.get('/tenders/{}/awards/{}/documents'.format(self.tender_id, new_award['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(doc_id, response.json["data"][0]["id"])

# patch new award
response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(
self.tender_id, new_award['id'], self.tender_token),{"data": {"status": "active"}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data']['status'], u'active')

def test_patch_tender_award(self):
request_path = '/tenders/{}/awards?acc_token={}'.format(self.tender_id, self.tender_token)
response = self.app.post_json(request_path, {'data': {'suppliers': [test_tender_data["procuringEntity"]],
Expand Down Expand Up @@ -453,6 +512,25 @@ def test_create_tender_award_document(self):
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['errors'][0]["description"], "Can't add document in current (complete) tender status")

def test_create_tender_award_document_invalid(self):
response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(
self.tender_id, self.award_id, self.tender_token),{"data": {"status": "active"}})
self.assertEqual(response.status, '200 OK')

response = self.app.post('/tenders/{}/awards/{}/documents?acc_token={}'.format(
self.tender_id, self.award_id, self.tender_token), upload_files=[('file', 'name.doc', 'content')], status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.json['errors'][0]["description"], "Can't add document in current (active) award status")

response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(
self.tender_id, self.award_id, self.tender_token), {"data": {"status": "cancelled"}})
self.assertEqual(response.status, '200 OK')

response = self.app.post('/tenders/{}/awards/{}/documents?acc_token={}'.format(
self.tender_id, self.award_id, self.tender_token), upload_files=[('file', 'name.doc', 'content')], status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.json['errors'][0]["description"], "Can't add document in current (cancelled) award status")

def test_put_tender_award_document(self):
response = self.app.post('/tenders/{}/awards/{}/documents?acc_token={}'.format(
self.tender_id, self.award_id, self.tender_token), upload_files=[('file', 'name.doc', 'content')])
Expand Down
5 changes: 4 additions & 1 deletion openprocurement/tender/limited/views/award_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ def collection_post(self):
self.request.errors.add('body', 'data', 'Can\'t add document in current ({}) tender status'.format(self.request.validated['tender_status']))
self.request.errors.status = 403
return
if self.request.validated['award'].status != 'pending':
self.request.errors.add('body', 'data', 'Can\'t add document in current ({}) award status'.format(self.request.validated['award'].status))
self.request.errors.status = 403
return
document = upload_file(self.request)
self.request.validated['award'].documents.append(document)
if save_tender(self.request):
Expand Down Expand Up @@ -102,4 +106,3 @@ def patch(self):
LOGGER.info('Updated tender award document {}'.format(self.request.context.id),
extra=context_unpack(self.request, {'MESSAGE_ID': 'tender_award_document_patch'}))
return {'data': self.request.context.serialize("view")}

0 comments on commit ffce4d1

Please sign in to comment.