Skip to content

Commit 4c8b616

Browse files
author
Anna Manko
committed
Added documentOf field.
1 parent 5a0be8a commit 4c8b616

11 files changed

Lines changed: 173 additions & 6 deletions

File tree

src/openprocurement/tender/belowthreshold/tests/award.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
# TenderAwardDocumentResourceTest
6565
not_found_award_document,
6666
create_tender_award_document,
67+
put_tender_json_award_document_of_document,
6768
put_tender_award_document,
6869
patch_tender_award_document,
6970
create_award_document_bot,
@@ -96,6 +97,7 @@ class TenderAwardDocumentResourceTestMixin(object):
9697
test_not_found_award_document = snitch(not_found_award_document)
9798
test_create_tender_award_document = snitch(create_tender_award_document)
9899
test_put_tender_award_document = snitch(put_tender_award_document)
100+
test_put_tender_json_award_document_of_document = snitch(put_tender_json_award_document_of_document)
99101
test_patch_tender_award_document = snitch(patch_tender_award_document)
100102
test_create_award_document_bot = snitch(create_award_document_bot)
101103
test_patch_not_author = snitch(patch_not_author)

src/openprocurement/tender/belowthreshold/tests/award_blanks.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from webtest import AppError
55
import mock
66
import dateutil.parser
7-
87
from openprocurement.api.utils import get_now
98
from openprocurement.api.constants import RELEASE_2020_04_19
109
from openprocurement.tender.core.tests.cancellation import activate_cancellation_after_2020_04_19
@@ -593,6 +592,42 @@ def create_tender_award_no_scale(self):
593592
self.assertNotIn("scale", response.json["data"]["suppliers"][0])
594593

595594

595+
def put_tender_json_award_document_of_document(self):
596+
response = self.app.post(
597+
"/tenders/{}/awards/{}/documents?acc_token={}".format(self.tender_id, self.award_id, self.tender_token),
598+
upload_files=[("file", "name.doc", "content")],
599+
)
600+
self.assertEqual(response.status, "201 Created")
601+
self.assertEqual(response.content_type, "application/json")
602+
document_id = response.json["data"]["id"]
603+
response = self.app.patch_json(
604+
"/tenders/{}/awards/{}/documents/{}?acc_token={}".format(self.tender_id, self.award_id,document_id, self.tender_token),
605+
{"data": {
606+
"title": u"укр.doc",
607+
"url": self.generate_docservice_url(),
608+
"hash": "md5:" + "0" * 32,
609+
"format": "application/msword",
610+
"documentOf": "document",
611+
"relatedItem": "0"*32,
612+
}}, status=422
613+
)
614+
self.assertEqual(response.status, "422 Unprocessable Entity")
615+
self.assertEqual(response.content_type, "application/json")
616+
self.assertEqual(
617+
response.json["errors"],
618+
[
619+
{
620+
u"location": u"body",
621+
u"name": u"relatedItem",
622+
u"description": [
623+
624+
u'relatedItem should be one of documents'
625+
]
626+
}
627+
]
628+
)
629+
630+
596631
# TenderLotAwardResourceTest
597632

598633

src/openprocurement/tender/belowthreshold/tests/base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@
9191
"procurementMethodType": "belowThreshold",
9292
"milestones": test_milestones,
9393
}
94+
95+
test_tender_document_data = {
96+
"url": "http://ds.prozorro.local/get/b97562e3f33c493297fd14dd6d8c50f0?KeyID=a8968c46&Signature=3OV7QC7f%2ByfcGTvpy0tf%2FaM%2BFRI6kkg1ImfEJlfAx5qi%2FLY7IIj7TFqtxgaPrzdd%2BWIOCe3O5Q7WhXkOdCB9CQ%3D%3D",
97+
"documentType":"tenderNotice",
98+
"title": "Notice.pdf",
99+
"hash": "md5:00000000000000000000000000000000",
100+
"format": "application/pdf"
101+
}
102+
94103
if SANDBOX_MODE:
95104
test_tender_data["procurementMethodDetails"] = "quick, accelerator=1440"
96105
test_features_tender_data = test_tender_data.copy()

src/openprocurement/tender/belowthreshold/tests/document.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
create_tender_document,
1212
put_tender_document,
1313
patch_tender_document,
14+
put_tender_json_document_of_document,
1415
# TenderDocumentWithDSResourceTest
1516
create_tender_document_error,
1617
create_tender_document_json_invalid,
@@ -33,6 +34,7 @@ class TenderDocumentWithDSResourceTestMixin(object):
3334
test_create_tender_document_json_invalid = snitch(create_tender_document_json_invalid)
3435
test_create_tender_document_json = snitch(create_tender_document_json)
3536
test_put_tender_document_json = snitch(put_tender_document_json)
37+
test_put_tender_json_document_of_document = snitch(put_tender_json_document_of_document)
3638

3739

3840
class TenderDocumentResourceTest(TenderContentWebTest, TenderDocumentResourceTestMixin):

src/openprocurement/tender/belowthreshold/tests/document_blanks.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

44
# TenderDocumentResourceTest
55
from mock import patch
6+
from copy import deepcopy
67
from openprocurement.tender.core.tests.base import bad_rs_request, srequest
8+
from openprocurement.tender.belowthreshold.tests.base import test_tender_document_data
79

810

911
def not_found(self):
@@ -888,3 +890,60 @@ def lot_patch_tender_document_json_items_none(self):
888890

889891
errors = {error["name"]: error["description"] for error in response.json["errors"]}
890892
self.assertEqual(errors["documents"][0], {"relatedItem": ["relatedItem should be one of items"]})
893+
894+
895+
def put_tender_json_document_of_document(self):
896+
document_data = deepcopy(test_tender_document_data)
897+
document_data["url"] = self.generate_docservice_url()
898+
document_data["hash"] = "md5:" + "0" * 32
899+
document_data["documentType"] = "tenderNotice"
900+
901+
response = self.app.post_json("/tenders/{}/documents?acc_token={}".format(
902+
self.tender_id, self.tender_token),{"data":document_data}, status=201)
903+
904+
self.assertEqual(response.status, "201 Created")
905+
self.assertEqual(response.content_type, "application/json")
906+
document_id = response.json["data"]["id"]
907+
908+
response = self.app.post_json(
909+
"/tenders/{}/documents?acc_token={}".format(self.tender_id, self.tender_token),
910+
{
911+
"data": {
912+
"title": u"укр.doc",
913+
"url": self.generate_docservice_url(),
914+
"hash": "md5:" + "0" * 32,
915+
"format": "application/msword",
916+
"documentOf": "document",
917+
"relatedItem": document_id,
918+
}
919+
},
920+
)
921+
self.assertEqual(response.status, "201 Created")
922+
self.assertEqual(response.content_type, "application/json")
923+
924+
response = self.app.post_json(
925+
"/tenders/{}/documents?acc_token={}".format(self.tender_id, self.tender_token),
926+
{"data": {
927+
"title": u"укр.doc",
928+
"url": self.generate_docservice_url(),
929+
"hash": "md5:" + "0" * 32,
930+
"format": "application/msword",
931+
"documentOf": "document",
932+
"relatedItem": "0"*32,
933+
}}, status=422
934+
)
935+
self.assertEqual(response.status, "422 Unprocessable Entity")
936+
self.assertEqual(response.content_type, "application/json")
937+
self.assertEqual(
938+
response.json["errors"],
939+
[
940+
{
941+
u"location": u"body",
942+
u"name": u"relatedItem",
943+
u"description": [
944+
945+
u'relatedItem should be one of documents'
946+
]
947+
}
948+
]
949+
)

src/openprocurement/tender/cfaselectionua/tests/award.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
from copy import deepcopy
44

55
from openprocurement.api.tests.base import snitch
6-
from openprocurement.tender.belowthreshold.tests.award_blanks import patch_tender_lot_award_lots_none
6+
from openprocurement.tender.belowthreshold.tests.award_blanks import (
7+
patch_tender_lot_award_lots_none,
8+
put_tender_json_award_document_of_document,
9+
)
710
from openprocurement.tender.cfaselectionua.adapters.configurator import TenderCfaSelectionUAConfigurator
811
from openprocurement.tender.cfaselectionua.tests.base import (
912
TenderContentWebTest,
@@ -53,6 +56,7 @@ class TenderAwardResourceTestMixin(object):
5356
class TenderAwardDocumentResourceTestMixin(object):
5457
test_not_found_award_document = snitch(not_found_award_document)
5558
test_create_tender_award_document = snitch(create_tender_award_document)
59+
test_put_tender_json_award_document_of_document = snitch(put_tender_json_award_document_of_document)
5660
test_put_tender_award_document = snitch(put_tender_award_document)
5761
test_patch_tender_award_document = snitch(patch_tender_award_document)
5862
test_create_award_document_bot = snitch(create_award_document_bot)

src/openprocurement/tender/cfaselectionua/tests/document.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
create_tender_document_json_invalid,
1111
create_tender_document_json,
1212
put_tender_document_json,
13+
put_tender_json_document_of_document,
1314
)
1415

1516
from openprocurement.tender.cfaselectionua.tests.document_blanks import (
@@ -34,6 +35,7 @@ class TenderDocumentWithDSResourceTestMixin(object):
3435
test_create_tender_document_json_invalid = snitch(create_tender_document_json_invalid)
3536
test_create_tender_document_json = snitch(create_tender_document_json)
3637
test_put_tender_document_json = snitch(put_tender_document_json)
38+
test_put_tender_json_document_of_document = snitch(put_tender_json_document_of_document)
3739

3840

3941
class TenderDocumentResourceTest(TenderContentWebTest, TenderDocumentResourceTestMixin):

src/openprocurement/tender/competitivedialogue/tests/stage1/document.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from openprocurement.tender.competitivedialogue.tests.stage1.document_blanks import (
1313
put_tender_document,
1414
patch_tender_document,
15+
put_tender_json_document_of_document,
1516
)
1617

1718
# _____________________________________________________________________
@@ -61,7 +62,7 @@ class DialogUADocumentResourceTest(BaseCompetitiveDialogUAContentWebTest, Tender
6162

6263
test_put_tender_document = snitch(put_tender_document)
6364
test_patch_tender_document = snitch(patch_tender_document)
64-
65+
test_put_tender_json_document_of_document =snitch(put_tender_json_document_of_document)
6566

6667
class DialogUADocumentWithDSResourceTest(DialogUADocumentResourceTest):
6768
docservice = True

src/openprocurement/tender/competitivedialogue/tests/stage1/document_blanks.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# -*- coding: utf-8 -*-
22
from email.header import Header
3+
from openprocurement.tender.belowthreshold.tests.base import test_tender_document_data
34

45

56
# DialogEUDocumentResourceTest
@@ -244,3 +245,51 @@ def patch_tender_document(self):
244245
self.assertEqual(response.content_type, "application/json")
245246
self.assertEqual(doc_id, response.json["data"]["id"])
246247
self.assertEqual("document description", response.json["data"]["description"])
248+
249+
250+
def put_tender_json_document_of_document(self):
251+
response = self.app.post(
252+
"/tenders/{}/documents?acc_token={}".format(self.tender_id, self.tender_token),
253+
upload_files=[("file", str(Header(u"укр.doc", "utf-8")), "content")],
254+
)
255+
self.assertEqual(response.status, "201 Created")
256+
self.assertEqual(response.content_type, "application/json")
257+
old_doc_id = response.json["data"]["id"]
258+
259+
response = self.app.post(
260+
"/tenders/{}/documents?acc_token={}".format(self.tender_id, self.tender_token),
261+
upload_files=[("file", str(Header(u"укр.doc", "utf-8")), "content")],
262+
)
263+
self.assertEqual(response.status, "201 Created")
264+
self.assertEqual(response.content_type, "application/json")
265+
doc_id = response.json["data"]["id"]
266+
self.assertIn(doc_id, response.headers["Location"])
267+
self.assertEqual(u"укр.doc", response.json["data"]["title"])
268+
269+
response = self.app.patch_json(
270+
"/tenders/{}/documents/{}?acc_token={}".format(self.tender_id, doc_id, self.tender_token),
271+
{"data": {"documentOf": "document", "relatedItem": doc_id}},
272+
status=200,
273+
)
274+
self.assertEqual(response.status, "200 OK")
275+
self.assertEqual(response.content_type, "application/json")
276+
response = self.app.patch_json(
277+
"/tenders/{}/documents/{}?acc_token={}".format(self.tender_id, doc_id, self.tender_token),
278+
{"data": {"documentOf": "document", "relatedItem": "0"*32,}},
279+
status=422,
280+
)
281+
self.assertEqual(response.status, "422 Unprocessable Entity")
282+
self.assertEqual(response.content_type, "application/json")
283+
self.assertEqual(
284+
response.json["errors"],
285+
[
286+
{
287+
u"location": u"body",
288+
u"name": u"relatedItem",
289+
u"description": [
290+
291+
u'relatedItem should be one of documents'
292+
]
293+
}
294+
]
295+
)

src/openprocurement/tender/competitivedialogue/tests/stage2/document.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from openprocurement.tender.competitivedialogue.tests.stage1.document_blanks import (
1313
put_tender_document,
1414
patch_tender_document,
15+
put_tender_json_document_of_document,
1516
)
1617

1718
# _____________________________________________________________________
@@ -49,7 +50,6 @@ class TenderStage2EUDocumentResourceTest(BaseCompetitiveDialogEUStage2ContentWeb
4950
test_put_tender_document = snitch(put_tender_document)
5051
test_patch_tender_document = snitch(patch_tender_document)
5152

52-
5353
class TenderStage2DocumentWithDSResourceTest(TenderStage2EUDocumentResourceTest, TenderDocumentResourceTestMixin):
5454
docservice = True
5555

@@ -65,7 +65,7 @@ class TenderStage2UADocumentResourceTest(BaseCompetitiveDialogUAStage2ContentWeb
6565

6666
test_put_tender_document = snitch(put_tender_document)
6767
test_patch_tender_document = snitch(patch_tender_document)
68-
68+
test_put_tender_json_document_of_document = snitch(put_tender_json_document_of_document)
6969

7070
class TenderStage2UADocumentWithDSResourceTest(TenderStage2UADocumentResourceTest, TenderDocumentResourceTestMixin):
7171
docservice = True

0 commit comments

Comments
 (0)