Showing
5 changed files
with
260 additions
and
5 deletions
... | ... | @@ -35,6 +35,7 @@ gh = git://github.com/ |
35 | 35 | gh_push = git@github.com: |
36 | 36 | |
37 | 37 | [sources] |
38 | +barbecue = git ${remotes:gh}openprocurement/barbecue.git | |
38 | 39 | openprocurement_client = git ${remotes:gh}openprocurement/openprocurement.client.python.git |
39 | 40 | robot_tests.broker.etender = git ${remotes:gh}openprocurement/robot_tests.broker.etender.git |
40 | 41 | robot_tests.broker.privatmarket = git ${remotes:gh}openprocurement/robot_tests.broker.privatmarket.git | ... | ... |
... | ... | @@ -282,6 +282,59 @@ def test_tender_data_multiple_lots(intervals): |
282 | 282 | return t_data |
283 | 283 | |
284 | 284 | |
285 | +def test_meat_tender_data(tender): | |
286 | + item_id = "edd0032574bf4402877ad5f362df225a" | |
287 | + tender.data['items'][0].id = item_id | |
288 | + tender.data.features = [ | |
289 | + { | |
290 | + "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | |
291 | + "featureOf": "tenderer", | |
292 | + "title": "Термін оплати", | |
293 | + "description": "Умови відстрочки платежу після поставки товару", | |
294 | + "enum": [ | |
295 | + { | |
296 | + "value": 0.15, | |
297 | + "title": "180 днів та більше" | |
298 | + }, | |
299 | + { | |
300 | + "value": 0.1, | |
301 | + "title": "90-179 днів", | |
302 | + }, | |
303 | + { | |
304 | + "value": 0.05, | |
305 | + "title": "30-89 днів" | |
306 | + }, | |
307 | + { | |
308 | + "value": 0, | |
309 | + "title": "Менше 30 днів" | |
310 | + } | |
311 | + ] | |
312 | + }, | |
313 | + { | |
314 | + "code": "48cfd91612c04125ab406374d7cc8d93", | |
315 | + "featureOf": "item", | |
316 | + "relatedItem": item_id, | |
317 | + "title": "Сорт", | |
318 | + "description": "Сорт продукції", | |
319 | + "enum": [ | |
320 | + { | |
321 | + "value": 0.05, | |
322 | + "title": "Вищий" | |
323 | + }, | |
324 | + { | |
325 | + "value": 0.01, | |
326 | + "title": "Перший", | |
327 | + }, | |
328 | + { | |
329 | + "value": 0, | |
330 | + "title": "Другий" | |
331 | + } | |
332 | + ] | |
333 | + } | |
334 | + ] | |
335 | + return tender | |
336 | + | |
337 | + | |
285 | 338 | def test_question_data(): |
286 | 339 | return munchify({ |
287 | 340 | "data": { |
... | ... | @@ -390,6 +443,46 @@ def test_bid_data(): |
390 | 443 | }) |
391 | 444 | |
392 | 445 | |
446 | +def test_bid_data_meat_tender(): | |
447 | + return munchify({ | |
448 | + "data": { | |
449 | + "tenderers": [ | |
450 | + { | |
451 | + "address": { | |
452 | + "countryName": "Україна", | |
453 | + "locality": "м. Вінниця", | |
454 | + "postalCode": "21100", | |
455 | + "region": "м. Вінниця", | |
456 | + "streetAddress": fake.street_address() | |
457 | + }, | |
458 | + "contactPoint": { | |
459 | + "name": fake.name(), | |
460 | + "telephone": fake.phone_number() | |
461 | + }, | |
462 | + "identifier": { | |
463 | + "scheme": u"UA-EDR", | |
464 | + "id": u"{:08d}".format(fake.pyint()), | |
465 | + }, | |
466 | + "name": fake.company() | |
467 | + } | |
468 | + ], | |
469 | + "parameters": [ | |
470 | + { | |
471 | + "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | |
472 | + "value": fake.random_element(elements=(0.15, 0.1, 0.05, 0)) | |
473 | + }, | |
474 | + { | |
475 | + "code": "48cfd91612c04125ab406374d7cc8d93", | |
476 | + "value": fake.random_element(elements=(0.05, 0.01, 0)) | |
477 | + } | |
478 | + ], | |
479 | + "value": { | |
480 | + "amount": 500 | |
481 | + } | |
482 | + } | |
483 | + }) | |
484 | + | |
485 | + | |
393 | 486 | def auction_bid(): |
394 | 487 | return munchify({ |
395 | 488 | "data": { |
... | ... | @@ -448,3 +541,53 @@ def test_item_data(): |
448 | 541 | }, |
449 | 542 | "quantity": fake.pyint() |
450 | 543 | } |
544 | + | |
545 | + | |
546 | +def test_invalid_features_data(): | |
547 | + return [ | |
548 | + { | |
549 | + "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | |
550 | + "featureOf": "tenderer", | |
551 | + "title": "Термін оплати", | |
552 | + "description": "Умови відстрочки платежу після поставки товару", | |
553 | + "enum": [ | |
554 | + { | |
555 | + "value": 0.35, | |
556 | + "title":"180 днів та більше" | |
557 | + }, | |
558 | + { | |
559 | + "value": 0.1, | |
560 | + "title": "90-179 днів", | |
561 | + }, | |
562 | + { | |
563 | + "value": 0.05, | |
564 | + "title": "30-89 днів" | |
565 | + }, | |
566 | + { | |
567 | + "value": 0, | |
568 | + "title": "Менше 30 днів" | |
569 | + } | |
570 | + ] | |
571 | + }, | |
572 | + { | |
573 | + "code": "48cfd91612c04125ab406374d7cc8d93", | |
574 | + "featureOf": "item", | |
575 | + "relatedItem": "edd0032574bf4402877ad5f362df225a", | |
576 | + "title": "Сорт", | |
577 | + "description": "Сорт продукції", | |
578 | + "enum":[ | |
579 | + { | |
580 | + "value": 0.35, | |
581 | + "title": "Вищий" | |
582 | + }, | |
583 | + { | |
584 | + "value": 0.01, | |
585 | + "title": "Перший", | |
586 | + }, | |
587 | + { | |
588 | + "value": 0, | |
589 | + "title": "Другий" | |
590 | + } | |
591 | + ] | |
592 | + } | |
593 | +] | ... | ... |
op_robot_tests/tests_files/meatTender.robot
0 → 100644
1 | +*** Settings *** | |
2 | +Library op_robot_tests.tests_files.service_keywords | |
3 | +Library String | |
4 | +Library Collections | |
5 | +Library Selenium2Library | |
6 | +Library DebugLibrary | |
7 | +Resource keywords.robot | |
8 | +Resource resource.robot | |
9 | +Suite Setup TestSuiteSetup | |
10 | +Suite Teardown Close all browsers | |
11 | + | |
12 | +*** Variables *** | |
13 | +${mode} single | |
14 | + | |
15 | +${role} viewer | |
16 | +${broker} Quinta | |
17 | + | |
18 | +*** Test Cases *** | |
19 | +Можливість оголосити однопредметний тендер з неціновим показником | |
20 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
21 | + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), | |
22 | + ${base_tender_data}= Підготовка початкових даних | |
23 | + ${tender_data}= test_meat_tender_data ${base_tender_data} | |
24 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} | |
25 | + ${LAST_MODIFICATION_DATE}= Get Current Date | |
26 | + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | |
27 | + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | |
28 | + log ${TENDER} | |
29 | + | |
30 | +Пошук однопредметного тендера по ідентифікатору | |
31 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | |
32 | + Дочекатись синхронізації з майданчиком ${viewer} | |
33 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
34 | + | |
35 | +Неможливість перевищити ліміт для нецінових критеріїв | |
36 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
37 | + ${invalid_features}= test_invalid_features_data | |
38 | + ${fail}= Викликати для учасника ${tender_owner} Внести зміни в тендер shouldfail ${TENDER['TENDER_UAID']} features ${invalid_features} | |
39 | + Log ${fail} | |
40 | + | |
41 | +###### | |
42 | +#Подання пропозицій | |
43 | + | |
44 | +Неможливість подати цінову пропозицію без нецінового показника | |
45 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
46 | + Дочекатись дати початку прийому пропозицій | |
47 | + sleep 90 | |
48 | + ${bid}= test bid data | |
49 | + Log ${bid} | |
50 | + ${biddingresponse0}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid} | |
51 | + log ${biddingresponse0} | |
52 | + | |
53 | +Подати цінову пропозицію з неціновим показником | |
54 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
55 | + ${bid}= test bid data meat tender | |
56 | + Log ${bid} | |
57 | + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
58 | + ${biddingresponse0}= Create Dictionary | |
59 | + Set To Dictionary ${biddingresponse0} resp ${resp} | |
60 | + Set To Dictionary ${USERS.users['${provider}']} biddingresponse0 ${biddingresponse0} | |
61 | + log ${resp} | |
62 | + | |
63 | +Можливість змінити неціновий показник повторної цінової пропозиції до 0 | |
64 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | |
65 | + Set To Dictionary ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]} value 0 | |
66 | + Log ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]} | |
67 | + ${fixbidparamsto0resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].biddingresponse0['resp']} | |
68 | + Set To Dictionary ${USERS.users['${provider}'].biddingresponse0} fixbidparamsto0resp ${fixbidparamsto0resp} | |
69 | + log ${fixbidparamsto0resp} | |
70 | + | |
71 | +Можливість змінити неціновий показник повторної цінової пропозиції до 0.15 | |
72 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | |
73 | + Set To Dictionary ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]} value 0.15 | |
74 | + Log ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]} | |
75 | + ${fixbidparamsto015resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].biddingresponse0['resp']} | |
76 | + Set To Dictionary ${USERS.users['${provider}'].biddingresponse0} fixbidparamsto015resp ${fixbidparamsto015resp} | |
77 | + log ${fixbidparamsto015resp} | |
78 | + | |
79 | +Подати цінову пропозицію з неціновим показником другим учасником | |
80 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | |
81 | + Дочекатись дати початку прийому пропозицій | |
82 | + ${bid}= test bid data meat tender | |
83 | + Log ${bid} | |
84 | + ${bidresponses}= Create Dictionary | |
85 | + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
86 | + Set To Dictionary ${bidresponses} resp ${resp} | |
87 | + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses} | |
88 | + log ${resp} | |
89 | + log ${USERS.users['${provider1}'].bidresponses} | |
90 | + | |
91 | +###### | |
92 | +#Аукціон | |
93 | + | |
94 | +Очікування аукціону | |
95 | + Дочекатись синхронізації з майданчиком ${tender_owner} | |
96 | + ${tender_data}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
97 | + log ${tender_data.data.auctionPeriod.startDate} | |
98 | + Дочекатись дати початку аукціону | |
99 | + sleep 1500 | |
100 | + | |
101 | +Завершення аукціону | |
102 | + Дочекатись синхронізації з майданчиком ${tender_owner} | |
103 | + ${tender_data}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
104 | + ${result}= chef ${tender_data.data.bids} ${tender_data.data.features} | |
105 | + Log Many ${result[0]} ${tender_data.data.awards[0]} | |
106 | + Log Many ${result[0].id} ${tender_data.data.awards[0].bid_id} | |
107 | + Should Be Equal ${result[0].id} ${tender_data.data.awards[0].bid_id} | ... | ... |
... | ... | @@ -14,13 +14,16 @@ from robot.output.loggerhelper import Message |
14 | 14 | # can access them by simply importing library "service_keywords". |
15 | 15 | # Please ignore the warning given by Flake8 or other linter. |
16 | 16 | from .initial_data import ( |
17 | - auction_bid, create_fake_doc, | |
18 | - test_award_data, test_bid_data, test_complaint_data, | |
19 | - test_complaint_reply_data, test_item_data, test_question_answer_data, | |
20 | - test_question_data, test_tender_data, test_tender_data_multiple_lots | |
17 | + auction_bid, create_fake_doc, test_award_data, test_bid_data, | |
18 | + test_bid_data_meat_tender, test_complaint_data, test_complaint_reply_data, | |
19 | + test_invalid_features_data, test_item_data, test_meat_tender_data, | |
20 | + test_question_answer_data, test_question_data, test_tender_data, | |
21 | + test_tender_data_multiple_lots | |
21 | 22 | ) |
22 | 23 | from .local_time import get_now, TZ |
23 | 24 | import os |
25 | +import calendar | |
26 | +from barbecue import chef | |
24 | 27 | |
25 | 28 | |
26 | 29 | def get_current_tzdate(): | ... | ... |
Please
register
or
login
to post a comment