Showing
5 changed files
with
260 additions
and
5 deletions
| @@ -35,6 +35,7 @@ gh = git://github.com/ | @@ -35,6 +35,7 @@ gh = git://github.com/ | ||
| 35 | gh_push = git@github.com: | 35 | gh_push = git@github.com: |
| 36 | 36 | ||
| 37 | [sources] | 37 | [sources] |
| 38 | +barbecue = git ${remotes:gh}openprocurement/barbecue.git | ||
| 38 | openprocurement_client = git ${remotes:gh}openprocurement/openprocurement.client.python.git | 39 | openprocurement_client = git ${remotes:gh}openprocurement/openprocurement.client.python.git |
| 39 | robot_tests.broker.etender = git ${remotes:gh}openprocurement/robot_tests.broker.etender.git | 40 | robot_tests.broker.etender = git ${remotes:gh}openprocurement/robot_tests.broker.etender.git |
| 40 | robot_tests.broker.privatmarket = git ${remotes:gh}openprocurement/robot_tests.broker.privatmarket.git | 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,6 +282,59 @@ def test_tender_data_multiple_lots(intervals): | ||
| 282 | return t_data | 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 | def test_question_data(): | 338 | def test_question_data(): |
| 286 | return munchify({ | 339 | return munchify({ |
| 287 | "data": { | 340 | "data": { |
| @@ -390,6 +443,46 @@ def test_bid_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 | def auction_bid(): | 486 | def auction_bid(): |
| 394 | return munchify({ | 487 | return munchify({ |
| 395 | "data": { | 488 | "data": { |
| @@ -448,3 +541,53 @@ def test_item_data(): | @@ -448,3 +541,53 @@ def test_item_data(): | ||
| 448 | }, | 541 | }, |
| 449 | "quantity": fake.pyint() | 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,13 +14,16 @@ from robot.output.loggerhelper import Message | ||
| 14 | # can access them by simply importing library "service_keywords". | 14 | # can access them by simply importing library "service_keywords". |
| 15 | # Please ignore the warning given by Flake8 or other linter. | 15 | # Please ignore the warning given by Flake8 or other linter. |
| 16 | from .initial_data import ( | 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 | from .local_time import get_now, TZ | 23 | from .local_time import get_now, TZ |
| 23 | import os | 24 | import os |
| 25 | +import calendar | ||
| 26 | +from barbecue import chef | ||
| 24 | 27 | ||
| 25 | 28 | ||
| 26 | def get_current_tzdate(): | 29 | def get_current_tzdate(): |
| @@ -32,7 +32,8 @@ setup(name='op_robot_tests', | @@ -32,7 +32,8 @@ setup(name='op_robot_tests', | ||
| 32 | 'dateutils', | 32 | 'dateutils', |
| 33 | 'pytz', | 33 | 'pytz', |
| 34 | 'parse', | 34 | 'parse', |
| 35 | - 'chromedriver' | 35 | + 'chromedriver', |
| 36 | + 'barbecue' | ||
| 36 | ], | 37 | ], |
| 37 | entry_points={ | 38 | entry_points={ |
| 38 | 'console_scripts': [ | 39 | 'console_scripts': [ |
Please
register
or
login
to post a comment