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