Skip to content

Commit

Permalink
Use snitch function
Browse files Browse the repository at this point in the history
  • Loading branch information
oleksiyVeretiuk committed Dec 20, 2017
1 parent 59dbe84 commit 0a97f7d
Showing 1 changed file with 10 additions and 225 deletions.
235 changes: 10 additions & 225 deletions openprocurement/auctions/dgf/tests/tender.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

from openprocurement.api.utils import ROUTE_PREFIX
from openprocurement.api.models import get_now, SANDBOX_MODE, TZ
from openprocurement.auctions.core.tests.base import snitch
from openprocurement.auctions.dgf.models import DGFOtherAssets, DGFFinancialAssets, DGF_ID_REQUIRED_FROM
from openprocurement.auctions.dgf.tests.base import (
test_auction_data,
Expand Down Expand Up @@ -68,6 +69,15 @@ def test_edit_role(self):


class AuctionResourceTest(BaseWebTest):

from openprocurement.auctions.core.tests.blanks.tender_blanks import (
create_auction_draft_with_registry,
convoy_change_status
)

test_01_create_auction_draft_with_registry = snitch(create_auction_draft_with_registry)
test_02_convoy_change_status = snitch(convoy_change_status)

initial_data = test_auction_data
initial_organization = test_organization

Expand Down Expand Up @@ -672,51 +682,6 @@ def test_create_auction_draft(self):
auction = response.json['data']
self.assertEqual(auction['status'], 'active.tendering')

def test_create_auction_draft_with_registry(self):
data = self.initial_data.copy()
items = data.pop('items')
dgf_id = data.pop('dgfID')
data.update({'status': 'draft', 'merchandisingObject': uuid4().hex})
response = self.app.post_json('/auctions', {'data': data})
self.assertEqual(response.status, '201 Created')
self.assertEqual(response.content_type, 'application/json')
auction = response.json['data']
self.assertEqual(auction['status'], 'draft')

response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'value': {'amount': 100}}}, status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [
{u'description': u"Can't update auction in current (draft) status", u'location': u'body', u'name': u'data'}
])

response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'pending.verification'}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
auction = response.json['data']
self.assertEqual(auction['status'], 'pending.verification')

self.app.authorization = ('Basic', ('convoy', ''))
response = self.app.patch_json('/auctions/{}'.format(auction['id']),
{'data': {'items': items, 'dgfID': dgf_id}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(len(response.json['data']['items']), len(items))
self.assertEqual(response.json['data']['dgfID'], dgf_id)

response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'active.tendering'}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
auction = response.json['data']
self.assertEqual(auction['status'], 'active.tendering')

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
auction = response.json['data']
self.assertEqual(auction['status'], 'active.tendering')

def test_create_auction(self):
response = self.app.get('/auctions')
self.assertEqual(response.status, '200 OK')
Expand Down Expand Up @@ -1237,186 +1202,6 @@ def test_auction_Administrator_change(self):
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data']['mode'], u'test')

def test_convoy_change_status(self):
# Check auctions list count
self.app.authorization = ('Basic', ('broker', ''))
response = self.app.get('/auctions')
self.assertEqual(response.status, '200 OK')
self.assertEqual(len(response.json['data']), 0)

# Create auction without merchandisingObject
data = self.initial_data.copy()
data.update({'status': 'draft'})
response = self.app.post_json('/auctions', {'data': data})
self.assertEqual(response.status, '201 Created')
auction = response.json['data']
owner_token = response.json['access']['token']

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'draft' -> 'pending.verification' via owner
# without merchandisingObject
response = self.app.patch_json('/auctions/{}?acc_token={}'.format(auction['id'], owner_token), {'data': {'status': 'pending.verification'}}, status=422)
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [{u'description': u"Can't switch auction to status (pending.verification) without merchandisingObject", u'location': u'body', u'name': u'data'}])

# Create auction with items
data.update({'merchandisingObject': uuid4().hex})
response = self.app.post_json('/auctions', {'data': data})
self.assertEqual(response.status, '201 Created')
auction = response.json['data']
owner_token = response.json['access']['token']

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'draft' -> 'pending.verification' via owner
# with items
response = self.app.patch_json('/auctions/{}?acc_token={}'.format(auction['id'], owner_token),
{'data': {'status': 'pending.verification'}}, status=422)
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [
{u'description': u"This field is not required.",
u'location': u'body', u'name': u'items'}])


# Create auction with merchandisingObject and without items and without dgfID
data = self.initial_data.copy()
data.update({'status': 'draft', 'merchandisingObject': uuid4().hex})
items = data.pop('items')
dgf_id = data.pop('dgfID')
response = self.app.post_json('/auctions', {'data': data})
self.assertEqual(response.status, '201 Created')
auction = response.json['data']
owner_token = response.json['access']['token']

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'draft' -> 'pending.verification' via owner
response = self.app.patch_json('/auctions/{}?acc_token={}'.format(auction['id'], owner_token), {'data': {'status': 'pending.verification'}})
self.assertEqual(response.status, '200 OK')
auction = response.json['data']
self.assertEqual(auction['status'], 'pending.verification')

self.app.authorization = ('Basic', ('convoy', ''))
response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'pending.verification' -> 'active.tendering' via convoy without items and dgfID
response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'active.tendering'}}, status=422)
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [
{u'description': [u"This field is required."],
u'location': u'body', u'name': u'items'},
{u'description': [u"This field is required."],
u'location': u'body', u'name': u'dgfID'}])

# Add items and dgfID via convoy
response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'items': items, 'dgfID': dgf_id}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(len(response.json['data']['items']), len(items))
self.assertEqual(response.json['data']['dgfID'], dgf_id)

# Switch auction status 'pending.verification' -> 'active.tendering' via convoy
response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'active.tendering'}})
self.assertEqual(response.status, '200 OK')
auction = response.json['data']
self.assertEqual(auction['status'], 'active.tendering')

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'active.tendering' -> 'invalid' via convoy
response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'invalid'}}, status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [{u'description': u"Can't update auction in current (active.tendering) status", u'location': u'body', u'name': u'data'}])

# Create auction with merchandisingObject
self.app.authorization = ('Basic', ('broker', ''))
response = self.app.post_json('/auctions', {'data': data})
self.assertEqual(response.status, '201 Created')
auction = response.json['data']
owner_token = response.json['access']['token']

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'draft' -> 'pending.verification' via owner
response = self.app.patch_json('/auctions/{}?acc_token={}'.format(auction['id'], owner_token), {'data': {'status': 'pending.verification'}})
self.assertEqual(response.status, '200 OK')
auction = response.json['data']
self.assertEqual(auction['status'], 'pending.verification')

self.app.authorization = ('Basic', ('convoy', ''))
response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'pending.verification' -> 'invalid' via convoy
response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'invalid'}})
self.assertEqual(response.status, '200 OK')
auction = response.json['data']
self.assertEqual(auction['status'], 'invalid')

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'invalid' -> 'active.tendering' via convoy
response = self.app.patch_json('/auctions/{}'.format(auction['id']), {'data': {'status': 'active.tendering'}}, status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [{u'description': u"Can't update auction in current (invalid) status", u'location': u'body', u'name': u'data'}])

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Create auction with merchandisingObject and without items and with dgfID
self.app.authorization = ('Basic', ('broker', ''))
data = self.initial_data.copy()
data.update({'status': 'draft', 'merchandisingObject': uuid4().hex})
data.pop('items')
response = self.app.post_json('/auctions', {'data': data})
self.assertEqual(response.status, '201 Created')
auction = response.json['data']
owner_token = response.json['access']['token']

response = self.app.get('/auctions/{}'.format(auction['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data'], auction)

# Switch auction status 'draft' -> 'pending.verification' via owner with dgfID
response = self.app.patch_json('/auctions/{}?acc_token={}'.format(auction['id'], owner_token), {'data': {'status': 'pending.verification'}},
status=422)
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [
{u'description': u"This field is not required.",
u'location': u'body', u'name': u'dgfID'}])


class AuctionProcessTest(BaseAuctionWebTest):
#setUp = BaseWebTest.setUp
Expand Down

0 comments on commit 0a97f7d

Please sign in to comment.