Skip to content

Commit

Permalink
Add tests for contract status pending.winnerSingning
Browse files Browse the repository at this point in the history
  • Loading branch information
VDigitall committed Mar 19, 2020
1 parent 1bfaf9f commit a574902
Show file tree
Hide file tree
Showing 8 changed files with 238 additions and 2 deletions.
9 changes: 9 additions & 0 deletions src/openprocurement/tender/belowthreshold/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@
lot2_patch_tender_contract_document,
patch_tender_contract_value_vat_not_included,
patch_tender_contract_value,
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_supplier,
patch_tender_contract_status_by_others,
)


Expand Down Expand Up @@ -82,6 +85,9 @@ def setUp(self):
test_create_tender_contract_in_complete_status = snitch(create_tender_contract_in_complete_status)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_value = snitch(patch_tender_contract_value)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)


class TenderContractVATNotIncludedResourceTest(TenderContentWebTest, TenderContractResourceTestMixin):
Expand Down Expand Up @@ -119,6 +125,9 @@ def setUp(self):
self.create_award()

test_patch_tender_contract_value_vat_not_included = snitch(patch_tender_contract_value_vat_not_included)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)


class Tender2LotContractResourceTest(TenderContentWebTest):
Expand Down
168 changes: 168 additions & 0 deletions src/openprocurement/tender/belowthreshold/tests/contract_blanks.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
import jmespath
from datetime import timedelta
from copy import deepcopy
from openprocurement.api.utils import get_now
Expand Down Expand Up @@ -540,6 +541,173 @@ def patch_tender_contract_value_vat_not_included(self):
)


def patch_tender_contract_status_by_owner(self):
response = self.app.get("/tenders/{}/contracts".format(self.tender_id))
contract = response.json["data"][0]
contract_id = contract["id"]
self.set_status("complete", {"status": "active.awarded"})

# prepare contract
doc = self.db.get(self.tender_id)
for i in doc.get("awards", []):
if 'complaintPeriod' in i:
i["complaintPeriod"]["endDate"] = i["complaintPeriod"]["startDate"]
if doc['contracts'][0]['value']['valueAddedTaxIncluded']:
doc['contracts'][0]['value']['amountNet'] = str(float(doc['contracts'][0]['value']['amount']) - 1)
self.db.save(doc)

# Tender onwer
self.app.authorization = ("Basic", ("broker", ""))
response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, self.tender_token),
{"data": {"status": "pending.winnerSigning"}},
)
self.assertEqual(response.status, "200 OK")
self.assertEqual(response.json["data"]["status"], "pending.winnerSigning")

response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, self.tender_token),
{"data": {"status": "pending"}},
)
self.assertEqual(response.status, "200 OK")
self.assertEqual(response.json["data"]["status"], "pending")

response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, self.tender_token),
{"data": {"status": "active"}}
)
self.assertEqual(response.status, "200 OK")
self.assertEqual(response.json["data"]["status"], u"active")


def patch_tender_contract_status_by_supplier(self):
response = self.app.get("/tenders/{}/contracts".format(self.tender_id))
contract = response.json["data"][0]
contract_id = contract["id"]
self.set_status("complete", {"status": "active.awarded"})

doc = self.db.get(self.tender_id)
bid_id = jmespath.search("awards[?id=='{}'].bid_id".format(contract["awardID"]), doc)[0]
bid_token = jmespath.search("bids[?id=='{}'].owner_token".format(bid_id), doc)[0]

for bid in doc.get("bids", []):
if bid["id"] == bid_id and bid["status"] == "pending":
bid["status"] = "active"
for i in doc.get("awards", []):
if "complaintPeriod" in i:
i["complaintPeriod"]["endDate"] = i["complaintPeriod"]["startDate"]
if doc["contracts"][0]["value"]["valueAddedTaxIncluded"]:
doc["contracts"][0]["value"]["amountNet"] = str(float(doc["contracts"][0]["value"]["amount"]) - 1)
self.db.save(doc)

# Supplier
self.app.authorization = ("Basic", ("broker", ""))
response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, bid_token),
{"data": {"status": "pending.winnerSigning"}},
status=403
)
self.assertEqual(response.status, "403 Forbidden")
self.assertEqual(
response.json["errors"],
[{u'description': u'Supplier can change status to `pending`', u'location': u'body', u'name': u'data'}]
)

response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, bid_token),
{"data": {"value": {"amount": 10000}}},
status=403,
)
self.assertEqual(response.status, "403 Forbidden")
self.assertEqual(
response.json["errors"],
[{u'description': u'Supplier can change status to `pending`', u'location': u'body', u'name': u'data'}]
)

# Tender onwer
response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, self.tender_token),
{"data": {"status": "pending.winnerSigning"}},
)
self.assertEqual(response.status, "200 OK")
self.assertEqual(response.json["data"]["status"], "pending.winnerSigning")


# Supplier
response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, bid_token),
{"data": {"status": "active"}},
status=403
)
self.assertEqual(response.status, "403 Forbidden")
self.assertEqual(
response.json["errors"],
[{u'description': u'Supplier can change status to `pending`', u'location': u'body', u'name': u'data'}]
)

response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, bid_token),
{"data": {"value": {"amount": 10000}, "status": "pending"}}
)
self.assertEqual(response.status, "200 OK")
self.assertNotEqual(response.json["data"]["value"]["amount"], u"10000")
self.assertEqual(response.json["data"]["status"], u"pending")

response = self.app.get("/tenders/{}/contracts/{}".format(self.tender_id, contract_id))
self.assertNotEqual(response.json["data"]["value"]["amount"], u"10000")

# Tender owner
response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, self.tender_token),
{"data": {"status": "active"}}
)
self.assertEqual(response.status, "200 OK")
self.assertEqual(response.json["data"]["status"], u"active")


def patch_tender_contract_status_by_others(self):
response = self.app.get("/tenders/{}/contracts".format(self.tender_id))
contract = response.json["data"][0]
contract_id = contract["id"]
self.set_status("complete", {"status": "active.awarded"})

doc = self.db.get(self.tender_id)
for i in doc.get("awards", []):
if 'complaintPeriod' in i:
i["complaintPeriod"]["endDate"] = i["complaintPeriod"]["startDate"]
if 'value' in doc['contracts'][0] and doc['contracts'][0]['value']['valueAddedTaxIncluded']:
doc['contracts'][0]['value']['amountNet'] = str(float(doc['contracts'][0]['value']['amount']) - 1)
self.db.save(doc)
bid_id = jmespath.search("awards[?id=='{}'].bid_id".format(contract["awardID"]), doc)[0]
bid_token = jmespath.search("bids[?id!='{}'].owner_token".format(bid_id), doc)[0]

self.app.authorization = ("Basic", ("broker", ""))
response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, bid_token),
{"data": {"status": "pending.winnerSigning"}},
status=403
)
self.assertEqual(response.status, "403 Forbidden")
self.assertEqual(response.json["errors"],
[{u'description': u'Forbidden', u'location': u'url', u'name': u'permission'}])

response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, self.tender_token),
{"data": {"status": "pending.winnerSigning"}}
)
self.assertEqual(response.status, "200 OK")
self.assertEqual(response.json["data"]["status"], "pending.winnerSigning")

response = self.app.patch_json(
"/tenders/{}/contracts/{}?acc_token={}".format(self.tender_id, contract_id, bid_token),
{"data": {"status": "pending"}},
status=403
)
self.assertEqual(response.status, "403 Forbidden")
self.assertEqual(response.json["errors"],
[{u'description': u'Forbidden', u'location': u'url', u'name': u'permission'}])


def get_tender_contract(self):
self.app.authorization = ("Basic", ("token", ""))
response = self.app.post_json(
Expand Down
15 changes: 14 additions & 1 deletion src/openprocurement/tender/cfaselectionua/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
from openprocurement.tender.belowthreshold.tests.contract_blanks import (
patch_tender_contract_value_vat_not_included,
patch_tender_contract_value,
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_others,
patch_tender_contract_status_by_supplier,
)


Expand All @@ -58,6 +61,9 @@ class TenderContractResourceTest(TenderContentWebTest, TenderContractResourceTes
test_create_tender_contract_in_complete_status = snitch(create_tender_contract_in_complete_status)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_value = snitch(patch_tender_contract_value)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractVATNotIncludedResourceTest(TenderContentWebTest, TenderContractResourceTestMixin):
Expand All @@ -67,7 +73,11 @@ class TenderContractVATNotIncludedResourceTest(TenderContentWebTest, TenderContr

def update_vat_fields(self, items):
for item in items:
item["value"]["valueAddedTaxIncluded"] = False
if "lotValues" in item:
for lot_value in item["lotValues"]:
lot_value["value"]["valueAddedTaxIncluded"] = False
else:
item["value"]["valueAddedTaxIncluded"] = False

def generate_bids(self, status, start_end="start"):
self.initial_bids = deepcopy(self.initial_bids)
Expand All @@ -81,6 +91,9 @@ def calculate_agreement_contracts_value_amount(self, agreement, items):
self.update_vat_fields(agreement["contracts"])

test_patch_tender_contract_value_vat_not_included = snitch(patch_tender_contract_value_vat_not_included)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


@unittest.skip("Skip multi-lots tests")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
create_tender_contract,
patch_tender_contract_value_vat_not_included,
patch_tender_contract_value,
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_others,
patch_tender_contract_status_by_supplier,
)
from openprocurement.tender.openua.tests.contract_blanks import (
# TenderStage2EU(UA)ContractResourceTest
Expand Down Expand Up @@ -78,6 +81,9 @@ def setUp(self):
test_create_tender_contract = snitch(create_tender_contract)
test_patch_tender_contract_datesigned = snitch(patch_tender_contract_datesigned)
test_patch_tender_contract = snitch(patch_tender_contract_eu)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderStage2EUContractDocumentResourceTest(
Expand Down Expand Up @@ -147,6 +153,9 @@ def setUp(self):
test_patch_tender_contract_datesigned = snitch(patch_tender_contract_datesigned)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_value = snitch(patch_tender_contract_value)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractVATNotIncludedResourceTest(BaseCompetitiveDialogUAStage2ContentWebTest):
Expand Down Expand Up @@ -183,6 +192,9 @@ def setUp(self):
self.create_award()

test_patch_tender_contract_value_vat_not_included = snitch(patch_tender_contract_value_vat_not_included)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderStage2UAContractDocumentResourceTest(
Expand Down
8 changes: 8 additions & 0 deletions src/openprocurement/tender/esco/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
TenderContractResourceTestMixin,
TenderContractDocumentResourceTestMixin,
)
from openprocurement.tender.belowthreshold.tests.contract_blanks import (
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_others,
patch_tender_contract_status_by_supplier,
)

from openprocurement.tender.openua.tests.contract_blanks import (
# TenderContractResourceTest
Expand Down Expand Up @@ -102,6 +107,9 @@ def setUp(self):
test_create_tender_contract = snitch(create_tender_contract)
test_patch_tender_contract_datesigned = snitch(patch_tender_contract_datesigned)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractDocumentResourceTest(BaseESCOContentWebTest, TenderContractDocumentResourceTestMixin):
Expand Down
10 changes: 9 additions & 1 deletion src/openprocurement/tender/openeu/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@
TenderContractResourceTestMixin,
TenderContractDocumentResourceTestMixin,
)
from openprocurement.tender.belowthreshold.tests.contract_blanks import patch_tender_contract_value
from openprocurement.tender.belowthreshold.tests.contract_blanks import (
patch_tender_contract_value,
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_others,
patch_tender_contract_status_by_supplier,
)

from openprocurement.tender.openua.tests.contract_blanks import (
# TenderContractResourceTest
Expand Down Expand Up @@ -62,6 +67,9 @@ def setUp(self):
test_patch_tender_contract_datesigned = snitch(patch_tender_contract_datesigned)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_value = snitch(patch_tender_contract_value)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractDocumentResourceTest(BaseTenderContentWebTest, TenderContractDocumentResourceTestMixin):
Expand Down
9 changes: 9 additions & 0 deletions src/openprocurement/tender/openua/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
from openprocurement.tender.belowthreshold.tests.contract_blanks import (
patch_tender_contract_value_vat_not_included,
patch_tender_contract_value,
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_others,
patch_tender_contract_status_by_supplier,
)


Expand Down Expand Up @@ -55,6 +58,9 @@ def setUp(self):
test_patch_tender_contract_datesigned = snitch(patch_tender_contract_datesigned)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_value = snitch(patch_tender_contract_value)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractVATNotIncludedResourceTest(BaseTenderUAContentWebTest, TenderContractResourceTestMixin):
Expand Down Expand Up @@ -92,6 +98,9 @@ def setUp(self):
self.create_award()

test_patch_tender_contract_value_vat_not_included = snitch(patch_tender_contract_value_vat_not_included)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractDocumentResourceTest(BaseTenderUAContentWebTest, TenderContractDocumentResourceTestMixin):
Expand Down
9 changes: 9 additions & 0 deletions src/openprocurement/tender/openuadefense/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
from openprocurement.tender.belowthreshold.tests.contract_blanks import (
patch_tender_contract_value_vat_not_included,
patch_tender_contract_value,
patch_tender_contract_status_by_owner,
patch_tender_contract_status_by_others,
patch_tender_contract_status_by_supplier,
)


Expand Down Expand Up @@ -56,6 +59,9 @@ def setUp(self):
test_create_tender_contract = snitch(create_tender_contract)
test_patch_tender_contract = snitch(patch_tender_contract)
test_patch_tender_contract_value = snitch(patch_tender_contract_value)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractVATNotIncludedResourceTest(BaseTenderUAContentWebTest, TenderContractResourceTestMixin):
Expand Down Expand Up @@ -94,6 +100,9 @@ def setUp(self):
self.create_award()

test_patch_tender_contract_value_vat_not_included = snitch(patch_tender_contract_value_vat_not_included)
test_patch_tender_contract_status_by_owner = snitch(patch_tender_contract_status_by_owner)
test_patch_tender_contract_status_by_others = snitch(patch_tender_contract_status_by_others)
test_patch_tender_contract_status_by_supplier = snitch(patch_tender_contract_status_by_supplier)


class TenderContractDocumentResourceTest(BaseTenderUAContentWebTest, TenderContractDocumentResourceTestMixin):
Expand Down

0 comments on commit a574902

Please sign in to comment.