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 4 Suite Setup Test Suite Setup
5 5 Suite Teardown Test Suite Teardown
6 6
  7 +
7 8 *** Variables ***
8   -${role} viewer
9   -${broker} Quinta
  9 +@{used_roles} viewer
10 10
11 11
12 12 *** Test Cases ***
... ... @@ -16,7 +16,6 @@ ${broker} Quinta
16 16 Завантажити дані про тендер
17 17 Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
18 18
19   -
20 19 ##############################################################################################
21 20 # AUCTION
22 21 ##############################################################################################
... ... @@ -29,21 +28,25 @@ ${broker} Quinta
29 28 Отримати дані із тендера ${viewer} auctionPeriod.startDate
30 29
31 30
32   -Очікування початку аукціону
33   - [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону
  31 +Можливість дочекатися початку аукціону
  32 + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися початку аукціону
34 33 ... viewer
35 34 ... ${USERS.users['${viewer}'].broker}
36 35 Дочекатись дати початку аукціону ${viewer}
37 36
38   -Очікування завершення аукціону
39   - [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону
  37 +
  38 +Можливість дочекатися завершення аукціону
  39 + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону
40 40 ... viewer
41 41 ... ${USERS.users['${viewer}'].broker}
42 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 50 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
48 51 ... viewer
49 52 ... ${USERS.users['${viewer}'].broker}
... ...
... ... @@ -107,29 +107,18 @@ Library openprocurement_client_helper.py
107 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 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 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 122 Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
134 123
135 124
... ... @@ -154,8 +143,8 @@ Library openprocurement_client_helper.py
154 143 Подати цінову пропозицію
155 144 [Arguments] ${username} ${tender_uaid} ${bid}
156 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 148 ... ELSE Set Variable ${bid}
160 149 Run Keyword If ${lots}
161 150 ... Run Keywords
... ... @@ -171,7 +160,7 @@ Library openprocurement_client_helper.py
171 160 Змінити цінову пропозицію
172 161 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
173 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 164 ${fieldname}= Run Keyword If ${lots} Set Variable lotValues.0.${fieldname}
176 165 ... ELSE Set Variable ${fieldname}
177 166 ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}
... ... @@ -249,7 +238,7 @@ Library openprocurement_client_helper.py
249 238 Отримати посилання на аукціон для глядача
250 239 [Arguments] ${username} ${tender_uaid}
251 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 242 ${auctionUrl}= Run Keyword If ${lots} Set Variable ${tender.data.lots[0].auctionUrl}
254 243 ... ELSE Set Variable ${tender.data.auctionUrl}
255 244 [return] ${auctionUrl}
... ... @@ -258,7 +247,7 @@ Library openprocurement_client_helper.py
258 247 Отримати посилання на аукціон для учасника
259 248 [Arguments] ${username} ${tender_uaid}
260 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 251 ${participationUrl}= Run Keyword If ${lots} Set Variable ${bid.data.lotValues[0].participationUrl}
263 252 ... ELSE Set Variable ${bid.data.participationUrl}
264 253 [return] ${participationUrl}
... ... @@ -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 321 [Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id}
315 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 325 ${doc}= openprocurement_client.Завантажити документ ${username} ${filepath} ${tender_uaid}
318 326 ${lot_doc}= test_lot_document_data ${doc} ${lot_id}
319 327 ${reply}= Call Method ${USERS.users['${username}'].client} patch_document ${tender} ${lot_doc}
320   - Log object data ${reply} reply
321 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 351 # Claims
... ... @@ -426,7 +442,7 @@ Library openprocurement_client_helper.py
426 442 Підтвердити постачальника
427 443 [Documentation]
428 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 446 ... [Return] Nothing
431 447 [Arguments] ${username} ${tender_uaid} ${award_num}
432 448 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
... ... @@ -467,20 +483,6 @@ Library openprocurement_client_helper.py
467 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 487 [Documentation]
486 488 ... [Arguments] Username, tender uaid and supplier data
... ...
... ... @@ -5,8 +5,7 @@ Suite Setup Test Suite Setup
5 5 Suite Teardown Test Suite Teardown
6 6
7 7 *** Variables ***
8   -${role} viewer
9   -${broker} Quinta
  8 +@{used_roles} tender_owner viewer
10 9
11 10
12 11 *** Test Cases ***
... ...
... ... @@ -42,7 +42,7 @@ Default:
42 42 Quinta:
43 43 intervals:
44 44 default:
45   - enquiry: [0, 2]
  45 + enquiry: [0, 3]
46 46 tender: [0, 5]
47 47 openua:
48 48 tender: [1, 15]
... ... @@ -70,7 +70,10 @@ DZO:
70 70 intervals:
71 71 default:
72 72 enquiry: [0, 20]
73   - tender: [0, 15]
  73 + tender: [0, 20]
  74 + openua:
  75 + accelerator: 720
  76 + tender: [0, 30]
74 77 keywords_file: dzo
75 78 roles:
76 79 tender_owner: DZO_Owner
... ... @@ -84,11 +87,12 @@ Newtend:
84 87 provider: Newtend_Provider1
85 88 tender_owner: Newtend_Owner
86 89 viewer: Newtend_Viewer
  90 + timeout_on_wait: 60
87 91 PrivatMarket:
88 92 intervals:
89 93 default:
90   - enquiry: [0, 2]
91   - tender: [0, 5]
  94 + enquiry: [0, 15]
  95 + tender: [0, 15]
92 96 keywords_file: privatmarket
93 97 roles:
94 98 provider: PrivatMarket_Provider
... ... @@ -109,13 +113,14 @@ Prom:
109 113 Publicbid:
110 114 intervals:
111 115 default:
112   - enquiry: [21, 15]
113   - tender: [1, 15]
  116 + enquiry: [1, 10]
  117 + tender: [1, 12]
114 118 keywords_file: publicbid
115 119 roles:
116 120 provider: Publicbid_Provider1
117 121 tender_owner: Publicbid_Owner
118 122 viewer: Publicbid_Viewer
  123 + timeout_on_wait: 120
119 124 PublicPortal:
120 125 keywords_file: publicportal
121 126 roles:
... ...
... ... @@ -11,6 +11,9 @@ users:
11 11 Tender_Viewer:
12 12 api_key: ""
13 13 broker: Quinta
  14 + browser: firefox
  15 + position: [0, 0]
  16 + size: [1366, 800]
14 17 E-tender_Owner:
15 18 broker: E-tender
16 19 homepage: "http://bid.uat.e-tender.biz/#/"
... ... @@ -89,7 +92,7 @@ users:
89 92 size: [800, 700]
90 93 Newtend_Viewer:
91 94 broker: Newtend
92   - homepage: "http://openprocurement:test@dev23.newtend.com/opc/tenders"
  95 + homepage: "http://dev23.newtend.com/opc"
93 96 browser: chrome
94 97 position: [800, 400]
95 98 size: [800, 700]
... ...
... ... @@ -14,7 +14,7 @@ def create_fake_sentence():
14 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 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 57 "contactPoint": {
58 58 "name": fake.name(),
59 59 "telephone": fake.phone_number()
60   - }
  60 + },
  61 + "kind": "other"
61 62 },
62 63 "value": {
63 64 "amount": 50000.99,
... ... @@ -103,7 +104,7 @@ def test_tender_data_limited(intervals, procurement_method_type):
103 104 "id": "55523100-3",
104 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 108 "id": "2dc54675d6364e2baffbc0f8e74432ac",
108 109 "deliveryDate": {
109 110 "endDate": (now + timedelta(days=5)).isoformat()
... ... @@ -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 128 "procurementMethod": "limited",
128 129 "procurementMethodType": procurement_method_type,
129 130 "procuringEntity":
... ... @@ -148,7 +149,8 @@ def test_tender_data_limited(intervals, procurement_method_type):
148 149 "legalName": u"Заклад \"Загальноосвітня школа І-ІІІ ступенів № 10 Вінницької міської ради\"",
149 150 "scheme": u"UA-EDR"
150 151 },
151   - "name": u"ЗОСШ #10 м.Вінниці"
  152 + "name": u"ЗОСШ #10 м.Вінниці",
  153 + "kind": "general"
152 154 },
153 155 "value": {
154 156 "amount": 500000,
... ... @@ -194,31 +196,25 @@ def test_tender_data_multiple_items(intervals):
194 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 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 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 214 "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",
219 215 "featureOf": "tenderer",
220   - "title": "Термін оплати",
221   - "description": description_with_id('f', "Умови відстрочки платежу після поставки товару"),
  216 + "title": field_with_id('f', "Термін оплати"),
  217 + "description": "Умови відстрочки платежу після поставки товару",
222 218 "enum": [
223 219 {
224 220 "value": 0.15,
... ... @@ -242,8 +238,8 @@ def test_meat_tender_data(tender):
242 238 "code": "48cfd91612c04125ab406374d7cc8d93",
243 239 "featureOf": "item",
244 240 "relatedItem": item_id,
245   - "title": "Сорт",
246   - "description": description_with_id('f', "Сорт продукції"),
  241 + "title": field_with_id('f', "Сорт"),
  242 + "description": "Сорт продукції",
247 243 "enum": [
248 244 {
249 245 "value": 0.05,
... ... @@ -263,7 +259,7 @@ def test_meat_tender_data(tender):
263 259 return tender
264 260
265 261
266   -def test_question_data(lot=False):
  262 +def test_question_data():
267 263 data = munchify({
268 264 "data": {
269 265 "author": {
... ... @@ -287,12 +283,10 @@ def test_question_data(lot=False):
287 283 },
288 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 290 return data
297 291
298 292
... ... @@ -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 424 def test_complaint_reply_data():
449 425 return munchify({
450 426 "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 433 bid = munchify({
458 434 "data": {
459 435 "tenderers": [
... ... @@ -477,23 +453,25 @@ def test_bid_data(above_threshold=False):
477 453 },
478 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 460 bid.data['selfEligible'] = True
490 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 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 475 "parameters": [
498 476 {
499 477 "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",
... ... @@ -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 489 "value": {
527 490 "currency": "UAH",
528 491 "amount": fake.random_int(max=1999),
529 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 497 def test_supplier_data():
... ... @@ -589,8 +535,8 @@ def test_award_data():
589 535
590 536 def test_item_data():
591 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 540 "deliveryDate": {
595 541 "endDate": (now + timedelta(days=5)).isoformat()
596 542 },
... ... @@ -628,7 +574,7 @@ def test_item_data():
628 574 "code": u"KGM"
629 575 },
630 576 "quantity": fake.pyint()
631   - }
  577 + })
632 578
633 579
634 580 def test_invalid_features_data():
... ... @@ -672,8 +618,8 @@ def test_invalid_features_data():
672 618 def test_lot_data():
673 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 623 "value": {
678 624 "currency": "UAH",
679 625 "amount": 2000 + fake.pyfloat(left_digits=4, right_digits=1, positive=True),
... ... @@ -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 652 def test_tender_data_openua(intervals):
... ... @@ -718,6 +661,7 @@ def test_tender_data_openua(intervals):
718 661 t_data['procurementMethodType'] = 'aboveThresholdUA'
719 662 t_data['procurementMethodDetails'] = 'quick, ' \
720 663 'accelerator={}'.format(accelerator)
  664 + t_data['procuringEntity']['kind'] = 'general'
721 665 return t_data
722 666
723 667
... ... @@ -739,4 +683,5 @@ def test_tender_data_openeu(intervals):
739 683 t_data['procuringEntity']['contactPoint']['name_en'] = fake_en.name()
740 684 t_data['procuringEntity']['contactPoint']['availableLanguage'] = "en"
741 685 t_data['procuringEntity']['identifier']['legalName_en'] = "Institution \"Vinnytsia City Council primary and secondary general school № 10\""
  686 + t_data['procuringEntity']['kind'] = 'general'
742 687 return t_data
... ...
... ... @@ -54,36 +54,80 @@ Set Suite Variable With Default Value
54 54 Завантажуємо дані про користувачів і майданчики
55 55 Log ${broker}
56 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 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 64 Log ${BROKERS}
61 65 Set Suite Variable ${BROKERS}
  66 + # List of currently used brokers
  67 + ${used_brokers}= Create List
62 68
  69 + # Load users data
63 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 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 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 133 Get Broker Property
... ... @@ -92,11 +136,9 @@ Get Broker Property
92 136 ... This keyword returns a property of specified broker
93 137 ... if that property exists, otherwise, it returns a
94 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 144 Get Broker Property By Username
... ... @@ -115,18 +157,22 @@ Get Broker Property By Username
115 157 ... tender_uaid=${TENDER['TENDER_UAID']}
116 158 ... last_modification_date=${TENDER['LAST_MODIFICATION_DATE']}
117 159 ... tender_owner=${USERS.users['${tender_owner}'].broker}
  160 + ... mode=${mode}
118 161 Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta'
119 162 ... Run Keyword And Ignore Error
120 163 ... Set To Dictionary ${artifact}
121 164 ... access_token=${USERS.users['${tender_owner}'].access_token}
122 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 169 Log ${artifact}
124 170 log_object_data ${artifact} artifact update=${True}
125 171
126 172
127 173 Завантажити дані про тендер
128 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 176 Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta'
131 177 ... Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token}
132 178 ${TENDER}= Create Dictionary
... ... @@ -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 187 ${tender_data}= prepare_test_tender_data ${period_intervals} ${mode}
144 188 ${TENDER}= Create Dictionary
145 189 Set Global Variable ${TENDER}
... ... @@ -148,6 +192,11 @@ Get Broker Property By Username
148 192 [return] ${tender_data}
149 193
150 194
  195 +Підготовка даних для створення предмету закупівлі
  196 + ${item}= test_item_data
  197 + [Return] ${item}
  198 +
  199 +
151 200 Підготовка даних для створення лоту
152 201 ${lot}= test_lot_data
153 202 ${reply}= Create Dictionary data=${lot}
... ... @@ -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 224 [Return] ${question}
177 225
178 226
... ... @@ -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 234 [Return] ${supplier_data}
188 235
189 236
... ... @@ -403,13 +450,26 @@ Get Broker Property By Username
403 450 Отримати дані із об’єкта тендера
404 451 [Arguments] ${username} ${object_id} ${field_name}
405 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 457 ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}
408 458 ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value}
409 459 ... ELSE Run As ${username} Отримати інформацію із тендера ${field}
410 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 474 [Arguments] ${username} ${command} @{arguments}
415 475 Run keyword unless '${WARN_RUN_AS}' == '${True}'
... ... @@ -463,6 +523,20 @@ Require Failure
463 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 541 [Arguments] ${username}
468 542 Log ${username}
... ... @@ -508,6 +582,11 @@ Require Failure
508 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 591 [Arguments] ${username}
513 592 Log ${username}
... ...
... ... @@ -8,17 +8,6 @@ Resource resource.robot
8 8 ##############################################################################################
9 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 12 ${cancellation_data}= Підготувати дані про скасування ${tender_owner}
24 13 Викликати для учасника ${tender_owner}
... ... @@ -77,12 +66,6 @@ Resource resource.robot
77 66 ... ${TENDER['TENDER_UAID']}
78 67
79 68
80   -Можливість модифікації закупівлі
81   - Викликати для учасника ${tender_owner}
82   - ... Модифікувати закупівлю
83   - ... ${TENDER['TENDER_UAID']}
84   -
85   -
86 69 Можливість додати документацію до закупівлі
87 70 ${filepath}= create_fake_doc
88 71 Викликати для учасника ${tender_owner}
... ... @@ -305,27 +288,21 @@ Resource resource.robot
305 288 ... items[${ITEMS_NUM}].description
306 289
307 290
308   -Відображення ідентифікатора номенклатури закупівлі
  291 +Відображення кількості номенклатури закупівлі
309 292 Звірити поле тендера ${viewer}
310 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 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 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 306 ... items[${ITEMS_NUM}].unit.code
330 307
331 308
... ...
... ... @@ -10,10 +10,9 @@ Suite Setup Test Suite Setup
10 10 Suite Teardown Test Suite Teardown
11 11
12 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 17 *** Test Cases ***
19 18 Можливість оголосити однопредметний тендер з неціновим показником
... ... @@ -23,8 +22,7 @@ ${broker} Quinta
23 22 ... minimal
24 23 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
25 24 [Teardown] Оновити LAST_MODIFICATION_DATE
26   - ${base_tender_data}= Підготовка даних для створення тендера
27   - ${tender_data}= test_meat_tender_data ${base_tender_data}
  25 + ${tender_data}= Підготовка даних для створення тендера
28 26 ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}
29 27 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data}
30 28 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}
... ... @@ -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 35 ... viewer tender_owner provider provider1
38 36 ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
39 37 ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
... ... @@ -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 61 ... viewer provider provider1
64 62 ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker}
65 63 ... ${USERS.users['${provider1}'].broker}
... ... @@ -78,7 +76,7 @@ ${broker} Quinta
78 76 [Setup] Дочекатись синхронізації з майданчиком ${provider}
79 77 Дочекатись дати початку прийому пропозицій ${provider}
80 78 sleep 90
81   - ${bid}= test bid data
  79 + ${bid}= test bid data single
82 80 Log ${bid}
83 81 ${failbid}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
84 82 log ${failbid}
... ... @@ -89,7 +87,7 @@ ${broker} Quinta
89 87 ... provider
90 88 ... ${USERS.users['${provider}'].broker}
91 89 [Teardown] Оновити LAST_MODIFICATION_DATE
92   - ${bid}= test bid data meat tender
  90 + ${bid}= Підготувати дані для подання пропозиції
93 91 Log ${bid}
94 92 ${bidresponses}= Create Dictionary
95 93 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -126,7 +124,7 @@ ${broker} Quinta
126 124 [Setup] Дочекатись синхронізації з майданчиком ${provider1}
127 125 [Teardown] Оновити LAST_MODIFICATION_DATE
128 126 Дочекатись дати початку прийому пропозицій ${provider1}
129   - ${bid}= test bid data meat tender
  127 + ${bid}= Підготувати дані для подання пропозиції
130 128 Log ${bid}
131 129 ${bidresponses}= Create Dictionary
132 130 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -147,23 +145,105 @@ ${broker} Quinta
147 145 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
148 146 Отримати дані із тендера ${viewer} auctionPeriod.startDate
149 147
150   -
151   -Очікування аукціону
152   - [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону
  148 +Можливість дочекатися початку аукціону
  149 + [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися початку аукціону
153 150 ... viewer
154 151 ... ${USERS.users['${viewer}'].broker}
155 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 242 [Tags] ${USERS.users['${tender_owner}'].broker}: Результати аукціону
161 243 ... tender_owner
162 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 Suite Teardown Test Suite Teardown
11 11
12 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 17 *** Test Cases ***
19 18 Можливість оголосити багатопредметний тендер
... ... @@ -24,7 +23,7 @@ ${broker} Quinta
24 23 [Teardown] Оновити LAST_MODIFICATION_DATE
25 24 ${tender_data}= Підготовка даних для створення тендера
26 25 ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}
27   - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data}
  26 + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data}
28 27 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}
29 28 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
30 29 log ${TENDER}
... ... @@ -36,7 +35,7 @@ ${broker} Quinta
36 35 ... minimal
37 36 :FOR ${username} IN ${viewer} ${tender_owner}
38 37 \ Дочекатись синхронізації з майданчиком ${username}
39   - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  38 + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
40 39
41 40 Відображення опису позицій закупівлі багатопредметного тендера
42 41 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
... ... @@ -163,20 +162,53 @@ ${broker} Quinta
163 162 ... level2
164 163 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
165 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 168 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
170 169 ... tender_owner
171 170 ... ${USERS.users['${tender_owner}'].broker}
172 171 ... level2
173 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 208 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
178 209 ... tender_owner
179 210 ... ${USERS.users['${tender_owner}'].broker}
180 211 ... level2
181 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 10 Suite Teardown Test Suite Teardown
11 11
12 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 15 ${complaint_id} 1
19 16
  17 +
20 18 *** Test Cases ***
21 19 Можливість оголосити мультилотовий тендер
22 20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер
... ... @@ -25,13 +23,13 @@ ${complaint_id} 1
25 23 ... minimal
26 24 [Teardown] Оновити LAST_MODIFICATION_DATE
27 25 ${tender_data}= Підготовка даних для створення тендера
28   - ${tender_data}= test_tender_data_multiple_lots ${tender_data}
29 26 ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}
30   - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data}
  27 + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data}
31 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 30 Log ${TENDER}
34 31
  32 +
35 33 Можливість знайти мультилотовий тендер по ідентифікатору
36 34 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
37 35 ... viewer tender_owner provider provider1
... ... @@ -40,7 +38,38 @@ ${complaint_id} 1
40 38 ... minimal
41 39 :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
42 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 80 ... ${USERS.users['${tender_owner}'].broker}
52 81 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
53 82 [Teardown] Оновити LAST_MODIFICATION_DATE
54   - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
55 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 92 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
64 93 ... tender_owner
65 94 ... ${USERS.users['${tender_owner}'].broker}
66 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 99 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
74 100 ... tender_owner
75 101 ... ${USERS.users['${tender_owner}'].broker}
76 102 [Teardown] Оновити LAST_MODIFICATION_DATE
77   - ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
78 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 139 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
87 140 ... tender_owner
88 141 ... ${USERS.users['${tender_owner}'].broker}
89 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 147 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
98 148 ... tender_owner
99 149 ... ${USERS.users['${tender_owner}'].broker}
100 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 157 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
120 158 ... tender_owner
121 159 ... ${USERS.users['${tender_owner}'].broker}
122 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 165 [Documentation]
... ... @@ -133,126 +167,47 @@ ${complaint_id} 1
133 167 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
134 168 ... tender_owner
135 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 178 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
171 179 ... provider
172 180 ... ${USERS.users['${provider}'].broker}
173 181 [Setup] Дочекатись синхронізації з майданчиком ${provider}
174 182 [Teardown] Оновити LAST_MODIFICATION_DATE
  183 + ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lot_data.lot_id}
175 184 ${question}= Підготовка даних для запитання
176   - ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question}
  185 + ${question_resp}= Run As ${provider} Задати питання до лоту ${TENDER['TENDER_UAID']} ${lot_id} ${question}
177 186 ${now}= Get Current TZdate
178 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 189 ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
181 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 195 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
187 196 ... tender_owner
188 197 ... ${USERS.users['${tender_owner}'].broker}
189 198 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
190 199 [Teardown] Оновити LAST_MODIFICATION_DATE
191 200 ${answer}= Підготовка даних для відповіді на запитання
192   - ${answer_resp}= Викликати для учасника ${tender_owner}
  201 + ${answer_resp}= Run As ${tender_owner}
193 202 ... Відповісти на питання ${TENDER['TENDER_UAID']}
194 203 ... ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
195 204 ... question_id=${USERS.users['${provider}'].question_data.question_id}
196 205 ${now}= Get Current TZdate
197 206 ${answer.data.date}= Set variable ${now}
198 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 237 ... provider
283 238 ... ${USERS.users['${provider}'].broker}
284 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 246 [Documentation]
... ... @@ -299,35 +250,28 @@ ${complaint_id} 1
299 250 ... ${USERS.users['${provider}'].broker}
300 251 [Setup] Дочекатись синхронізації з майданчиком ${provider}
301 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 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 258 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
313 259 ... provider
314 260 ... ${USERS.users['${provider}'].broker}
315 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 270 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
327 271 ... provider
328 272 ... ${USERS.users['${provider}'].broker}
329 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 275 Log ${canceledbidresp}
332 276
333 277 Можливість подати повторно цінову пропозицію першим учасником
... ... @@ -336,22 +280,19 @@ ${complaint_id} 1
336 280 ... ${USERS.users['${provider}'].broker}
337 281 [Teardown] Оновити LAST_MODIFICATION_DATE
338 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 290 Можливість змінити повторну цінову пропозицію до 2000
349 291 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
350 292 ... provider
351 293 ... ${USERS.users['${provider}'].broker}
352 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 296 log ${fixbidto2000resp}
356 297
357 298 Можливість змінити повторну цінову пропозицію до 10
... ... @@ -359,8 +300,7 @@ ${complaint_id} 1
359 300 ... provider
360 301 ... ${USERS.users['${provider}'].broker}
361 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 304 log ${fixbidto10resp}
365 305
366 306 Можливість подати цінову пропозицію другим учасником
... ... @@ -370,15 +310,12 @@ ${complaint_id} 1
370 310 [Setup] Дочекатись синхронізації з майданчиком ${provider1}
371 311 [Teardown] Оновити LAST_MODIFICATION_DATE
372 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 321 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
... ... @@ -396,7 +333,6 @@ ${complaint_id} 1
396 333 [Setup] Дочекатись синхронізації з майданчиком ${provider1}
397 334 Дочекатись дати закінчення прийому пропозицій ${provider1}
398 335 ${failfixbidto2000resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000
399   - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto2000resp ${failfixbidto2000resp}
400 336 log ${failfixbidto2000resp}
401 337
402 338 Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
... ... @@ -406,7 +342,6 @@ ${complaint_id} 1
406 342 ... provider1
407 343 ... ${USERS.users['${provider1}'].broker}
408 344 ${failfixbidto1resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 1
409   - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp}
410 345 log ${failfixbidto1resp}
411 346
412 347 Неможливість скасувати цінову пропозицію
... ... @@ -416,3 +351,4 @@ ${complaint_id} 1
416 351 ... provider1
417 352 ... ${USERS.users['${provider1}'].broker}
418 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 6
7 7 *** Variables ***
8 8 ${mode} negotiation.quick
9   -${role} viewer
10   -${broker} Quinta
  9 +@{used_roles} tender_owner viewer
11 10
12 11
13 12 *** Test Cases ***
... ... @@ -20,7 +19,7 @@ ${broker} Quinta
20 19 ... ${USERS.users['${tender_owner}'].broker}
21 20 ... minimal
22 21 [Teardown] Оновити LAST_MODIFICATION_DATE
23   - Можливість створити закупівлю для тестування скасування
  22 + Можливість створити закупівлю
24 23
25 24
26 25 Можливість скасувати переговорну процедуру за нагальною потребою
... ... @@ -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 76 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури
96 77 ... tender_owner
... ... @@ -108,6 +89,15 @@ ${broker} Quinta
108 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 102 # MAIN DATA
113 103 ##############################################################################################
... ... @@ -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 333 [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури
351 334 ... viewer
... ...
... ... @@ -6,8 +6,7 @@ Suite Teardown Close all browsers
6 6
7 7 *** Variables ***
8 8 ${mode} negotiation
9   -${role} viewer
10   -${broker} Quinta
  9 +@{used_roles} tender_owner viewer
11 10
12 11
13 12 *** Test Cases ***
... ... @@ -20,7 +19,7 @@ ${broker} Quinta
20 19 ... ${USERS.users['${tender_owner}'].broker}
21 20 ... minimal
22 21 [Teardown] Оновити LAST_MODIFICATION_DATE
23   - Можливість створити закупівлю для тестування скасування
  22 + Можливість створити закупівлю
24 23
25 24
26 25 Можливість скасувати переговорну процедуру
... ... @@ -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 76 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури
96 77 ... tender_owner
... ... @@ -108,6 +89,15 @@ ${broker} Quinta
108 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 102 # MAIN DATA
113 103 ##############################################################################################
... ... @@ -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 333 [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури
351 334 ... viewer
... ...
... ... @@ -6,9 +6,7 @@ Suite Teardown Test Suite Teardown
6 6
7 7 *** Variables ***
8 8 ${mode} openeu
9   -
10   -${role} viewer
11   -${broker} Quinta
  9 +@{used_roles} tender_owner provider provider1 viewer
12 10
13 11
14 12 *** Test Cases ***
... ... @@ -72,6 +70,7 @@ ${broker} Quinta
72 70 ... ${USERS.users['${provider}'].broker}
73 71 [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
74 72 [Teardown] Оновити LAST_MODIFICATION_DATE
  73 + Дочекатись дати початку прийому пропозицій ${provider}
75 74 ${claim}= Підготовка даних для подання вимоги
76 75 ${claim_resp}= Викликати для учасника ${provider}
77 76 ... Створити вимогу
... ... @@ -107,7 +106,7 @@ ${broker} Quinta
107 106 ... provider
108 107 ... ${USERS.users['${provider}'].broker}
109 108 [Teardown] Оновити LAST_MODIFICATION_DATE
110   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  109 + ${bid}= Підготувати дані для подання пропозиції
111 110 Log ${bid}
112 111 ${bidresponses}= Create Dictionary
113 112 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -177,7 +176,7 @@ ${broker} Quinta
177 176 ... provider1
178 177 ... ${USERS.users['${provider1}'].broker}
179 178 [Teardown] Оновити LAST_MODIFICATION_DATE
180   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  179 + ${bid}= Підготувати дані для подання пропозиції
181 180 Log ${bid}
182 181 ${bidresponses}= Create Dictionary
183 182 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -227,7 +226,7 @@ Cкасувати цінову пропозицію другого учасни
227 226 ... provider1
228 227 ... ${USERS.users['${provider1}'].broker}
229 228 [Teardown] Оновити LAST_MODIFICATION_DATE
230   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  229 + ${bid}= Підготувати дані для подання пропозиції
231 230 Log ${bid}
232 231 ${bidresponses}= Create Dictionary
233 232 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -349,7 +348,7 @@ Cкасувати цінову пропозицію другого учасни
349 348 ... provider1
350 349 ... ${USERS.users['${provider1}'].broker}
351 350 [Teardown] Оновити LAST_MODIFICATION_DATE
352   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  351 + ${bid}= Підготувати дані для подання пропозиції
353 352 Log ${bid}
354 353 ${bidresponses}= Create Dictionary
355 354 Set To Dictionary ${bidresponses} bid ${bid}
... ...
... ... @@ -6,9 +6,7 @@ Suite Teardown Test Suite Teardown
6 6
7 7 *** Variables ***
8 8 ${mode} openua
9   -
10   -${role} viewer
11   -${broker} Quinta
  9 +@{used_roles} tender_owner provider provider1 viewer
12 10
13 11
14 12 *** Test Cases ***
... ... @@ -64,6 +62,7 @@ ${broker} Quinta
64 62 ... ${USERS.users['${provider}'].broker}
65 63 [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
66 64 [Teardown] Оновити LAST_MODIFICATION_DATE
  65 + Дочекатись дати початку прийому пропозицій ${provider}
67 66 ${claim}= Підготовка даних для подання вимоги
68 67 ${claim_resp}= Викликати для учасника ${provider}
69 68 ... Створити вимогу
... ... @@ -99,7 +98,7 @@ ${broker} Quinta
99 98 ... provider
100 99 ... ${USERS.users['${provider}'].broker}
101 100 [Teardown] Оновити LAST_MODIFICATION_DATE
102   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  101 + ${bid}= Підготувати дані для подання пропозиції
103 102 Log ${bid}
104 103 ${bidresponses}= Create Dictionary
105 104 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -113,7 +112,7 @@ ${broker} Quinta
113 112 ... provider1
114 113 ... ${USERS.users['${provider1}'].broker}
115 114 [Teardown] Оновити LAST_MODIFICATION_DATE
116   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  115 + ${bid}= Підготувати дані для подання пропозиції
117 116 Log ${bid}
118 117 ${bidresponses}= Create Dictionary
119 118 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -163,7 +162,7 @@ Cкасувати цінову пропозицію другого учасни
163 162 ... provider1
164 163 ... ${USERS.users['${provider1}'].broker}
165 164 [Teardown] Оновити LAST_MODIFICATION_DATE
166   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  165 + ${bid}= Підготувати дані для подання пропозиції
167 166 Log ${bid}
168 167 ${bidresponses}= Create Dictionary
169 168 Set To Dictionary ${bidresponses} bid ${bid}
... ... @@ -288,7 +287,7 @@ Cкасувати цінову пропозицію другого учасни
288 287 ... provider1
289 288 ... ${USERS.users['${provider1}'].broker}
290 289 [Teardown] Оновити LAST_MODIFICATION_DATE
291   - ${bid}= Підготувати дані для подання пропозиції aboveThreshold=${True}
  290 + ${bid}= Підготувати дані для подання пропозиції
292 291 Log ${bid}
293 292 ${bidresponses}= Create Dictionary
294 293 Set To Dictionary ${bidresponses} bid ${bid}
... ...
... ... @@ -5,8 +5,7 @@ Suite Setup Test Suite Setup
5 5 Suite Teardown Test Suite Teardown
6 6
7 7 *** Variables ***
8   -${role} viewer
9   -${broker} Quinta
  8 +@{used_roles} tender_owner viewer
10 9
11 10
12 11 *** Test Cases ***
... ...
... ... @@ -6,8 +6,7 @@ Suite Teardown Close all browsers
6 6
7 7 *** Variables ***
8 8 ${mode} reporting
9   -${role} viewer
10   -${broker} Quinta
  9 +@{used_roles} tender_owner viewer
11 10
12 11
13 12 *** Test Cases ***
... ... @@ -20,7 +19,7 @@ ${broker} Quinta
20 19 ... ${USERS.users['${tender_owner}'].broker}
21 20 ... minimal
22 21 [Teardown] Оновити LAST_MODIFICATION_DATE
23   - Можливість створити закупівлю для тестування скасування
  22 + Можливість створити закупівлю
24 23
25 24
26 25 Можливість скасувати звіт про укладений договір
... ... @@ -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 76 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість додати документацію до процедури
96 77 ... tender_owner
... ... @@ -108,6 +89,35 @@ ${broker} Quinta
108 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 122 # MAIN DATA
113 123 ##############################################################################################
... ... @@ -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 339 [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури процедури
337 340 ... viewer
... ... @@ -546,23 +549,3 @@ ${broker} Quinta
546 549 ... viewer
547 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 1 *** Variables ***
2 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 16 # can access them by simply importing library "service_keywords".
17 17 # Please ignore the warning given by Flake8 or other linter.
18 18 from .initial_data import (
19   - auction_bid,
20 19 create_fake_doc,
21 20 create_fake_sentence,
22   - test_additional_items_data,
23 21 test_award_data,
24 22 test_bid_data,
25   - test_bid_data_meat_tender,
26 23 test_cancel_claim_data,
27 24 test_cancel_tender_data,
28 25 test_change_cancellation_document_field_data,
... ... @@ -40,14 +37,13 @@ from .initial_data import (
40 37 test_lot_data,
41 38 test_lot_document_data,
42 39 test_lot_question_data,
43   - test_lots_bid_data,
44   - test_meat_tender_data,
45 40 test_question_answer_data,
46 41 test_question_data,
47 42 test_submit_claim_data,
48 43 test_supplier_data,
49 44 test_tender_data,
50 45 test_tender_data_limited,
  46 + test_tender_data_meat,
51 47 test_tender_data_multiple_items,
52 48 test_tender_data_multiple_lots,
53 49 test_tender_data_openeu,
... ... @@ -142,14 +138,65 @@ def munch_to_object(data, format="yaml"):
142 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 142 if not os.path.exists(file_name):
147 143 file_name = os.path.join(os.path.dirname(__file__), 'data', file_name)
148 144 with open(file_name) as file_obj:
149 145 if file_name.endswith(".json"):
150   - return Munch.fromDict(load(file_obj))
  146 + file_data = Munch.fromDict(load(file_obj))
151 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 202 def prepare_test_tender_data(procedure_intervals, mode):
... ... @@ -171,20 +218,24 @@ def prepare_test_tender_data(procedure_intervals, mode):
171 218 assert 'accelerator' not in intervals.keys(), \
172 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 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 227 elif mode == 'negotiation':
181 228 return munchify({'data': test_tender_data_limited(intervals, 'negotiation')})
182 229 elif mode == 'negotiation.quick':
183 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 231 elif mode == 'openeu':
187 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 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 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 261 def set_access_key(tender, access_token):
219 262 tender.access = munchify({"token": access_token})
220 263 return tender
... ... @@ -279,57 +322,6 @@ def create_data_dict(path_to_value=None, value=None):
279 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 325 def munch_dict(arg=None, data=False):
334 326 if arg is None:
335 327 arg = {}
... ... @@ -338,8 +330,11 @@ def munch_dict(arg=None, data=False):
338 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 340 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 345 def get_object_index_by_id(data, object_id):
  346 + if not data:
  347 + return 0
351 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 350 if element_id == object_id:
354 351 break
355 352 else:
356   - index = 0
  353 + index += 1
357 354 return index
358 355
359 356 # GUI Frontends common
... ...
... ... @@ -11,9 +11,8 @@ Suite Teardown Test Suite Teardown
11 11
12 12 *** Variables ***
13 13 ${mode} single
  14 +@{used_roles} tender_owner provider provider1 viewer
14 15
15   -${role} viewer
16   -${broker} Quinta
17 16
18 17 *** Test Cases ***
19 18 Можливість оголосити однопредметний тендер
... ... @@ -329,7 +328,7 @@ ${broker} Quinta
329 328 ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question}
330 329 ${now}= Get Current TZdate
331 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 332 ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
334 333 ${question_data}= munch_dict arg=${question_data}
335 334 Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data}
... ...
... ... @@ -11,8 +11,8 @@ Suite Teardown Test Suite Teardown
11 11
12 12 *** Variables ***
13 13 ${mode} single
14   -${role} viewer
15   -${broker} Quinta
  14 +@{used_roles} tender_owner provider viewer
  15 +
16 16
17 17 *** Test Cases ***
18 18 Можливість оголосити однопредметний тендер
... ...
Please register or login to post a comment