Commit 2f778d67f0932539caf1c354ce9850bb0d0c962a

Authored by selurvedu
2 parents 2a02d2c2 0374c6c6

Merge branch 'devel' into master

Conflicts:
	op_robot_tests/tests_files/data/brokers.yaml
	op_robot_tests/tests_files/data/users.yaml
@@ -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 - Відображення статусу підписаної угоди з постачальником закупівлі  
1 *** Variables *** 1 *** Variables ***
2 ${api_host_url} https://lb.api-sandbox.openprocurement.org 2 ${api_host_url} https://lb.api-sandbox.openprocurement.org
3 -${api_version} 0.12 3 +${api_version} 2.2
  4 +${broker} Quinta
  5 +${role} viewer
@@ -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