Showing
22 changed files
with
692 additions
and
687 deletions
| @@ -60,7 +60,7 @@ robot_tests.broker.publicportal = git ${remotes:gh}openprocurement/robot_tests.b | @@ -60,7 +60,7 @@ robot_tests.broker.publicportal = git ${remotes:gh}openprocurement/robot_tests.b | ||
| 60 | robot_tests.broker.smarttender = git ${remotes:gh}openprocurement/robot_tests.broker.smarttender.git | 60 | robot_tests.broker.smarttender = git ${remotes:gh}openprocurement/robot_tests.broker.smarttender.git |
| 61 | robot_tests.broker.uatenders = git ${remotes:gh}openprocurement/robot_tests.broker.uatenders.git | 61 | robot_tests.broker.uatenders = git ${remotes:gh}openprocurement/robot_tests.broker.uatenders.git |
| 62 | robot_tests.broker.ubiz = git ${remotes:gh}openprocurement/robot_tests.broker.ubiz.git | 62 | robot_tests.broker.ubiz = git ${remotes:gh}openprocurement/robot_tests.broker.ubiz.git |
| 63 | -robot_tests.broker.zakpro = git ${remotes:gh}openprocurement/robot_tests.broker.zakpro.git | 63 | +robot_tests.broker.zakpro = git ${remotes:gh}openprocurement/robot_tests.broker.zakpro.git |
| 64 | robot_tests.broker.proztorg = git ${remotes:gh}openprocurement/robot_tests.broker.proztorg.git | 64 | robot_tests.broker.proztorg = git ${remotes:gh}openprocurement/robot_tests.broker.proztorg.git |
| 65 | 65 | ||
| 66 | [versions] | 66 | [versions] |
| @@ -4,9 +4,9 @@ Resource resource.robot | @@ -4,9 +4,9 @@ Resource resource.robot | ||
| 4 | Suite Setup Test Suite Setup | 4 | Suite Setup Test Suite Setup |
| 5 | Suite Teardown Test Suite Teardown | 5 | Suite Teardown Test Suite Teardown |
| 6 | 6 | ||
| 7 | + | ||
| 7 | *** Variables *** | 8 | *** Variables *** |
| 8 | -${role} viewer | ||
| 9 | -${broker} Quinta | 9 | +@{used_roles} viewer |
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | *** Test Cases *** | 12 | *** Test Cases *** |
| @@ -16,7 +16,6 @@ ${broker} Quinta | @@ -16,7 +16,6 @@ ${broker} Quinta | ||
| 16 | Завантажити дані про тендер | 16 | Завантажити дані про тендер |
| 17 | Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 17 | Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
| 18 | 18 | ||
| 19 | - | ||
| 20 | ############################################################################################## | 19 | ############################################################################################## |
| 21 | # AUCTION | 20 | # AUCTION |
| 22 | ############################################################################################## | 21 | ############################################################################################## |
| @@ -29,21 +28,25 @@ ${broker} Quinta | @@ -29,21 +28,25 @@ ${broker} Quinta | ||
| 29 | Отримати дані із тендера ${viewer} auctionPeriod.startDate | 28 | Отримати дані із тендера ${viewer} auctionPeriod.startDate |
| 30 | 29 | ||
| 31 | 30 | ||
| 32 | -Очікування початку аукціону | ||
| 33 | - [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону | 31 | +Можливість дочекатися початку аукціону |
| 32 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися початку аукціону | ||
| 34 | ... viewer | 33 | ... viewer |
| 35 | ... ${USERS.users['${viewer}'].broker} | 34 | ... ${USERS.users['${viewer}'].broker} |
| 36 | Дочекатись дати початку аукціону ${viewer} | 35 | Дочекатись дати початку аукціону ${viewer} |
| 37 | 36 | ||
| 38 | -Очікування завершення аукціону | ||
| 39 | - [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону | 37 | + |
| 38 | +Можливість дочекатися завершення аукціону | ||
| 39 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону | ||
| 40 | ... viewer | 40 | ... viewer |
| 41 | ... ${USERS.users['${viewer}'].broker} | 41 | ... ${USERS.users['${viewer}'].broker} |
| 42 | [Teardown] Оновити LAST_MODIFICATION_DATE | 42 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 43 | - ${auctionEnd}= add_minutes_to_date ${USERS.users['${viewer}'].tender_data.data.auctionPeriod.startDate} 25 | ||
| 44 | - Дочекатись дати ${auctionEnd} # auction time for two bids plus 4 minutes for reliability | 43 | + Відкрити сторінку аукціону для глядача |
| 44 | + Wait Until Keyword Succeeds 61 times 30 s Page should contain Аукціон завершився | ||
| 45 | + Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників | ||
| 46 | + Close browser | ||
| 47 | + | ||
| 45 | 48 | ||
| 46 | -Відображення дати закінчення аукціону | 49 | +Відображення дати завершення аукціону |
| 47 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 50 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 48 | ... viewer | 51 | ... viewer |
| 49 | ... ${USERS.users['${viewer}'].broker} | 52 | ... ${USERS.users['${viewer}'].broker} |
| @@ -107,29 +107,18 @@ Library openprocurement_client_helper.py | @@ -107,29 +107,18 @@ Library openprocurement_client_helper.py | ||
| 107 | [Return] ${tender} | 107 | [Return] ${tender} |
| 108 | 108 | ||
| 109 | 109 | ||
| 110 | -Відняти предмети закупівлі | ||
| 111 | - [Arguments] ${username} ${tender_uaid} ${number} | ||
| 112 | - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 113 | - @{items}= Get From Object ${tender.data} items | ||
| 114 | - Log Many @{items} | ||
| 115 | - :FOR ${INDEX} IN RANGE ${number} | ||
| 116 | - \ Remove From List ${items} 0 | ||
| 117 | - Log Many @{items} | ||
| 118 | - Set_To_Object ${tender.data} items ${items} | 110 | +Додати предмет закупівлі |
| 111 | + [Arguments] ${username} ${tender_uaid} ${item} | ||
| 112 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 113 | + Append To List ${tender.data['items']} ${item} | ||
| 119 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 114 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 120 | 115 | ||
| 121 | 116 | ||
| 122 | -Додати предмети закупівлі | ||
| 123 | - [Arguments] ${username} ${tender_uaid} ${number} | 117 | +Видалити предмет закупівлі |
| 118 | + [Arguments] ${username} ${tender_uaid} ${item_id} | ||
| 124 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 119 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 125 | - @{items}= Get From Object ${tender.data} items | ||
| 126 | - Log Many @{items} | ||
| 127 | - :FOR ${INDEX} IN RANGE ${number} | ||
| 128 | - \ ${item}= test_item_data | ||
| 129 | - \ Append To List ${items} ${item} | ||
| 130 | - Log Many @{items} | ||
| 131 | - Set_To_Object ${tender.data} items ${items} | ||
| 132 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | 120 | + ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id} |
| 121 | + Remove From List ${tender.data['items']} ${item_index} | ||
| 133 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 122 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 134 | 123 | ||
| 135 | 124 | ||
| @@ -154,8 +143,8 @@ Library openprocurement_client_helper.py | @@ -154,8 +143,8 @@ Library openprocurement_client_helper.py | ||
| 154 | Подати цінову пропозицію | 143 | Подати цінову пропозицію |
| 155 | [Arguments] ${username} ${tender_uaid} ${bid} | 144 | [Arguments] ${username} ${tender_uaid} ${bid} |
| 156 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 145 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 157 | - ${lots}= Get Variable Value ${tender.data.lots} | ||
| 158 | - ${bid}= Run Keyword If ${lots} test_lots_bid_data | 146 | + ${lots}= Run Keyword If "${mode}" == "single" Get Variable Value ${tender.data.lots} |
| 147 | + ${bid}= Run Keyword If ${lots} test_bid_data multiLot | ||
| 159 | ... ELSE Set Variable ${bid} | 148 | ... ELSE Set Variable ${bid} |
| 160 | Run Keyword If ${lots} | 149 | Run Keyword If ${lots} |
| 161 | ... Run Keywords | 150 | ... Run Keywords |
| @@ -171,7 +160,7 @@ Library openprocurement_client_helper.py | @@ -171,7 +160,7 @@ Library openprocurement_client_helper.py | ||
| 171 | Змінити цінову пропозицію | 160 | Змінити цінову пропозицію |
| 172 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} | 161 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} |
| 173 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 162 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 174 | - ${lots}= Get Variable Value ${tender.data.lots} | 163 | + ${lots}= Run Keyword If "${mode}" == "single" Get Variable Value ${tender.data.lots} |
| 175 | ${fieldname}= Run Keyword If ${lots} Set Variable lotValues.0.${fieldname} | 164 | ${fieldname}= Run Keyword If ${lots} Set Variable lotValues.0.${fieldname} |
| 176 | ... ELSE Set Variable ${fieldname} | 165 | ... ELSE Set Variable ${fieldname} |
| 177 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | 166 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} |
| @@ -249,7 +238,7 @@ Library openprocurement_client_helper.py | @@ -249,7 +238,7 @@ Library openprocurement_client_helper.py | ||
| 249 | Отримати посилання на аукціон для глядача | 238 | Отримати посилання на аукціон для глядача |
| 250 | [Arguments] ${username} ${tender_uaid} | 239 | [Arguments] ${username} ${tender_uaid} |
| 251 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 240 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 252 | - ${lots}= Get Variable Value ${tender.data.lots} | 241 | + ${lots}= Run Keyword If "${mode}" == "single" Get Variable Value ${tender.data.lots} |
| 253 | ${auctionUrl}= Run Keyword If ${lots} Set Variable ${tender.data.lots[0].auctionUrl} | 242 | ${auctionUrl}= Run Keyword If ${lots} Set Variable ${tender.data.lots[0].auctionUrl} |
| 254 | ... ELSE Set Variable ${tender.data.auctionUrl} | 243 | ... ELSE Set Variable ${tender.data.auctionUrl} |
| 255 | [return] ${auctionUrl} | 244 | [return] ${auctionUrl} |
| @@ -258,7 +247,7 @@ Library openprocurement_client_helper.py | @@ -258,7 +247,7 @@ Library openprocurement_client_helper.py | ||
| 258 | Отримати посилання на аукціон для учасника | 247 | Отримати посилання на аукціон для учасника |
| 259 | [Arguments] ${username} ${tender_uaid} | 248 | [Arguments] ${username} ${tender_uaid} |
| 260 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | 249 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} |
| 261 | - ${lots}= Get Variable Value ${bid.data.lotValues} | 250 | + ${lots}= Run Keyword If "${mode}" == "single" Get Variable Value ${bid.data.lotValues} |
| 262 | ${participationUrl}= Run Keyword If ${lots} Set Variable ${bid.data.lotValues[0].participationUrl} | 251 | ${participationUrl}= Run Keyword If ${lots} Set Variable ${bid.data.lotValues[0].participationUrl} |
| 263 | ... ELSE Set Variable ${bid.data.participationUrl} | 252 | ... ELSE Set Variable ${bid.data.participationUrl} |
| 264 | [return] ${participationUrl} | 253 | [return] ${participationUrl} |
| @@ -286,50 +275,77 @@ Library openprocurement_client_helper.py | @@ -286,50 +275,77 @@ Library openprocurement_client_helper.py | ||
| 286 | ############################################################################## | 275 | ############################################################################## |
| 287 | 276 | ||
| 288 | Створити лот | 277 | Створити лот |
| 289 | - [Arguments] ${username} ${tender} ${lot} | ||
| 290 | - Log ${username} | ||
| 291 | - Log ${tender} | ||
| 292 | - Log ${lot} | ||
| 293 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 294 | - ${tender_lot}= Call Method ${USERS.users['${username}'].client} create_lot ${tender} ${lot} | ||
| 295 | - Log ${tender_lot} | ||
| 296 | - [return] ${tender_lot} | ||
| 297 | - #TODO: | ||
| 298 | - #[Arguments] ${username} ${tender_uaid} ${lot} | ||
| 299 | - #${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 278 | + [Arguments] ${username} ${tender_uaid} ${lot} |
| 279 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 280 | + ${reply}= Call Method ${USERS.users['${username}'].client} create_lot ${tender} ${lot} | ||
| 281 | + [return] ${reply} | ||
| 282 | + | ||
| 283 | + | ||
| 284 | +Отримати інформацію із лоту | ||
| 285 | + [Arguments] ${username} ${lot_id} ${field_name} | ||
| 286 | + ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${lot_id} | ||
| 287 | + Run Keyword And Return openprocurement_client.Отримати інформацію із тендера ${username} ${field_name} | ||
| 300 | 288 | ||
| 301 | 289 | ||
| 302 | Змінити лот | 290 | Змінити лот |
| 303 | - [Arguments] ${username} ${tender} ${lot} | ||
| 304 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 305 | - ${tender_lot}= Call Method ${USERS.users['${username}'].client} patch_lot ${tender} ${lot} | ||
| 306 | - Log ${tender_lot} | ||
| 307 | - [return] ${tender_lot} | ||
| 308 | - #TODO: | ||
| 309 | - #[Arguments] ${username} ${tender_uaid} ${lot} | ||
| 310 | - #${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 291 | + [Arguments] ${username} ${tender_uaid} ${lot_id} ${fieldname} ${fieldvalue} |
| 292 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 293 | + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} | ||
| 294 | + ${lot}= Create Dictionary data=${tender.data.lots[${lot_index}]} | ||
| 295 | + Set_To_Object ${lot.data} ${fieldname} ${fieldvalue} | ||
| 296 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_lot ${tender} ${lot} | ||
| 297 | + [return] ${reply} | ||
| 298 | + | ||
| 299 | + | ||
| 300 | +Додати предмет закупівлі в лот | ||
| 301 | + [Arguments] ${username} ${tender_uaid} ${lot_id} ${item} | ||
| 302 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 303 | + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} | ||
| 304 | + ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | ||
| 305 | + Set_To_Object ${item} relatedLot ${lot_id} | ||
| 306 | + Append To List ${tender.data['items']} ${item} | ||
| 307 | + Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | ||
| 308 | + | ||
| 309 | + | ||
| 310 | +Задати питання до лоту | ||
| 311 | + [Arguments] ${username} ${tender_uaid} ${lot_id} ${question} | ||
| 312 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 313 | + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} | ||
| 314 | + ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | ||
| 315 | + ${question}= test_lot_question_data ${question} ${lot_id} | ||
| 316 | + ${biddingresponse}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} | ||
| 317 | + [return] ${biddingresponse} | ||
| 311 | 318 | ||
| 312 | 319 | ||
| 313 | Завантажити документ в лот | 320 | Завантажити документ в лот |
| 314 | [Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id} | 321 | [Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id} |
| 315 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 322 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 316 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | 323 | + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} |
| 324 | + ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | ||
| 317 | ${doc}= openprocurement_client.Завантажити документ ${username} ${filepath} ${tender_uaid} | 325 | ${doc}= openprocurement_client.Завантажити документ ${username} ${filepath} ${tender_uaid} |
| 318 | ${lot_doc}= test_lot_document_data ${doc} ${lot_id} | 326 | ${lot_doc}= test_lot_document_data ${doc} ${lot_id} |
| 319 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_document ${tender} ${lot_doc} | 327 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_document ${tender} ${lot_doc} |
| 320 | - Log object data ${reply} reply | ||
| 321 | [return] ${reply} | 328 | [return] ${reply} |
| 322 | 329 | ||
| 323 | 330 | ||
| 324 | Видалити лот | 331 | Видалити лот |
| 325 | - [Arguments] ${username} ${tender} ${lot} | ||
| 326 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 327 | - ${tender_lot}= Call Method ${USERS.users['${username}'].client} delete_lot ${tender} ${lot} | ||
| 328 | - Log ${tender_lot} | ||
| 329 | - [return] ${tender_lot} | ||
| 330 | - #TODO: | ||
| 331 | - #[Arguments] ${username} ${tender_uaid} ${lot} | ||
| 332 | - #${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 332 | + [Arguments] ${username} ${tender_uaid} ${lot_id} |
| 333 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 334 | + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} | ||
| 335 | + ${lot}= Create Dictionary data=${tender.data.lots[${lot_index}]} | ||
| 336 | + ${reply}= Call Method ${USERS.users['${username}'].client} delete_lot ${tender} ${lot} | ||
| 337 | + [return] ${reply} | ||
| 338 | + | ||
| 339 | + | ||
| 340 | +Подати цінову пропозицію на лоти | ||
| 341 | + [Arguments] ${username} ${tender_uaid} ${bid} ${lots_ids} | ||
| 342 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 343 | + : FOR ${index} ${lot_id} IN ENUMERATE @{lots_ids} | ||
| 344 | + \ ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} | ||
| 345 | + \ ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | ||
| 346 | + \ Set To Dictionary ${bid.data.lotValues[${index}]} relatedLot=${lot_id} | ||
| 347 | + ${reply}= openprocurement_client.Подати цінову пропозицію ${username} ${tender_uaid} ${bid} | ||
| 348 | + [return] ${reply} | ||
| 333 | 349 | ||
| 334 | ############################################################################## | 350 | ############################################################################## |
| 335 | # Claims | 351 | # Claims |
| @@ -426,7 +442,7 @@ Library openprocurement_client_helper.py | @@ -426,7 +442,7 @@ Library openprocurement_client_helper.py | ||
| 426 | Підтвердити постачальника | 442 | Підтвердити постачальника |
| 427 | [Documentation] | 443 | [Documentation] |
| 428 | ... [Arguments] Username, tender uaid and number of the award to confirm | 444 | ... [Arguments] Username, tender uaid and number of the award to confirm |
| 429 | - ... Find tender using uaid, get data from confirm_supplier and call patch_award | 445 | + ... Find tender using uaid, create dict with confirmation data and call patch_award |
| 430 | ... [Return] Nothing | 446 | ... [Return] Nothing |
| 431 | [Arguments] ${username} ${tender_uaid} ${award_num} | 447 | [Arguments] ${username} ${tender_uaid} ${award_num} |
| 432 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 448 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| @@ -467,20 +483,6 @@ Library openprocurement_client_helper.py | @@ -467,20 +483,6 @@ Library openprocurement_client_helper.py | ||
| 467 | # Limited procurement | 483 | # Limited procurement |
| 468 | ############################################################################## | 484 | ############################################################################## |
| 469 | 485 | ||
| 470 | -Модифікувати закупівлю | ||
| 471 | - [Documentation] | ||
| 472 | - ... [Arguments] Username and tender uaid | ||
| 473 | - ... Find tender using uaid, get data from test_additional_items_data and call patch_tender | ||
| 474 | - ... [Return] Nothing | ||
| 475 | - [Arguments] ${username} ${tender_uaid} | ||
| 476 | - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 477 | - ${data}= test_additional_items_data ${tender['data']['id']} ${tender['access']['token']} | ||
| 478 | - Log ${data} | ||
| 479 | - Set To Dictionary ${USERS.users['${tender_owner}']} additional_items=${data['data']['items']} | ||
| 480 | - ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${data} | ||
| 481 | - Log ${reply} | ||
| 482 | - | ||
| 483 | - | ||
| 484 | Додати і підтвердити постачальника | 486 | Додати і підтвердити постачальника |
| 485 | [Documentation] | 487 | [Documentation] |
| 486 | ... [Arguments] Username, tender uaid and supplier data | 488 | ... [Arguments] Username, tender uaid and supplier data |
| @@ -5,8 +5,7 @@ Suite Setup Test Suite Setup | @@ -5,8 +5,7 @@ Suite Setup Test Suite Setup | ||
| 5 | Suite Teardown Test Suite Teardown | 5 | Suite Teardown Test Suite Teardown |
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | -${role} viewer | ||
| 9 | -${broker} Quinta | 8 | +@{used_roles} tender_owner viewer |
| 10 | 9 | ||
| 11 | 10 | ||
| 12 | *** Test Cases *** | 11 | *** Test Cases *** |
| @@ -42,7 +42,7 @@ Default: | @@ -42,7 +42,7 @@ Default: | ||
| 42 | Quinta: | 42 | Quinta: |
| 43 | intervals: | 43 | intervals: |
| 44 | default: | 44 | default: |
| 45 | - enquiry: [0, 2] | 45 | + enquiry: [0, 3] |
| 46 | tender: [0, 5] | 46 | tender: [0, 5] |
| 47 | openua: | 47 | openua: |
| 48 | tender: [1, 15] | 48 | tender: [1, 15] |
| @@ -70,7 +70,10 @@ DZO: | @@ -70,7 +70,10 @@ DZO: | ||
| 70 | intervals: | 70 | intervals: |
| 71 | default: | 71 | default: |
| 72 | enquiry: [0, 20] | 72 | enquiry: [0, 20] |
| 73 | - tender: [0, 15] | 73 | + tender: [0, 20] |
| 74 | + openua: | ||
| 75 | + accelerator: 720 | ||
| 76 | + tender: [0, 30] | ||
| 74 | keywords_file: dzo | 77 | keywords_file: dzo |
| 75 | roles: | 78 | roles: |
| 76 | tender_owner: DZO_Owner | 79 | tender_owner: DZO_Owner |
| @@ -84,11 +87,12 @@ Newtend: | @@ -84,11 +87,12 @@ Newtend: | ||
| 84 | provider: Newtend_Provider1 | 87 | provider: Newtend_Provider1 |
| 85 | tender_owner: Newtend_Owner | 88 | tender_owner: Newtend_Owner |
| 86 | viewer: Newtend_Viewer | 89 | viewer: Newtend_Viewer |
| 90 | + timeout_on_wait: 60 | ||
| 87 | PrivatMarket: | 91 | PrivatMarket: |
| 88 | intervals: | 92 | intervals: |
| 89 | default: | 93 | default: |
| 90 | - enquiry: [0, 2] | ||
| 91 | - tender: [0, 5] | 94 | + enquiry: [0, 15] |
| 95 | + tender: [0, 15] | ||
| 92 | keywords_file: privatmarket | 96 | keywords_file: privatmarket |
| 93 | roles: | 97 | roles: |
| 94 | provider: PrivatMarket_Provider | 98 | provider: PrivatMarket_Provider |
| @@ -109,13 +113,14 @@ Prom: | @@ -109,13 +113,14 @@ Prom: | ||
| 109 | Publicbid: | 113 | Publicbid: |
| 110 | intervals: | 114 | intervals: |
| 111 | default: | 115 | default: |
| 112 | - enquiry: [21, 15] | ||
| 113 | - tender: [1, 15] | 116 | + enquiry: [1, 10] |
| 117 | + tender: [1, 12] | ||
| 114 | keywords_file: publicbid | 118 | keywords_file: publicbid |
| 115 | roles: | 119 | roles: |
| 116 | provider: Publicbid_Provider1 | 120 | provider: Publicbid_Provider1 |
| 117 | tender_owner: Publicbid_Owner | 121 | tender_owner: Publicbid_Owner |
| 118 | viewer: Publicbid_Viewer | 122 | viewer: Publicbid_Viewer |
| 123 | + timeout_on_wait: 120 | ||
| 119 | PublicPortal: | 124 | PublicPortal: |
| 120 | keywords_file: publicportal | 125 | keywords_file: publicportal |
| 121 | roles: | 126 | roles: |
| @@ -11,6 +11,9 @@ users: | @@ -11,6 +11,9 @@ users: | ||
| 11 | Tender_Viewer: | 11 | Tender_Viewer: |
| 12 | api_key: "" | 12 | api_key: "" |
| 13 | broker: Quinta | 13 | broker: Quinta |
| 14 | + browser: firefox | ||
| 15 | + position: [0, 0] | ||
| 16 | + size: [1366, 800] | ||
| 14 | E-tender_Owner: | 17 | E-tender_Owner: |
| 15 | broker: E-tender | 18 | broker: E-tender |
| 16 | homepage: "http://bid.uat.e-tender.biz/#/" | 19 | homepage: "http://bid.uat.e-tender.biz/#/" |
| @@ -89,7 +92,7 @@ users: | @@ -89,7 +92,7 @@ users: | ||
| 89 | size: [800, 700] | 92 | size: [800, 700] |
| 90 | Newtend_Viewer: | 93 | Newtend_Viewer: |
| 91 | broker: Newtend | 94 | broker: Newtend |
| 92 | - homepage: "http://openprocurement:test@dev23.newtend.com/opc/tenders" | 95 | + homepage: "http://dev23.newtend.com/opc" |
| 93 | browser: chrome | 96 | browser: chrome |
| 94 | position: [800, 400] | 97 | position: [800, 400] |
| 95 | size: [800, 700] | 98 | size: [800, 700] |
| @@ -14,7 +14,7 @@ def create_fake_sentence(): | @@ -14,7 +14,7 @@ def create_fake_sentence(): | ||
| 14 | return fake.sentence(nb_words=10, variable_nb_words=True) | 14 | return fake.sentence(nb_words=10, variable_nb_words=True) |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | -def description_with_id(prefix, sentence): | 17 | +def field_with_id(prefix, sentence): |
| 18 | return "{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) | 18 | return "{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) |
| 19 | 19 | ||
| 20 | 20 | ||
| @@ -57,7 +57,8 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): | @@ -57,7 +57,8 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): | ||
| 57 | "contactPoint": { | 57 | "contactPoint": { |
| 58 | "name": fake.name(), | 58 | "name": fake.name(), |
| 59 | "telephone": fake.phone_number() | 59 | "telephone": fake.phone_number() |
| 60 | - } | 60 | + }, |
| 61 | + "kind": "other" | ||
| 61 | }, | 62 | }, |
| 62 | "value": { | 63 | "value": { |
| 63 | "amount": 50000.99, | 64 | "amount": 50000.99, |
| @@ -103,7 +104,7 @@ def test_tender_data_limited(intervals, procurement_method_type): | @@ -103,7 +104,7 @@ def test_tender_data_limited(intervals, procurement_method_type): | ||
| 103 | "id": "55523100-3", | 104 | "id": "55523100-3", |
| 104 | "scheme": "CPV" | 105 | "scheme": "CPV" |
| 105 | }, | 106 | }, |
| 106 | - "description": description_with_id('i', fake.sentence(nb_words=10, variable_nb_words=True)), | 107 | + "description": field_with_id('i', fake.sentence(nb_words=10, variable_nb_words=True)), |
| 107 | "id": "2dc54675d6364e2baffbc0f8e74432ac", | 108 | "id": "2dc54675d6364e2baffbc0f8e74432ac", |
| 108 | "deliveryDate": { | 109 | "deliveryDate": { |
| 109 | "endDate": (now + timedelta(days=5)).isoformat() | 110 | "endDate": (now + timedelta(days=5)).isoformat() |
| @@ -123,7 +124,7 @@ def test_tender_data_limited(intervals, procurement_method_type): | @@ -123,7 +124,7 @@ def test_tender_data_limited(intervals, procurement_method_type): | ||
| 123 | } | 124 | } |
| 124 | } | 125 | } |
| 125 | ], | 126 | ], |
| 126 | - "owner": "test.quintagroup.com", | 127 | + "mode": "test", |
| 127 | "procurementMethod": "limited", | 128 | "procurementMethod": "limited", |
| 128 | "procurementMethodType": procurement_method_type, | 129 | "procurementMethodType": procurement_method_type, |
| 129 | "procuringEntity": | 130 | "procuringEntity": |
| @@ -148,7 +149,8 @@ def test_tender_data_limited(intervals, procurement_method_type): | @@ -148,7 +149,8 @@ def test_tender_data_limited(intervals, procurement_method_type): | ||
| 148 | "legalName": u"Заклад \"Загальноосвітня школа І-ІІІ ступенів № 10 Вінницької міської ради\"", | 149 | "legalName": u"Заклад \"Загальноосвітня школа І-ІІІ ступенів № 10 Вінницької міської ради\"", |
| 149 | "scheme": u"UA-EDR" | 150 | "scheme": u"UA-EDR" |
| 150 | }, | 151 | }, |
| 151 | - "name": u"ЗОСШ #10 м.Вінниці" | 152 | + "name": u"ЗОСШ #10 м.Вінниці", |
| 153 | + "kind": "general" | ||
| 152 | }, | 154 | }, |
| 153 | "value": { | 155 | "value": { |
| 154 | "amount": 500000, | 156 | "amount": 500000, |
| @@ -194,31 +196,25 @@ def test_tender_data_multiple_items(intervals): | @@ -194,31 +196,25 @@ def test_tender_data_multiple_items(intervals): | ||
| 194 | return t_data | 196 | return t_data |
| 195 | 197 | ||
| 196 | 198 | ||
| 197 | -def test_tender_data_multiple_lots(t_data): | 199 | +def test_tender_data_multiple_lots(intervals): |
| 200 | + tender = test_tender_data(intervals) | ||
| 198 | first_lot_id = "3c8f387879de4c38957402dbdb8b31af" | 201 | first_lot_id = "3c8f387879de4c38957402dbdb8b31af" |
| 199 | - second_lot_id = "bcac8d2ceb5f4227b841a2211f5cb646" | ||
| 200 | - | ||
| 201 | - for item in t_data['data']['items'][:-1]: | ||
| 202 | - item['relatedLot'] = first_lot_id | ||
| 203 | - t_data['data']['items'][-1]['relatedLot'] = second_lot_id | ||
| 204 | - t_data['data']['lots'] = [] | ||
| 205 | - for _ in range(2): | ||
| 206 | - new_lot = test_lot_data() | ||
| 207 | - t_data['data']['lots'].append(new_lot) | ||
| 208 | - t_data['data']['lots'][0]['id'] = first_lot_id | ||
| 209 | - t_data['data']['lots'][1]['id'] = second_lot_id | ||
| 210 | - return t_data | 202 | + tender['items'][0]['relatedLot'] = first_lot_id |
| 203 | + tender['lots'] = [test_lot_data()] | ||
| 204 | + tender['lots'][0]['id'] = first_lot_id | ||
| 205 | + return tender | ||
| 211 | 206 | ||
| 212 | 207 | ||
| 213 | -def test_meat_tender_data(tender): | 208 | +def test_tender_data_meat(intervals): |
| 209 | + tender = munchify(test_tender_data(intervals)) | ||
| 214 | item_id = "edd0032574bf4402877ad5f362df225a" | 210 | item_id = "edd0032574bf4402877ad5f362df225a" |
| 215 | - tender.data['items'][0].id = item_id | ||
| 216 | - tender.data.features = [ | 211 | + tender['items'][0].id = item_id |
| 212 | + tender.features = [ | ||
| 217 | { | 213 | { |
| 218 | "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | 214 | "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", |
| 219 | "featureOf": "tenderer", | 215 | "featureOf": "tenderer", |
| 220 | - "title": "Термін оплати", | ||
| 221 | - "description": description_with_id('f', "Умови відстрочки платежу після поставки товару"), | 216 | + "title": field_with_id('f', "Термін оплати"), |
| 217 | + "description": "Умови відстрочки платежу після поставки товару", | ||
| 222 | "enum": [ | 218 | "enum": [ |
| 223 | { | 219 | { |
| 224 | "value": 0.15, | 220 | "value": 0.15, |
| @@ -242,8 +238,8 @@ def test_meat_tender_data(tender): | @@ -242,8 +238,8 @@ def test_meat_tender_data(tender): | ||
| 242 | "code": "48cfd91612c04125ab406374d7cc8d93", | 238 | "code": "48cfd91612c04125ab406374d7cc8d93", |
| 243 | "featureOf": "item", | 239 | "featureOf": "item", |
| 244 | "relatedItem": item_id, | 240 | "relatedItem": item_id, |
| 245 | - "title": "Сорт", | ||
| 246 | - "description": description_with_id('f', "Сорт продукції"), | 241 | + "title": field_with_id('f', "Сорт"), |
| 242 | + "description": "Сорт продукції", | ||
| 247 | "enum": [ | 243 | "enum": [ |
| 248 | { | 244 | { |
| 249 | "value": 0.05, | 245 | "value": 0.05, |
| @@ -263,7 +259,7 @@ def test_meat_tender_data(tender): | @@ -263,7 +259,7 @@ def test_meat_tender_data(tender): | ||
| 263 | return tender | 259 | return tender |
| 264 | 260 | ||
| 265 | 261 | ||
| 266 | -def test_question_data(lot=False): | 262 | +def test_question_data(): |
| 267 | data = munchify({ | 263 | data = munchify({ |
| 268 | "data": { | 264 | "data": { |
| 269 | "author": { | 265 | "author": { |
| @@ -287,12 +283,10 @@ def test_question_data(lot=False): | @@ -287,12 +283,10 @@ def test_question_data(lot=False): | ||
| 287 | }, | 283 | }, |
| 288 | "name": fake.company() | 284 | "name": fake.company() |
| 289 | }, | 285 | }, |
| 290 | - "description": description_with_id('q', fake.sentence(nb_words=10, variable_nb_words=True)), | ||
| 291 | - "title": fake.sentence(nb_words=6, variable_nb_words=True) | 286 | + "description": fake.sentence(nb_words=10, variable_nb_words=True), |
| 287 | + "title": field_with_id('q', fake.sentence(nb_words=6, variable_nb_words=True)) | ||
| 292 | } | 288 | } |
| 293 | }) | 289 | }) |
| 294 | - if lot: | ||
| 295 | - data = test_lot_question_data(data) | ||
| 296 | return data | 290 | return data |
| 297 | 291 | ||
| 298 | 292 | ||
| @@ -427,24 +421,6 @@ def test_submit_claim_data(claim_id): | @@ -427,24 +421,6 @@ def test_submit_claim_data(claim_id): | ||
| 427 | }) | 421 | }) |
| 428 | 422 | ||
| 429 | 423 | ||
| 430 | -def test_additional_items_data(tender_id, access_token): | ||
| 431 | - return munchify({ | ||
| 432 | - "access": { | ||
| 433 | - "token": access_token | ||
| 434 | - }, | ||
| 435 | - "data": { | ||
| 436 | - "id": tender_id, | ||
| 437 | - "items": [{ | ||
| 438 | - "unit": { | ||
| 439 | - "code": "MON", | ||
| 440 | - "name": "month" | ||
| 441 | - }, | ||
| 442 | - "quantity": 9 | ||
| 443 | - }] | ||
| 444 | - } | ||
| 445 | - }) | ||
| 446 | - | ||
| 447 | - | ||
| 448 | def test_complaint_reply_data(): | 424 | def test_complaint_reply_data(): |
| 449 | return munchify({ | 425 | return munchify({ |
| 450 | "data": { | 426 | "data": { |
| @@ -453,7 +429,7 @@ def test_complaint_reply_data(): | @@ -453,7 +429,7 @@ def test_complaint_reply_data(): | ||
| 453 | }) | 429 | }) |
| 454 | 430 | ||
| 455 | 431 | ||
| 456 | -def test_bid_data(above_threshold=False): | 432 | +def test_bid_data(mode): |
| 457 | bid = munchify({ | 433 | bid = munchify({ |
| 458 | "data": { | 434 | "data": { |
| 459 | "tenderers": [ | 435 | "tenderers": [ |
| @@ -477,23 +453,25 @@ def test_bid_data(above_threshold=False): | @@ -477,23 +453,25 @@ def test_bid_data(above_threshold=False): | ||
| 477 | }, | 453 | }, |
| 478 | "name": fake.company() | 454 | "name": fake.company() |
| 479 | } | 455 | } |
| 480 | - ], | ||
| 481 | - "value": { | ||
| 482 | - "currency": "UAH", | ||
| 483 | - "amount": 500, | ||
| 484 | - "valueAddedTaxIncluded": True | ||
| 485 | - } | 456 | + ] |
| 486 | } | 457 | } |
| 487 | }) | 458 | }) |
| 488 | - if above_threshold: | 459 | + if 'open' in mode: |
| 489 | bid.data['selfEligible'] = True | 460 | bid.data['selfEligible'] = True |
| 490 | bid.data['selfQualified'] = True | 461 | bid.data['selfQualified'] = True |
| 462 | + if mode == 'multiLot': | ||
| 463 | + bid.data.lotValues = list() | ||
| 464 | + for _ in range(2): | ||
| 465 | + bid.data.lotValues.append(test_bid_value()) | ||
| 466 | + else: | ||
| 467 | + bid.data.update(test_bid_value()) | ||
| 468 | + if mode == 'meat': | ||
| 469 | + bid.update(test_bid_params()) | ||
| 491 | return bid | 470 | return bid |
| 492 | 471 | ||
| 493 | 472 | ||
| 494 | -def test_bid_data_meat_tender(): | ||
| 495 | - bid = test_bid_data() | ||
| 496 | - bid.data.update({ | 473 | +def test_bid_params(): |
| 474 | + return munchify({ | ||
| 497 | "parameters": [ | 475 | "parameters": [ |
| 498 | { | 476 | { |
| 499 | "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | 477 | "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", |
| @@ -505,47 +483,15 @@ def test_bid_data_meat_tender(): | @@ -505,47 +483,15 @@ def test_bid_data_meat_tender(): | ||
| 505 | } | 483 | } |
| 506 | ] | 484 | ] |
| 507 | }) | 485 | }) |
| 508 | - return bid | ||
| 509 | - | ||
| 510 | 486 | ||
| 511 | -def test_lots_bid_data(): | ||
| 512 | - bid = test_bid_data() | ||
| 513 | - del bid.data.value | ||
| 514 | - bid.data.update({ | ||
| 515 | - "lotValues": [ | ||
| 516 | - { | ||
| 517 | - "value": { | ||
| 518 | - "currency": "UAH", | ||
| 519 | - "amount": fake.random_int(max=1999), | ||
| 520 | - "valueAddedTaxIncluded": True | ||
| 521 | - }, | ||
| 522 | - "relatedLot": "3c8f387879de4c38957402dbdb8b31af", | ||
| 523 | - "date": "2015-11-01T12:43:12.482645+02:00" | ||
| 524 | - }, | ||
| 525 | - { | 487 | +def test_bid_value(): |
| 488 | + return munchify({ | ||
| 526 | "value": { | 489 | "value": { |
| 527 | "currency": "UAH", | 490 | "currency": "UAH", |
| 528 | "amount": fake.random_int(max=1999), | 491 | "amount": fake.random_int(max=1999), |
| 529 | "valueAddedTaxIncluded": True | 492 | "valueAddedTaxIncluded": True |
| 530 | - }, | ||
| 531 | - "relatedLot": "bcac8d2ceb5f4227b841a2211f5cb646", | ||
| 532 | - "date": "2015-11-01T12:43:12.482645+02:00" | ||
| 533 | - } | ||
| 534 | - ] | ||
| 535 | - }) | ||
| 536 | - return bid | ||
| 537 | - | ||
| 538 | - | ||
| 539 | -def auction_bid(): | ||
| 540 | - return munchify({ | ||
| 541 | - "data": { | ||
| 542 | - "value": { | ||
| 543 | - "amount": 200, | ||
| 544 | - "currency": "UAH", | ||
| 545 | - "valueAddedTaxIncluded": True | ||
| 546 | - } | ||
| 547 | - } | ||
| 548 | - }) | 493 | + } |
| 494 | + }) | ||
| 549 | 495 | ||
| 550 | 496 | ||
| 551 | def test_supplier_data(): | 497 | def test_supplier_data(): |
| @@ -589,8 +535,8 @@ def test_award_data(): | @@ -589,8 +535,8 @@ def test_award_data(): | ||
| 589 | 535 | ||
| 590 | def test_item_data(): | 536 | def test_item_data(): |
| 591 | now = get_now() | 537 | now = get_now() |
| 592 | - return { | ||
| 593 | - "description": description_with_id('i', fake.catch_phrase()), | 538 | + return munchify({ |
| 539 | + "description": field_with_id('i', fake.catch_phrase()), | ||
| 594 | "deliveryDate": { | 540 | "deliveryDate": { |
| 595 | "endDate": (now + timedelta(days=5)).isoformat() | 541 | "endDate": (now + timedelta(days=5)).isoformat() |
| 596 | }, | 542 | }, |
| @@ -628,7 +574,7 @@ def test_item_data(): | @@ -628,7 +574,7 @@ def test_item_data(): | ||
| 628 | "code": u"KGM" | 574 | "code": u"KGM" |
| 629 | }, | 575 | }, |
| 630 | "quantity": fake.pyint() | 576 | "quantity": fake.pyint() |
| 631 | - } | 577 | + }) |
| 632 | 578 | ||
| 633 | 579 | ||
| 634 | def test_invalid_features_data(): | 580 | def test_invalid_features_data(): |
| @@ -672,8 +618,8 @@ def test_invalid_features_data(): | @@ -672,8 +618,8 @@ def test_invalid_features_data(): | ||
| 672 | def test_lot_data(): | 618 | def test_lot_data(): |
| 673 | return munchify( | 619 | return munchify( |
| 674 | { | 620 | { |
| 675 | - "description": description_with_id('l', fake.sentence(nb_words=10, variable_nb_words=True)), | ||
| 676 | - "title": fake.sentence(nb_words=6, variable_nb_words=True), | 621 | + "description": fake.sentence(nb_words=10, variable_nb_words=True), |
| 622 | + "title": field_with_id('l', fake.sentence(nb_words=6, variable_nb_words=True)), | ||
| 677 | "value": { | 623 | "value": { |
| 678 | "currency": "UAH", | 624 | "currency": "UAH", |
| 679 | "amount": 2000 + fake.pyfloat(left_digits=4, right_digits=1, positive=True), | 625 | "amount": 2000 + fake.pyfloat(left_digits=4, right_digits=1, positive=True), |
| @@ -688,22 +634,19 @@ def test_lot_data(): | @@ -688,22 +634,19 @@ def test_lot_data(): | ||
| 688 | }) | 634 | }) |
| 689 | 635 | ||
| 690 | 636 | ||
| 691 | -def test_lot_document_data(document, lot_id="3c8f387879de4c38957402dbdb8b31af"): | ||
| 692 | - lot_document = {"documentOf": "lot", "relatedItem": lot_id} | ||
| 693 | - lot_document.update(document.data) | ||
| 694 | - return munchify({"data": lot_document}) | 637 | +def test_lot_document_data(document, lot_id): |
| 638 | + document.data.update({"documentOf": "lot", "relatedItem": lot_id}) | ||
| 639 | + return munchify(document) | ||
| 695 | 640 | ||
| 696 | 641 | ||
| 697 | -def test_lot_question_data(question, lot_id="3c8f387879de4c38957402dbdb8b31af"): | ||
| 698 | - lot_question = {"questionOf": "lot", "relatedItem": lot_id} | ||
| 699 | - lot_question.update(question.data) | ||
| 700 | - return munchify({"data": lot_question}) | 642 | +def test_lot_question_data(question, lot_id): |
| 643 | + question.data.update({"questionOf": "lot", "relatedItem": lot_id}) | ||
| 644 | + return munchify(question) | ||
| 701 | 645 | ||
| 702 | 646 | ||
| 703 | -def test_lot_complaint_data(complaint, lot_id="3c8f387879de4c38957402dbdb8b31af"): | ||
| 704 | - lot_complaint = {"complaintOf": "lot", "relatedItem": lot_id} | ||
| 705 | - lot_complaint.update(complaint.data) | ||
| 706 | - return munchify({"data": lot_complaint}) | 647 | +def test_lot_complaint_data(complaint, lot_id): |
| 648 | + complaint.data.update({"complaintOf": "lot", "relatedItem": lot_id}) | ||
| 649 | + return munchify(complaint) | ||
| 707 | 650 | ||
| 708 | 651 | ||
| 709 | def test_tender_data_openua(intervals): | 652 | def test_tender_data_openua(intervals): |
| @@ -718,6 +661,7 @@ def test_tender_data_openua(intervals): | @@ -718,6 +661,7 @@ def test_tender_data_openua(intervals): | ||
| 718 | t_data['procurementMethodType'] = 'aboveThresholdUA' | 661 | t_data['procurementMethodType'] = 'aboveThresholdUA' |
| 719 | t_data['procurementMethodDetails'] = 'quick, ' \ | 662 | t_data['procurementMethodDetails'] = 'quick, ' \ |
| 720 | 'accelerator={}'.format(accelerator) | 663 | 'accelerator={}'.format(accelerator) |
| 664 | + t_data['procuringEntity']['kind'] = 'general' | ||
| 721 | return t_data | 665 | return t_data |
| 722 | 666 | ||
| 723 | 667 | ||
| @@ -739,4 +683,5 @@ def test_tender_data_openeu(intervals): | @@ -739,4 +683,5 @@ def test_tender_data_openeu(intervals): | ||
| 739 | t_data['procuringEntity']['contactPoint']['name_en'] = fake_en.name() | 683 | t_data['procuringEntity']['contactPoint']['name_en'] = fake_en.name() |
| 740 | t_data['procuringEntity']['contactPoint']['availableLanguage'] = "en" | 684 | t_data['procuringEntity']['contactPoint']['availableLanguage'] = "en" |
| 741 | t_data['procuringEntity']['identifier']['legalName_en'] = "Institution \"Vinnytsia City Council primary and secondary general school № 10\"" | 685 | t_data['procuringEntity']['identifier']['legalName_en'] = "Institution \"Vinnytsia City Council primary and secondary general school № 10\"" |
| 686 | + t_data['procuringEntity']['kind'] = 'general' | ||
| 742 | return t_data | 687 | return t_data |
| @@ -54,36 +54,80 @@ Set Suite Variable With Default Value | @@ -54,36 +54,80 @@ Set Suite Variable With Default Value | ||
| 54 | Завантажуємо дані про користувачів і майданчики | 54 | Завантажуємо дані про користувачів і майданчики |
| 55 | Log ${broker} | 55 | Log ${broker} |
| 56 | Log ${role} | 56 | Log ${role} |
| 57 | + # Suite variable; should be present in every test suite | ||
| 58 | + # in `*** Variables ***` section | ||
| 59 | + Log Many @{used_roles} | ||
| 57 | 60 | ||
| 61 | + # Load brokers data | ||
| 58 | ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml | 62 | ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml |
| 59 | - ${BROKERS}= load_initial_data_from ${file_path} | 63 | + ${BROKERS}= load_data_from ${file_path} mode=brokers |
| 60 | Log ${BROKERS} | 64 | Log ${BROKERS} |
| 61 | Set Suite Variable ${BROKERS} | 65 | Set Suite Variable ${BROKERS} |
| 66 | + # List of currently used brokers | ||
| 67 | + ${used_brokers}= Create List | ||
| 62 | 68 | ||
| 69 | + # Load users data | ||
| 63 | ${file_path}= Get Variable Value ${USERS_FILE} users.yaml | 70 | ${file_path}= Get Variable Value ${USERS_FILE} users.yaml |
| 64 | - ${USERS}= load_initial_data_from ${file_path} | ||
| 65 | - Set Global Variable ${USERS} | ||
| 66 | - | ||
| 67 | - Set Suite Variable With Default Value ${role} ${BROKERS['${broker}'].roles.${role}} | ||
| 68 | - Set Suite Variable With Default Value tender_owner Tender_Owner | ||
| 69 | - Set Suite Variable With Default Value provider Tender_User | ||
| 70 | - Set Suite Variable With Default Value provider1 Tender_User1 | ||
| 71 | - Set Suite Variable With Default Value viewer Tender_Viewer | ||
| 72 | - ${active_users}= Create Dictionary tender_owner=${tender_owner} provider=${provider} provider1=${provider1} viewer=${viewer} | ||
| 73 | - | ||
| 74 | - ${users_list}= Get Dictionary Items ${USERS.users} | ||
| 75 | - :FOR ${username} ${user_data} IN @{users_list} | ||
| 76 | - \ Log ${active_users} | ||
| 77 | - \ Log ${username} | 71 | + ${USERS}= load_data_from ${file_path} |
| 72 | + Log ${USERS.users} | ||
| 73 | + Set Suite Variable ${USERS} | ||
| 74 | + # List of currently used users | ||
| 75 | + ${used_users}= Create List | ||
| 76 | + | ||
| 77 | + # Handle `-v role:something` | ||
| 78 | + Run Keyword Unless '${role}' in @{used_roles} | ||
| 79 | + ... Log | ||
| 80 | + ... Role ${role} is not used in this test suite. | ||
| 81 | + ... WARN | ||
| 82 | + Set Suite Variable With Default Value | ||
| 83 | + ... ${role} | ||
| 84 | + ... ${BROKERS['${broker}'].roles.${role}} | ||
| 85 | + | ||
| 86 | + # Set default value for each role if it is not set yet; | ||
| 87 | + # fill `used_users`; | ||
| 88 | + # fill `used_brokers`. | ||
| 89 | + # | ||
| 90 | + # Don't even ask how this works! | ||
| 91 | + :FOR ${tmp_role} IN @{used_roles} | ||
| 92 | + \ Set Suite Variable With Default Value | ||
| 93 | + \ ... ${tmp_role} | ||
| 94 | + \ ... ${BROKERS['Quinta'].roles.${tmp_role}} | ||
| 95 | + \ Append To List ${used_users} ${${tmp_role}} | ||
| 96 | + \ Append To List ${used_brokers} ${USERS.users.${${tmp_role}}.broker} | ||
| 97 | + # Since `@{used_roles}` is already a suite variable, | ||
| 98 | + # let's make `@{used_brokers}` alike. | ||
| 99 | + ${used_brokers}= Remove Duplicates ${used_brokers} | ||
| 100 | + Set Suite Variable ${used_brokers} | ||
| 101 | + # We need to create two lists since Robot Framework doesn't support | ||
| 102 | + # dicts in `:FOR` loops. | ||
| 103 | + Log Many @{used_users} | ||
| 104 | + Log Many @{used_brokers} | ||
| 105 | + | ||
| 106 | + # A list of all users in users file | ||
| 107 | + ${known_users}= Get Dictionary Keys ${USERS.users} | ||
| 108 | + | ||
| 109 | + # Check whether users file contains an entry for each | ||
| 110 | + # selected user before preparing any clients | ||
| 111 | + :FOR ${username} IN @{used_users} | ||
| 112 | + \ List Should Contain Value | ||
| 113 | + \ ... ${known_users} | ||
| 114 | + \ ... ${username} | ||
| 115 | + \ ... msg=User ${username} not found in users file! | ||
| 116 | + | ||
| 117 | + # Prepare a client for each user | ||
| 118 | + :FOR ${username} IN @{used_users} | ||
| 78 | \ ${munch_dict}= munch_dict data=${True} | 119 | \ ${munch_dict}= munch_dict data=${True} |
| 79 | - \ Log Many ${munch_dict} | ||
| 80 | - \ ${status}= Run Keyword And Return Status Dictionary Should Contain Value ${active_users} ${username} | ||
| 81 | - \ ${keywords_file}= Get Broker Property By Username ${username} keywords_file | ||
| 82 | - \ Run Keyword If ${status} Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file} | ||
| 83 | - \ Run Keyword If ${status} Викликати для учасника ${username} Підготувати клієнт для користувача | ||
| 84 | - \ Run Keyword If ${status} Set To Dictionary ${USERS.users['${username}']} tender_data=${munch_dict} | 120 | + \ ${keywords_file}= Get Broker Property ${USERS.users.${username}.broker} keywords_file |
| 121 | + \ Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file} | ||
| 122 | + \ Run As ${username} Підготувати клієнт для користувача | ||
| 85 | \ ${LAST_REFRESH_DATE}= Get Current TZdate | 123 | \ ${LAST_REFRESH_DATE}= Get Current TZdate |
| 86 | - \ Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE ${LAST_REFRESH_DATE} | 124 | + \ Set To Dictionary ${USERS} ${username}=${USERS.users.${username}} |
| 125 | + \ Set To Dictionary ${USERS.${username}} tender_data=${munch_dict} | ||
| 126 | + \ Set To Dictionary ${USERS.${username}} LAST_REFRESH_DATE ${LAST_REFRESH_DATE} | ||
| 127 | + | ||
| 128 | + # Drop all unused users | ||
| 129 | + Keep In Dictionary ${USERS.users} @{used_users} | ||
| 130 | + Log Many @{USERS} | ||
| 87 | 131 | ||
| 88 | 132 | ||
| 89 | Get Broker Property | 133 | Get Broker Property |
| @@ -92,11 +136,9 @@ Get Broker Property | @@ -92,11 +136,9 @@ Get Broker Property | ||
| 92 | ... This keyword returns a property of specified broker | 136 | ... This keyword returns a property of specified broker |
| 93 | ... if that property exists, otherwise, it returns a | 137 | ... if that property exists, otherwise, it returns a |
| 94 | ... default value. | 138 | ... default value. |
| 95 | - ${status}= Run Keyword And Return Status Should Contain ${BROKERS['${broker_name}']} ${property} | ||
| 96 | - Return From Keyword If ${status} ${BROKERS['${broker_name}'].${property}} | ||
| 97 | - # If broker doesn't have that property, fall back to default value | ||
| 98 | - Should Contain ${BROKERS['Default']} ${property} | ||
| 99 | - [return] ${BROKERS['Default'].${property}} | 139 | + Run Keyword If '${broker_name}'=='${None}' Fail \${broker_name} is NoneType |
| 140 | + Should Contain ${BROKERS['${broker_name}']} ${property} | ||
| 141 | + Return From Keyword ${BROKERS['${broker_name}'].${property}} | ||
| 100 | 142 | ||
| 101 | 143 | ||
| 102 | Get Broker Property By Username | 144 | Get Broker Property By Username |
| @@ -115,18 +157,22 @@ Get Broker Property By Username | @@ -115,18 +157,22 @@ Get Broker Property By Username | ||
| 115 | ... tender_uaid=${TENDER['TENDER_UAID']} | 157 | ... tender_uaid=${TENDER['TENDER_UAID']} |
| 116 | ... last_modification_date=${TENDER['LAST_MODIFICATION_DATE']} | 158 | ... last_modification_date=${TENDER['LAST_MODIFICATION_DATE']} |
| 117 | ... tender_owner=${USERS.users['${tender_owner}'].broker} | 159 | ... tender_owner=${USERS.users['${tender_owner}'].broker} |
| 160 | + ... mode=${mode} | ||
| 118 | Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta' | 161 | Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta' |
| 119 | ... Run Keyword And Ignore Error | 162 | ... Run Keyword And Ignore Error |
| 120 | ... Set To Dictionary ${artifact} | 163 | ... Set To Dictionary ${artifact} |
| 121 | ... access_token=${USERS.users['${tender_owner}'].access_token} | 164 | ... access_token=${USERS.users['${tender_owner}'].access_token} |
| 122 | ... tender_id=${USERS.users['${tender_owner}'].tender_data.data.id} | 165 | ... tender_id=${USERS.users['${tender_owner}'].tender_data.data.id} |
| 166 | + ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots | ||
| 167 | + Run Keyword If ${status}'=='PASS' | ||
| 168 | + ... Set To Dictionary ${artifact} lots=${lots_ids} | ||
| 123 | Log ${artifact} | 169 | Log ${artifact} |
| 124 | log_object_data ${artifact} artifact update=${True} | 170 | log_object_data ${artifact} artifact update=${True} |
| 125 | 171 | ||
| 126 | 172 | ||
| 127 | Завантажити дані про тендер | 173 | Завантажити дані про тендер |
| 128 | ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact.yaml | 174 | ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact.yaml |
| 129 | - ${ARTIFACT}= load_initial_data_from ${file_path} | 175 | + ${ARTIFACT}= load_data_from ${file_path} |
| 130 | Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta' | 176 | Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta' |
| 131 | ... Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token} | 177 | ... Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token} |
| 132 | ${TENDER}= Create Dictionary | 178 | ${TENDER}= Create Dictionary |
| @@ -137,9 +183,7 @@ Get Broker Property By Username | @@ -137,9 +183,7 @@ Get Broker Property By Username | ||
| 137 | 183 | ||
| 138 | 184 | ||
| 139 | Підготовка даних для створення тендера | 185 | Підготовка даних для створення тендера |
| 140 | - ${custom_intervals}= Get Broker Property By Username ${tender_owner} intervals | ||
| 141 | - ${default_intervals}= Get Broker Property Default intervals | ||
| 142 | - ${period_intervals}= merge_dicts ${default_intervals} ${custom_intervals} | 186 | + ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} |
| 143 | ${tender_data}= prepare_test_tender_data ${period_intervals} ${mode} | 187 | ${tender_data}= prepare_test_tender_data ${period_intervals} ${mode} |
| 144 | ${TENDER}= Create Dictionary | 188 | ${TENDER}= Create Dictionary |
| 145 | Set Global Variable ${TENDER} | 189 | Set Global Variable ${TENDER} |
| @@ -148,6 +192,11 @@ Get Broker Property By Username | @@ -148,6 +192,11 @@ Get Broker Property By Username | ||
| 148 | [return] ${tender_data} | 192 | [return] ${tender_data} |
| 149 | 193 | ||
| 150 | 194 | ||
| 195 | +Підготовка даних для створення предмету закупівлі | ||
| 196 | + ${item}= test_item_data | ||
| 197 | + [Return] ${item} | ||
| 198 | + | ||
| 199 | + | ||
| 151 | Підготовка даних для створення лоту | 200 | Підготовка даних для створення лоту |
| 152 | ${lot}= test_lot_data | 201 | ${lot}= test_lot_data |
| 153 | ${reply}= Create Dictionary data=${lot} | 202 | ${reply}= Create Dictionary data=${lot} |
| @@ -171,8 +220,7 @@ Get Broker Property By Username | @@ -171,8 +220,7 @@ Get Broker Property By Username | ||
| 171 | 220 | ||
| 172 | 221 | ||
| 173 | Підготовка даних для запитання | 222 | Підготовка даних для запитання |
| 174 | - [Arguments] ${lot}=${False} | ||
| 175 | - ${question}= test_question_data ${lot} | 223 | + ${question}= test_question_data |
| 176 | [Return] ${question} | 224 | [Return] ${question} |
| 177 | 225 | ||
| 178 | 226 | ||
| @@ -182,8 +230,7 @@ Get Broker Property By Username | @@ -182,8 +230,7 @@ Get Broker Property By Username | ||
| 182 | 230 | ||
| 183 | 231 | ||
| 184 | Підготувати дані для подання пропозиції | 232 | Підготувати дані для подання пропозиції |
| 185 | - [Arguments] ${aboveThreshold}=${False} | ||
| 186 | - ${supplier_data}= test_bid_data ${aboveThreshold} | 233 | + ${supplier_data}= test_bid_data ${mode} |
| 187 | [Return] ${supplier_data} | 234 | [Return] ${supplier_data} |
| 188 | 235 | ||
| 189 | 236 | ||
| @@ -403,13 +450,26 @@ Get Broker Property By Username | @@ -403,13 +450,26 @@ Get Broker Property By Username | ||
| 403 | Отримати дані із об’єкта тендера | 450 | Отримати дані із об’єкта тендера |
| 404 | [Arguments] ${username} ${object_id} ${field_name} | 451 | [Arguments] ${username} ${object_id} ${field_name} |
| 405 | ${object_type}= get_object_type_by_id ${object_id} | 452 | ${object_type}= get_object_type_by_id ${object_id} |
| 406 | - ${status} ${value}= Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${object_id} ${field_name} | 453 | + ${status} ${value}= Run Keyword If '${object_type}'=='question' |
| 454 | + ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${object_id} ${field_name} | ||
| 455 | + ... ELSE IF '${object_type}'=='lots' | ||
| 456 | + ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із лоту ${object_id} ${field_name} | ||
| 407 | ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} | 457 | ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} |
| 408 | ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value} | 458 | ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value} |
| 409 | ... ELSE Run As ${username} Отримати інформацію із тендера ${field} | 459 | ... ELSE Run As ${username} Отримати інформацію із тендера ${field} |
| 410 | [return] ${field_value} | 460 | [return] ${field_value} |
| 411 | 461 | ||
| 412 | 462 | ||
| 463 | +Отримати ідентифікатори об’єктів | ||
| 464 | + [Arguments] ${username} ${objects_type} | ||
| 465 | + @{objects_ids}= Create List | ||
| 466 | + @{objects}= Get from object ${USERS.users['${username}'].tender_data.data} ${objects_type} | ||
| 467 | + :FOR ${obj} IN @{objects} | ||
| 468 | + \ ${obj_id}= get_id_from_object ${obj} | ||
| 469 | + \ Append To List ${objects_ids} ${obj_id} | ||
| 470 | + [return] ${objects_ids} | ||
| 471 | + | ||
| 472 | + | ||
| 413 | Викликати для учасника | 473 | Викликати для учасника |
| 414 | [Arguments] ${username} ${command} @{arguments} | 474 | [Arguments] ${username} ${command} @{arguments} |
| 415 | Run keyword unless '${WARN_RUN_AS}' == '${True}' | 475 | Run keyword unless '${WARN_RUN_AS}' == '${True}' |
| @@ -463,6 +523,20 @@ Require Failure | @@ -463,6 +523,20 @@ Require Failure | ||
| 463 | Run Keyword If ${sleep} > 0 Sleep ${sleep} | 523 | Run Keyword If ${sleep} > 0 Sleep ${sleep} |
| 464 | 524 | ||
| 465 | 525 | ||
| 526 | +Дочекатись дати початку періоду уточнень | ||
| 527 | + [Arguments] ${username} | ||
| 528 | + Log ${username} | ||
| 529 | + # XXX: HACK: Same as below | ||
| 530 | + ${status} ${date}= Run Keyword And Ignore Error | ||
| 531 | + ... Set Variable | ||
| 532 | + ... ${USERS.users['${username}'].tender_data.data.enquiryPeriod.startDate} | ||
| 533 | + ${date}= Set Variable If | ||
| 534 | + ... '${status}' == 'FAIL' | ||
| 535 | + ... ${USERS.users['${tender_owner}'].initial_data.data.enquiryPeriod.startDate} | ||
| 536 | + ... ${date} | ||
| 537 | + Дочекатись дати ${date} | ||
| 538 | + | ||
| 539 | + | ||
| 466 | Дочекатись дати початку прийому пропозицій | 540 | Дочекатись дати початку прийому пропозицій |
| 467 | [Arguments] ${username} | 541 | [Arguments] ${username} |
| 468 | Log ${username} | 542 | Log ${username} |
| @@ -508,6 +582,11 @@ Require Failure | @@ -508,6 +582,11 @@ Require Failure | ||
| 508 | Дочекатись дати ${USERS.users['${username}'].tender_data.data.auctionPeriod.startDate} | 582 | Дочекатись дати ${USERS.users['${username}'].tender_data.data.auctionPeriod.startDate} |
| 509 | 583 | ||
| 510 | 584 | ||
| 585 | +Відкрити сторінку аукціону для глядача | ||
| 586 | + ${url}= Run as ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} | ||
| 587 | + Open browser ${url} ${USERS.users['${viewer}'].browser} | ||
| 588 | + | ||
| 589 | + | ||
| 511 | Дочекатись дати закінчення аукціону | 590 | Дочекатись дати закінчення аукціону |
| 512 | [Arguments] ${username} | 591 | [Arguments] ${username} |
| 513 | Log ${username} | 592 | Log ${username} |
| @@ -8,17 +8,6 @@ Resource resource.robot | @@ -8,17 +8,6 @@ Resource resource.robot | ||
| 8 | ############################################################################################## | 8 | ############################################################################################## |
| 9 | # CANCELLATIONS | 9 | # CANCELLATIONS |
| 10 | ############################################################################################## | 10 | ############################################################################################## |
| 11 | -Можливість створити закупівлю для тестування скасування | ||
| 12 | - ${tender_data}= Підготовка даних для створення тендера | ||
| 13 | - ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} | ||
| 14 | - ${TENDER_UAID}= Викликати для учасника ${tender_owner} | ||
| 15 | - ... Створити тендер | ||
| 16 | - ... ${adapted_data} | ||
| 17 | - Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} | ||
| 18 | - Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | ||
| 19 | - Log ${TENDER} | ||
| 20 | - | ||
| 21 | - | ||
| 22 | Можливість скасувати закупівлю | 11 | Можливість скасувати закупівлю |
| 23 | ${cancellation_data}= Підготувати дані про скасування ${tender_owner} | 12 | ${cancellation_data}= Підготувати дані про скасування ${tender_owner} |
| 24 | Викликати для учасника ${tender_owner} | 13 | Викликати для учасника ${tender_owner} |
| @@ -77,12 +66,6 @@ Resource resource.robot | @@ -77,12 +66,6 @@ Resource resource.robot | ||
| 77 | ... ${TENDER['TENDER_UAID']} | 66 | ... ${TENDER['TENDER_UAID']} |
| 78 | 67 | ||
| 79 | 68 | ||
| 80 | -Можливість модифікації закупівлі | ||
| 81 | - Викликати для учасника ${tender_owner} | ||
| 82 | - ... Модифікувати закупівлю | ||
| 83 | - ... ${TENDER['TENDER_UAID']} | ||
| 84 | - | ||
| 85 | - | ||
| 86 | Можливість додати документацію до закупівлі | 69 | Можливість додати документацію до закупівлі |
| 87 | ${filepath}= create_fake_doc | 70 | ${filepath}= create_fake_doc |
| 88 | Викликати для учасника ${tender_owner} | 71 | Викликати для учасника ${tender_owner} |
| @@ -305,27 +288,21 @@ Resource resource.robot | @@ -305,27 +288,21 @@ Resource resource.robot | ||
| 305 | ... items[${ITEMS_NUM}].description | 288 | ... items[${ITEMS_NUM}].description |
| 306 | 289 | ||
| 307 | 290 | ||
| 308 | -Відображення ідентифікатора номенклатури закупівлі | 291 | +Відображення кількості номенклатури закупівлі |
| 309 | Звірити поле тендера ${viewer} | 292 | Звірити поле тендера ${viewer} |
| 310 | ... ${USERS.users['${tender_owner}'].initial_data} | 293 | ... ${USERS.users['${tender_owner}'].initial_data} |
| 311 | - ... items[${ITEMS_NUM}].id | ||
| 312 | - | ||
| 313 | - | ||
| 314 | -Відображення кількості номенклатури закупівлі | ||
| 315 | - Звірити поле тендера із значенням ${viewer} | ||
| 316 | - ... ${USERS.users['${tender_owner}'].additional_items[${ITEMS_NUM}]['quantity']} | ||
| 317 | ... items[${ITEMS_NUM}].quantity | 294 | ... items[${ITEMS_NUM}].quantity |
| 318 | 295 | ||
| 319 | 296 | ||
| 320 | Відображення назви одиниці номенклатури закупівлі | 297 | Відображення назви одиниці номенклатури закупівлі |
| 321 | - Звірити поле тендера із значенням ${viewer} | ||
| 322 | - ... ${USERS.users['${tender_owner}'].additional_items[${ITEMS_NUM}]['unit']['name']} | 298 | + Звірити поле тендера ${viewer} |
| 299 | + ... ${USERS.users['${tender_owner}'].initial_data} | ||
| 323 | ... items[${ITEMS_NUM}].unit.name | 300 | ... items[${ITEMS_NUM}].unit.name |
| 324 | 301 | ||
| 325 | 302 | ||
| 326 | Відображення коду одиниці номенклатури закупівлі | 303 | Відображення коду одиниці номенклатури закупівлі |
| 327 | - Звірити поле тендера із значенням ${viewer} | ||
| 328 | - ... ${USERS.users['${tender_owner}'].additional_items[${ITEMS_NUM}]['unit']['code']} | 304 | + Звірити поле тендера ${viewer} |
| 305 | + ... ${USERS.users['${tender_owner}'].initial_data} | ||
| 329 | ... items[${ITEMS_NUM}].unit.code | 306 | ... items[${ITEMS_NUM}].unit.code |
| 330 | 307 | ||
| 331 | 308 |
| @@ -10,10 +10,9 @@ Suite Setup Test Suite Setup | @@ -10,10 +10,9 @@ Suite Setup Test Suite Setup | ||
| 10 | Suite Teardown Test Suite Teardown | 10 | Suite Teardown Test Suite Teardown |
| 11 | 11 | ||
| 12 | *** Variables *** | 12 | *** Variables *** |
| 13 | -${mode} single | 13 | +${mode} meat |
| 14 | +@{used_roles} tender_owner provider provider1 viewer | ||
| 14 | 15 | ||
| 15 | -${role} viewer | ||
| 16 | -${broker} Quinta | ||
| 17 | 16 | ||
| 18 | *** Test Cases *** | 17 | *** Test Cases *** |
| 19 | Можливість оголосити однопредметний тендер з неціновим показником | 18 | Можливість оголосити однопредметний тендер з неціновим показником |
| @@ -23,8 +22,7 @@ ${broker} Quinta | @@ -23,8 +22,7 @@ ${broker} Quinta | ||
| 23 | ... minimal | 22 | ... minimal |
| 24 | [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), | 23 | [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), |
| 25 | [Teardown] Оновити LAST_MODIFICATION_DATE | 24 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 26 | - ${base_tender_data}= Підготовка даних для створення тендера | ||
| 27 | - ${tender_data}= test_meat_tender_data ${base_tender_data} | 25 | + ${tender_data}= Підготовка даних для створення тендера |
| 28 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} | 26 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} |
| 29 | ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data} | 27 | ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data} |
| 30 | Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | 28 | Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} |
| @@ -33,7 +31,7 @@ ${broker} Quinta | @@ -33,7 +31,7 @@ ${broker} Quinta | ||
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | Можливість знайти однопредметний тендер по ідентифікатору | 33 | Можливість знайти однопредметний тендер по ідентифікатору |
| 36 | - [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | 34 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти тендер |
| 37 | ... viewer tender_owner provider provider1 | 35 | ... viewer tender_owner provider provider1 |
| 38 | ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | 36 | ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} |
| 39 | ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | 37 | ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} |
| @@ -59,7 +57,7 @@ ${broker} Quinta | @@ -59,7 +57,7 @@ ${broker} Quinta | ||
| 59 | #Подання пропозицій | 57 | #Подання пропозицій |
| 60 | 58 | ||
| 61 | Відображення початку періоду прийому пропозицій оголошеного тендера | 59 | Відображення початку періоду прийому пропозицій оголошеного тендера |
| 62 | - [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | 60 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера |
| 63 | ... viewer provider provider1 | 61 | ... viewer provider provider1 |
| 64 | ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker} | 62 | ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker} |
| 65 | ... ${USERS.users['${provider1}'].broker} | 63 | ... ${USERS.users['${provider1}'].broker} |
| @@ -78,7 +76,7 @@ ${broker} Quinta | @@ -78,7 +76,7 @@ ${broker} Quinta | ||
| 78 | [Setup] Дочекатись синхронізації з майданчиком ${provider} | 76 | [Setup] Дочекатись синхронізації з майданчиком ${provider} |
| 79 | Дочекатись дати початку прийому пропозицій ${provider} | 77 | Дочекатись дати початку прийому пропозицій ${provider} |
| 80 | sleep 90 | 78 | sleep 90 |
| 81 | - ${bid}= test bid data | 79 | + ${bid}= test bid data single |
| 82 | Log ${bid} | 80 | Log ${bid} |
| 83 | ${failbid}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | 81 | ${failbid}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} |
| 84 | log ${failbid} | 82 | log ${failbid} |
| @@ -89,7 +87,7 @@ ${broker} Quinta | @@ -89,7 +87,7 @@ ${broker} Quinta | ||
| 89 | ... provider | 87 | ... provider |
| 90 | ... ${USERS.users['${provider}'].broker} | 88 | ... ${USERS.users['${provider}'].broker} |
| 91 | [Teardown] Оновити LAST_MODIFICATION_DATE | 89 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 92 | - ${bid}= test bid data meat tender | 90 | + ${bid}= Підготувати дані для подання пропозиції |
| 93 | Log ${bid} | 91 | Log ${bid} |
| 94 | ${bidresponses}= Create Dictionary | 92 | ${bidresponses}= Create Dictionary |
| 95 | Set To Dictionary ${bidresponses} bid ${bid} | 93 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -126,7 +124,7 @@ ${broker} Quinta | @@ -126,7 +124,7 @@ ${broker} Quinta | ||
| 126 | [Setup] Дочекатись синхронізації з майданчиком ${provider1} | 124 | [Setup] Дочекатись синхронізації з майданчиком ${provider1} |
| 127 | [Teardown] Оновити LAST_MODIFICATION_DATE | 125 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 128 | Дочекатись дати початку прийому пропозицій ${provider1} | 126 | Дочекатись дати початку прийому пропозицій ${provider1} |
| 129 | - ${bid}= test bid data meat tender | 127 | + ${bid}= Підготувати дані для подання пропозиції |
| 130 | Log ${bid} | 128 | Log ${bid} |
| 131 | ${bidresponses}= Create Dictionary | 129 | ${bidresponses}= Create Dictionary |
| 132 | Set To Dictionary ${bidresponses} bid ${bid} | 130 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -147,23 +145,105 @@ ${broker} Quinta | @@ -147,23 +145,105 @@ ${broker} Quinta | ||
| 147 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} | 145 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
| 148 | Отримати дані із тендера ${viewer} auctionPeriod.startDate | 146 | Отримати дані із тендера ${viewer} auctionPeriod.startDate |
| 149 | 147 | ||
| 150 | - | ||
| 151 | -Очікування аукціону | ||
| 152 | - [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону | 148 | +Можливість дочекатися початку аукціону |
| 149 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися початку аукціону | ||
| 153 | ... viewer | 150 | ... viewer |
| 154 | ... ${USERS.users['${viewer}'].broker} | 151 | ... ${USERS.users['${viewer}'].broker} |
| 155 | Дочекатись дати початку аукціону ${viewer} | 152 | Дочекатись дати початку аукціону ${viewer} |
| 156 | - sleep 1500 | ||
| 157 | 153 | ||
| 154 | +Можливість дочекатися завершення аукціону | ||
| 155 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону | ||
| 156 | + ... viewer | ||
| 157 | + ... ${USERS.users['${viewer}'].broker} | ||
| 158 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 159 | + Відкрити сторінку аукціону для глядача | ||
| 160 | + Wait Until Keyword Succeeds 61 times 30 s Page should contain Аукціон завершився | ||
| 161 | + Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників | ||
| 162 | + Close browser | ||
| 163 | + | ||
| 164 | +Відображення дати завершення аукціону | ||
| 165 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 166 | + ... viewer | ||
| 167 | + ... ${USERS.users['${viewer}'].broker} | ||
| 168 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 169 | + Отримати дані із тендера ${viewer} auctionPeriod.endDate | ||
| 170 | + | ||
| 171 | +Відображення значення ставки першої пропозиції | ||
| 172 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 173 | + ... viewer | ||
| 174 | + ... ${USERS.users['${viewer}'].broker} | ||
| 175 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 176 | + Отримати дані із тендера ${viewer} bids[0].value.amount | ||
| 177 | + | ||
| 178 | +Відображення значення нецінового критерію першої пропозиції | ||
| 179 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 180 | + ... viewer | ||
| 181 | + ... ${USERS.users['${viewer}'].broker} | ||
| 182 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 183 | + Отримати дані із тендера ${viewer} bids[0].parameters | ||
| 184 | + | ||
| 185 | +Відображення дати першої пропозиції | ||
| 186 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 187 | + ... viewer | ||
| 188 | + ... ${USERS.users['${viewer}'].broker} | ||
| 189 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 190 | + Отримати дані із тендера ${viewer} bids[0].date | ||
| 191 | + | ||
| 192 | +Відображення назви учасника першої пропозиції | ||
| 193 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 194 | + ... viewer | ||
| 195 | + ... ${USERS.users['${viewer}'].broker} | ||
| 196 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 197 | + Отримати дані із тендера ${viewer} bids[0].tenderers[0].name | ||
| 198 | + | ||
| 199 | +Відображення значення ставки другої пропозиції | ||
| 200 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 201 | + ... viewer | ||
| 202 | + ... ${USERS.users['${viewer}'].broker} | ||
| 203 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 204 | + Отримати дані із тендера ${viewer} bids[1].value.amount | ||
| 205 | + | ||
| 206 | +Відображення значення нецінового критерію другої пропозиції | ||
| 207 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 208 | + ... viewer | ||
| 209 | + ... ${USERS.users['${viewer}'].broker} | ||
| 210 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 211 | + Отримати дані із тендера ${viewer} bids[1].parameters | ||
| 212 | + | ||
| 213 | +Відображення дати другої пропозиції | ||
| 214 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 215 | + ... viewer | ||
| 216 | + ... ${USERS.users['${viewer}'].broker} | ||
| 217 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 218 | + Отримати дані із тендера ${viewer} bids[1].date | ||
| 219 | + | ||
| 220 | +Відображення назви учасника другої пропозиції | ||
| 221 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій | ||
| 222 | + ... viewer | ||
| 223 | + ... ${USERS.users['${viewer}'].broker} | ||
| 224 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 225 | + Отримати дані із тендера ${viewer} bids[1].tenderers[0].name | ||
| 226 | + | ||
| 227 | +Відображення значення ставки пропозиції переможця | ||
| 228 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення даних про постачальника | ||
| 229 | + ... viewer | ||
| 230 | + ... ${USERS.users['${viewer}'].broker} | ||
| 231 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 232 | + Отримати дані із тендера ${viewer} awards[0].value.amount | ||
| 233 | + | ||
| 234 | +Відображення назви переможця | ||
| 235 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення даних про постачальника | ||
| 236 | + ... viewer | ||
| 237 | + ... ${USERS.users['${viewer}'].broker} | ||
| 238 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 239 | + Отримати дані із тендера ${viewer} awards[0].suppliers[0].name | ||
| 158 | 240 | ||
| 159 | Можливість отримати результати аукціону | 241 | Можливість отримати результати аукціону |
| 160 | [Tags] ${USERS.users['${tender_owner}'].broker}: Результати аукціону | 242 | [Tags] ${USERS.users['${tender_owner}'].broker}: Результати аукціону |
| 161 | ... tender_owner | 243 | ... tender_owner |
| 162 | ... ${USERS.users['${tender_owner}'].broker} | 244 | ... ${USERS.users['${tender_owner}'].broker} |
| 163 | - [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 164 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 165 | - ${tender_data}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | ||
| 166 | - ${result}= chef ${tender_data.data.bids} ${tender_data.data.features} | ||
| 167 | - Log Many ${result[0]} ${tender_data.data.awards[0]} | ||
| 168 | - Log Many ${result[0].id} ${tender_data.data.awards[0].bid_id} | ||
| 169 | - Should Be Equal ${result[0].id} ${tender_data.data.awards[0].bid_id} | 245 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
| 246 | + ${result}= chef ${USERS.users['${viewer}'].tender_data.data.bids} ${USERS.users['${tender_owner}'].initial_data.data.features} | ||
| 247 | + Log ${result} | ||
| 248 | + Should Be Equal ${result[0].tenderers[0].name} ${USERS.users['${viewer}'].tender_data.data.awards[0].suppliers[0].name} | ||
| 249 | + Should Be Equal ${result[0].value.amount} ${USERS.users['${viewer}'].tender_data.data.awards[0].value.amount} |
| @@ -10,10 +10,9 @@ Suite Setup Test Suite Setup | @@ -10,10 +10,9 @@ Suite Setup Test Suite Setup | ||
| 10 | Suite Teardown Test Suite Teardown | 10 | Suite Teardown Test Suite Teardown |
| 11 | 11 | ||
| 12 | *** Variables *** | 12 | *** Variables *** |
| 13 | -${mode} multi | 13 | +${mode} multiItem |
| 14 | +@{used_roles} tender_owner provider provider1 viewer | ||
| 14 | 15 | ||
| 15 | -${role} viewer | ||
| 16 | -${broker} Quinta | ||
| 17 | 16 | ||
| 18 | *** Test Cases *** | 17 | *** Test Cases *** |
| 19 | Можливість оголосити багатопредметний тендер | 18 | Можливість оголосити багатопредметний тендер |
| @@ -24,7 +23,7 @@ ${broker} Quinta | @@ -24,7 +23,7 @@ ${broker} Quinta | ||
| 24 | [Teardown] Оновити LAST_MODIFICATION_DATE | 23 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 25 | ${tender_data}= Підготовка даних для створення тендера | 24 | ${tender_data}= Підготовка даних для створення тендера |
| 26 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} | 25 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} |
| 27 | - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data} | 26 | + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data} |
| 28 | Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | 27 | Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} |
| 29 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | 28 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} |
| 30 | log ${TENDER} | 29 | log ${TENDER} |
| @@ -36,7 +35,7 @@ ${broker} Quinta | @@ -36,7 +35,7 @@ ${broker} Quinta | ||
| 36 | ... minimal | 35 | ... minimal |
| 37 | :FOR ${username} IN ${viewer} ${tender_owner} | 36 | :FOR ${username} IN ${viewer} ${tender_owner} |
| 38 | \ Дочекатись синхронізації з майданчиком ${username} | 37 | \ Дочекатись синхронізації з майданчиком ${username} |
| 39 | - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 38 | + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
| 40 | 39 | ||
| 41 | Відображення опису позицій закупівлі багатопредметного тендера | 40 | Відображення опису позицій закупівлі багатопредметного тендера |
| 42 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера | 41 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера |
| @@ -163,20 +162,53 @@ ${broker} Quinta | @@ -163,20 +162,53 @@ ${broker} Quinta | ||
| 163 | ... level2 | 162 | ... level2 |
| 164 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | 163 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} |
| 165 | [Teardown] Оновити LAST_MODIFICATION_DATE | 164 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 166 | - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description | 165 | + Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description |
| 167 | 166 | ||
| 168 | -Можливість додати позицію закупівлі в тендер | 167 | +Можливість додати шосту позицію закупівлі в тендер |
| 169 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 168 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 170 | ... tender_owner | 169 | ... tender_owner |
| 171 | ... ${USERS.users['${tender_owner}'].broker} | 170 | ... ${USERS.users['${tender_owner}'].broker} |
| 172 | ... level2 | 171 | ... level2 |
| 173 | [Teardown] Оновити LAST_MODIFICATION_DATE | 172 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 174 | - Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 3 | 173 | + ${item}= Підготовка даних для створення предмету закупівлі |
| 174 | + Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item} | ||
| 175 | + ${item_id}= get_id_from_field ${item.description} | ||
| 176 | + ${item_data}= Create Dictionary item=${item} item_id=${item_id} | ||
| 177 | + ${item_data}= munch_dict arg=${item_data} | ||
| 178 | + Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} | ||
| 175 | 179 | ||
| 176 | -Можливість видалити позиції закупівлі тендера | 180 | +Відображення опису нової шостої позиції закупівлі багатопредметного тендера |
| 181 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера | ||
| 182 | + ... viewer | ||
| 183 | + ... ${USERS.users['${viewer}'].broker} | ||
| 184 | + ... level2 | ||
| 185 | + Звірити поле тендера із значенням ${viewer} ${USERS.users['${tender_owner}'].item_data.item.description} description ${USERS.users['${tender_owner}'].item_data.item_id} | ||
| 186 | + | ||
| 187 | +Можливість додати сьому позицію закупівлі в тендер | ||
| 188 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 189 | + ... tender_owner | ||
| 190 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 191 | + ... level2 | ||
| 192 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 193 | + ${item}= Підготовка даних для створення предмету закупівлі | ||
| 194 | + Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item} | ||
| 195 | + ${item_id}= get_id_from_field ${item.description} | ||
| 196 | + ${item_data}= Create Dictionary item=${item} item_id=${item_id} | ||
| 197 | + ${item_data}= munch_dict arg=${item_data} | ||
| 198 | + Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} | ||
| 199 | + | ||
| 200 | +Відображення опису нової сьомої позиції закупівлі багатопредметного тендера | ||
| 201 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера | ||
| 202 | + ... viewer | ||
| 203 | + ... ${USERS.users['${viewer}'].broker} | ||
| 204 | + ... level2 | ||
| 205 | + Звірити поле тендера із значенням ${viewer} ${USERS.users['${tender_owner}'].item_data.item.description} description ${USERS.users['${tender_owner}'].item_data.item_id} | ||
| 206 | + | ||
| 207 | +Можливість видалити п’яту позицію закупівлі тендера | ||
| 177 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 208 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 178 | ... tender_owner | 209 | ... tender_owner |
| 179 | ... ${USERS.users['${tender_owner}'].broker} | 210 | ... ${USERS.users['${tender_owner}'].broker} |
| 180 | ... level2 | 211 | ... level2 |
| 181 | [Teardown] Оновити LAST_MODIFICATION_DATE | 212 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 182 | - Викликати для учасника ${tender_owner} Відняти предмети закупівлі ${TENDER['TENDER_UAID']} 2 | 213 | + ${item_id}= get_id_from_field ${USERS.users['${tender_owner}'].tender_data.items[4].description} |
| 214 | + Run As ${tender_owner} Видалити предмет закупівлі ${TENDER['TENDER_UAID']} ${item_id} |
| @@ -10,13 +10,11 @@ Suite Setup Test Suite Setup | @@ -10,13 +10,11 @@ Suite Setup Test Suite Setup | ||
| 10 | Suite Teardown Test Suite Teardown | 10 | Suite Teardown Test Suite Teardown |
| 11 | 11 | ||
| 12 | *** Variables *** | 12 | *** Variables *** |
| 13 | -${mode} multi | ||
| 14 | - | ||
| 15 | -${role} viewer | ||
| 16 | -${broker} Quinta | ||
| 17 | - | 13 | +${mode} multiLot |
| 14 | +@{used_roles} tender_owner provider provider1 viewer | ||
| 18 | ${complaint_id} 1 | 15 | ${complaint_id} 1 |
| 19 | 16 | ||
| 17 | + | ||
| 20 | *** Test Cases *** | 18 | *** Test Cases *** |
| 21 | Можливість оголосити мультилотовий тендер | 19 | Можливість оголосити мультилотовий тендер |
| 22 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер | 20 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер |
| @@ -25,13 +23,13 @@ ${complaint_id} 1 | @@ -25,13 +23,13 @@ ${complaint_id} 1 | ||
| 25 | ... minimal | 23 | ... minimal |
| 26 | [Teardown] Оновити LAST_MODIFICATION_DATE | 24 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 27 | ${tender_data}= Підготовка даних для створення тендера | 25 | ${tender_data}= Підготовка даних для створення тендера |
| 28 | - ${tender_data}= test_tender_data_multiple_lots ${tender_data} | ||
| 29 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} | 26 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} |
| 30 | - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data} | 27 | + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data} |
| 31 | Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | 28 | Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} |
| 32 | - Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | 29 | + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} |
| 33 | Log ${TENDER} | 30 | Log ${TENDER} |
| 34 | 31 | ||
| 32 | + | ||
| 35 | Можливість знайти мультилотовий тендер по ідентифікатору | 33 | Можливість знайти мультилотовий тендер по ідентифікатору |
| 36 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | 34 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
| 37 | ... viewer tender_owner provider provider1 | 35 | ... viewer tender_owner provider provider1 |
| @@ -40,7 +38,38 @@ ${complaint_id} 1 | @@ -40,7 +38,38 @@ ${complaint_id} 1 | ||
| 40 | ... minimal | 38 | ... minimal |
| 41 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | 39 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} |
| 42 | \ Дочекатись синхронізації з майданчиком ${username} | 40 | \ Дочекатись синхронізації з майданчиком ${username} |
| 43 | - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 41 | + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
| 42 | + | ||
| 43 | +Можливість додати тендерну документацію лоту | ||
| 44 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ | ||
| 45 | + ... tender_owner | ||
| 46 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 47 | + [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі | ||
| 48 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 49 | + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[0]} | ||
| 50 | + ${filepath}= create_fake_doc | ||
| 51 | + Run As ${tender_owner} Завантажити документ в лот ${filepath} ${TENDER['TENDER_UAID']} ${lot_id} | ||
| 52 | + | ||
| 53 | +Відображення заголовку першого лоту | ||
| 54 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 55 | + ... viewer tender_owner provider provider1 | ||
| 56 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 57 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | ||
| 58 | + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[0]} | ||
| 59 | + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | ||
| 60 | + \ Дочекатись синхронізації з майданчиком ${username} | ||
| 61 | + \ Звірити поле тендера із значенням ${username} | ||
| 62 | + \ ... ${USERS.users['${tender_owner}'].initial_data.data.lots[0].title} title | ||
| 63 | + \ ... object_id=${lot_id} | ||
| 64 | + | ||
| 65 | +Відображення опису першого лоту | ||
| 66 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 67 | + ... viewer | ||
| 68 | + ... ${USERS.users['${viewer}'].broker} | ||
| 69 | + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[0]} | ||
| 70 | + Звірити поле тендера із значенням ${viewer} | ||
| 71 | + ... ${USERS.users['${tender_owner}'].initial_data.data.lots[0].description} description | ||
| 72 | + ... object_id=${lot_id} | ||
| 44 | 73 | ||
| 45 | ####### | 74 | ####### |
| 46 | #Операції з лотом | 75 | #Операції з лотом |
| @@ -51,81 +80,86 @@ ${complaint_id} 1 | @@ -51,81 +80,86 @@ ${complaint_id} 1 | ||
| 51 | ... ${USERS.users['${tender_owner}'].broker} | 80 | ... ${USERS.users['${tender_owner}'].broker} |
| 52 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | 81 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} |
| 53 | [Teardown] Оновити LAST_MODIFICATION_DATE | 82 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 54 | - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | ||
| 55 | ${lot}= Підготовка даних для створення лоту | 83 | ${lot}= Підготовка даних для створення лоту |
| 56 | - ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot} | ||
| 57 | - ${lotresponses}= Create Dictionary | ||
| 58 | - Set To Dictionary ${lotresponses} resp0 ${lotcreate} | ||
| 59 | - Set To Dictionary ${USERS.users['${tender_owner}']} lotresponses ${lotresponses} | ||
| 60 | - log ${lotcreate} | 84 | + ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot} |
| 85 | + ${lot_id}= get_id_from_object ${lot.data} | ||
| 86 | + ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id} | ||
| 87 | + ${lot_data}= munch_dict arg=${lot_data} | ||
| 88 | + Set To Dictionary ${USERS.users['${tender_owner}']} lot_data=${lot_data} | ||
| 89 | + log ${lot_resp} | ||
| 61 | 90 | ||
| 62 | Можливість видалення лоту | 91 | Можливість видалення лоту |
| 63 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 92 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 64 | ... tender_owner | 93 | ... tender_owner |
| 65 | ... ${USERS.users['${tender_owner}'].broker} | 94 | ... ${USERS.users['${tender_owner}'].broker} |
| 66 | [Teardown] Оновити LAST_MODIFICATION_DATE | 95 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 67 | - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | ||
| 68 | - ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp0']} | ||
| 69 | - ${lotdelete}= Викликати для учасника ${tender_owner} Видалити лот ${tender_data} ${lot} | ||
| 70 | - Log ${lotdelete} | 96 | + Run As ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} |
| 71 | 97 | ||
| 72 | Можливість повторого створення лоту | 98 | Можливість повторого створення лоту |
| 73 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 99 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 74 | ... tender_owner | 100 | ... tender_owner |
| 75 | ... ${USERS.users['${tender_owner}'].broker} | 101 | ... ${USERS.users['${tender_owner}'].broker} |
| 76 | [Teardown] Оновити LAST_MODIFICATION_DATE | 102 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 77 | - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | ||
| 78 | ${lot}= Підготовка даних для створення лоту | 103 | ${lot}= Підготовка даних для створення лоту |
| 79 | - ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot} | ||
| 80 | - ${lotresponses}= Create Dictionary | ||
| 81 | - Set To Dictionary ${lotresponses} resp ${lotcreate} | ||
| 82 | - Set To Dictionary ${USERS.users['${tender_owner}']} lotresponses ${lotresponses} | ||
| 83 | - log ${lotcreate} | 104 | + ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot} |
| 105 | + ${lot_id}= get_id_from_object ${lot.data} | ||
| 106 | + ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id} | ||
| 107 | + ${lot_data}= munch_dict arg=${lot_data} | ||
| 108 | + Set To Dictionary ${USERS.users['${tender_owner}']} lot_data=${lot_data} | ||
| 109 | + log ${lot_resp} | ||
| 110 | + | ||
| 111 | +Відображення заголовку другого лоту | ||
| 112 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 113 | + ... viewer tender_owner provider provider1 | ||
| 114 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 115 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | ||
| 116 | + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | ||
| 117 | + \ Дочекатись синхронізації з майданчиком ${username} | ||
| 118 | + \ Звірити поле тендера із значенням ${username} | ||
| 119 | + \ ... ${USERS.users['${tender_owner}'].lot_data.lot.data.title} title | ||
| 120 | + \ ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id} | ||
| 84 | 121 | ||
| 85 | -Можливість змінити бюджет нового лоту до 8000 | 122 | +Відображення опису другого лоту |
| 123 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 124 | + ... viewer | ||
| 125 | + ... ${USERS.users['${viewer}'].broker} | ||
| 126 | + Звірити поле тендера із значенням ${viewer} | ||
| 127 | + ... ${USERS.users['${tender_owner}'].lot_data.lot.data.description} description | ||
| 128 | + ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id} | ||
| 129 | + | ||
| 130 | +Відображення бюджету другого лоту | ||
| 131 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 132 | + ... viewer | ||
| 133 | + ... ${USERS.users['${viewer}'].broker} | ||
| 134 | + Звірити поле тендера із значенням ${viewer} | ||
| 135 | + ... ${USERS.users['${tender_owner}'].lot_data.lot.data.value.amount} value.amount | ||
| 136 | + ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id} | ||
| 137 | + | ||
| 138 | +Можливість змінити бюджет другого лоту до 100 | ||
| 86 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 139 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 87 | ... tender_owner | 140 | ... tender_owner |
| 88 | ... ${USERS.users['${tender_owner}'].broker} | 141 | ... ${USERS.users['${tender_owner}'].broker} |
| 89 | [Teardown] Оновити LAST_MODIFICATION_DATE | 142 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 90 | - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | ||
| 91 | - Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000 | ||
| 92 | - ${fixlotto8000resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']} | ||
| 93 | - Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses} fixlotto8000resp ${fixlotto8000resp} | ||
| 94 | - log ${fixlotto8000resp} | 143 | + Run As ${tender_owner} Змінити лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} value.amount 100 |
| 95 | 144 | ||
| 96 | -Можливість змінити бюджет нового лоту до 100 | 145 | + |
| 146 | +Можливість змінити бюджет другого лоту до 8000 | ||
| 97 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 147 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 98 | ... tender_owner | 148 | ... tender_owner |
| 99 | ... ${USERS.users['${tender_owner}'].broker} | 149 | ... ${USERS.users['${tender_owner}'].broker} |
| 100 | [Teardown] Оновити LAST_MODIFICATION_DATE | 150 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 101 | - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | ||
| 102 | - Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000 | ||
| 103 | - ${fixlotto100resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']} | ||
| 104 | - Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses} fixlotto100resp ${fixlotto100resp} | ||
| 105 | - log ${fixlotto100resp} | ||
| 106 | - | 151 | + Run As ${tender_owner} Змінити лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} value.amount 8000 |
| 107 | 152 | ||
| 108 | ##### | 153 | ##### |
| 109 | #Предмети закупівлі лоту | 154 | #Предмети закупівлі лоту |
| 110 | 155 | ||
| 111 | -Можливість додати позицію закупівлі в тендер | ||
| 112 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 113 | - ... tender_owner | ||
| 114 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 115 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 116 | - Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 1 | ||
| 117 | - | ||
| 118 | -Можливість добавити предмет закупівлі до лоту | 156 | +Можливість добавити предмет закупівлі до другого лоту |
| 119 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 157 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 120 | ... tender_owner | 158 | ... tender_owner |
| 121 | ... ${USERS.users['${tender_owner}'].broker} | 159 | ... ${USERS.users['${tender_owner}'].broker} |
| 122 | [Teardown] Оновити LAST_MODIFICATION_DATE | 160 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 123 | - ${items}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data['items']} | ||
| 124 | - Log ${items} | ||
| 125 | - ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id} | ||
| 126 | - Set To Dictionary ${items[-1]} relatedLot ${lot_id} | ||
| 127 | - Log ${items[-1]} | ||
| 128 | - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items} | 161 | + ${item}= Підготовка даних для створення предмету закупівлі |
| 162 | + Run As ${tender_owner} Додати предмет закупівлі в лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} ${item} | ||
| 129 | 163 | ||
| 130 | Неможливість видалення лоту з прив’язаними предметами закупівлі | 164 | Неможливість видалення лоту з прив’язаними предметами закупівлі |
| 131 | [Documentation] | 165 | [Documentation] |
| @@ -133,126 +167,47 @@ ${complaint_id} 1 | @@ -133,126 +167,47 @@ ${complaint_id} 1 | ||
| 133 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 167 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 134 | ... tender_owner | 168 | ... tender_owner |
| 135 | ... ${USERS.users['${tender_owner}'].broker} | 169 | ... ${USERS.users['${tender_owner}'].broker} |
| 136 | - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | ||
| 137 | - ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp']} | ||
| 138 | - Require Failure ${tender_owner} Видалити лот ${tender_data} ${lot} | ||
| 139 | - | ||
| 140 | -Можливість видалити позиції закупівлі тендера | ||
| 141 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 142 | - ... tender_owner | ||
| 143 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 144 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 145 | - ${items}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data['items']} | ||
| 146 | - Log ${items} | ||
| 147 | - ${resp}= Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items[:-1]} | ||
| 148 | - Log ${resp} | ||
| 149 | - | ||
| 150 | -Можливість додати тендерну документацію лоту | ||
| 151 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ | ||
| 152 | - ... tender_owner | ||
| 153 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 154 | - [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі | ||
| 155 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 156 | - ${filepath}= create_fake_doc | ||
| 157 | - ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id} | ||
| 158 | - ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ в лот ${filepath} ${TENDER['TENDER_UAID']} ${lot_id} | ||
| 159 | - ${file_upload_process_data} = Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply} | ||
| 160 | - log ${file_upload_process_data} | ||
| 161 | - Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data} | ||
| 162 | - Log ${lot_id} | ||
| 163 | - Log ${USERS.users['${tender_owner}']} | 170 | + ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lot_data.lot_id} |
| 171 | + Require Failure ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${lot_id} | ||
| 164 | 172 | ||
| 165 | 173 | ||
| 166 | ####### | 174 | ####### |
| 167 | #Запитання до лоту | 175 | #Запитання до лоту |
| 168 | 176 | ||
| 169 | -Можливість задати питання | 177 | +Можливість задати питання до лоту |
| 170 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання | 178 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
| 171 | ... provider | 179 | ... provider |
| 172 | ... ${USERS.users['${provider}'].broker} | 180 | ... ${USERS.users['${provider}'].broker} |
| 173 | [Setup] Дочекатись синхронізації з майданчиком ${provider} | 181 | [Setup] Дочекатись синхронізації з майданчиком ${provider} |
| 174 | [Teardown] Оновити LAST_MODIFICATION_DATE | 182 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 183 | + ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lot_data.lot_id} | ||
| 175 | ${question}= Підготовка даних для запитання | 184 | ${question}= Підготовка даних для запитання |
| 176 | - ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question} | 185 | + ${question_resp}= Run As ${provider} Задати питання до лоту ${TENDER['TENDER_UAID']} ${lot_id} ${question} |
| 177 | ${now}= Get Current TZdate | 186 | ${now}= Get Current TZdate |
| 178 | ${question.data.date}= Set variable ${now} | 187 | ${question.data.date}= Set variable ${now} |
| 179 | - ${question_id}= get_id_from_field ${question.data.description} | 188 | + ${question_id}= get_id_from_object ${question.data} |
| 180 | ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} | 189 | ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} |
| 181 | ${question_data}= munch_dict arg=${question_data} | 190 | ${question_data}= munch_dict arg=${question_data} |
| 182 | - Set To Dictionary ${USERS.users['${provider}']} question_data ${question_data} | 191 | + Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data} |
| 183 | 192 | ||
| 184 | 193 | ||
| 185 | -Можливість відповісти на запитання | 194 | +Можливість відповісти на запитання до лоту |
| 186 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання | 195 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання |
| 187 | ... tender_owner | 196 | ... tender_owner |
| 188 | ... ${USERS.users['${tender_owner}'].broker} | 197 | ... ${USERS.users['${tender_owner}'].broker} |
| 189 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | 198 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} |
| 190 | [Teardown] Оновити LAST_MODIFICATION_DATE | 199 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 191 | ${answer}= Підготовка даних для відповіді на запитання | 200 | ${answer}= Підготовка даних для відповіді на запитання |
| 192 | - ${answer_resp}= Викликати для учасника ${tender_owner} | 201 | + ${answer_resp}= Run As ${tender_owner} |
| 193 | ... Відповісти на питання ${TENDER['TENDER_UAID']} | 202 | ... Відповісти на питання ${TENDER['TENDER_UAID']} |
| 194 | ... ${USERS.users['${provider}']['question_data']['question_resp']} ${answer} | 203 | ... ${USERS.users['${provider}']['question_data']['question_resp']} ${answer} |
| 195 | ... question_id=${USERS.users['${provider}'].question_data.question_id} | 204 | ... question_id=${USERS.users['${provider}'].question_data.question_id} |
| 196 | ${now}= Get Current TZdate | 205 | ${now}= Get Current TZdate |
| 197 | ${answer.data.date}= Set variable ${now} | 206 | ${answer.data.date}= Set variable ${now} |
| 198 | ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp} | 207 | ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp} |
| 199 | - Set To Dictionary ${USERS.users['${provider}']} answer_data ${answer_data} | 208 | + Set To Dictionary ${USERS.users['${provider}']} answer_data=${answer_data} |
| 200 | 209 | ||
| 201 | ###### | 210 | ###### |
| 202 | -#Cкарга на лот | ||
| 203 | -# | ||
| 204 | -# | ||
| 205 | -##### Дочекатися скарг на лот | ||
| 206 | -# | ||
| 207 | -# | ||
| 208 | -#Можливість подати скаргу на лот | ||
| 209 | -# [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови | ||
| 210 | -# [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі | ||
| 211 | -# Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | ||
| 212 | -# ${LAST_MODIFICATION_DATE}= Get Current Date | ||
| 213 | -# Set Global Variable ${LAST_MODIFICATION_DATE} | ||
| 214 | -# | ||
| 215 | -#Можливість побачити скаргу користувачем | ||
| 216 | -# [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера | ||
| 217 | -# Викликати для учасника ${provider} Порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | ||
| 218 | -# | ||
| 219 | -#Можливість побачити скаргу анонімом | ||
| 220 | -# [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 221 | -# Викликати для учасника ${viewer} Порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | ||
| 222 | -# | ||
| 223 | -#Можливість відхилити скаргу на лот | ||
| 224 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відхилити скаргу на умови | ||
| 225 | -# Set To Dictionary ${COMPLAINTS[0].data} status declined | ||
| 226 | -# Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 0 ${COMPLAINTS[${complaint_id}]} | ||
| 227 | -# log many ${COMPLAINTS[${complaint_id}]} | ||
| 228 | -# викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | ||
| 229 | -# | ||
| 230 | -#Можливість відкинути скаргу на лот | ||
| 231 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відкинути скаргу на умови | ||
| 232 | -# Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | ||
| 233 | -# ${LAST_MODIFICATION_DATE}= Get Current Date | ||
| 234 | -# Set Global Variable ${LAST_MODIFICATION_DATE} | ||
| 235 | -# Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | ||
| 236 | -# Set To Dictionary ${COMPLAINTS[0].data} status invalid | ||
| 237 | -# Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${COMPLAINTS[${complaint_id}]} | ||
| 238 | -# log many ${COMPLAINTS[${complaint_id}]} | ||
| 239 | -# ${LAST_MODIFICATION_DATE}= Get Current Date | ||
| 240 | -# Set Global Variable ${LAST_MODIFICATION_DATE} | ||
| 241 | -# Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | ||
| 242 | -# | ||
| 243 | -#Можливість задовільнити скаргу на лот | ||
| 244 | -# [Tags] ${USERS.users['${provider}'].broker}: Можливість відповісти на запитання | ||
| 245 | -# Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | ||
| 246 | -# ${LAST_MODIFICATION_DATE}= Get Current Date | ||
| 247 | -# Set Global Variable ${LAST_MODIFICATION_DATE} | ||
| 248 | -# Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | ||
| 249 | -# Set To Dictionary ${COMPLAINTS[0].data} status resolved | ||
| 250 | -# Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 2 ${COMPLAINTS[${complaint_id}]} | ||
| 251 | -# log many ${COMPLAINTS[${complaint_id}]} | ||
| 252 | -# ${LAST_MODIFICATION_DATE}= Get Current Date | ||
| 253 | -# Set Global Variable ${LAST_MODIFICATION_DATE} | ||
| 254 | -# | ||
| 255 | -###### | ||
| 256 | #Подання пропозицій | 211 | #Подання пропозицій |
| 257 | 212 | ||
| 258 | Відображення початку періоду прийому пропозицій оголошеного тендера | 213 | Відображення початку періоду прийому пропозицій оголошеного тендера |
| @@ -282,14 +237,10 @@ ${complaint_id} 1 | @@ -282,14 +237,10 @@ ${complaint_id} 1 | ||
| 282 | ... provider | 237 | ... provider |
| 283 | ... ${USERS.users['${provider}'].broker} | 238 | ... ${USERS.users['${provider}'].broker} |
| 284 | [Setup] Дочекатись синхронізації з майданчиком ${provider} | 239 | [Setup] Дочекатись синхронізації з майданчиком ${provider} |
| 285 | - ${bid}= test lots bid data | ||
| 286 | - Log ${bid} | ||
| 287 | - ${bidresponses}= Create Dictionary | ||
| 288 | - Set To Dictionary ${bidresponses} bid ${bid} | ||
| 289 | - Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} | ||
| 290 | - ${bid_before_bidperiod_resp}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | ||
| 291 | - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_before_bidperiod_resp ${bid_before_bidperiod_resp} | ||
| 292 | - log ${USERS.users['${provider}']} | 240 | + @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots |
| 241 | + ${bid}= Підготувати дані для подання пропозиції | ||
| 242 | + ${bid_before_bidperiod_resp}= Require Failure ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} | ||
| 243 | + log ${bid_before_bidperiod_resp} | ||
| 293 | 244 | ||
| 294 | Неможливість подати цінову пропозицію без прив’язки до лоту | 245 | Неможливість подати цінову пропозицію без прив’язки до лоту |
| 295 | [Documentation] | 246 | [Documentation] |
| @@ -299,35 +250,28 @@ ${complaint_id} 1 | @@ -299,35 +250,28 @@ ${complaint_id} 1 | ||
| 299 | ... ${USERS.users['${provider}'].broker} | 250 | ... ${USERS.users['${provider}'].broker} |
| 300 | [Setup] Дочекатись синхронізації з майданчиком ${provider} | 251 | [Setup] Дочекатись синхронізації з майданчиком ${provider} |
| 301 | Дочекатись дати початку прийому пропозицій ${provider} | 252 | Дочекатись дати початку прийому пропозицій ${provider} |
| 302 | - ${bid}= test bid data | ||
| 303 | - Log ${bid} | ||
| 304 | - ${bidresponses}= Create Dictionary | ||
| 305 | - Set To Dictionary ${bidresponses} bid ${bid} | ||
| 306 | - Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} | 253 | + ${bid}= Підготувати дані для подання пропозиції |
| 307 | ${no_lot_bid_resp}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | 254 | ${no_lot_bid_resp}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} |
| 308 | - Set To Dictionary ${USERS.users['${provider}'].bidresponses} no_lot_bid_resp ${no_lot_bid_resp} | ||
| 309 | - log ${USERS.users['${provider}']} | 255 | + log ${no_lot_bid_resp} |
| 310 | 256 | ||
| 311 | Можливість подати цінову пропозицію першим учасником | 257 | Можливість подати цінову пропозицію першим учасником |
| 312 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | 258 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
| 313 | ... provider | 259 | ... provider |
| 314 | ... ${USERS.users['${provider}'].broker} | 260 | ... ${USERS.users['${provider}'].broker} |
| 315 | [Teardown] Оновити LAST_MODIFICATION_DATE | 261 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 316 | - ${bid}= test lots bid data | ||
| 317 | - Log ${bid} | ||
| 318 | - ${bidresponses}= Create Dictionary | ||
| 319 | - Set To Dictionary ${bidresponses} bid ${bid} | ||
| 320 | - Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} | ||
| 321 | - ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | ||
| 322 | - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp} | ||
| 323 | - log ${USERS.users['${provider}']} | 262 | + @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots |
| 263 | + ${bid}= Підготувати дані для подання пропозиції | ||
| 264 | + ${bidresponses}= Create Dictionary bid=${bid} | ||
| 265 | + Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} | ||
| 266 | + ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} | ||
| 267 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp=${resp} | ||
| 324 | 268 | ||
| 325 | Можливість скасувати цінову пропозицію | 269 | Можливість скасувати цінову пропозицію |
| 326 | [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | 270 | [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію |
| 327 | ... provider | 271 | ... provider |
| 328 | ... ${USERS.users['${provider}'].broker} | 272 | ... ${USERS.users['${provider}'].broker} |
| 329 | [Teardown] Оновити LAST_MODIFICATION_DATE | 273 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 330 | - ${canceledbidresp}= Викликати для учасника ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} | 274 | + ${canceledbidresp}= Run As ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} |
| 331 | Log ${canceledbidresp} | 275 | Log ${canceledbidresp} |
| 332 | 276 | ||
| 333 | Можливість подати повторно цінову пропозицію першим учасником | 277 | Можливість подати повторно цінову пропозицію першим учасником |
| @@ -336,22 +280,19 @@ ${complaint_id} 1 | @@ -336,22 +280,19 @@ ${complaint_id} 1 | ||
| 336 | ... ${USERS.users['${provider}'].broker} | 280 | ... ${USERS.users['${provider}'].broker} |
| 337 | [Teardown] Оновити LAST_MODIFICATION_DATE | 281 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 338 | Дочекатись дати початку прийому пропозицій ${provider} | 282 | Дочекатись дати початку прийому пропозицій ${provider} |
| 339 | - ${bid}= test lots bid data | ||
| 340 | - Log ${bid} | ||
| 341 | - ${bidresponses}= Create Dictionary | ||
| 342 | - Set To Dictionary ${bidresponses} bid ${bid} | ||
| 343 | - Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} | ||
| 344 | - ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | ||
| 345 | - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp} | ||
| 346 | - log ${USERS.users['${provider}'].bidresponses} | 283 | + @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots |
| 284 | + ${bid}= Підготувати дані для подання пропозиції | ||
| 285 | + ${bidresponses}= Create Dictionary bid=${bid} | ||
| 286 | + Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} | ||
| 287 | + ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} | ||
| 288 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp=${resp} | ||
| 347 | 289 | ||
| 348 | Можливість змінити повторну цінову пропозицію до 2000 | 290 | Можливість змінити повторну цінову пропозицію до 2000 |
| 349 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | 291 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
| 350 | ... provider | 292 | ... provider |
| 351 | ... ${USERS.users['${provider}'].broker} | 293 | ... ${USERS.users['${provider}'].broker} |
| 352 | [Teardown] Оновити LAST_MODIFICATION_DATE | 294 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 353 | - ${fixbidto2000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000 | ||
| 354 | - Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto2000resp ${fixbidto2000resp} | 295 | + ${fixbidto2000resp}= Run As ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000 |
| 355 | log ${fixbidto2000resp} | 296 | log ${fixbidto2000resp} |
| 356 | 297 | ||
| 357 | Можливість змінити повторну цінову пропозицію до 10 | 298 | Можливість змінити повторну цінову пропозицію до 10 |
| @@ -359,8 +300,7 @@ ${complaint_id} 1 | @@ -359,8 +300,7 @@ ${complaint_id} 1 | ||
| 359 | ... provider | 300 | ... provider |
| 360 | ... ${USERS.users['${provider}'].broker} | 301 | ... ${USERS.users['${provider}'].broker} |
| 361 | [Teardown] Оновити LAST_MODIFICATION_DATE | 302 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 362 | - ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 10 | ||
| 363 | - Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto10resp ${fixbidto10resp} | 303 | + ${fixbidto10resp}= Run As ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 10 |
| 364 | log ${fixbidto10resp} | 304 | log ${fixbidto10resp} |
| 365 | 305 | ||
| 366 | Можливість подати цінову пропозицію другим учасником | 306 | Можливість подати цінову пропозицію другим учасником |
| @@ -370,15 +310,12 @@ ${complaint_id} 1 | @@ -370,15 +310,12 @@ ${complaint_id} 1 | ||
| 370 | [Setup] Дочекатись синхронізації з майданчиком ${provider1} | 310 | [Setup] Дочекатись синхронізації з майданчиком ${provider1} |
| 371 | [Teardown] Оновити LAST_MODIFICATION_DATE | 311 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 372 | Дочекатись дати початку прийому пропозицій ${provider1} | 312 | Дочекатись дати початку прийому пропозицій ${provider1} |
| 373 | - ${bid}= test lots bid data | ||
| 374 | - Log ${bid} | ||
| 375 | - ${bidresponses}= Create Dictionary | ||
| 376 | - Set To Dictionary ${bidresponses} bid ${bid} | ||
| 377 | - Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses} | ||
| 378 | - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | ||
| 379 | - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp} | ||
| 380 | - log ${resp} | ||
| 381 | - log ${USERS.users['${provider1}'].bidresponses} | 313 | + @{lots_ids}= Отримати ідентифікатори об’єктів ${provider1} lots |
| 314 | + ${bid}= Підготувати дані для подання пропозиції | ||
| 315 | + ${bidresponses}= Create Dictionary bid=${bid} | ||
| 316 | + Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses} | ||
| 317 | + ${resp}= Run As ${provider1} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} | ||
| 318 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp} | ||
| 382 | 319 | ||
| 383 | Неможливість побачити цінові пропозиції учасників під час прийому пропозицій | 320 | Неможливість побачити цінові пропозиції учасників під час прийому пропозицій |
| 384 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію | 321 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію |
| @@ -396,7 +333,6 @@ ${complaint_id} 1 | @@ -396,7 +333,6 @@ ${complaint_id} 1 | ||
| 396 | [Setup] Дочекатись синхронізації з майданчиком ${provider1} | 333 | [Setup] Дочекатись синхронізації з майданчиком ${provider1} |
| 397 | Дочекатись дати закінчення прийому пропозицій ${provider1} | 334 | Дочекатись дати закінчення прийому пропозицій ${provider1} |
| 398 | ${failfixbidto2000resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000 | 335 | ${failfixbidto2000resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000 |
| 399 | - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto2000resp ${failfixbidto2000resp} | ||
| 400 | log ${failfixbidto2000resp} | 336 | log ${failfixbidto2000resp} |
| 401 | 337 | ||
| 402 | Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій | 338 | Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
| @@ -406,7 +342,6 @@ ${complaint_id} 1 | @@ -406,7 +342,6 @@ ${complaint_id} 1 | ||
| 406 | ... provider1 | 342 | ... provider1 |
| 407 | ... ${USERS.users['${provider1}'].broker} | 343 | ... ${USERS.users['${provider1}'].broker} |
| 408 | ${failfixbidto1resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 1 | 344 | ${failfixbidto1resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 1 |
| 409 | - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp} | ||
| 410 | log ${failfixbidto1resp} | 345 | log ${failfixbidto1resp} |
| 411 | 346 | ||
| 412 | Неможливість скасувати цінову пропозицію | 347 | Неможливість скасувати цінову пропозицію |
| @@ -416,3 +351,4 @@ ${complaint_id} 1 | @@ -416,3 +351,4 @@ ${complaint_id} 1 | ||
| 416 | ... provider1 | 351 | ... provider1 |
| 417 | ... ${USERS.users['${provider1}'].broker} | 352 | ... ${USERS.users['${provider1}'].broker} |
| 418 | ${biddingresponse}= Require Failure ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} | 353 | ${biddingresponse}= Require Failure ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} |
| 354 | + log ${biddingresponse} |
| @@ -6,8 +6,7 @@ Suite Teardown Close all browsers | @@ -6,8 +6,7 @@ Suite Teardown Close all browsers | ||
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | ${mode} negotiation.quick | 8 | ${mode} negotiation.quick |
| 9 | -${role} viewer | ||
| 10 | -${broker} Quinta | 9 | +@{used_roles} tender_owner viewer |
| 11 | 10 | ||
| 12 | 11 | ||
| 13 | *** Test Cases *** | 12 | *** Test Cases *** |
| @@ -20,7 +19,7 @@ ${broker} Quinta | @@ -20,7 +19,7 @@ ${broker} Quinta | ||
| 20 | ... ${USERS.users['${tender_owner}'].broker} | 19 | ... ${USERS.users['${tender_owner}'].broker} |
| 21 | ... minimal | 20 | ... minimal |
| 22 | [Teardown] Оновити LAST_MODIFICATION_DATE | 21 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 23 | - Можливість створити закупівлю для тестування скасування | 22 | + Можливість створити закупівлю |
| 24 | 23 | ||
| 25 | 24 | ||
| 26 | Можливість скасувати переговорну процедуру за нагальною потребою | 25 | Можливість скасувати переговорну процедуру за нагальною потребою |
| @@ -73,24 +72,6 @@ ${broker} Quinta | @@ -73,24 +72,6 @@ ${broker} Quinta | ||
| 73 | Можливість створити закупівлю | 72 | Можливість створити закупівлю |
| 74 | 73 | ||
| 75 | 74 | ||
| 76 | -Можливість знайти переговорну процедуру за нагальною потребою по ідентифікатору | ||
| 77 | - [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти процедуру | ||
| 78 | - ... viewer | ||
| 79 | - ... ${USERS.users['${viewer}'].broker} | ||
| 80 | - ... minimal | ||
| 81 | - [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 82 | - Можливість знайти закупівлю по ідентифікатору | ||
| 83 | - | ||
| 84 | - | ||
| 85 | -Можливість модифікації переговорної процедури за нагальною потребою | ||
| 86 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість модифікації процедури | ||
| 87 | - ... tender_owner | ||
| 88 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 89 | - ... level2 | ||
| 90 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 91 | - Можливість модифікації закупівлі | ||
| 92 | - | ||
| 93 | - | ||
| 94 | Можливість додати документацію до переговорної процедури за нагальною потребою | 75 | Можливість додати документацію до переговорної процедури за нагальною потребою |
| 95 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури | 76 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури |
| 96 | ... tender_owner | 77 | ... tender_owner |
| @@ -108,6 +89,15 @@ ${broker} Quinta | @@ -108,6 +89,15 @@ ${broker} Quinta | ||
| 108 | [Teardown] Оновити LAST_MODIFICATION_DATE | 89 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 109 | Можливість зареєструвати і підтвердити постачальника до закупівлі | 90 | Можливість зареєструвати і підтвердити постачальника до закупівлі |
| 110 | 91 | ||
| 92 | + | ||
| 93 | +Можливість знайти переговорну процедуру за нагальною потребою по ідентифікатору | ||
| 94 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти процедуру | ||
| 95 | + ... viewer | ||
| 96 | + ... ${USERS.users['${viewer}'].broker} | ||
| 97 | + ... minimal | ||
| 98 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 99 | + Можливість знайти закупівлю по ідентифікатору | ||
| 100 | + | ||
| 111 | ############################################################################################## | 101 | ############################################################################################## |
| 112 | # MAIN DATA | 102 | # MAIN DATA |
| 113 | ############################################################################################## | 103 | ############################################################################################## |
| @@ -339,13 +329,6 @@ ${broker} Quinta | @@ -339,13 +329,6 @@ ${broker} Quinta | ||
| 339 | Відображення опису номенклатури закупівлі | 329 | Відображення опису номенклатури закупівлі |
| 340 | 330 | ||
| 341 | 331 | ||
| 342 | -Відображення ідентифікатора номенклатури переговорної процедури за нагальною потребою | ||
| 343 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури | ||
| 344 | - ... viewer | ||
| 345 | - ... ${USERS.users['${viewer}'].broker} | ||
| 346 | - Відображення ідентифікатора номенклатури закупівлі | ||
| 347 | - | ||
| 348 | - | ||
| 349 | Відображення кількості номенклатури переговорної процедури за нагальною потребою | 332 | Відображення кількості номенклатури переговорної процедури за нагальною потребою |
| 350 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури | 333 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури |
| 351 | ... viewer | 334 | ... viewer |
| @@ -6,8 +6,7 @@ Suite Teardown Close all browsers | @@ -6,8 +6,7 @@ Suite Teardown Close all browsers | ||
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | ${mode} negotiation | 8 | ${mode} negotiation |
| 9 | -${role} viewer | ||
| 10 | -${broker} Quinta | 9 | +@{used_roles} tender_owner viewer |
| 11 | 10 | ||
| 12 | 11 | ||
| 13 | *** Test Cases *** | 12 | *** Test Cases *** |
| @@ -20,7 +19,7 @@ ${broker} Quinta | @@ -20,7 +19,7 @@ ${broker} Quinta | ||
| 20 | ... ${USERS.users['${tender_owner}'].broker} | 19 | ... ${USERS.users['${tender_owner}'].broker} |
| 21 | ... minimal | 20 | ... minimal |
| 22 | [Teardown] Оновити LAST_MODIFICATION_DATE | 21 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 23 | - Можливість створити закупівлю для тестування скасування | 22 | + Можливість створити закупівлю |
| 24 | 23 | ||
| 25 | 24 | ||
| 26 | Можливість скасувати переговорну процедуру | 25 | Можливість скасувати переговорну процедуру |
| @@ -73,24 +72,6 @@ ${broker} Quinta | @@ -73,24 +72,6 @@ ${broker} Quinta | ||
| 73 | Можливість створити закупівлю | 72 | Можливість створити закупівлю |
| 74 | 73 | ||
| 75 | 74 | ||
| 76 | -Можливість знайти переговорну процедуру по ідентифікатору | ||
| 77 | - [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти процедуру | ||
| 78 | - ... viewer | ||
| 79 | - ... ${USERS.users['${viewer}'].broker} | ||
| 80 | - ... minimal | ||
| 81 | - [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 82 | - Можливість знайти закупівлю по ідентифікатору | ||
| 83 | - | ||
| 84 | - | ||
| 85 | -Можливість модифікації переговорної процедури | ||
| 86 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість модифікації процедури | ||
| 87 | - ... tender_owner | ||
| 88 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 89 | - ... level2 | ||
| 90 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 91 | - Можливість модифікації закупівлі | ||
| 92 | - | ||
| 93 | - | ||
| 94 | Можливість додати документацію до переговорної процедури | 75 | Можливість додати документацію до переговорної процедури |
| 95 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури | 76 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури |
| 96 | ... tender_owner | 77 | ... tender_owner |
| @@ -108,6 +89,15 @@ ${broker} Quinta | @@ -108,6 +89,15 @@ ${broker} Quinta | ||
| 108 | [Teardown] Оновити LAST_MODIFICATION_DATE | 89 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 109 | Можливість зареєструвати і підтвердити постачальника до закупівлі | 90 | Можливість зареєструвати і підтвердити постачальника до закупівлі |
| 110 | 91 | ||
| 92 | + | ||
| 93 | +Можливість знайти переговорну процедуру по ідентифікатору | ||
| 94 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти процедуру | ||
| 95 | + ... viewer | ||
| 96 | + ... ${USERS.users['${viewer}'].broker} | ||
| 97 | + ... minimal | ||
| 98 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 99 | + Можливість знайти закупівлю по ідентифікатору | ||
| 100 | + | ||
| 111 | ############################################################################################## | 101 | ############################################################################################## |
| 112 | # MAIN DATA | 102 | # MAIN DATA |
| 113 | ############################################################################################## | 103 | ############################################################################################## |
| @@ -339,13 +329,6 @@ ${broker} Quinta | @@ -339,13 +329,6 @@ ${broker} Quinta | ||
| 339 | Відображення опису номенклатури закупівлі | 329 | Відображення опису номенклатури закупівлі |
| 340 | 330 | ||
| 341 | 331 | ||
| 342 | -Відображення ідентифікатора номенклатури переговорної процедури | ||
| 343 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури | ||
| 344 | - ... viewer | ||
| 345 | - ... ${USERS.users['${viewer}'].broker} | ||
| 346 | - Відображення ідентифікатора номенклатури закупівлі | ||
| 347 | - | ||
| 348 | - | ||
| 349 | Відображення кількості номенклатури переговорної процедури | 332 | Відображення кількості номенклатури переговорної процедури |
| 350 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури | 333 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури |
| 351 | ... viewer | 334 | ... viewer |
| @@ -6,9 +6,7 @@ Suite Teardown Test Suite Teardown | @@ -6,9 +6,7 @@ Suite Teardown Test Suite Teardown | ||
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | ${mode} openeu | 8 | ${mode} openeu |
| 9 | - | ||
| 10 | -${role} viewer | ||
| 11 | -${broker} Quinta | 9 | +@{used_roles} tender_owner provider provider1 viewer |
| 12 | 10 | ||
| 13 | 11 | ||
| 14 | *** Test Cases *** | 12 | *** Test Cases *** |
| @@ -72,6 +70,7 @@ ${broker} Quinta | @@ -72,6 +70,7 @@ ${broker} Quinta | ||
| 72 | ... ${USERS.users['${provider}'].broker} | 70 | ... ${USERS.users['${provider}'].broker} |
| 73 | [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі | 71 | [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі |
| 74 | [Teardown] Оновити LAST_MODIFICATION_DATE | 72 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 73 | + Дочекатись дати початку прийому пропозицій ${provider} | ||
| 75 | ${claim}= Підготовка даних для подання вимоги | 74 | ${claim}= Підготовка даних для подання вимоги |
| 76 | ${claim_resp}= Викликати для учасника ${provider} | 75 | ${claim_resp}= Викликати для учасника ${provider} |
| 77 | ... Створити вимогу | 76 | ... Створити вимогу |
| @@ -107,7 +106,7 @@ ${broker} Quinta | @@ -107,7 +106,7 @@ ${broker} Quinta | ||
| 107 | ... provider | 106 | ... provider |
| 108 | ... ${USERS.users['${provider}'].broker} | 107 | ... ${USERS.users['${provider}'].broker} |
| 109 | [Teardown] Оновити LAST_MODIFICATION_DATE | 108 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 110 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 109 | + ${bid}= Підготувати дані для подання пропозиції |
| 111 | Log ${bid} | 110 | Log ${bid} |
| 112 | ${bidresponses}= Create Dictionary | 111 | ${bidresponses}= Create Dictionary |
| 113 | Set To Dictionary ${bidresponses} bid ${bid} | 112 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -177,7 +176,7 @@ ${broker} Quinta | @@ -177,7 +176,7 @@ ${broker} Quinta | ||
| 177 | ... provider1 | 176 | ... provider1 |
| 178 | ... ${USERS.users['${provider1}'].broker} | 177 | ... ${USERS.users['${provider1}'].broker} |
| 179 | [Teardown] Оновити LAST_MODIFICATION_DATE | 178 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 180 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 179 | + ${bid}= Підготувати дані для подання пропозиції |
| 181 | Log ${bid} | 180 | Log ${bid} |
| 182 | ${bidresponses}= Create Dictionary | 181 | ${bidresponses}= Create Dictionary |
| 183 | Set To Dictionary ${bidresponses} bid ${bid} | 182 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -227,7 +226,7 @@ Cкасувати цінову пропозицію другого учасни | @@ -227,7 +226,7 @@ Cкасувати цінову пропозицію другого учасни | ||
| 227 | ... provider1 | 226 | ... provider1 |
| 228 | ... ${USERS.users['${provider1}'].broker} | 227 | ... ${USERS.users['${provider1}'].broker} |
| 229 | [Teardown] Оновити LAST_MODIFICATION_DATE | 228 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 230 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 229 | + ${bid}= Підготувати дані для подання пропозиції |
| 231 | Log ${bid} | 230 | Log ${bid} |
| 232 | ${bidresponses}= Create Dictionary | 231 | ${bidresponses}= Create Dictionary |
| 233 | Set To Dictionary ${bidresponses} bid ${bid} | 232 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -349,7 +348,7 @@ Cкасувати цінову пропозицію другого учасни | @@ -349,7 +348,7 @@ Cкасувати цінову пропозицію другого учасни | ||
| 349 | ... provider1 | 348 | ... provider1 |
| 350 | ... ${USERS.users['${provider1}'].broker} | 349 | ... ${USERS.users['${provider1}'].broker} |
| 351 | [Teardown] Оновити LAST_MODIFICATION_DATE | 350 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 352 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 351 | + ${bid}= Підготувати дані для подання пропозиції |
| 353 | Log ${bid} | 352 | Log ${bid} |
| 354 | ${bidresponses}= Create Dictionary | 353 | ${bidresponses}= Create Dictionary |
| 355 | Set To Dictionary ${bidresponses} bid ${bid} | 354 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -6,9 +6,7 @@ Suite Teardown Test Suite Teardown | @@ -6,9 +6,7 @@ Suite Teardown Test Suite Teardown | ||
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | ${mode} openua | 8 | ${mode} openua |
| 9 | - | ||
| 10 | -${role} viewer | ||
| 11 | -${broker} Quinta | 9 | +@{used_roles} tender_owner provider provider1 viewer |
| 12 | 10 | ||
| 13 | 11 | ||
| 14 | *** Test Cases *** | 12 | *** Test Cases *** |
| @@ -64,6 +62,7 @@ ${broker} Quinta | @@ -64,6 +62,7 @@ ${broker} Quinta | ||
| 64 | ... ${USERS.users['${provider}'].broker} | 62 | ... ${USERS.users['${provider}'].broker} |
| 65 | [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі | 63 | [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі |
| 66 | [Teardown] Оновити LAST_MODIFICATION_DATE | 64 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 65 | + Дочекатись дати початку прийому пропозицій ${provider} | ||
| 67 | ${claim}= Підготовка даних для подання вимоги | 66 | ${claim}= Підготовка даних для подання вимоги |
| 68 | ${claim_resp}= Викликати для учасника ${provider} | 67 | ${claim_resp}= Викликати для учасника ${provider} |
| 69 | ... Створити вимогу | 68 | ... Створити вимогу |
| @@ -99,7 +98,7 @@ ${broker} Quinta | @@ -99,7 +98,7 @@ ${broker} Quinta | ||
| 99 | ... provider | 98 | ... provider |
| 100 | ... ${USERS.users['${provider}'].broker} | 99 | ... ${USERS.users['${provider}'].broker} |
| 101 | [Teardown] Оновити LAST_MODIFICATION_DATE | 100 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 102 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 101 | + ${bid}= Підготувати дані для подання пропозиції |
| 103 | Log ${bid} | 102 | Log ${bid} |
| 104 | ${bidresponses}= Create Dictionary | 103 | ${bidresponses}= Create Dictionary |
| 105 | Set To Dictionary ${bidresponses} bid ${bid} | 104 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -113,7 +112,7 @@ ${broker} Quinta | @@ -113,7 +112,7 @@ ${broker} Quinta | ||
| 113 | ... provider1 | 112 | ... provider1 |
| 114 | ... ${USERS.users['${provider1}'].broker} | 113 | ... ${USERS.users['${provider1}'].broker} |
| 115 | [Teardown] Оновити LAST_MODIFICATION_DATE | 114 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 116 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 115 | + ${bid}= Підготувати дані для подання пропозиції |
| 117 | Log ${bid} | 116 | Log ${bid} |
| 118 | ${bidresponses}= Create Dictionary | 117 | ${bidresponses}= Create Dictionary |
| 119 | Set To Dictionary ${bidresponses} bid ${bid} | 118 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -163,7 +162,7 @@ Cкасувати цінову пропозицію другого учасни | @@ -163,7 +162,7 @@ Cкасувати цінову пропозицію другого учасни | ||
| 163 | ... provider1 | 162 | ... provider1 |
| 164 | ... ${USERS.users['${provider1}'].broker} | 163 | ... ${USERS.users['${provider1}'].broker} |
| 165 | [Teardown] Оновити LAST_MODIFICATION_DATE | 164 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 166 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 165 | + ${bid}= Підготувати дані для подання пропозиції |
| 167 | Log ${bid} | 166 | Log ${bid} |
| 168 | ${bidresponses}= Create Dictionary | 167 | ${bidresponses}= Create Dictionary |
| 169 | Set To Dictionary ${bidresponses} bid ${bid} | 168 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -288,7 +287,7 @@ Cкасувати цінову пропозицію другого учасни | @@ -288,7 +287,7 @@ Cкасувати цінову пропозицію другого учасни | ||
| 288 | ... provider1 | 287 | ... provider1 |
| 289 | ... ${USERS.users['${provider1}'].broker} | 288 | ... ${USERS.users['${provider1}'].broker} |
| 290 | [Teardown] Оновити LAST_MODIFICATION_DATE | 289 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 291 | - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True} | 290 | + ${bid}= Підготувати дані для подання пропозиції |
| 292 | Log ${bid} | 291 | Log ${bid} |
| 293 | ${bidresponses}= Create Dictionary | 292 | ${bidresponses}= Create Dictionary |
| 294 | Set To Dictionary ${bidresponses} bid ${bid} | 293 | Set To Dictionary ${bidresponses} bid ${bid} |
| @@ -5,8 +5,7 @@ Suite Setup Test Suite Setup | @@ -5,8 +5,7 @@ Suite Setup Test Suite Setup | ||
| 5 | Suite Teardown Test Suite Teardown | 5 | Suite Teardown Test Suite Teardown |
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | -${role} viewer | ||
| 9 | -${broker} Quinta | 8 | +@{used_roles} tender_owner viewer |
| 10 | 9 | ||
| 11 | 10 | ||
| 12 | *** Test Cases *** | 11 | *** Test Cases *** |
| @@ -6,8 +6,7 @@ Suite Teardown Close all browsers | @@ -6,8 +6,7 @@ Suite Teardown Close all browsers | ||
| 6 | 6 | ||
| 7 | *** Variables *** | 7 | *** Variables *** |
| 8 | ${mode} reporting | 8 | ${mode} reporting |
| 9 | -${role} viewer | ||
| 10 | -${broker} Quinta | 9 | +@{used_roles} tender_owner viewer |
| 11 | 10 | ||
| 12 | 11 | ||
| 13 | *** Test Cases *** | 12 | *** Test Cases *** |
| @@ -20,7 +19,7 @@ ${broker} Quinta | @@ -20,7 +19,7 @@ ${broker} Quinta | ||
| 20 | ... ${USERS.users['${tender_owner}'].broker} | 19 | ... ${USERS.users['${tender_owner}'].broker} |
| 21 | ... minimal | 20 | ... minimal |
| 22 | [Teardown] Оновити LAST_MODIFICATION_DATE | 21 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 23 | - Можливість створити закупівлю для тестування скасування | 22 | + Можливість створити закупівлю |
| 24 | 23 | ||
| 25 | 24 | ||
| 26 | Можливість скасувати звіт про укладений договір | 25 | Можливість скасувати звіт про укладений договір |
| @@ -73,24 +72,6 @@ ${broker} Quinta | @@ -73,24 +72,6 @@ ${broker} Quinta | ||
| 73 | Можливість створити закупівлю | 72 | Можливість створити закупівлю |
| 74 | 73 | ||
| 75 | 74 | ||
| 76 | -Можливість знайти звіт про укладений договір по ідентифікатору | ||
| 77 | - [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти процедуру | ||
| 78 | - ... viewer | ||
| 79 | - ... ${USERS.users['${viewer}'].broker} | ||
| 80 | - ... minimal | ||
| 81 | - [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 82 | - Можливість знайти закупівлю по ідентифікатору | ||
| 83 | - | ||
| 84 | - | ||
| 85 | -Можливість модифікації звіту про укладений договір | ||
| 86 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість модифікації процедури | ||
| 87 | - ... tender_owner | ||
| 88 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 89 | - ... level2 | ||
| 90 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 91 | - Можливість модифікації закупівлі | ||
| 92 | - | ||
| 93 | - | ||
| 94 | Можливість додати документацію до звіту про укладений договір | 75 | Можливість додати документацію до звіту про укладений договір |
| 95 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури | 76 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури |
| 96 | ... tender_owner | 77 | ... tender_owner |
| @@ -108,6 +89,35 @@ ${broker} Quinta | @@ -108,6 +89,35 @@ ${broker} Quinta | ||
| 108 | [Teardown] Оновити LAST_MODIFICATION_DATE | 89 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 109 | Можливість зареєструвати і підтвердити постачальника до закупівлі | 90 | Можливість зареєструвати і підтвердити постачальника до закупівлі |
| 110 | 91 | ||
| 92 | + | ||
| 93 | +Можливість укласти угоду для звіту про укладений договір | ||
| 94 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для процедури | ||
| 95 | + ... ${tender_owner} | ||
| 96 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 97 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 98 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 99 | + Можливість укласти угоду для закупівлі | ||
| 100 | + | ||
| 101 | + | ||
| 102 | +Можливість знайти звіт про укладений договір по ідентифікатору | ||
| 103 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти процедуру | ||
| 104 | + ... viewer | ||
| 105 | + ... ${USERS.users['${viewer}'].broker} | ||
| 106 | + ... minimal | ||
| 107 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 108 | + Можливість знайти закупівлю по ідентифікатору | ||
| 109 | + | ||
| 110 | +############################################################################################## | ||
| 111 | +# CONTRACTS | ||
| 112 | +############################################################################################## | ||
| 113 | + | ||
| 114 | +Відображення статусу підписаної угоди з постачальником звіту про укладений договір | ||
| 115 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення угоди з постачальником процедури | ||
| 116 | + ... viewer | ||
| 117 | + ... ${USERS.users['${viewer}'].broker} | ||
| 118 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 119 | + Відображення статусу підписаної угоди з постачальником закупівлі | ||
| 120 | + | ||
| 111 | ############################################################################################## | 121 | ############################################################################################## |
| 112 | # MAIN DATA | 122 | # MAIN DATA |
| 113 | ############################################################################################## | 123 | ############################################################################################## |
| @@ -325,13 +335,6 @@ ${broker} Quinta | @@ -325,13 +335,6 @@ ${broker} Quinta | ||
| 325 | Відображення опису номенклатури закупівлі | 335 | Відображення опису номенклатури закупівлі |
| 326 | 336 | ||
| 327 | 337 | ||
| 328 | -Відображення ідентифікатора номенклатури звіту про укладений договір | ||
| 329 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури | ||
| 330 | - ... viewer | ||
| 331 | - ... ${USERS.users['${viewer}'].broker} | ||
| 332 | - Відображення ідентифікатора номенклатури закупівлі | ||
| 333 | - | ||
| 334 | - | ||
| 335 | Відображення кількості номенклатури звіту про укладений договір | 338 | Відображення кількості номенклатури звіту про укладений договір |
| 336 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури | 339 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури |
| 337 | ... viewer | 340 | ... viewer |
| @@ -546,23 +549,3 @@ ${broker} Quinta | @@ -546,23 +549,3 @@ ${broker} Quinta | ||
| 546 | ... viewer | 549 | ... viewer |
| 547 | ... ${USERS.users['${viewer}'].broker} | 550 | ... ${USERS.users['${viewer}'].broker} |
| 548 | Відображення вартості номенклатури постачальника закупівлі | 551 | Відображення вартості номенклатури постачальника закупівлі |
| 549 | - | ||
| 550 | -############################################################################################## | ||
| 551 | -# CONTRACTS | ||
| 552 | -############################################################################################## | ||
| 553 | - | ||
| 554 | -Можливість укласти угоду для звіту про укладений договір | ||
| 555 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для процедури | ||
| 556 | - ... ${tender_owner} | ||
| 557 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 558 | - [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 559 | - [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 560 | - Можливість укласти угоду для закупівлі | ||
| 561 | - | ||
| 562 | - | ||
| 563 | -Відображення статусу підписаної угоди з постачальником звіту про укладений договір | ||
| 564 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення угоди з постачальником процедури | ||
| 565 | - ... viewer | ||
| 566 | - ... ${USERS.users['${viewer}'].broker} | ||
| 567 | - [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 568 | - Відображення статусу підписаної угоди з постачальником закупівлі |
| @@ -16,13 +16,10 @@ from robot.output.loggerhelper import Message | @@ -16,13 +16,10 @@ from robot.output.loggerhelper import Message | ||
| 16 | # can access them by simply importing library "service_keywords". | 16 | # can access them by simply importing library "service_keywords". |
| 17 | # Please ignore the warning given by Flake8 or other linter. | 17 | # Please ignore the warning given by Flake8 or other linter. |
| 18 | from .initial_data import ( | 18 | from .initial_data import ( |
| 19 | - auction_bid, | ||
| 20 | create_fake_doc, | 19 | create_fake_doc, |
| 21 | create_fake_sentence, | 20 | create_fake_sentence, |
| 22 | - test_additional_items_data, | ||
| 23 | test_award_data, | 21 | test_award_data, |
| 24 | test_bid_data, | 22 | test_bid_data, |
| 25 | - test_bid_data_meat_tender, | ||
| 26 | test_cancel_claim_data, | 23 | test_cancel_claim_data, |
| 27 | test_cancel_tender_data, | 24 | test_cancel_tender_data, |
| 28 | test_change_cancellation_document_field_data, | 25 | test_change_cancellation_document_field_data, |
| @@ -40,14 +37,13 @@ from .initial_data import ( | @@ -40,14 +37,13 @@ from .initial_data import ( | ||
| 40 | test_lot_data, | 37 | test_lot_data, |
| 41 | test_lot_document_data, | 38 | test_lot_document_data, |
| 42 | test_lot_question_data, | 39 | test_lot_question_data, |
| 43 | - test_lots_bid_data, | ||
| 44 | - test_meat_tender_data, | ||
| 45 | test_question_answer_data, | 40 | test_question_answer_data, |
| 46 | test_question_data, | 41 | test_question_data, |
| 47 | test_submit_claim_data, | 42 | test_submit_claim_data, |
| 48 | test_supplier_data, | 43 | test_supplier_data, |
| 49 | test_tender_data, | 44 | test_tender_data, |
| 50 | test_tender_data_limited, | 45 | test_tender_data_limited, |
| 46 | + test_tender_data_meat, | ||
| 51 | test_tender_data_multiple_items, | 47 | test_tender_data_multiple_items, |
| 52 | test_tender_data_multiple_lots, | 48 | test_tender_data_multiple_lots, |
| 53 | test_tender_data_openeu, | 49 | test_tender_data_openeu, |
| @@ -142,14 +138,65 @@ def munch_to_object(data, format="yaml"): | @@ -142,14 +138,65 @@ def munch_to_object(data, format="yaml"): | ||
| 142 | return data.toYAML(allow_unicode=True, default_flow_style=False) | 138 | return data.toYAML(allow_unicode=True, default_flow_style=False) |
| 143 | 139 | ||
| 144 | 140 | ||
| 145 | -def load_initial_data_from(file_name): | 141 | +def load_data_from(file_name, mode=None): |
| 146 | if not os.path.exists(file_name): | 142 | if not os.path.exists(file_name): |
| 147 | file_name = os.path.join(os.path.dirname(__file__), 'data', file_name) | 143 | file_name = os.path.join(os.path.dirname(__file__), 'data', file_name) |
| 148 | with open(file_name) as file_obj: | 144 | with open(file_name) as file_obj: |
| 149 | if file_name.endswith(".json"): | 145 | if file_name.endswith(".json"): |
| 150 | - return Munch.fromDict(load(file_obj)) | 146 | + file_data = Munch.fromDict(load(file_obj)) |
| 151 | elif file_name.endswith(".yaml"): | 147 | elif file_name.endswith(".yaml"): |
| 152 | - return fromYAML(file_obj) | 148 | + file_data = fromYAML(file_obj) |
| 149 | + if mode == "brokers": | ||
| 150 | + default = file_data.pop('Default') | ||
| 151 | + brokers = {} | ||
| 152 | + for k, v in file_data.iteritems(): | ||
| 153 | + brokers[k] = merge_dicts(default, v) | ||
| 154 | + return brokers | ||
| 155 | + else: | ||
| 156 | + return file_data | ||
| 157 | + | ||
| 158 | + | ||
| 159 | +def compute_intrs(brokers_data, used_brokers): | ||
| 160 | + """Compute optimal values for period intervals. | ||
| 161 | + | ||
| 162 | + Notice: This function is maximally effective if ``brokers_data`` | ||
| 163 | + does not contain ``Default`` entry. | ||
| 164 | + Using `load_data_from` with ``mode='brokers'`` is recommended. | ||
| 165 | + """ | ||
| 166 | + num_types = (int, long, float) | ||
| 167 | + | ||
| 168 | + def recur(l, r): | ||
| 169 | + l, r = deepcopy(l), deepcopy(r) | ||
| 170 | + if isinstance(l, list) and isinstance(r, list) and len(l) == len(r): | ||
| 171 | + lst = [] | ||
| 172 | + for ll, rr in zip(l, r): | ||
| 173 | + lst.append(recur(ll, rr)) | ||
| 174 | + return lst | ||
| 175 | + elif isinstance(l, num_types) and isinstance(r, num_types): | ||
| 176 | + if l == r: | ||
| 177 | + return l | ||
| 178 | + if l > r: | ||
| 179 | + return l | ||
| 180 | + if l < r: | ||
| 181 | + return r | ||
| 182 | + elif isinstance(l, dict) and isinstance(r, dict): | ||
| 183 | + for k, v in r.iteritems(): | ||
| 184 | + if k not in l.keys(): | ||
| 185 | + l[k] = v | ||
| 186 | + else: | ||
| 187 | + l[k] = recur(l[k], v) | ||
| 188 | + return l | ||
| 189 | + else: | ||
| 190 | + raise TypeError("Couldn't recur({0}, {1})".format( | ||
| 191 | + str(type(l)), str(type(r)))) | ||
| 192 | + | ||
| 193 | + intrs = [] | ||
| 194 | + for i in used_brokers: | ||
| 195 | + intrs.append(brokers_data[i]['intervals']) | ||
| 196 | + result = intrs.pop(0) | ||
| 197 | + for i in intrs: | ||
| 198 | + result = recur(result, i) | ||
| 199 | + return result | ||
| 153 | 200 | ||
| 154 | 201 | ||
| 155 | def prepare_test_tender_data(procedure_intervals, mode): | 202 | def prepare_test_tender_data(procedure_intervals, mode): |
| @@ -171,20 +218,24 @@ def prepare_test_tender_data(procedure_intervals, mode): | @@ -171,20 +218,24 @@ def prepare_test_tender_data(procedure_intervals, mode): | ||
| 171 | assert 'accelerator' not in intervals.keys(), \ | 218 | assert 'accelerator' not in intervals.keys(), \ |
| 172 | "Accelerator is not available for mode '{0}'".format(mode) | 219 | "Accelerator is not available for mode '{0}'".format(mode) |
| 173 | 220 | ||
| 174 | - if mode == 'single': | ||
| 175 | - return munchify({'data': test_tender_data(intervals)}) | ||
| 176 | - elif mode == 'multi': | 221 | + if mode == 'meat': |
| 222 | + return munchify({'data': test_tender_data_meat(intervals)}) | ||
| 223 | + elif mode == 'multiItem': | ||
| 177 | return munchify({'data': test_tender_data_multiple_items(intervals)}) | 224 | return munchify({'data': test_tender_data_multiple_items(intervals)}) |
| 178 | - elif mode == 'reporting': | ||
| 179 | - return munchify({'data': test_tender_data_limited(intervals, 'reporting')}) | 225 | + elif mode == 'multiLot': |
| 226 | + return munchify({'data': test_tender_data_multiple_lots(intervals)}) | ||
| 180 | elif mode == 'negotiation': | 227 | elif mode == 'negotiation': |
| 181 | return munchify({'data': test_tender_data_limited(intervals, 'negotiation')}) | 228 | return munchify({'data': test_tender_data_limited(intervals, 'negotiation')}) |
| 182 | elif mode == 'negotiation.quick': | 229 | elif mode == 'negotiation.quick': |
| 183 | return munchify({'data': test_tender_data_limited(intervals, 'negotiation.quick')}) | 230 | return munchify({'data': test_tender_data_limited(intervals, 'negotiation.quick')}) |
| 184 | - elif mode == 'openua': | ||
| 185 | - return munchify({'data': test_tender_data_openua(intervals)}) | ||
| 186 | elif mode == 'openeu': | 231 | elif mode == 'openeu': |
| 187 | return munchify({'data': test_tender_data_openeu(intervals)}) | 232 | return munchify({'data': test_tender_data_openeu(intervals)}) |
| 233 | + elif mode == 'openua': | ||
| 234 | + return munchify({'data': test_tender_data_openua(intervals)}) | ||
| 235 | + elif mode == 'reporting': | ||
| 236 | + return munchify({'data': test_tender_data_limited(intervals, 'reporting')}) | ||
| 237 | + elif mode == 'single': | ||
| 238 | + return munchify({'data': test_tender_data(intervals)}) | ||
| 188 | raise ValueError("Invalid mode for prepare_test_tender_data") | 239 | raise ValueError("Invalid mode for prepare_test_tender_data") |
| 189 | 240 | ||
| 190 | 241 | ||
| @@ -207,14 +258,6 @@ def run_keyword_and_ignore_keyword_definitions(name, *args, **kwargs): | @@ -207,14 +258,6 @@ def run_keyword_and_ignore_keyword_definitions(name, *args, **kwargs): | ||
| 207 | return status, _ | 258 | return status, _ |
| 208 | 259 | ||
| 209 | 260 | ||
| 210 | -def set_tender_periods(tender): | ||
| 211 | - now = get_now() | ||
| 212 | - tender.data.enquiryPeriod.endDate = (now + timedelta(minutes=2)).isoformat() | ||
| 213 | - tender.data.tenderPeriod.startDate = (now + timedelta(minutes=2)).isoformat() | ||
| 214 | - tender.data.tenderPeriod.endDate = (now + timedelta(minutes=4)).isoformat() | ||
| 215 | - return tender | ||
| 216 | - | ||
| 217 | - | ||
| 218 | def set_access_key(tender, access_token): | 261 | def set_access_key(tender, access_token): |
| 219 | tender.access = munchify({"token": access_token}) | 262 | tender.access = munchify({"token": access_token}) |
| 220 | return tender | 263 | return tender |
| @@ -279,57 +322,6 @@ def create_data_dict(path_to_value=None, value=None): | @@ -279,57 +322,6 @@ def create_data_dict(path_to_value=None, value=None): | ||
| 279 | return data_dict | 322 | return data_dict |
| 280 | 323 | ||
| 281 | 324 | ||
| 282 | -def cancel_tender(cancellation_reason): | ||
| 283 | - return { | ||
| 284 | - 'data': { | ||
| 285 | - 'reason': cancellation_reason | ||
| 286 | - } | ||
| 287 | - } | ||
| 288 | - | ||
| 289 | - | ||
| 290 | -def confirm_supplier(supplier_id): | ||
| 291 | - return { | ||
| 292 | - "data": { | ||
| 293 | - "status": "active", | ||
| 294 | - "id": supplier_id | ||
| 295 | - } | ||
| 296 | - } | ||
| 297 | - | ||
| 298 | - | ||
| 299 | -def change_cancellation_document_field(key, value): | ||
| 300 | - data = { | ||
| 301 | - "data": { | ||
| 302 | - key: value | ||
| 303 | - } | ||
| 304 | - } | ||
| 305 | - return data | ||
| 306 | - | ||
| 307 | - | ||
| 308 | -def confirm_cancellation(cancellation_id): | ||
| 309 | - data = { | ||
| 310 | - "data": { | ||
| 311 | - "status": "active", | ||
| 312 | - "id": cancellation_id | ||
| 313 | - } | ||
| 314 | - } | ||
| 315 | - return data | ||
| 316 | - | ||
| 317 | - | ||
| 318 | -def confirm_contract(contract_id): | ||
| 319 | - data = { | ||
| 320 | - "data": { | ||
| 321 | - "id": contract_id, | ||
| 322 | - "status": "active" | ||
| 323 | - } | ||
| 324 | - } | ||
| 325 | - return data | ||
| 326 | - | ||
| 327 | - | ||
| 328 | -def additional_items_data(tender_id, access_token): | ||
| 329 | - data = {"access": {"token": access_token}, "data": {"id": tender_id, "items": [{"unit": {"code": "MON", "name": "month"}, "quantity": 9}]}} | ||
| 330 | - return data | ||
| 331 | - | ||
| 332 | - | ||
| 333 | def munch_dict(arg=None, data=False): | 325 | def munch_dict(arg=None, data=False): |
| 334 | if arg is None: | 326 | if arg is None: |
| 335 | arg = {} | 327 | arg = {} |
| @@ -338,8 +330,11 @@ def munch_dict(arg=None, data=False): | @@ -338,8 +330,11 @@ def munch_dict(arg=None, data=False): | ||
| 338 | return munchify(arg) | 330 | return munchify(arg) |
| 339 | 331 | ||
| 340 | 332 | ||
| 341 | -def get_id_from_field(field): | ||
| 342 | - return re.match(r'(^[filq]-[0-9a-fA-F]{8}): ', field).group(1) | 333 | +def get_id_from_object(obj): |
| 334 | + obj_id = re.match(r'(^[filq]-[0-9a-fA-F]{8}): ', obj['title']) | ||
| 335 | + if not obj_id: | ||
| 336 | + obj_id = re.match(r'(^[filq]-[0-9a-fA-F]{8}): ', obj['description']) | ||
| 337 | + return obj_id.group(1) | ||
| 343 | 338 | ||
| 344 | 339 | ||
| 345 | def get_object_type_by_id(object_id): | 340 | def get_object_type_by_id(object_id): |
| @@ -348,12 +343,14 @@ def get_object_type_by_id(object_id): | @@ -348,12 +343,14 @@ def get_object_type_by_id(object_id): | ||
| 348 | 343 | ||
| 349 | 344 | ||
| 350 | def get_object_index_by_id(data, object_id): | 345 | def get_object_index_by_id(data, object_id): |
| 346 | + if not data: | ||
| 347 | + return 0 | ||
| 351 | for index, element in enumerate(data): | 348 | for index, element in enumerate(data): |
| 352 | - element_id = get_id_from_field(element['description']) | 349 | + element_id = get_id_from_object(element) |
| 353 | if element_id == object_id: | 350 | if element_id == object_id: |
| 354 | break | 351 | break |
| 355 | else: | 352 | else: |
| 356 | - index = 0 | 353 | + index += 1 |
| 357 | return index | 354 | return index |
| 358 | 355 | ||
| 359 | # GUI Frontends common | 356 | # GUI Frontends common |
| @@ -11,9 +11,8 @@ Suite Teardown Test Suite Teardown | @@ -11,9 +11,8 @@ Suite Teardown Test Suite Teardown | ||
| 11 | 11 | ||
| 12 | *** Variables *** | 12 | *** Variables *** |
| 13 | ${mode} single | 13 | ${mode} single |
| 14 | +@{used_roles} tender_owner provider provider1 viewer | ||
| 14 | 15 | ||
| 15 | -${role} viewer | ||
| 16 | -${broker} Quinta | ||
| 17 | 16 | ||
| 18 | *** Test Cases *** | 17 | *** Test Cases *** |
| 19 | Можливість оголосити однопредметний тендер | 18 | Можливість оголосити однопредметний тендер |
| @@ -329,7 +328,7 @@ ${broker} Quinta | @@ -329,7 +328,7 @@ ${broker} Quinta | ||
| 329 | ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question} | 328 | ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question} |
| 330 | ${now}= Get Current TZdate | 329 | ${now}= Get Current TZdate |
| 331 | ${question.data.date}= Set variable ${now} | 330 | ${question.data.date}= Set variable ${now} |
| 332 | - ${question_id}= get_id_from_field ${question.data.description} | 331 | + ${question_id}= get_id_from_object ${question.data} |
| 333 | ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} | 332 | ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} |
| 334 | ${question_data}= munch_dict arg=${question_data} | 333 | ${question_data}= munch_dict arg=${question_data} |
| 335 | Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data} | 334 | Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data} |
| @@ -11,8 +11,8 @@ Suite Teardown Test Suite Teardown | @@ -11,8 +11,8 @@ Suite Teardown Test Suite Teardown | ||
| 11 | 11 | ||
| 12 | *** Variables *** | 12 | *** Variables *** |
| 13 | ${mode} single | 13 | ${mode} single |
| 14 | -${role} viewer | ||
| 15 | -${broker} Quinta | 14 | +@{used_roles} tender_owner provider viewer |
| 15 | + | ||
| 16 | 16 | ||
| 17 | *** Test Cases *** | 17 | *** Test Cases *** |
| 18 | Можливість оголосити однопредметний тендер | 18 | Можливість оголосити однопредметний тендер |
Please
register
or
login
to post a comment