Skip to content

Commit

Permalink
Merge 1292464 into 364966a
Browse files Browse the repository at this point in the history
  • Loading branch information
oleksiyVeretiuk committed Apr 4, 2019
2 parents 364966a + 1292464 commit 75fe781
Show file tree
Hide file tree
Showing 6 changed files with 220 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -145,27 +145,6 @@ def act(self):
log_auction_status_change(self.request, self.context, self.context.status)


class SetAuctionPeriodStartDateAction(BaseAction):
"""
Chronograph action
trigger when chronograph come in end of 'active.enquiry'
"""
validators = []

@classmethod
def demand(cls, request, context):
"""
Check if request patch auctionPeriod.startDate
"""
auction_period = request.validated['json_data'].get('auctionPeriod')
if auction_period and auction_period.get('startDate'):
return cls
return False

def act(self):
pass


class ChronographPatchAction(BaseAction):
"""
Chronograph patch actions
Expand Down
24 changes: 24 additions & 0 deletions openprocurement/auctions/geb/managers/changers/actions/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from openprocurement.auctions.geb.managers.changers.base import (
BaseAction
)


class SetAuctionPeriodStartDateAction(BaseAction):
"""
Action that will be triggered when chronograph or bridge
come to patch auction period
"""
validators = []

@classmethod
def demand(cls, request, context):
"""
Check if request patch auctionPeriod.startDate
"""
auction_period = request.validated['json_data'].get('auctionPeriod')
if auction_period and auction_period.get('startDate'):
return cls
return False

def act(self):
pass
8 changes: 6 additions & 2 deletions openprocurement/auctions/geb/managers/changers/changers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
from openprocurement.auctions.geb.managers.changers.base import (
BaseResourceChanger
)

from openprocurement.auctions.geb.managers.changers.actions.utils import (
SetAuctionPeriodStartDateAction
)
from openprocurement.auctions.geb.managers.changers.actions.auctions import (
AuctionPatchAction,
AuctionPatchActiveRectificationAction,
Expand All @@ -17,7 +21,6 @@
EndActiveEnquiryAction,
EndActiveRectificationAction,
EndActiveTenderingAction,
SetAuctionPeriodStartDateAction
)
from openprocurement.auctions.geb.managers.changers.actions.bids import (
BidActivationAction,
Expand Down Expand Up @@ -66,7 +69,8 @@ class ModuleAuctionChanger(BaseResourceChanger):
"""
actions = (
ModuleAuctionBringsResultAction,
ModuleAuctionUpdateUrlsAction
ModuleAuctionUpdateUrlsAction,
SetAuctionPeriodStartDateAction
)


Expand Down
59 changes: 59 additions & 0 deletions openprocurement/auctions/geb/tests/blanks/auction_period_patch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
from iso8601 import parse_date
from datetime import timedelta


def set_auctionPeriod_startDate_rectification(test_case):
response = test_case.app.get(test_case.ENTRYPOINTS['auction'])
auction = response.json['data']
should_start_after = auction['auctionPeriod']['shouldStartAfter']
start_date = parse_date(should_start_after) + timedelta(days=1)
auction_period = {'auctionPeriod': {'startDate': start_date.isoformat()}}

request_data = {"data": auction_period}
test_case.app.patch_json(test_case.ENTRYPOINTS['auction'], request_data)

response = test_case.app.get(test_case.ENTRYPOINTS['auction'])
auction = response.json['data']
test_case.assertEqual(start_date, parse_date(auction['auctionPeriod']['startDate']))


def set_auctionPeriod_startDate_tendering(test_case):
context = test_case.procedure.snapshot()
auction = context['auction']

entrypoint = '/auctions/{}'.format(auction['data']['id'])

response = test_case.app.get(entrypoint)
auction = response.json['data']

should_start_after = auction['auctionPeriod']['shouldStartAfter']
start_date = parse_date(should_start_after) + timedelta(days=1)
auction_period = {'auctionPeriod': {'startDate': start_date.isoformat()}}

request_data = {"data": auction_period}
test_case.app.patch_json(entrypoint, request_data)

response = test_case.app.get(entrypoint)
auction = response.json['data']
test_case.assertEqual(start_date, parse_date(auction['auctionPeriod']['startDate']))


def set_auctionPeriod_startDate_enquiring(test_case):
context = test_case.procedure.snapshot()
auction = context['auction']

entrypoint = '/auctions/{}'.format(auction['data']['id'])

response = test_case.app.get(entrypoint)
auction = response.json['data']

should_start_after = auction['auctionPeriod']['shouldStartAfter']
start_date = parse_date(should_start_after) + timedelta(days=1)
auction_period = {'auctionPeriod': {'startDate': start_date.isoformat()}}

request_data = {"data": auction_period}
test_case.app.patch_json(entrypoint, request_data)

response = test_case.app.get(entrypoint)
auction = response.json['data']
test_case.assertEqual(start_date, parse_date(auction['auctionPeriod']['startDate']))
73 changes: 73 additions & 0 deletions openprocurement/auctions/geb/tests/cases/auction_bridge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
import unittest

from openprocurement.auctions.core.tests.base import snitch
from openprocurement.auctions.geb.tests.base import (
BaseWebTest,
)

from openprocurement.auctions.geb.tests.states import (
ProcedureMachine
)
from openprocurement.auctions.geb.tests.blanks.auction_period_patch import (
set_auctionPeriod_startDate_enquiring,
set_auctionPeriod_startDate_rectification,
set_auctionPeriod_startDate_tendering
)


class AuctionBridgeTenderingTest(BaseWebTest):
test_set_auctionPeriod_startDate_tendering = snitch(set_auctionPeriod_startDate_tendering)

def setUp(self):
super(AuctionBridgeTenderingTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.tendering')

self.procedure = procedure
self.app.authorization = ('Basic', ('auction', ''))


class AuctionBridgeRectificationTest(BaseWebTest):
test_set_auctionPeriod_startDate_rectification = snitch(set_auctionPeriod_startDate_rectification)

def setUp(self):
super(AuctionBridgeRectificationTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.rectification')
context = procedure.snapshot()

self.auction = context['auction']

entrypoints = {}
entrypoints['auction'] = '/auctions/{}'.format(self.auction['data']['id'])
self.ENTRYPOINTS = entrypoints

self.app.authorization = ('Basic', ('auction', ''))


class AuctionBridgeEnquiryTest(BaseWebTest):

test_set_auctionPeriod_startDate_enquiring = snitch(set_auctionPeriod_startDate_enquiring)

def setUp(self):
super(AuctionBridgeEnquiryTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.enquiry')

self.procedure = procedure
self.app.authorization = ('Basic', ('auction', ''))


def suite():
suite = unittest.TestSuite()
# auction tests
suite.addTest(unittest.makeSuite(AuctionBridgeTenderingTest))
suite.addTest(unittest.makeSuite(AuctionBridgeEnquiryTest))
suite.addTest(unittest.makeSuite(AuctionBridgeRectificationTest))
73 changes: 58 additions & 15 deletions openprocurement/auctions/geb/tests/cases/chronograph.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
BaseWebTest,
)

from openprocurement.auctions.geb.tests.blanks.auction_period_patch import (
set_auctionPeriod_startDate_enquiring,
set_auctionPeriod_startDate_rectification,
set_auctionPeriod_startDate_tendering
)
from openprocurement.auctions.geb.tests.states import (
ProcedureMachine
)
Expand Down Expand Up @@ -48,20 +53,6 @@ def setUp(self):
self.app.authorization = ('Basic', ('chronograph', ''))


class ChronographTenderingTest(BaseWebTest):


def setUp(self):
super(ChronographTenderingTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.tendering')

self.procedure = procedure
self.app.authorization = ('Basic', ('chronograph', ''))


class ChronographEndTenderingTest(BaseWebTest):

test_tendering_switch_to_unsuccessful_only_draft_bids = snitch(tendering_switch_to_unsuccessful_only_draft_bids)
Expand Down Expand Up @@ -129,10 +120,62 @@ def setUp(self):
self.app.authorization = ('Basic', ('chronograph', ''))


class ChronographTenderingTest(BaseWebTest):
test_set_auctionPeriod_startDate_tendering = snitch(set_auctionPeriod_startDate_tendering)

def setUp(self):
super(ChronographTenderingTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.tendering')

self.procedure = procedure
self.app.authorization = ('Basic', ('chronograph', ''))


class ChronographRectificationTest(BaseWebTest):
test_set_auctionPeriod_startDate_rectification = snitch(set_auctionPeriod_startDate_rectification)

def setUp(self):
super(ChronographRectificationTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.rectification')
context = procedure.snapshot()

self.auction = context['auction']

entrypoints = {}
entrypoints['auction'] = '/auctions/{}'.format(self.auction['data']['id'])
self.ENTRYPOINTS = entrypoints

self.app.authorization = ('Basic', ('chronograph', ''))


class ChronographEnquiryTest(BaseWebTest):

test_set_auctionPeriod_startDate_enquiring = snitch(set_auctionPeriod_startDate_enquiring)

def setUp(self):
super(ChronographEnquiryTest, self).setUp()

procedure = ProcedureMachine()
procedure.set_db_connector(self.db)
procedure.toggle('active.enquiry')

self.procedure = procedure
self.app.authorization = ('Basic', ('chronograph', ''))


def suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(ChronographTenderingTest))
suite.addTest(unittest.makeSuite(ChronographReplaningAuctionTest))
suite.addTest(unittest.makeSuite(ChronographTenderingTest))
suite.addTest(unittest.makeSuite(ChronographEnquiryTest))
suite.addTest(unittest.makeSuite(ChronographRectificationTest))

return suite


Expand Down

0 comments on commit 75fe781

Please sign in to comment.