Commit a03052e5cb6fb30b3f773798683709c7c267efc8

Authored by mykhaly
2 parents 65c8b819 d00ff526

Resolve conflict from merge

@@ -37,6 +37,7 @@ gh_push = git@github.com: @@ -37,6 +37,7 @@ gh_push = git@github.com:
37 [sources] 37 [sources]
38 barbecue = git ${remotes:gh}openprocurement/barbecue.git 38 barbecue = git ${remotes:gh}openprocurement/barbecue.git
39 openprocurement_client = git ${remotes:gh}openprocurement/openprocurement.client.python.git 39 openprocurement_client = git ${remotes:gh}openprocurement/openprocurement.client.python.git
  40 +robot_tests.broker.dzo = git ${remotes:gh}openprocurement/robot_tests.broker.dzo.git
40 robot_tests.broker.etender = git ${remotes:gh}openprocurement/robot_tests.broker.etender.git 41 robot_tests.broker.etender = git ${remotes:gh}openprocurement/robot_tests.broker.etender.git
41 robot_tests.broker.newtend = git ${remotes:gh}openprocurement/robot_tests.broker.newtend.git 42 robot_tests.broker.newtend = git ${remotes:gh}openprocurement/robot_tests.broker.newtend.git
42 robot_tests.broker.privatmarket = git ${remotes:gh}openprocurement/robot_tests.broker.privatmarket.git 43 robot_tests.broker.privatmarket = git ${remotes:gh}openprocurement/robot_tests.broker.privatmarket.git
1 -*** Settings ***  
2 -Library Selenium2Screenshots  
3 -Library String  
4 -Library DateTime  
5 -Library netcast_service.py  
6 -  
7 -*** Variables ***  
8 -${locator.tenderId} xpath=//td[./text()='TenderID']/following-sibling::td[1]  
9 -${locator.title} xpath=//td[./text()='Загальна назва закупівлі']/following-sibling::td[1]  
10 -${locator.description} xpath=//td[./text()='Предмет закупівлі']/following-sibling::td[1]  
11 -${locator.value.amount} xpath=//td[./text()='Максимальний бюджет']/following-sibling::td[1]  
12 -${locator.minimalStep.amount} xpath=//td[./text()='Мінімальний крок зменшення ціни']/following-sibling::td[1]  
13 -${locator.enquiryPeriod.endDate} xpath=//td[./text()='Завершення періоду обговорення']/following-sibling::td[1]  
14 -${locator.tenderPeriod.endDate} xpath=//td[./text()='Завершення періоду прийому пропозицій']/following-sibling::td[1]  
15 -${locator.items[0].deliveryAddress.countryName} xpath=//td[@class='nameField'][./text()='Адреса поставки']/following-sibling::td[1]  
16 -${locator.items[0].deliveryDate.endDate} xpath=//td[./text()='Кінцева дата поставки']/following-sibling::td[1]  
17 -${locator.items[0].classification.scheme} xpath=//td[@class = 'nameField'][./text()='Клас CPV']  
18 -${locator.items[0].classification.id} xpath=//td[./text()='Клас CPV']/following-sibling::td[1]/span[1]  
19 -${locator.items[0].classification.description} xpath=//td[./text()='Клас CPV']/following-sibling::td[1]/span[2]  
20 -${locator.items[0].additionalClassifications[0].scheme} xpath=//td[@class = 'nameField'][./text()='Клас ДКПП']  
21 -${locator.items[0].additionalClassifications[0].id} xpath=//td[./text()='Клас ДКПП']/following-sibling::td[1]/span[1]  
22 -${locator.items[0].additionalClassifications[0].description} xpath=//td[./text()='Клас ДКПП']/following-sibling::td[1]/span[2]  
23 -${locator.items[0].quantity} xpath=//td[./text()='Кількість']/following-sibling::td[1]/span[1]  
24 -${locator.items[0].unit.code} xpath=//td[./text()='Кількість']/following-sibling::td[1]/span[2]  
25 -${locator.questions[0].title} xpath=//div[@class = 'question relative']//div[@class = 'title']  
26 -${locator.questions[0].description} xpath = //div[@class='text']  
27 -${locator.questions[0].date} xpath = //div[@class='date']  
28 -${locator.questions[0].answer} xpath=//div[@class = 'answer relative']//div[@class = 'text']  
29 -  
30 -*** Keywords ***  
31 -Підготувати клієнт для користувача  
32 - [Arguments] @{ARGUMENTS}  
33 - [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо  
34 - ... ${ARGUMENTS[0]} == username  
35 - Open Browser  
36 - ... ${USERS.users['${ARGUMENTS[0]}'].homepage}  
37 - ... ${USERS.users['${ARGUMENTS[0]}'].browser}  
38 - ... alias=${ARGUMENTS[0]}  
39 - Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}  
40 - Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}  
41 - Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]}  
42 - Wait Until Page Contains Element jquery=a[href="/cabinet"]  
43 - Click Element jquery=a[href="/cabinet"]  
44 - Run Keyword If '${username}' != 'Netcast_Viewer' Login  
45 -  
46 -Login  
47 - [Arguments] @{ARGUMENTS}  
48 - Wait Until Page Contains Element name=email 10  
49 - Sleep 1  
50 - Input text name=email ${USERS.users['${username}'].login}  
51 - Sleep 2  
52 - Input text name=psw ${USERS.users['${username}'].password}  
53 - Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 20  
54 - Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет']  
55 -  
56 -Pre Login  
57 - [Arguments] @{ARGUMENTS}  
58 - [Documentation]  
59 - ... ${ARGUMENTS[0]} == username  
60 - ${login}= Get Broker Property By Username ${ARGUMENTS[0]} login  
61 - ${password}= Get Broker Property By Username ${ARGUMENTS[0]} password  
62 - Wait Until Page Contains Element name=siteLogin 10  
63 - Input Text name=siteLogin ${login}  
64 - Input Text name=sitePass ${password}  
65 - Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input  
66 -  
67 -Створити тендер  
68 - [Arguments] @{ARGUMENTS}  
69 - [Documentation]  
70 - ... ${ARGUMENTS[0]} == username  
71 - ... ${ARGUMENTS[1]} == tender_data  
72 - #{tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]}  
73 - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items  
74 - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title  
75 - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description  
76 - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount  
77 - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount  
78 -  
79 - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description  
80 - ${quantity}= Get From Dictionary ${items[0]} quantity  
81 - ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName  
82 - ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate  
83 - ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date}  
84 - ${cpv}= Convert To String Картонки  
85 - ${cpv_id}= Get From Dictionary ${items[0].classification} id  
86 - ${cpv_id1}= Replace String ${cpv_id} - _  
87 - ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description  
88 - ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id  
89 - ${dkpp_id1}= Replace String ${dkpp_id} - _  
90 -  
91 - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate  
92 - ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date}  
93 - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate  
94 - ${end_date}= convert_date_to_slash_format ${end_date}  
95 -  
96 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
97 - Wait Until Page Contains Element jquery=a[href="/tenders/new"] 30  
98 - Click Element jquery=a[href="/tenders/new"]  
99 - Wait Until Page Contains Element name=tender_title 30  
100 - Input text name=tender_title ${title}  
101 - Input text name=tender_description ${description}  
102 - Input text name=tender_value_amount ${budget}  
103 - Input text name=tender_minimalStep_amount ${step_rate}  
104 -  
105 -# Додати специфікацю початок  
106 - Input text name=items[0][item_description] ${items_description}  
107 - Input text name=items[0][item_quantity] ${quantity}  
108 - Input text name=items[0][item_deliveryAddress_countryName] ${countryName}  
109 - Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date}  
110 - Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником']  
111 - Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]  
112 - Input text id=search ${cpv}  
113 - Wait Until Page Contains ${cpv_id}  
114 - Click Element xpath=//a[contains(@id,'${cpv_id1}')]  
115 - Click Element xpath=.//*[@id='select']  
116 - Unselect Frame  
117 - Click Element xpath=//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником']  
118 - Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')]  
119 - Input text id=search ${dkpp_desc}  
120 - Wait Until Page Contains ${dkpp_id}  
121 - Click Element xpath=//a[contains(@id,'${dkpp_id1}')]  
122 - Click Element xpath=.//*[@id='select']  
123 -# Додати специфікацю кінець  
124 -  
125 - Unselect Frame  
126 - Input text name=plan_date ${enquiry_end_date}  
127 - Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date}  
128 - Input text name=tender_tenderPeriod_endDate ${end_date}  
129 -  
130 - Додати предмет ${items[0]} 0  
131 - Run Keyword if '${mode}' == 'multi' Додати багато предметів items  
132 - Unselect Frame  
133 -  
134 - Click Element xpath= //button[@value='publicate']  
135 - Wait Until Page Contains Тендер опубліковано 30  
136 -  
137 - ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2]  
138 - ${Ids}= Convert To String ${tender_UAid}  
139 - Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid}  
140 - [return] ${Ids}  
141 -  
142 -Set Multi Ids  
143 - [Arguments] @{ARGUMENTS}  
144 - [Documentation]  
145 - ... ${ARGUMENTS[1]} == ${tender_UAid}  
146 - ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2]  
147 - ${Ids}= Create List ${tender_UAid} ${id}  
148 -  
149 -Додати предмет  
150 - [Arguments] @{ARGUMENTS}  
151 - [Documentation]  
152 - ... ${ARGUMENTS[0]} == items  
153 - ... ${ARGUMENTS[1]} == ${INDEX}  
154 - ${dkpp_desc1}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description  
155 - ${dkpp_id11}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id  
156 - ${dkpp_1id}= Replace String ${dkpp_id11} - _  
157 -  
158 - Wait Until Page Contains Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі']  
159 - Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі']  
160 - ${index} = Convert To Integer ${ARGUMENTS[1]}  
161 - ${index} = Convert To Integer ${index + 1}  
162 - Wait Until Page Contains Element name=items[${index}][item_description] 30  
163 - Input text name=items[${index}][item_description] ${description}  
164 - Input text name=items[${index}][item_quantity] ${quantity}  
165 -  
166 - Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[${index} + 1]  
167 - Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]  
168 - Input text id=search ${cpv}  
169 - Wait Until Page Contains ${cpv_id}  
170 - Click Element xpath=//a[contains(@id,'${cpv_id1}')]  
171 - Click Element xpath=.//*[@id='select']  
172 - Unselect Frame  
173 - Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[${index} + 1]  
174 - Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')]  
175 - Input text id=search ${dkpp_desc1}  
176 - Wait Until Page Contains ${dkpp_id11}  
177 - Click Element xpath=//a[contains(@id,'${dkpp_1id}')]  
178 - Click Element xpath=.//*[@id='select']  
179 - Unselect Frame  
180 - Capture Page Screenshot  
181 -  
182 -Додати багато предметів  
183 - [Arguments] @{ARGUMENTS}  
184 - [Documentation]  
185 - ... ${ARGUMENTS[0]} == items  
186 - ${Items_length}= Get Length ${items}  
187 - : FOR ${INDEX} IN RANGE 1 ${Items_length}  
188 - \ Додати предмет ${items[${INDEX}]} ${INDEX}  
189 -  
190 -додати предмети закупівлі  
191 - [Arguments] @{ARGUMENTS}  
192 - [Documentation]  
193 - ... ${ARGUMENTS[0]} = username  
194 - ... ${ARGUMENTS[1]} = ${TENDER_UAID}  
195 - ... ${ARGUMENTS[2]} = 3  
196 - ${period_interval}= Get Broker Property By Username ${ARGUMENTS[0]} period_interval  
197 - ${tender_data}= prepare_test_tender_data ${period_interval} multi  
198 -  
199 - ${items}= Get From Dictionary ${tender_data.data} items  
200 - ${description}= Get From Dictionary ${tender_data.data} description  
201 - ${quantity}= Get From Dictionary ${items[0]} quantity  
202 - ${cpv}= Convert To String Картонки  
203 - ${cpv_id}= Get From Dictionary ${items[0].classification} id  
204 - ${cpv_id1}= Replace String ${cpv_id} - _  
205 - ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description  
206 - ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id  
207 - ${dkpp_id1}= Replace String ${dkpp_id} - _  
208 -  
209 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
210 - Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію  
211 - Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' видалити позиції  
212 -  
213 -додати позицію  
214 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
215 - Wait Until Page Contains Element xpath=//a[./text()='Редагувати'] 30  
216 - Click Element xpath=//a[./text()='Редагувати']  
217 - Додати багато предметів ${ARGUMENTS[2]}  
218 - Wait Until Page Contains Element xpath=//button[./text()='Зберегти'] 30  
219 - Click Element xpath=//button[./text()='Зберегти']  
220 -  
221 -видалити позиції  
222 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
223 - Wait Until Page Contains Element xpath=//a[./text()='Редагувати'] 30  
224 - Click Element xpath=//a[./text()='Редагувати']  
225 - : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]}-1  
226 - \ sleep 5  
227 - \ Click Element xpath=//a[@class='deleteMultiItem'][last()]  
228 - \ sleep 5  
229 - \ Click Element xpath=//a[@class='jBtn green']  
230 - Wait Until Page Contains Element xpath=//button[./text()='Зберегти'] 30  
231 - Click Element xpath=//button[./text()='Зберегти']  
232 -  
233 -Пошук тендера по ідентифікатору  
234 - [Arguments] @{ARGUMENTS}  
235 - [Documentation]  
236 - ... ${ARGUMENTS[0]} == username  
237 - ... ${ARGUMENTS[1]} == tenderId  
238 - Switch browser ${ARGUMENTS[0]}  
239 - Go To ${USERS.users['${ARGUMENTS[0]}'].homepage}  
240 - Wait Until Page Contains Держзакупівлі.онлайн 10  
241 - Click Element xpath=//a[text()='Закупівлі']  
242 - sleep 1  
243 - Click Element xpath=//select[@name='filter[object]']/option[@value='tenderID']  
244 - Input text xpath=//input[@name='filter[search]'] ${ARGUMENTS[1]}  
245 - Click Element xpath=//button[@class='btn'][./text()='Пошук']  
246 - Wait Until Page Contains ${ARGUMENTS[1]} 10  
247 - Capture Page Screenshot  
248 - sleep 1  
249 - Click Element xpath=//a[@class='reverse tenderLink']  
250 -  
251 -Задати питання  
252 - [Arguments] @{ARGUMENTS}  
253 - [Documentation]  
254 - ... ${ARGUMENTS[0]} == username  
255 - ... ${ARGUMENTS[1]} == tenderUaId  
256 - ... ${ARGUMENTS[2]} == questionId  
257 - ${title}= Get From Dictionary ${ARGUMENTS[2].data} title  
258 - ${description}= Get From Dictionary ${ARGUMENTS[2].data} description  
259 -  
260 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
261 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
262 - sleep 1  
263 - Execute Javascript window.scroll(2500,2500)  
264 - Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20  
265 - Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]  
266 - Wait Until Page Contains Element name=title 20  
267 - Input text name=title ${title}  
268 - Input text xpath=//textarea[@name='description'] ${description}  
269 - Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit']  
270 - Wait Until Page Contains ${title} 30  
271 - Capture Page Screenshot  
272 -  
273 -Відповісти на питання  
274 - [Arguments] @{ARGUMENTS}  
275 - [Documentation]  
276 - ... ${ARGUMENTS[0]} = username  
277 - ... ${ARGUMENTS[1]} = tenderUaId  
278 - ... ${ARGUMENTS[2]} = 0  
279 - ... ${ARGUMENTS[3]} = answer_data  
280 -  
281 - ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer  
282 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
283 -  
284 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
285 - Execute Javascript window.scroll(1500,1500)  
286 - Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20  
287 - Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]  
288 - Wait Until Page Contains Element xpath=//textarea[@name='answer'] 20  
289 - Input text xpath=//textarea[@name='answer'] ${answer}  
290 - Click Element xpath=//div[1]/div[3]/form/div/table/tbody/tr/td[2]/button  
291 - Wait Until Page Contains ${answer} 30  
292 - Capture Page Screenshot  
293 -  
294 -Подати скаргу  
295 - [Arguments] @{ARGUMENTS}  
296 - [Documentation]  
297 - ... ${ARGUMENTS[0]} = username  
298 - ... ${ARGUMENTS[1]} = tenderUaId  
299 - ... ${ARGUMENTS[2]} = complaintsId  
300 - ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title  
301 - ${description}= Get From Dictionary ${ARGUMENTS[2].data} description  
302 -  
303 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
304 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
305 - sleep 1  
306 - Execute Javascript window.scroll(1500,1500)  
307 - Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']]  
308 - Wait Until Page Contains Element name=title 20  
309 - Input text name=title ${complaint}  
310 - Input text xpath=//textarea[@name='description'] ${description}  
311 - Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit']  
312 - Wait Until Page Contains ${complaint} 30  
313 - Capture Page Screenshot  
314 -  
315 -Порівняти скаргу  
316 - [Arguments] @{ARGUMENTS}  
317 - [Documentation]  
318 - ... ${ARGUMENTS[0]} = username  
319 - ... ${ARGUMENTS[1]} = tenderUaId  
320 - ... ${ARGUMENTS[2]} = complaintsData  
321 - ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title  
322 - ${description}= Get From Dictionary ${ARGUMENTS[2].data} description  
323 -  
324 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
325 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
326 - sleep 1  
327 - Execute Javascript window.scroll(1500,1500)  
328 - Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']]  
329 - Wait Until Page Contains ${complaint} 30  
330 - Capture Page Screenshot  
331 -  
332 -Внести зміни в тендер  
333 - # Тест написано для уже існуючого тендеру, що знаходиться у чернетках користувача  
334 - [Arguments] @{ARGUMENTS}  
335 - [Documentation]  
336 - ... ${ARGUMENTS[0]} = username  
337 - ... ${ARGUMENTS[1]} = description  
338 -  
339 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
340 - Click Element xpath=//a[@class='reverse'][./text()='Мої закупівлі']  
341 - Wait Until Page Contains Element xpath=//a[@class='reverse'][./text()='Чернетки'] 30  
342 - Click Element xpath=//a[@class='reverse'][./text()='Чернетки']  
343 - Wait Until Page Contains Element xpath=//a[@class='reverse tenderLink'] 30  
344 - Click Element xpath=//a[@class='reverse tenderLink']  
345 - sleep 1  
346 - Click Element xpath=//a[@class='button save'][./text()='Редагувати']  
347 - sleep 1  
348 - Input text name=tender_title ${ARGUMENTS[1]}  
349 - sleep 1  
350 - Click Element xpath=//button[@class='saveDraft']  
351 - Wait Until Page Contains ${ARGUMENTS[1]} 30  
352 - Capture Page Screenshot  
353 -  
354 -обновити сторінку з тендером  
355 - [Arguments] @{ARGUMENTS}  
356 - [Documentation]  
357 - ... ${ARGUMENTS[0]} = username  
358 - ... ${ARGUMENTS[1]} = tenderUaId  
359 -  
360 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
361 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
362 - Reload Page  
363 -  
364 -отримати інформацію із тендера  
365 - [Arguments] @{ARGUMENTS}  
366 - [Documentation]  
367 - ... ${ARGUMENTS[0]} == username  
368 - ... ${ARGUMENTS[1]} == fieldname  
369 - Switch browser ${ARGUMENTS[0]}  
370 - Run Keyword And Return Отримати інформацію про ${ARGUMENTS[1]}  
371 -  
372 -Отримати текст із поля і показати на сторінці  
373 - [Arguments] ${fieldname}  
374 - sleep 1  
375 - ${return_value}= Get Text ${locator.${fieldname}}  
376 - [return] ${return_value}  
377 -  
378 -отримати інформацію про title  
379 - ${title}= Отримати текст із поля і показати на сторінці title  
380 - [return] ${title.split('.')[0]}  
381 -  
382 -отримати інформацію про description  
383 - ${description}= Отримати текст із поля і показати на сторінці description  
384 - [return] ${description}  
385 -  
386 -отримати інформацію про tenderId  
387 - ${tenderId}= Отримати текст із поля і показати на сторінці tenderId  
388 - [return] ${tenderId}  
389 -  
390 -отримати інформацію про value.amount  
391 - ${valueAmount}= Отримати текст із поля і показати на сторінці value.amount  
392 - ${valueAmount}= Convert To Number ${valueAmount.split(' ')[0]}  
393 - [return] ${valueAmount}  
394 -  
395 -отримати інформацію про minimalStep.amount  
396 - ${minimalStepAmount}= Отримати текст із поля і показати на сторінці minimalStep.amount  
397 - ${minimalStepAmount}= Convert To Number ${minimalStepAmount.split(' ')[0]}  
398 - [return] ${minimalStepAmount}  
399 -  
400 -отримати інформацію про enquiryPeriod.endDate  
401 - ${enquiryPeriodEndDate}= Отримати текст із поля і показати на сторінці enquiryPeriod.endDate  
402 - ${enquiryPeriodEndDate}= subtract_from_time ${enquiryPeriodEndDate} 6 5  
403 - [return] ${enquiryPeriodEndDate}  
404 -  
405 -отримати інформацію про tenderPeriod.endDate  
406 - ${tenderPeriodEndDate}= Отримати текст із поля і показати на сторінці tenderPeriod.endDate  
407 - ${tenderPeriodEndDate}= subtract_from_time ${tenderPeriodEndDate} 11 0  
408 - [return] ${tenderPeriodEndDate}  
409 -  
410 -отримати інформацію про items[0].deliveryAddress.countryName  
411 - ${countryName}= Отримати текст із поля і показати на сторінці items[0].deliveryAddress.countryName  
412 - [return] ${countryName}  
413 -  
414 -отримати інформацію про items[0].classification.scheme  
415 - ${classificationScheme}= Отримати текст із поля і показати на сторінці items[0].classification.scheme  
416 - [return] ${classificationScheme.split(' ')[1]}  
417 -  
418 -отримати інформацію про items[0].additionalClassifications[0].scheme  
419 - ${additionalClassificationsScheme}= Отримати текст із поля і показати на сторінці items[0].additionalClassifications[0].scheme  
420 - [return] ${additionalClassificationsScheme.split(' ')[1]}  
421 -  
422 -отримати інформацію про questions[0].title  
423 - sleep 1  
424 - Click Element xpath=//a[@class='reverse tenderLink']  
425 - sleep 1  
426 - Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]  
427 - ${questionsTitle}= Отримати текст із поля і показати на сторінці questions[0].title  
428 - ${questionsTitle}= Convert To Lowercase ${questionsTitle}  
429 - [return] ${questionsTitle.capitalize().split('.')[0] + '.'}  
430 -  
431 -отримати інформацію про questions[0].description  
432 - ${questionsDescription}= Отримати текст із поля і показати на сторінці questions[0].description  
433 - [return] ${questionsDescription}  
434 -  
435 -отримати інформацію про questions[0].date  
436 - ${questionsDate}= Отримати текст із поля і показати на сторінці questions[0].date  
437 - log ${questionsDate}  
438 - [return] ${questionsDate}  
439 -  
440 -отримати інформацію про questions[0].answer  
441 - sleep 1  
442 - Click Element xpath=//a[@class='reverse tenderLink']  
443 - sleep 1  
444 - Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]  
445 - ${questionsAnswer}= Отримати текст із поля і показати на сторінці questions[0].answer  
446 - [return] ${questionsAnswer}  
447 -  
448 -отримати інформацію про items[0].deliveryDate.endDate  
449 - ${deliveryDateEndDate}= Отримати текст із поля і показати на сторінці items[0].deliveryDate.endDate  
450 - ${deliveryDateEndDate}= subtract_from_time ${deliveryDateEndDate} 15 0  
451 - [return] ${deliveryDateEndDate}  
452 -  
453 -отримати інформацію про items[0].classification.id  
454 - ${classificationId}= Отримати текст із поля і показати на сторінці items[0].classification.id  
455 - [return] ${classificationId}  
456 -  
457 -отримати інформацію про items[0].classification.description  
458 - ${classificationDescription}= Отримати текст із поля і показати на сторінці items[0].classification.description  
459 - Run Keyword And Return If '${classificationDescription}' == 'Картонки' Convert To String Cartons  
460 - [return] ${classificationDescription}  
461 -  
462 -отримати інформацію про items[0].additionalClassifications[0].id  
463 - ${additionalClassificationsId}= Отримати текст із поля і показати на сторінці items[0].additionalClassifications[0].id  
464 - [return] ${additionalClassificationsId}  
465 -  
466 -отримати інформацію про items[0].additionalClassifications[0].description  
467 - ${additionalClassificationsDescription}= Отримати текст із поля і показати на сторінці items[0].additionalClassifications[0].description  
468 - ${additionalClassificationsDescription}= Convert To Lowercase ${additionalClassificationsDescription}  
469 - [return] ${additionalClassificationsDescription}  
470 -  
471 -отримати інформацію про items[0].quantity  
472 - ${itemsQuantity}= Отримати текст із поля і показати на сторінці items[0].quantity  
473 - ${itemsQuantity}= Convert To Integer ${itemsQuantity}  
474 - [return] ${itemsQuantity}  
475 -  
476 -отримати інформацію про items[0].unit.code  
477 - ${unitCode}= Отримати текст із поля і показати на сторінці items[0].unit.code  
478 - Run Keyword And Return If '${unitCode}'== 'кг' Convert To String KGM  
479 - [return] ${unitCode}  
480 -  
481 -отримати інформацію про procuringEntity.name  
482 - Log | Viewer can't see this information on Netcast console=yes  
483 -  
484 -отримати інформацію про enquiryPeriod.startDate  
485 - Log | Viewer can't see this information on Netcast console=yes  
486 -  
487 -отримати інформацію про tenderPeriod.startDate  
488 - Log | Viewer can't see this information on Netcast console=yes  
489 -  
490 -отримати інформацію про items[0].deliveryLocation.longitude  
491 - Log | Viewer can't see this information on Netcast console=yes  
492 -  
493 -отримати інформацію про items[0].deliveryLocation.latitude  
494 - Log | Viewer can't see this information on Netcast console=yes  
495 -  
496 -отримати інформацію про items[0].deliveryAddress.postalCode  
497 - Log | Viewer can't see this information on Netcast console=yes  
498 -  
499 -отримати інформацію про items[0].deliveryAddress.locality  
500 - Log | Viewer can't see this information on Netcast console=yes  
501 -  
502 -отримати інформацію про items[0].deliveryAddress.streetAddress  
503 - Log | Viewer can't see this information on Netcast console=yes  
504 -  
505 -отримати інформацію про items[0].deliveryAddress.region  
506 - Log | Viewer can't see this information on Netcast console=yes  
507 -  
508 -отримати інформацію про items[0].unit.name  
509 - Log | Viewer can't see this information on Netcast console=yes  
1 -from datetime import datetime, timedelta  
2 -  
3 -  
4 -def subtract_from_time(date_time, subtr_min, subtr_sec):  
5 - sub = datetime.strptime(date_time, "%d.%m.%Y %H:%M")  
6 - sub = (sub - timedelta(minutes=int(subtr_min),  
7 - seconds=int(subtr_sec))).isoformat()  
8 - return sub  
@@ -80,6 +80,9 @@ Library openprocurement_client_helper.py @@ -80,6 +80,9 @@ Library openprocurement_client_helper.py
80 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} 80 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
81 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 81 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
82 Set_To_Object ${tender.data} ${fieldname} ${fieldvalue} 82 Set_To_Object ${tender.data} ${fieldname} ${fieldvalue}
  83 + ${procurementMethodType}= Get From Object ${tender.data} procurementMethodType
  84 + Run Keyword If '${procurementMethodType}' == 'aboveThresholdUA' or '${procurementMethodType}' == 'aboveThresholdEU'
  85 + ... Remove From Dictionary ${tender.data} enquiryPeriod
83 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} 86 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
84 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 87 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
85 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} 88 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue}
@@ -131,25 +134,30 @@ Library openprocurement_client_helper.py @@ -131,25 +134,30 @@ Library openprocurement_client_helper.py
131 134
132 135
133 Відповісти на питання 136 Відповісти на питання
134 - [Arguments] ${username} ${tender_uaid} ${question_id} ${answer_data} 137 + [Arguments] ${username} ${tender_uaid} ${question} ${answer_data}
135 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 138 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
136 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} 139 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
137 - ${answer_data.data.id}= Set Variable ${tender.data.questions[${question_id}].id} 140 + ${answer_data.data.id}= Set Variable ${question.data.id}
138 ${question_with_answer}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data} 141 ${question_with_answer}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data}
139 Log object data ${question_with_answer} question_with_answer 142 Log object data ${question_with_answer} question_with_answer
  143 + [return] ${question_with_answer}
140 144
141 145
142 Подати цінову пропозицію 146 Подати цінову пропозицію
143 [Arguments] ${username} ${tender_uaid} ${bid} 147 [Arguments] ${username} ${tender_uaid} ${bid}
144 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 148 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
145 ${biddingresponse}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid} 149 ${biddingresponse}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid}
  150 + Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id ${biddingresponse['data']['id']}
146 Log ${biddingresponse} 151 Log ${biddingresponse}
147 [return] ${biddingresponse} 152 [return] ${biddingresponse}
148 153
149 154
150 Змінити цінову пропозицію 155 Змінити цінову пропозицію
151 - [Arguments] ${username} ${tender_uaid} ${bid} 156 + [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
152 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 157 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  158 + ${bid}= Отримати пропозицію ${username} ${tender_uaid}
  159 + Set_To_Object ${bid.data} ${fieldname} ${fieldvalue}
  160 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
153 ${changed_bid}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${bid} 161 ${changed_bid}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${bid}
154 Log ${changed_bid} 162 Log ${changed_bid}
155 [return] ${changed_bid} 163 [return] ${changed_bid}
@@ -158,6 +166,8 @@ Library openprocurement_client_helper.py @@ -158,6 +166,8 @@ Library openprocurement_client_helper.py
158 Скасувати цінову пропозицію 166 Скасувати цінову пропозицію
159 [Arguments] ${username} ${tender_uaid} ${bid} 167 [Arguments] ${username} ${tender_uaid} ${bid}
160 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 168 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  169 + Set To Dictionary ${bid.data} id ${USERS.users['${username}'].bidresponses['bid'].data.id}
  170 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
161 ${changed_bid}= Call Method ${USERS.users['${username}'].client} delete_bid ${tender} ${bid} 171 ${changed_bid}= Call Method ${USERS.users['${username}'].client} delete_bid ${tender} ${bid}
162 Log ${changed_bid} 172 Log ${changed_bid}
163 [return] ${changed_bid} 173 [return] ${changed_bid}
@@ -174,11 +184,11 @@ Library openprocurement_client_helper.py @@ -174,11 +184,11 @@ Library openprocurement_client_helper.py
174 184
175 185
176 Завантажити документ в ставку 186 Завантажити документ в ставку
177 - [Arguments] ${username} ${path} ${tender_uaid} 187 + [Arguments] ${username} ${path} ${tender_uaid} ${doc_type}=documents
178 ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id} 188 ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}
179 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 189 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
180 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token} 190 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
181 - ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document ${path} ${tender} ${bid_id} 191 + ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document ${path} ${tender} ${bid_id} ${doc_type}
182 ${uploaded_file} = Create Dictionary filepath ${path} upload_response ${response} 192 ${uploaded_file} = Create Dictionary filepath ${path} upload_response ${response}
183 Log ${response} 193 Log ${response}
184 Log object data ${uploaded_file} 194 Log object data ${uploaded_file}
@@ -195,6 +205,13 @@ Library openprocurement_client_helper.py @@ -195,6 +205,13 @@ Library openprocurement_client_helper.py
195 Log object data ${uploaded_file} 205 Log object data ${uploaded_file}
196 [return] ${uploaded_file} 206 [return] ${uploaded_file}
197 207
  208 +Змінити документацію в ставці
  209 + [Arguments] ${username} ${doc_data} ${bidid} ${docid}
  210 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${TENDER['TENDER_UAID']}
  211 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
  212 + ${response}= Call Method ${USERS.users['${username}'].client} patch_bid_document ${tender} ${doc_data} ${bidid} ${docid}
  213 + Log ${response}
  214 + [return] ${response}
198 215
199 Завантажити документ 216 Завантажити документ
200 [Arguments] ${username} ${filepath} ${tender_uaid} 217 [Arguments] ${username} ${filepath} ${tender_uaid}
@@ -378,16 +395,17 @@ Library openprocurement_client_helper.py @@ -378,16 +395,17 @@ Library openprocurement_client_helper.py
378 Log ${reply} 395 Log ${reply}
379 396
380 397
381 -Додати постачальника 398 +Додати і підтвердити постачальника
382 [Documentation] 399 [Documentation]
383 - ... [Arguments] Username and tender uaid  
384 - ... Find tender using uaid, get data from Підготувати дані про постачальника and call create_award 400 + ... [Arguments] Username, tender uaid and supplier data
  401 + ... Find tender using uaid and call create_award
385 ... [Return] Nothing 402 ... [Return] Nothing
386 - [Arguments] ${username} ${tender_uaid} 403 + [Arguments] ${username} ${tender_uaid} ${supplier_data}
387 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid} 404 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid}
388 - ${supplier_data}= Підготувати дані про постачальника ${username}  
389 ${reply}= Call Method ${USERS.users['${username}'].client} create_award ${tender} ${supplier_data} 405 ${reply}= Call Method ${USERS.users['${username}'].client} create_award ${tender} ${supplier_data}
390 Log ${reply} 406 Log ${reply}
  407 + ${supplier_number}= Set variable 0
  408 + Підтвердити постачальника ${username} ${tender_uaid} ${supplier_number}
391 409
392 410
393 Підтвердити постачальника 411 Підтвердити постачальника
@@ -403,46 +421,56 @@ Library openprocurement_client_helper.py @@ -403,46 +421,56 @@ Library openprocurement_client_helper.py
403 Log ${reply} 421 Log ${reply}
404 422
405 423
406 -Додати запит на скасування 424 +Скасувати закупівлю
407 [Documentation] 425 [Documentation]
408 - ... [Arguments] Username, tender uaid and cancellation reason  
409 - ... Find tender using uaid, set cancellation reason, get data from test_cancel_tender 426 + ... [Arguments] Username, tender uaid, cancellation reason,
  427 + ... document and new description of document
  428 + ... [Description] Find tender using uaid, set cancellation reason, get data from cancel_tender
410 ... and call create_cancellation 429 ... and call create_cancellation
  430 + ... After that add document to cancellation and change description of document
411 ... [Return] Nothing 431 ... [Return] Nothing
412 - [Arguments] ${username} ${tender_uaid} ${cancellation_reason} 432 + [Arguments] ${username} ${tender_uaid} ${cancellation_reason} ${document} ${new_description}
413 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid} 433 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid}
414 ${data}= test_cancel_tender_data ${cancellation_reason} 434 ${data}= test_cancel_tender_data ${cancellation_reason}
415 Log ${data} 435 Log ${data}
416 - Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_reason ${data}  
417 - ${reply}= Call Method ${USERS.users['${username}'].client} create_cancellation ${tender} ${data}  
418 - Log ${reply} 436 + ${cancel_reply}= Call Method ${USERS.users['${username}'].client} create_cancellation ${tender} ${data}
  437 + Log ${cancel_reply}
  438 + ${cancellation_id}= Set variable ${cancel_reply.data.id}
  439 +
  440 +
  441 + ${document_id}= Завантажити документацію до запиту на скасування ${username} ${tender_uaid} ${cancellation_id} ${document}
  442 +
  443 +
  444 + Змінити опис документа в скасуванні ${username} ${tender_uaid} ${cancellation_id} ${document_id} ${new_description}
  445 +
  446 +
  447 + Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id}
419 448
420 449
421 Завантажити документацію до запиту на скасування 450 Завантажити документацію до запиту на скасування
422 [Documentation] 451 [Documentation]
423 - ... [Arguments] Username, tender uaid and number of cancellation  
424 - ... Find tender using uaid, create fake documentation and call upload_cancellation_document  
425 - ... [Return] Nothing  
426 - [Arguments] ${username} ${tender_uaid} ${cancel_num} 452 + ... [Arguments] Username, tender uaid, cancellation id and document to upload
  453 + ... [Description] Find tender using uaid, and call upload_cancellation_document
  454 + ... [Return] ID of added document
  455 + [Arguments] ${username} ${tender_uaid} ${cancellation_id} ${document}
427 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid} 456 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid}
428 - ${first_cancel_doc}= create_fake_doc  
429 - Set To Dictionary ${USERS.users['${tender_owner}']} first_cancel_doc ${first_cancel_doc}  
430 - ${reply}= Call Method ${USERS.users['${username}'].client} upload_cancellation_document ${first_cancel_doc} ${tender} ${tender['data']['cancellations'][${cancel_num}]['id']}  
431 - Log ${reply} 457 + ${doc_reply}= Call Method ${USERS.users['${username}'].client} upload_cancellation_document ${document} ${tender} ${cancellation_id}
  458 + Log ${doc_reply}
  459 + [Return] ${doc_reply.data.id}
432 460
433 461
434 Змінити опис документа в скасуванні 462 Змінити опис документа в скасуванні
435 [Documentation] 463 [Documentation]
436 - ... [Arguments] Username, tender uaid, cancellation number and cancellation document number  
437 - ... Find tender using uaid, get data from test_change_cancellation_document_field and call 464 + ... [Arguments] Username, tender uaid, cancellation id, document id and new description of document
  465 + ... [Description] Find tender using uaid, create dict with data about description and call
438 ... patch_cancellation_document 466 ... patch_cancellation_document
439 ... [Return] Nothing 467 ... [Return] Nothing
440 - [Arguments] ${username} ${tender_uaid} ${cancel_num} ${doc_num} ${field} ${value} 468 + [Arguments] ${username} ${tender_uaid} ${cancellation_id} ${document_id} ${new_description}
  469 + ${field}= Set variable description
441 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid} 470 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid}
442 - ${temp}= Create Dictionary ${field} ${value} 471 + ${temp}= Create Dictionary ${field} ${new_description}
443 ${data}= Create Dictionary data ${temp} 472 ${data}= Create Dictionary data ${temp}
444 - Log ${data}  
445 - ${reply}= Call Method ${USERS.users['${username}'].client} patch_cancellation_document ${tender} ${data} ${tender['data']['cancellations'][${cancel_num}]['id']} ${tender['data']['cancellations'][${cancel_num}]['documents'][${doc_num}]['id']} 473 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_cancellation_document ${tender} ${data} ${cancellation_id} ${document_id}
446 Log ${reply} 474 Log ${reply}
447 475
448 476
@@ -465,9 +493,9 @@ Library openprocurement_client_helper.py @@ -465,9 +493,9 @@ Library openprocurement_client_helper.py
465 ... [Arguments] Username, tender uaid, cancellation number 493 ... [Arguments] Username, tender uaid, cancellation number
466 ... Find tender using uaid, get cancellation test_confirmation data and call patch_cancellation 494 ... Find tender using uaid, get cancellation test_confirmation data and call patch_cancellation
467 ... [Return] Nothing 495 ... [Return] Nothing
468 - [Arguments] ${username} ${tender_uaid} ${cancel_num} 496 + [Arguments] ${username} ${tender_uaid} ${cancel_id}
469 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid} 497 ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid}
470 - ${data}= test_confirm_data ${tender['data']['cancellations'][${cancel_num}]['id']} 498 + ${data}= test_confirm_data ${cancel_id}
471 Log ${data} 499 Log ${data}
472 ${reply}= Call Method ${USERS.users['${username}'].client} patch_cancellation ${tender} ${data} 500 ${reply}= Call Method ${USERS.users['${username}'].client} patch_cancellation ${tender} ${data}
473 Log ${reply} 501 Log ${reply}
@@ -484,3 +512,57 @@ Library openprocurement_client_helper.py @@ -484,3 +512,57 @@ Library openprocurement_client_helper.py
484 Log ${data} 512 Log ${data}
485 ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} 513 ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data}
486 Log ${reply} 514 Log ${reply}
  515 +
  516 +##############################################################################
  517 +# OpenUA procedure
  518 +##############################################################################
  519 +
  520 +Підтвердити кваліфікацію
  521 + [Documentation]
  522 + ... [Arguments] Username, tender uaid and qualification number
  523 + ... [Description] Find tender using uaid, create data dict with active status and call patch_qualification
  524 + ... [Return] Reply of API
  525 + [Arguments] ${username} ${tender_uid} ${qualification_num}
  526 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid}
  527 + ${qualification}= create_data_dict data.status active
  528 + Set To Dictionary ${qualification.data} id ${tender.data.qualifications[${qualification_num}].id}
  529 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification}
  530 + Log ${reply}
  531 + [Return] ${reply}
  532 +
  533 +Відхилити кваліфікацію
  534 + [Documentation]
  535 + ... [Arguments] Username, tender uaid and qualification number
  536 + ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_qualification
  537 + ... [Return] Reply of API
  538 + [Arguments] ${username} ${tender_uid} ${qualification_num}
  539 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid}
  540 + ${qualification}= create_data_dict data.status unsuccessful
  541 + Set To Dictionary ${qualification.data} id ${tender.data.qualifications[${qualification_num}].id}
  542 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification}
  543 + Log ${reply}
  544 + [Return] ${reply}
  545 +
  546 +Завантажити документ у кваліфікацію
  547 + [Documentation]
  548 + ... [Arguments] Username, tender uaid, qualification number and document to upload
  549 + ... [Description] Find tender using uaid, and call upload_qualification_document
  550 + ... [Return] Reply of API
  551 + [Arguments] ${username} ${document} ${tender_uaid} ${qualification_num}
  552 + ${tender}= Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  553 + ${doc_reply}= Call Method ${USERS.users['${username}'].client} upload_qualification_document ${document} ${tender} ${tender.data.qualifications[${qualification_num}].id}
  554 + Log ${doc_reply}
  555 + [Return] ${doc_reply}
  556 +
  557 +Скасувати кваліфікацію
  558 + [Documentation]
  559 + ... [Arguments] Username, tender uaid and qualification number
  560 + ... [Description] Find tender using uaid, create data dict with cancelled status and call patch_qualification
  561 + ... [Return] Reply of API
  562 + [Arguments] ${username} ${tender_uid} ${qualification_num}
  563 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid}
  564 + ${qualification}= create_data_dict data.status cancelled
  565 + Set To Dictionary ${qualification.data} id ${tender.data.qualifications[${qualification_num}].id}
  566 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification}
  567 + Log ${reply}
  568 + [Return] ${reply}
1 Default: 1 Default:
2 - # These values are used by default unless a  
3 - # specific broker entry overrides them.  
4 - intervals: # Time in minutes  
5 - enquiry:  
6 - - 0 # Delay before period starts (for startDate)  
7 - - 11 # Duration of period (for endDate)  
8 - tender:  
9 - - 0  
10 - - 31  
11 - timeout_on_wait: 300 # Time in seconds 2 + # Default dictionary:
  3 + # These values are used unless a
  4 + # specific broker entry overrides them
  5 + intervals:
  6 + # intervals: Interval values for each "mode"
  7 + #
  8 + # Each field is a mode name
  9 + # Current modes are:
  10 + # single, multi, limited, openua, openeu
  11 + #
  12 + # See `prepare_test_tender_data()`
  13 + # in `service_keywords.py` for more details
  14 + #
  15 + # If some mode is not specified,
  16 + # time values are taken from "default"
  17 + default:
  18 + # default: Used for modes that are not present in `intervals`
  19 + #
  20 + # enquiry, tender: Period names with corresponding time values
  21 + #
  22 + # Other mode-specific fields are allowed too
  23 + #
  24 + # First number in list: Delay before period starts (for startDate)
  25 + # Second number in list: Duration of period (for endDate)
  26 + enquiry: [0, 11]
  27 + tender: [0, 31]
  28 + openua:
  29 + # accelerator: Integer value
  30 + # This is not a name of period
  31 + # Please refer to API documentation to find out what's this
  32 + accelerator: 1440
  33 + tender: [0, 15]
  34 + # Please remember that openUA and openEU procedures
  35 + # forbid anyone to set or modify enquiryPeriod
  36 + # (it is set automatically)
  37 + openeu:
  38 + accelerator: 1440
  39 + tender: [0, 30]
  40 + # Synchronization delay, in seconds
  41 + timeout_on_wait: 300
12 Quinta: 42 Quinta:
13 -# intervals:  
14 -# enquiry:  
15 -# - 0  
16 -# - 2  
17 -# tender:  
18 -# - 0  
19 -# - 5 43 + intervals:
  44 + default:
  45 + enquiry: [0, 2]
  46 + tender: [0, 5]
  47 + openua:
  48 + accelerator: 1440
  49 + tender: [0, 15]
  50 + openeu:
  51 + accelerator: 1440
  52 + tender: [0, 30]
20 keywords_file: openprocurement_client 53 keywords_file: openprocurement_client
21 roles: 54 roles:
22 - tender_owner: Tender_Owner  
23 provider: Tender_User 55 provider: Tender_User
24 provider1: Tender_User1 56 provider1: Tender_User1
  57 + tender_owner: Tender_Owner
25 viewer: Tender_Viewer 58 viewer: Tender_Viewer
26 timeout_on_wait: 15 59 timeout_on_wait: 15
27 E-tender: 60 E-tender:
28 keywords_file: etender 61 keywords_file: etender
29 roles: 62 roles:
30 - tender_owner: E-tender_Owner  
31 provider: E-tender_Provider1 63 provider: E-tender_Provider1
32 provider1: E-tender_Provider2 64 provider1: E-tender_Provider2
  65 + tender_owner: E-tender_Owner
33 viewer: E-tender_Viewer 66 viewer: E-tender_Viewer
34 timeout_on_wait: 600 67 timeout_on_wait: 600
35 -Netcast:  
36 - keywords_file: netcast 68 +DZO:
  69 + keywords_file: dzo
37 login: admin 70 login: admin
38 password: uStudio 71 password: uStudio
39 roles: 72 roles:
40 - tender_owner: Netcast_Owner  
41 - provider: Netcast_Provider1  
42 - viewer: Netcast_Viewer 73 + provider: DZO_Provider1
  74 + tender_owner: DZO_Owner
  75 + viewer: DZO_Viewer
43 Newtend: 76 Newtend:
44 keywords_file: newtend 77 keywords_file: newtend
45 roles: 78 roles:
46 - tender_owner: Newtend_Owner  
47 provider: Newtend_Provider1 79 provider: Newtend_Provider1
  80 + tender_owner: Newtend_Owner
48 viewer: Newtend_Viewer 81 viewer: Newtend_Viewer
49 PrivatMarket: 82 PrivatMarket:
50 intervals: 83 intervals:
51 - enquiry:  
52 - - 0  
53 - - 2  
54 - tender:  
55 - - 0  
56 - - 5 84 + default:
  85 + enquiry: [0, 2]
  86 + tender: [0, 5]
57 keywords_file: privatmarket 87 keywords_file: privatmarket
58 roles: 88 roles:
59 - viewer: PrivatMarket_Viewer  
60 provider: PrivatMarket_Provider 89 provider: PrivatMarket_Provider
61 provider1: PrivatMarket_Provider1 90 provider1: PrivatMarket_Provider1
  91 + viewer: PrivatMarket_Viewer
62 timeout_on_wait: 30 92 timeout_on_wait: 30
63 Prom: 93 Prom:
64 intervals: 94 intervals:
65 - enquiry:  
66 - - 8  
67 - - 8  
68 - tender:  
69 - - 0  
70 - - 31 95 + default:
  96 + enquiry: [10, 10]
  97 + tender: [0, 45]
71 keywords_file: prom 98 keywords_file: prom
72 roles: 99 roles:
73 tender_owner: Prom_Owner 100 tender_owner: Prom_Owner
74 viewer: Prom_Viewer 101 viewer: Prom_Viewer
75 Publicbid: 102 Publicbid:
  103 + intervals:
  104 + default:
  105 + enquiry: [21, 15]
  106 + tender: [1, 15]
76 keywords_file: publicbid 107 keywords_file: publicbid
77 roles: 108 roles:
  109 + provider: Publicbid_Provider1
78 tender_owner: Publicbid_Owner 110 tender_owner: Publicbid_Owner
79 viewer: Publicbid_Viewer 111 viewer: Publicbid_Viewer
80 - intervals:  
81 - enquiry:  
82 - - 21 # Delay before period starts (for startDate)  
83 - - 15 # Duration of period (for endDate)  
84 - tender:  
85 - - 1  
86 - - 15  
87 PublicPortal: 112 PublicPortal:
88 keywords_file: publicportal 113 keywords_file: publicportal
89 roles: 114 roles:
90 viewer: PublicPortal_Viewer 115 viewer: PublicPortal_Viewer
91 SmartTender: 116 SmartTender:
  117 + intervals:
  118 + default:
  119 + enquiry: [5, 10]
  120 + tender: [0, 15]
92 keywords_file: smarttender 121 keywords_file: smarttender
93 roles: 122 roles:
  123 + provider: SmartTender_Provider1
  124 + provider1: SmartTender_Provider2
  125 + tender_owner: SmartTender_Owner
94 viewer: SmartTender_Viewer 126 viewer: SmartTender_Viewer
  127 + timeout_on_wait: 300
@@ -13,7 +13,7 @@ users: @@ -13,7 +13,7 @@ users:
13 broker: Quinta 13 broker: Quinta
14 E-tender_Owner: 14 E-tender_Owner:
15 broker: E-tender 15 broker: E-tender
16 - homepage: "http://bid.uat.e-tender.biz/#/profile" 16 + homepage: "http://bid.uat.e-tender.biz/#"
17 login: Misha2 17 login: Misha2
18 password: Password1 18 password: Password1
19 browser: chrome 19 browser: chrome
@@ -21,7 +21,7 @@ users: @@ -21,7 +21,7 @@ users:
21 size: [800, 800] 21 size: [800, 800]
22 E-tender_Provider1: 22 E-tender_Provider1:
23 broker: E-tender 23 broker: E-tender
24 - homepage: "http://bid.uat.e-tender.biz/#/profile" 24 + homepage: "http://bid.uat.e-tender.biz/#"
25 login: st_org 25 login: st_org
26 password: 12345678 26 password: 12345678
27 browser: chrome 27 browser: chrome
@@ -29,7 +29,7 @@ users: @@ -29,7 +29,7 @@ users:
29 size: [700, 800] 29 size: [700, 800]
30 E-tender_Provider2: 30 E-tender_Provider2:
31 broker: E-tender 31 broker: E-tender
32 - homepage: "http://bid.uat.e-tender.biz/#/profile" 32 + homepage: "http://bid.uat.e-tender.biz/#"
33 login: provider2 33 login: provider2
34 password: Qa123456 34 password: Qa123456
35 browser: chrome 35 browser: chrome
@@ -41,24 +41,24 @@ users: @@ -41,24 +41,24 @@ users:
41 browser: chrome 41 browser: chrome
42 position: [0, 0] 42 position: [0, 0]
43 size: [640, 450] 43 size: [640, 450]
44 - Netcast_Owner:  
45 - broker: Netcast 44 + DZO_Owner:
  45 + broker: DZO
46 homepage: "http://dz2.byustudio.in.ua" 46 homepage: "http://dz2.byustudio.in.ua"
47 login: ovramet.s@gmail.com 47 login: ovramet.s@gmail.com
48 password: Password1 48 password: Password1
49 browser: chrome 49 browser: chrome
50 position: [0, 0] 50 position: [0, 0]
51 size: [700, 800] 51 size: [700, 800]
52 - Netcast_Provider1:  
53 - broker: Netcast 52 + DZO_Provider1:
  53 + broker: DZO
54 homepage: "http://dz2.byustudio.in.ua" 54 homepage: "http://dz2.byustudio.in.ua"
55 login: halyna.khimka@gmail.com 55 login: halyna.khimka@gmail.com
56 password: JHO5VUp5n 56 password: JHO5VUp5n
57 browser: chrome 57 browser: chrome
58 position: [0, 0] 58 position: [0, 0]
59 size: [600, 800] 59 size: [600, 800]
60 - Netcast_Viewer:  
61 - broker: Netcast 60 + DZO_Viewer:
  61 + broker: DZO
62 homepage: "http://dz2.byustudio.in.ua" 62 homepage: "http://dz2.byustudio.in.ua"
63 browser: chrome 63 browser: chrome
64 position: [0, 0] 64 position: [0, 0]
@@ -111,7 +111,8 @@ users: @@ -111,7 +111,8 @@ users:
111 size: [1000, 1000] 111 size: [1000, 1000]
112 Prom_Owner: 112 Prom_Owner:
113 broker: Prom 113 broker: Prom
114 - homepage: "http://my.dz-test.net/cabinet/purchases/state_purchase/list" 114 + homepage: "http://zakupki.dz-test.net/"
  115 + default_page: "http://my.dz-test.net/cabinet/purchases/state_purchase/list"
115 login: test@test12.com 116 login: test@test12.com
116 password: 1234 117 password: 1234
117 browser: chrome 118 browser: chrome
@@ -119,8 +120,9 @@ users: @@ -119,8 +120,9 @@ users:
119 size: [1280, 1024] 120 size: [1280, 1024]
120 Prom_Viewer: 121 Prom_Viewer:
121 broker: Prom 122 broker: Prom
122 - homepage: "http://my.dz-test.net/cabinet/purchases/state_purchase/list"  
123 - login: r.zaporozhets@smartweb.com.ua 123 + homepage: "http://zakupki.dz-test.net/"
  124 + default_page: "http://my.dz-test.net/cabinet/purchases/state_purchase/list"
  125 + login: test@test13.com
124 password: 1234 126 password: 1234
125 browser: chrome 127 browser: chrome
126 position: [640, 0] 128 position: [640, 0]
@@ -155,7 +157,31 @@ users: @@ -155,7 +157,31 @@ users:
155 size: [640, 480] 157 size: [640, 480]
156 SmartTender_Viewer: 158 SmartTender_Viewer:
157 broker: SmartTender 159 broker: SmartTender
158 - homepage: "http://smarttender.biz/tenders" 160 + homepage: "https://m.it.ua/cp_smart/test-tenders?allcat=1"
  161 + browser: chrome
  162 + position: [0, 450]
  163 + size: [640, 450]
  164 + SmartTender_Provider1:
  165 + broker: SmartTender
  166 + homepage: "https://m.it.ua/cp_smart/test-tenders?allcat=1"
  167 + login: bened@it.ua
  168 + password: 111111
159 browser: chrome 169 browser: chrome
160 position: [0, 450] 170 position: [0, 450]
161 size: [640, 450] 171 size: [640, 450]
  172 + SmartTender_Provider2:
  173 + broker: SmartTender
  174 + homepage: "https://m.it.ua/cp_smart/test-tenders?allcat=1"
  175 + login: my.mail.rudenko@gmail.com
  176 + password: qwerty123
  177 + browser: chrome
  178 + position: [0, 450]
  179 + size: [640, 450]
  180 + SmartTender_Owner:
  181 + broker: SmartTender
  182 + homepage: "https://m.it.ua/cp_smart/"
  183 + login: PPR_BV
  184 + password: 123321
  185 + browser: chrome
  186 + position: [0, 0]
  187 + size: [1400, 900]
@@ -10,6 +10,10 @@ fake_ru = Factory.create('ru') @@ -10,6 +10,10 @@ fake_ru = Factory.create('ru')
10 fake_en = Factory.create() 10 fake_en = Factory.create()
11 11
12 12
  13 +def create_fake_sentence():
  14 + return fake.sentence(nb_words=10, variable_nb_words=True)
  15 +
  16 +
13 def create_fake_doc(): 17 def create_fake_doc():
14 content = fake.text() 18 content = fake.text()
15 suffix = fake.random_element(('.txt', '.doc', '.docx', '.pdf')) 19 suffix = fake.random_element(('.txt', '.doc', '.docx', '.pdf'))
@@ -19,7 +23,7 @@ def create_fake_doc(): @@ -19,7 +23,7 @@ def create_fake_doc():
19 return tf.name 23 return tf.name
20 24
21 25
22 -def test_tender_data(intervals): 26 +def test_tender_data(intervals, periods=("enquiry", "tender")):
23 now = get_now() 27 now = get_now()
24 t_data = { 28 t_data = {
25 "title": u"[ТЕСТУВАННЯ] " + fake.catch_phrase(), 29 "title": u"[ТЕСТУВАННЯ] " + fake.catch_phrase(),
@@ -104,7 +108,7 @@ def test_tender_data(intervals): @@ -104,7 +108,7 @@ def test_tender_data(intervals):
104 } 108 }
105 period_dict = {} 109 period_dict = {}
106 inc_dt = now 110 inc_dt = now
107 - for period_name in ("enquiry", "tender"): 111 + for period_name in periods:
108 period_dict[period_name + "Period"] = {} 112 period_dict[period_name + "Period"] = {}
109 for i, j in zip(range(2), ("start", "end")): 113 for i, j in zip(range(2), ("start", "end")):
110 inc_dt += timedelta(minutes=intervals[period_name][i]) 114 inc_dt += timedelta(minutes=intervals[period_name][i])
@@ -190,189 +194,31 @@ def test_tender_data_limited(intervals): @@ -190,189 +194,31 @@ def test_tender_data_limited(intervals):
190 194
191 195
192 def test_tender_data_multiple_items(intervals): 196 def test_tender_data_multiple_items(intervals):
193 - now = get_now()  
194 t_data = test_tender_data(intervals) 197 t_data = test_tender_data(intervals)
195 - t_data.update({  
196 - "items": [  
197 - {  
198 - "description": fake.catch_phrase(),  
199 - "deliveryDate": {  
200 - "endDate": (now + timedelta(days=5)).isoformat()  
201 - },  
202 - "deliveryLocation": {  
203 - "latitude": 49.8500,  
204 - "longitude": 24.0167  
205 - },  
206 - "deliveryAddress": {  
207 - "countryName": u"Україна",  
208 - "countryName_ru": u"Украина",  
209 - "countryName_en": "Ukraine",  
210 - "postalCode": "01008",  
211 - "region": u"м. Київ",  
212 - "locality": u"м. Київ",  
213 - "streetAddress": u"ул. Грушевского, 12/2"  
214 - },  
215 - "classification": {  
216 - "scheme": u"CPV",  
217 - "id": u"44617100-9",  
218 - "description": u"Картонки",  
219 - "description_ru": u"Большие картонные коробки",  
220 - "description_en": u"Cartons"  
221 - },  
222 - "additionalClassifications": [  
223 - {  
224 - "scheme": u"ДКПП",  
225 - "id": u"17.29.12-00.00",  
226 - "description": u"Блоки, плити та пластини фільтрувальні, з паперової маси"  
227 - }  
228 - ],  
229 - "unit": {  
230 - "name": u"кілограм",  
231 - "name_ru": u"килограмм",  
232 - "name_en": "kilogram",  
233 - "code": u"KGM"  
234 - },  
235 - "quantity": fake.pyint()  
236 - },  
237 - {  
238 - "description": fake.catch_phrase(),  
239 - "deliveryDate": {  
240 - "endDate": (now + timedelta(days=5)).isoformat()  
241 - },  
242 - "deliveryLocation": {  
243 - "latitude": 49.8500,  
244 - "longitude": 24.0167  
245 - },  
246 - "deliveryAddress": {  
247 - "countryName": u"Україна",  
248 - "countryName_ru": u"Украина",  
249 - "countryName_en": "Ukraine",  
250 - "postalCode": fake.postalcode(),  
251 - "region": u"м. Київ",  
252 - "locality": u"м. Київ",  
253 - "streetAddress": fake.street_address()  
254 - },  
255 - "classification": {  
256 - "scheme": u"CPV",  
257 - "id": u"44617100-9",  
258 - "description": u"Картонки",  
259 - "description_ru": u"Большие картонные коробки",  
260 - "description_en": u"Cartons"  
261 - },  
262 - "additionalClassifications": [  
263 - {  
264 - "scheme": u"ДКПП",  
265 - "id": u"17.21.99-00.00",  
266 - "description": u"Роботи субпідрядні як частина виробництва гофрованих паперу й картону, паперової та картонної тари"  
267 - }  
268 - ],  
269 - "unit": {  
270 - "name": u"кілограм",  
271 - "name_ru": u"килограмм",  
272 - "name_en": "kilogram",  
273 - "code": u"KGM"  
274 - },  
275 - "quantity": fake.pyint()  
276 - },  
277 - {  
278 - "description": fake.catch_phrase(),  
279 - "deliveryDate": {  
280 - "endDate": (now + timedelta(days=5)).isoformat()  
281 - },  
282 - "deliveryLocation": {  
283 - "latitude": 49.3418,  
284 - "longitude": 39.1829  
285 - },  
286 - "deliveryAddress": {  
287 - "countryName": u"Україна",  
288 - "countryName_ru": u"Украина",  
289 - "countryName_en": "Ukraine",  
290 - "postalCode": fake.postalcode(),  
291 - "region": u"Луганська область",  
292 - "locality": u"м. Луганськ",  
293 - "streetAddress": u"Вул. Оборонна 28"  
294 - },  
295 - "classification": {  
296 - "scheme": u"CPV",  
297 - "id": u"44617100-9",  
298 - "description": u"Картонки",  
299 - "description_ru": u"Большие картонные коробки",  
300 - "description_en": u"Cartons"  
301 - },  
302 - "additionalClassifications": [  
303 - {  
304 - "scheme": u"ДКПП",  
305 - "id": u"17.22.12-40.00",  
306 - "description": u"Вата; вироби з вати, інші"  
307 - }  
308 - ],  
309 - "unit": {  
310 - "name": u"кілограм",  
311 - "name_ru": u"килограмм",  
312 - "name_en": "kilogram",  
313 - "code": u"KGM"  
314 - },  
315 - "quantity": fake.pyint()  
316 - },  
317 - {  
318 - "description": fake.catch_phrase(),  
319 - "deliveryDate": {  
320 - "endDate": (now + timedelta(days=5)).isoformat()  
321 - },  
322 - "deliveryLocation": {  
323 - "latitude": 49.8500,  
324 - "longitude": 24.0167  
325 - },  
326 - "deliveryAddress": {  
327 - "countryName": u"Україна",  
328 - "countryName_ru": u"Украина",  
329 - "countryName_en": "Ukraine",  
330 - "postalCode": fake.postalcode(),  
331 - "region": u"м. Київ",  
332 - "locality": u"м. Київ",  
333 - "streetAddress": fake.street_address()  
334 - },  
335 - "classification": {  
336 - "scheme": u"CPV",  
337 - "id": u"44617100-9",  
338 - "description": u"Картонки",  
339 - "description_ru": u"Большие картонные коробки",  
340 - "description_en": u"Cartons"  
341 - },  
342 - "additionalClassifications": [  
343 - {  
344 - "scheme": u"ДКПП",  
345 - "id": u"17.22.12-50.00",  
346 - "description": u"Одяг і речі до одягу з паперової маси, паперу, целюлозної вати чи полотна з целюлозного волокна (крім носових хусточок, наголовних уборів)"  
347 - }  
348 - ],  
349 - "unit": {  
350 - "name": u"кілограм",  
351 - "name_ru": u"килограмм",  
352 - "name_en": "kilogram",  
353 - "code": u"KGM"  
354 - },  
355 - "quantity": fake.pyint()  
356 - }  
357 - ]  
358 - }) 198 + for _ in range(4):
  199 + new_item = test_item_data()
  200 + t_data['items'].append(new_item)
359 return t_data 201 return t_data
360 202
361 203
362 def test_tender_data_multiple_lots(t_data): 204 def test_tender_data_multiple_lots(t_data):
363 - for i in range(3):  
364 - t_data['data']['items'][i]['relatedLot'] = "3c8f387879de4c38957402dbdb8b31af"  
365 - t_data['data']['items'][3]['relatedLot'] = "bcac8d2ceb5f4227b841a2211f5cb646" 205 + first_lot_id = "3c8f387879de4c38957402dbdb8b31af"
  206 + second_lot_id = "bcac8d2ceb5f4227b841a2211f5cb646"
  207 +
  208 + for item in t_data['data']['items'][:-1]:
  209 + item['relatedLot'] = first_lot_id
  210 + t_data['data']['items'][-1]['relatedLot'] = second_lot_id
  211 +
366 t_data['data']['lots'] = [ 212 t_data['data']['lots'] = [
367 { 213 {
368 - "id": "3c8f387879de4c38957402dbdb8b31af", 214 + "id": first_lot_id,
369 "title": "Lot #1: Kyiv stationery", 215 "title": "Lot #1: Kyiv stationery",
370 "description": "Items for Kyiv office", 216 "description": "Items for Kyiv office",
371 "value": {"currency": "UAH", "amount": 34000.0, "valueAddedTaxIncluded": "true"}, 217 "value": {"currency": "UAH", "amount": 34000.0, "valueAddedTaxIncluded": "true"},
372 "minimalStep": {"currency": "UAH", "amount": 30.0, "valueAddedTaxIncluded": "true"}, 218 "minimalStep": {"currency": "UAH", "amount": 30.0, "valueAddedTaxIncluded": "true"},
373 "status": "active" 219 "status": "active"
374 }, { 220 }, {
375 - "id": "bcac8d2ceb5f4227b841a2211f5cb646", 221 + "id": second_lot_id,
376 "title": "Lot #2: Lviv stationery", 222 "title": "Lot #2: Lviv stationery",
377 "description": "Items for Lviv office", 223 "description": "Items for Lviv office",
378 "value": {"currency": "UAH", "amount": 9000.0, "valueAddedTaxIncluded": "true"}, 224 "value": {"currency": "UAH", "amount": 9000.0, "valueAddedTaxIncluded": "true"},
@@ -436,8 +282,8 @@ def test_meat_tender_data(tender): @@ -436,8 +282,8 @@ def test_meat_tender_data(tender):
436 return tender 282 return tender
437 283
438 284
439 -def test_question_data():  
440 - return munchify({ 285 +def test_question_data(lot=False):
  286 + data = munchify({
441 "data": { 287 "data": {
442 "author": { 288 "author": {
443 "address": { 289 "address": {
@@ -464,6 +310,9 @@ def test_question_data(): @@ -464,6 +310,9 @@ def test_question_data():
464 "title": fake.sentence(nb_words=6, variable_nb_words=True) 310 "title": fake.sentence(nb_words=6, variable_nb_words=True)
465 } 311 }
466 }) 312 })
  313 + if lot:
  314 + data = test_lot_question_data(data)
  315 + return data
467 316
468 317
469 def test_question_answer_data(): 318 def test_question_answer_data():
@@ -474,7 +323,40 @@ def test_question_answer_data(): @@ -474,7 +323,40 @@ def test_question_answer_data():
474 }) 323 })
475 324
476 325
477 -def test_complaint_data(): 326 +def test_complaint_data(lot=False):
  327 + data = munchify({
  328 + "data": {
  329 + "author": {
  330 + "address": {
  331 + "countryName": u"Україна",
  332 + "countryName_ru": u"Украина",
  333 + "countryName_en": "Ukraine",
  334 + "locality": u"м. Вінниця",
  335 + "postalCode": "21100",
  336 + "region": u"Вінницька область",
  337 + "streetAddress": fake.street_address()
  338 + },
  339 + "contactPoint": {
  340 + "name": fake.name(),
  341 + "telephone": fake.phone_number()
  342 + },
  343 + "identifier": {
  344 + "scheme": u"UA-EDR",
  345 + "id": u"{:08d}".format(fake.pyint()),
  346 + "uri": fake.image_url(width=None, height=None)
  347 + },
  348 + "name": fake.company()
  349 + },
  350 + "description": fake.sentence(nb_words=10, variable_nb_words=True),
  351 + "title": fake.sentence(nb_words=6, variable_nb_words=True)
  352 + }
  353 + })
  354 + if lot:
  355 + data = test_lot_complaint_data(data)
  356 + return data
  357 +
  358 +
  359 +def test_claim_data():
478 return munchify({ 360 return munchify({
479 "data": { 361 "data": {
480 "author": { 362 "author": {
@@ -674,97 +556,57 @@ def test_bid_data(): @@ -674,97 +556,57 @@ def test_bid_data():
674 } 556 }
675 ], 557 ],
676 "value": { 558 "value": {
677 - "amount": 500 559 + "currency": "UAH",
  560 + "amount": 500,
  561 + "valueAddedTaxIncluded": "true"
678 } 562 }
679 } 563 }
680 }) 564 })
681 565
682 566
683 def test_bid_data_meat_tender(): 567 def test_bid_data_meat_tender():
684 - return munchify({  
685 - "data": {  
686 - "tenderers": [  
687 - {  
688 - "address": {  
689 - "countryName": "Україна",  
690 - "locality": "м. Вінниця",  
691 - "postalCode": "21100",  
692 - "region": "м. Вінниця",  
693 - "streetAddress": fake.street_address()  
694 - },  
695 - "contactPoint": {  
696 - "name": fake.name(),  
697 - "telephone": fake.phone_number()  
698 - },  
699 - "identifier": {  
700 - "scheme": u"UA-EDR",  
701 - "id": u"{:08d}".format(fake.pyint()),  
702 - },  
703 - "name": fake.company()  
704 - }  
705 - ],  
706 - "parameters": [  
707 - {  
708 - "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",  
709 - "value": fake.random_element(elements=(0.15, 0.1, 0.05, 0))  
710 - },  
711 - {  
712 - "code": "48cfd91612c04125ab406374d7cc8d93",  
713 - "value": fake.random_element(elements=(0.05, 0.01, 0))  
714 - }  
715 - ],  
716 - "value": {  
717 - "amount": 500 568 + bid = test_bid_data()
  569 + bid.data.update({
  570 + "parameters": [
  571 + {
  572 + "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",
  573 + "value": fake.random_element(elements=(0.15, 0.1, 0.05, 0))
  574 + },
  575 + {
  576 + "code": "48cfd91612c04125ab406374d7cc8d93",
  577 + "value": fake.random_element(elements=(0.05, 0.01, 0))
718 } 578 }
719 - } 579 + ]
720 }) 580 })
  581 + return bid
721 582
722 583
723 def test_lots_bid_data(): 584 def test_lots_bid_data():
724 - return munchify({  
725 - "data": {  
726 - "tenderers": [  
727 - {  
728 - "address": {  
729 - "countryName": "Україна",  
730 - "locality": "м. Вінниця",  
731 - "postalCode": "21100",  
732 - "region": "м. Вінниця",  
733 - "streetAddress": fake.street_address()  
734 - },  
735 - "contactPoint": {  
736 - "name": fake.name(),  
737 - "telephone": fake.phone_number()  
738 - },  
739 - "identifier": {  
740 - "scheme": u"UA-EDR",  
741 - "id": u"{:08d}".format(fake.pyint()),  
742 - },  
743 - "name": fake.company()  
744 - }  
745 - ],  
746 - "lotValues": [  
747 - {  
748 - "value": {  
749 - "currency": "UAH",  
750 - "amount": 1000 + fake.pyfloat(left_digits=3, right_digits=0, positive=True),  
751 - "valueAddedTaxIncluded": "true"  
752 - },  
753 - "relatedLot": "3c8f387879de4c38957402dbdb8b31af",  
754 - "date": "2015-11-01T12:43:12.482645+02:00" 585 + bid = test_bid_data()
  586 + del bid.data.value
  587 + bid.data.update({
  588 + "lotValues": [
  589 + {
  590 + "value": {
  591 + "currency": "UAH",
  592 + "amount": fake.random_int(max=1999),
  593 + "valueAddedTaxIncluded": "true"
755 }, 594 },
756 - {  
757 - "value": {  
758 - "currency": "UAH",  
759 - "amount": 1000 + fake.pyfloat(left_digits=3, right_digits=0, positive=True),  
760 - "valueAddedTaxIncluded": "true"  
761 - },  
762 - "relatedLot": "bcac8d2ceb5f4227b841a2211f5cb646",  
763 - "date": "2015-11-01T12:43:12.482645+02:00"  
764 - }  
765 - ]  
766 - } 595 + "relatedLot": "3c8f387879de4c38957402dbdb8b31af",
  596 + "date": "2015-11-01T12:43:12.482645+02:00"
  597 + },
  598 + {
  599 + "value": {
  600 + "currency": "UAH",
  601 + "amount": fake.random_int(max=1999),
  602 + "valueAddedTaxIncluded": "true"
  603 + },
  604 + "relatedLot": "bcac8d2ceb5f4227b841a2211f5cb646",
  605 + "date": "2015-11-01T12:43:12.482645+02:00"
  606 + }
  607 + ]
767 }) 608 })
  609 + return bid
768 610
769 611
770 def auction_bid(): 612 def auction_bid():
@@ -875,14 +717,6 @@ def test_invalid_features_data(): @@ -875,14 +717,6 @@ def test_invalid_features_data():
875 "title": "180 днів та більше" 717 "title": "180 днів та більше"
876 }, 718 },
877 { 719 {
878 - "value": 0.1,  
879 - "title": "90-179 днів",  
880 - },  
881 - {  
882 - "value": 0.05,  
883 - "title": "30-89 днів"  
884 - },  
885 - {  
886 "value": 0, 720 "value": 0,
887 "title": "Менше 30 днів" 721 "title": "Менше 30 днів"
888 } 722 }
@@ -900,10 +734,6 @@ def test_invalid_features_data(): @@ -900,10 +734,6 @@ def test_invalid_features_data():
900 "title": "Вищий" 734 "title": "Вищий"
901 }, 735 },
902 { 736 {
903 - "value": 0.01,  
904 - "title": "Перший",  
905 - },  
906 - {  
907 "value": 0, 737 "value": 0,
908 "title": "Другий" 738 "title": "Другий"
909 } 739 }
@@ -948,3 +778,38 @@ def test_lot_complaint_data(complaint, lot_id="3c8f387879de4c38957402dbdb8b31af" @@ -948,3 +778,38 @@ def test_lot_complaint_data(complaint, lot_id="3c8f387879de4c38957402dbdb8b31af"
948 lot_complaint = {"complaintOf": "lot", "relatedItem": lot_id} 778 lot_complaint = {"complaintOf": "lot", "relatedItem": lot_id}
949 lot_complaint.update(complaint.data) 779 lot_complaint.update(complaint.data)
950 return munchify({"data": lot_complaint}) 780 return munchify({"data": lot_complaint})
  781 +
  782 +
  783 +def test_tender_data_openua(intervals):
  784 + accelerator = intervals['accelerator']
  785 + # Since `accelerator` field is not really a list containing timings
  786 + # for a period called `acceleratorPeriod`, let's remove it :)
  787 + del intervals['accelerator']
  788 + # We should not provide any values for `enquiryPeriod` when creating
  789 + # an openUA or openEU procedure. That field should not be present at all.
  790 + # Therefore, we pass a nondefault list of periods to `test_tender_data()`.
  791 + t_data = test_tender_data(intervals, periods=('tender',))
  792 + t_data['procurementMethodType'] = 'aboveThresholdUA'
  793 + t_data['procurementMethodDetails'] = 'quick, ' \
  794 + 'accelerator={}'.format(accelerator)
  795 + return t_data
  796 +
  797 +def test_tender_data_openeu(intervals):
  798 + accelerator = intervals['accelerator']
  799 + # Since `accelerator` field is not really a list containing timings
  800 + # for a period called `acceleratorPeriod`, let's remove it :)
  801 + del intervals['accelerator']
  802 + # We should not provide any values for `enquiryPeriod` when creating
  803 + # an openUA or openEU procedure. That field should not be present at all.
  804 + # Therefore, we pass a nondefault list of periods to `test_tender_data()`.
  805 + t_data = test_tender_data(intervals, periods=('tender',))
  806 + t_data['procurementMethodType'] = 'aboveThresholdEU'
  807 + t_data['procurementMethodDetails'] = 'quick, ' \
  808 + 'accelerator={}'.format(accelerator)
  809 + t_data['title_en'] = "[TESTING]"
  810 + for item_number, item in enumerate(t_data['items']):
  811 + item['description_en'] = "Test item #{}".format(item_number)
  812 + t_data['procuringEntity']['contactPoint']['name_en'] = fake_en.name()
  813 + t_data['procuringEntity']['contactPoint']['availableLanguage'] = "en"
  814 + t_data['procuringEntity']['identifier']['legalName_en'] = "Institution \"Vinnytsia City Council primary and secondary general school № 10\""
  815 + return t_data
1 *** Settings *** 1 *** Settings ***
2 -Resource resource.robot  
3 Library op_robot_tests.tests_files.service_keywords 2 Library op_robot_tests.tests_files.service_keywords
4 Library String 3 Library String
5 Library Collections 4 Library Collections
@@ -7,13 +6,21 @@ Library Selenium2Library @@ -7,13 +6,21 @@ Library Selenium2Library
7 Library DateTime 6 Library DateTime
8 Library DebugLibrary 7 Library DebugLibrary
9 8
  9 +Documentation
  10 +... This resource file contains keywords that are used directly by
  11 +... test suites or by brokers' keyword libraries (also known as drivers).
10 12
11 *** Keywords *** 13 *** Keywords ***
12 -TestSuiteSetup 14 +Test Suite Setup
13 Set Selenium Implicit Wait 5 s 15 Set Selenium Implicit Wait 5 s
14 Set Selenium Timeout 10 s 16 Set Selenium Timeout 10 s
15 Завантажуємо дані про користувачів і майданчики 17 Завантажуємо дані про користувачів і майданчики
16 18
  19 +Test Suite Teardown
  20 + Close all browsers
  21 + ${artifact}= Create Dictionary tender_uaid=${TENDER['TENDER_UAID']} access_token=${USERS.users['${tender_owner}'].access_token}
  22 + log_object_data ${artifact} arctifact
  23 +
17 24
18 Set Suite Variable With Default Value 25 Set Suite Variable With Default Value
19 [Arguments] ${suite_var} ${def_value} 26 [Arguments] ${suite_var} ${def_value}
@@ -27,8 +34,8 @@ Set Suite Variable With Default Value @@ -27,8 +34,8 @@ Set Suite Variable With Default Value
27 34
28 ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml 35 ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml
29 ${BROKERS}= load_initial_data_from ${file_path} 36 ${BROKERS}= load_initial_data_from ${file_path}
30 - log ${BROKERS}  
31 - Set Global Variable ${BROKERS} 37 + Log ${BROKERS}
  38 + Set Suite Variable ${BROKERS}
32 39
33 ${file_path}= Get Variable Value ${USERS_FILE} users.yaml 40 ${file_path}= Get Variable Value ${USERS_FILE} users.yaml
34 ${USERS}= load_initial_data_from ${file_path} 41 ${USERS}= load_initial_data_from ${file_path}
@@ -39,19 +46,19 @@ Set Suite Variable With Default Value @@ -39,19 +46,19 @@ Set Suite Variable With Default Value
39 Set Suite Variable With Default Value provider Tender_User 46 Set Suite Variable With Default Value provider Tender_User
40 Set Suite Variable With Default Value provider1 Tender_User1 47 Set Suite Variable With Default Value provider1 Tender_User1
41 Set Suite Variable With Default Value viewer Tender_Viewer 48 Set Suite Variable With Default Value viewer Tender_Viewer
42 - ${active_users}= Create Dictionary tender_owner ${tender_owner} provider ${provider} provider1 ${provider1} viewer ${viewer} 49 + ${active_users}= Create Dictionary tender_owner=${tender_owner} provider=${provider} provider1=${provider1} viewer=${viewer}
43 50
44 - ${users_list}= Get Dictionary Items ${USERS.users}  
45 - :FOR ${username} ${user_data} IN @{users_list}  
46 - \ log ${active_users}  
47 - \ log ${username} 51 + ${users_list}= Get Dictionary Items ${USERS.users}
  52 + :FOR ${username} ${user_data} IN @{users_list}
  53 + \ Log ${active_users}
  54 + \ Log ${username}
48 \ ${munch_dict}= munch_dict data=${True} 55 \ ${munch_dict}= munch_dict data=${True}
49 \ Log Many ${munch_dict} 56 \ Log Many ${munch_dict}
50 - \ ${status}= Run Keyword And Return Status Dictionary Should Contain Value ${active_users} ${username} 57 + \ ${status}= Run Keyword And Return Status Dictionary Should Contain Value ${active_users} ${username}
51 \ ${keywords_file}= Get Broker Property By Username ${username} keywords_file 58 \ ${keywords_file}= Get Broker Property By Username ${username} keywords_file
52 - \ Run Keyword If '${status}' == 'True' Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file}  
53 - \ Run Keyword If '${status}' == 'True' Викликати для учасника ${username} Підготувати клієнт для користувача  
54 - \ Run Keyword If '${status}' == 'True' Set To Dictionary ${USERS.users['${username}']} tender_data ${munch_dict} 59 + \ Run Keyword If ${status} Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file}
  60 + \ Run Keyword If ${status} Викликати для учасника ${username} Підготувати клієнт для користувача
  61 + \ Run Keyword If ${status} Set To Dictionary ${USERS.users['${username}']} tender_data=${munch_dict}
55 62
56 63
57 Get Broker Property 64 Get Broker Property
@@ -77,25 +84,7 @@ Get Broker Property By Username @@ -77,25 +84,7 @@ Get Broker Property By Username
77 Run Keyword And Return Get Broker Property ${broker_name} ${property} 84 Run Keyword And Return Get Broker Property ${broker_name} ${property}
78 85
79 86
80 -Підготовка початкових даних  
81 - @{QUESTIONS}= Create list  
82 - ${question}= test question data  
83 - ${question_lot}= test_lot_question_data ${question}  
84 - Append to list ${QUESTIONS} ${question} ${question_lot}  
85 - Set Global Variable @{QUESTIONS}  
86 - @{ANSWERS}= Create list  
87 - ${answer}= test_question_answer_data  
88 - Append to list ${ANSWERS} ${answer}  
89 - Set Global Variable @{ANSWERS}  
90 - @{COMPLAINTS}= Create list  
91 - ${complaint}= test_complaint_data  
92 - ${complaint_lot}= test_lot_complaint_data ${complaint}  
93 - Append to list ${COMPLAINTS} ${complaint} ${complaint_lot}  
94 - Set Global Variable @{COMPLAINTS}  
95 - @{REPLIES}= Create list  
96 - ${reply}= test_complaint_reply_data  
97 - Append to list ${REPLIES} ${reply}  
98 - Set Global Variable @{REPLIES} 87 +Підготовка даних для створення тендера
99 ${custom_intervals}= Get Broker Property By Username ${tender_owner} intervals 88 ${custom_intervals}= Get Broker Property By Username ${tender_owner} intervals
100 ${default_intervals}= Get Broker Property Default intervals 89 ${default_intervals}= Get Broker Property Default intervals
101 ${period_intervals}= merge_dicts ${default_intervals} ${custom_intervals} 90 ${period_intervals}= merge_dicts ${default_intervals} ${custom_intervals}
@@ -107,6 +96,34 @@ Get Broker Property By Username @@ -107,6 +96,34 @@ Get Broker Property By Username
107 [return] ${tender_data} 96 [return] ${tender_data}
108 97
109 98
  99 +Підготовка даних для подання вимоги
  100 + ${claim}= test_claim_data
  101 + [Return] ${claim}
  102 +
  103 +
  104 +
  105 +Підготовка даних для подання скарги
  106 + [Arguments] ${lot}=${False}
  107 + ${complaint}= test_complaint_data ${lot}
  108 + [Return] ${complaint}
  109 +
  110 +
  111 +Підготовка даних для відповіді на скаргу
  112 + ${reply}= test_complaint_reply_data
  113 + [Return] ${reply}
  114 +
  115 +
  116 +Підготовка даних для запитання
  117 + [Arguments] ${lot}=${False}
  118 + ${question}= test_question_data ${lot}
  119 + [Return] ${question}
  120 +
  121 +
  122 +Підготовка даних для відповіді на запитання
  123 + ${answer}= test_question_answer_data
  124 + [Return] ${answer}
  125 +
  126 +
110 Підготувати дані про постачальника 127 Підготувати дані про постачальника
111 [Arguments] ${username} 128 [Arguments] ${username}
112 ${supplier_data}= test_supplier_data 129 ${supplier_data}= test_supplier_data
@@ -115,23 +132,60 @@ Get Broker Property By Username @@ -115,23 +132,60 @@ Get Broker Property By Username
115 [Return] ${supplier_data} 132 [Return] ${supplier_data}
116 133
117 134
  135 +Підготувати дані про скасування
  136 + [Arguments] ${username}
  137 + ${cancellation_reason}= create_fake_sentence
  138 + ${document}= create_fake_doc
  139 + ${new_description}= create_fake_sentence
  140 + ${cancellation_data}= Create Dictionary cancellation_reason=${cancellation_reason} document=${document} description=${new_description}
  141 + Set To Dictionary ${USERS.users['${username}']} cancellation_data ${cancellation_data}
  142 + [Return] ${cancellation_data}
  143 +
118 Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file} 144 Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file}
119 - ${bundled_st}= Run Keyword And Return Status Import Resource ${CURDIR}/brokers/${keywords_file}.robot  
120 - ${external_st}= Run Keyword And Return Status Import Resource ${CURDIR}/../../src/robot_tests.broker.${keywords_file}/${keywords_file}.robot 145 + ${bundled_st}= Run Keyword And Return Status Import Resource ${CURDIR}${/}brokers${/}${keywords_file}.robot
  146 + ${external_st}= Run Keyword And Return Status Import Resource ${CURDIR}${/}..${/}..${/}src${/}robot_tests.broker.${keywords_file}${/}${keywords_file}.robot
121 Run Keyword If ${bundled_st} == ${external_st} == ${False} Fail Resource file ${keywords_file}.robot not found 147 Run Keyword If ${bundled_st} == ${external_st} == ${False} Fail Resource file ${keywords_file}.robot not found
122 - Run Keyword If ${bundled_st} == ${external_st} == ${True} Fail Resource file ${keywords_file}.robot found in both brokers/ and src/ 148 + Run Keyword If ${bundled_st} == ${external_st} == ${True} Fail Resource file ${keywords_file}.robot found in both brokers${/} and src${/}
123 149
124 150
125 Дочекатись синхронізації з майданчиком 151 Дочекатись синхронізації з майданчиком
126 [Arguments] ${username} 152 [Arguments] ${username}
127 [Documentation] 153 [Documentation]
128 - ... Get ${wait_timeout} for specified user and wait  
129 - ... until that timeout runs out. 154 + ... Find out how much time has passed since the procurement was modified
  155 + ... and store the result in `delta`,
  156 + ... then get `timeout_on_wait` for ``username``,
  157 + ... then wait for `sleep` seconds, where:
  158 + ...
  159 + ... sleep = timeout_on_wait - delta
  160 + ...
  161 + ... Thus, when this keyword is executed several times in a row,
  162 + ... it will wait for as long as really needed.
  163 + ...
  164 + ... Example:
  165 + ...
  166 + ... The procurement is modified.
  167 + ... In 5 seconds, this keyword is called for `viewer`.
  168 + ... Immediately, this keyword is called for `provider`.
  169 + ... Timeout for `viewer` is 60.
  170 + ... Timeout for `provider` is 300.
  171 + ... First call (for `viewer`) will trigger `Sleep 55`.
  172 + ... Second call (for `provider`) will trigger `Sleep 235`.
  173 + ... As a result, the delay will end in 300 seconds
  174 + ... since last modification date.
  175 + ...
  176 + ... Another example (a variation of previous one):
  177 + ...
  178 + ... Timeout for `viewer` is 120.
  179 + ... Timeout for `provider` is 30.
  180 + ... First call will trigger `Sleep 115`.
  181 + ... Second call will trigger `Sleep 0`,
  182 + ... since we have already slept for 120 seconds
  183 + ... and there is no need to sleep any longer.
130 ${now}= Get Current TZdate 184 ${now}= Get Current TZdate
131 ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} 185 ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']}
132 ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait 186 ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait
133 - ${wait_timeout}= Subtract Time From Time ${timeout_on_wait} ${delta}  
134 - Run Keyword If ${wait_timeout}>0 Sleep ${wait_timeout} 187 + ${sleep}= Subtract Time From Time ${timeout_on_wait} ${delta}
  188 + Run Keyword If ${sleep} > 0 Sleep ${sleep}
135 189
136 190
137 Звірити поле тендера 191 Звірити поле тендера
@@ -151,9 +205,11 @@ Get Broker Property By Username @@ -151,9 +205,11 @@ Get Broker Property By Username
151 205
152 Порівняти об'єкти 206 Порівняти об'єкти
153 [Arguments] ${left} ${right} 207 [Arguments] ${left} ${right}
  208 + Log ${left}
  209 + Log ${right}
154 Should Not Be Equal ${left} ${None} 210 Should Not Be Equal ${left} ${None}
155 Should Not Be Equal ${right} ${None} 211 Should Not Be Equal ${right} ${None}
156 - Should Be Equal ${left} ${right} 212 + Should Be Equal ${left} ${right} msg=Objects are not equal
157 213
158 214
159 Звірити дату тендера 215 Звірити дату тендера
@@ -165,36 +221,43 @@ Get Broker Property By Username @@ -165,36 +221,43 @@ Get Broker Property By Username
165 Звірити дату тендера із значенням 221 Звірити дату тендера із значенням
166 [Arguments] ${username} ${left} ${field} 222 [Arguments] ${username} ${left} ${field}
167 ${right}= Викликати для учасника ${username} Отримати інформацію із тендера ${field} 223 ${right}= Викликати для учасника ${username} Отримати інформацію із тендера ${field}
168 - Звірити дату ${left} ${right} 224 + Порівняти дати ${left} ${right}
169 Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${left} 225 Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${left}
170 226
171 227
172 -Звірити дату  
173 - [Arguments] ${left} ${right} 228 +Порівняти дати
  229 + [Documentation]
  230 + ... Compare dates with specified ``accuracy`` (in seconds).
  231 + ... Default is `60`.
  232 + ...
  233 + ... The keyword will fail if the difference between
  234 + ... ``left`` and ``right`` dates is more than ``accuracy``,
  235 + ... otherwise it will pass.
  236 + [Arguments] ${left} ${right} ${accuracy}=60
  237 + Log ${left}
  238 + Log ${right}
174 Should Not Be Equal ${left} ${None} 239 Should Not Be Equal ${left} ${None}
175 Should Not Be Equal ${right} ${None} 240 Should Not Be Equal ${right} ${None}
176 - ${status}= compare_date ${left} ${right}  
177 - Should Be True ${status} 241 + ${status}= compare_date ${left} ${right} ${accuracy}
  242 + Should Be True ${status} msg=Dates are not equal: ${left} != ${right}
178 243
179 244
180 Звірити поля предметів закупівлі багатопредметного тендера 245 Звірити поля предметів закупівлі багатопредметного тендера
181 [Arguments] ${username} ${tender_data} ${field} 246 [Arguments] ${username} ${tender_data} ${field}
182 - Дочекатись синхронізації з майданчиком ${username}  
183 @{items}= Get_From_Object ${tender_data.data} items 247 @{items}= Get_From_Object ${tender_data.data} items
184 - ${len_of_items}= Get Length ${items}  
185 - :FOR ${index} IN RANGE ${len_of_items}  
186 - \ Log ${index}  
187 - \ Звірити поле тендера ${viewer} ${tender_data} items[${index}].${field} 248 + ${len_of_items}= Get Length ${items}
  249 + :FOR ${index} IN RANGE ${len_of_items}
  250 + \ Log ${index}
  251 + \ Звірити поле тендера ${viewer} ${tender_data} items[${index}].${field}
188 252
189 253
190 Звірити дату предметів закупівлі багатопредметного тендера 254 Звірити дату предметів закупівлі багатопредметного тендера
191 [Arguments] ${username} ${tender_data} ${field} 255 [Arguments] ${username} ${tender_data} ${field}
192 - Дочекатись синхронізації з майданчиком ${username}  
193 @{items}= Get_From_Object ${tender_data.data} items 256 @{items}= Get_From_Object ${tender_data.data} items
194 - ${len_of_items}= Get Length ${items}  
195 - :FOR ${index} IN RANGE ${len_of_items}  
196 - \ Log ${index}  
197 - \ Звірити дату тендера ${viewer} ${tender_data} items[${index}].${field} 257 + ${len_of_items}= Get Length ${items}
  258 + :FOR ${index} IN RANGE ${len_of_items}
  259 + \ Log ${index}
  260 + \ Звірити дату тендера ${viewer} ${tender_data} items[${index}].${field}
198 261
199 262
200 Викликати для учасника 263 Викликати для учасника
@@ -235,29 +298,61 @@ SwitchState @@ -235,29 +298,61 @@ SwitchState
235 298
236 Дочекатись дати 299 Дочекатись дати
237 [Arguments] ${date} 300 [Arguments] ${date}
238 - ${wait_timeout}= wait_to_date ${date}  
239 - Run Keyword If ${wait_timeout}>0 Sleep ${wait_timeout} 301 + ${sleep}= wait_to_date ${date}
  302 + Run Keyword If ${sleep} > 0 Sleep ${sleep}
240 303
241 304
242 Дочекатись дати початку прийому пропозицій 305 Дочекатись дати початку прийому пропозицій
243 [Arguments] ${username} 306 [Arguments] ${username}
244 - log ${username}  
245 - Дочекатись дати ${USERS.users['${username}'].tender_data.data.tenderPeriod.startDate} 307 + Log ${username}
  308 + # This tries to get the date from current user's procurement data cache.
  309 + # On failure, it reads from tender_owner's cached initial_data.
  310 + # XXX: This is a dirty hack!
  311 + # HACK: It was left here only for backward compatibiliy.
  312 + # HACK: Before caching was implemented, this keyword used to look into
  313 + # HACK: tender_owner's initial_data.
  314 + # HACK: This should be cleaned up as soon as each broker implements reading
  315 + # HACK: of the needed dates from tender's page.
  316 + ${status} ${date}= Run Keyword And Ignore Error
  317 + ... Set Variable
  318 + ... ${USERS.users['${username}'].tender_data.data.tenderPeriod.startDate}
  319 + # By default if condition is not satisfied, variable is set to None.
  320 + # The third argument sets the variable to itself instead of None.
  321 + ${date}= Set Variable If
  322 + ... '${status}' == 'FAIL'
  323 + ... ${USERS.users['${tender_owner}'].initial_data.data.tenderPeriod.startDate}
  324 + ... ${date}
  325 + Дочекатись дати ${date}
246 326
247 327
248 Дочекатись дати закінчення прийому пропозицій 328 Дочекатись дати закінчення прийому пропозицій
249 [Arguments] ${username} 329 [Arguments] ${username}
250 - log ${username}  
251 - Дочекатись дати ${USERS.users['${username}'].tender_data.data.tenderPeriod.endDate} 330 + Log ${username}
  331 + # XXX: HACK: Same as above
  332 + ${status} ${date}= Run Keyword And Ignore Error
  333 + ... Set Variable
  334 + ... ${USERS.users['${username}'].tender_data.data.tenderPeriod.endDate}
  335 + ${date}= Set Variable If
  336 + ... '${status}' == 'FAIL'
  337 + ... ${USERS.users['${tender_owner}'].initial_data.data.tenderPeriod.endDate}
  338 + ... ${date}
  339 + Дочекатись дати ${date}
252 340
253 341
254 Дочекатись дати початку аукціону 342 Дочекатись дати початку аукціону
255 [Arguments] ${username} 343 [Arguments] ${username}
256 - log ${username} 344 + Log ${username}
  345 + # Can't use that dirty hack here since we don't know
  346 + # the date of auction when creating the procurement :)
257 Дочекатись дати ${USERS.users['${username}'].tender_data.data.auctionPeriod.startDate} 347 Дочекатись дати ${USERS.users['${username}'].tender_data.data.auctionPeriod.startDate}
258 348
259 349
260 Дочекатись дати закінчення аукціону 350 Дочекатись дати закінчення аукціону
261 [Arguments] ${username} 351 [Arguments] ${username}
262 - log ${username} 352 + Log ${username}
263 Дочекатись дати ${USERS.users['${username}'].tender_data.data.auctionPeriod.endDate} 353 Дочекатись дати ${USERS.users['${username}'].tender_data.data.auctionPeriod.endDate}
  354 +
  355 +Дочекатись дати закінчення періоду подання скарг
  356 + [Arguments] ${username}
  357 + log ${username}
  358 + Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate}
@@ -3,7 +3,7 @@ Library op_robot_tests.tests_files.service_keywords @@ -3,7 +3,7 @@ Library op_robot_tests.tests_files.service_keywords
3 Library Collections 3 Library Collections
4 Resource keywords.robot 4 Resource keywords.robot
5 Resource resource.robot 5 Resource resource.robot
6 -Suite Setup TestSuiteSetup 6 +Suite Setup Test Suite Setup
7 Suite Teardown Close all browsers 7 Suite Teardown Close all browsers
8 8
9 9
@@ -22,7 +22,7 @@ ${broker} Quinta @@ -22,7 +22,7 @@ ${broker} Quinta
22 ... tender_owner 22 ... tender_owner
23 ... ${USERS.users['${tender_owner}'].broker} 23 ... ${USERS.users['${tender_owner}'].broker}
24 ... minimal 24 ... minimal
25 - ${tender_data}= Підготовка початкових даних 25 + ${tender_data}= Підготовка даних для створення тендера
26 ${TENDER_UAID}= Викликати для учасника ${tender_owner} 26 ${TENDER_UAID}= Викликати для учасника ${tender_owner}
27 ... Створити тендер 27 ... Створити тендер
28 ... ${tender_data} 28 ... ${tender_data}
@@ -34,59 +34,23 @@ ${broker} Quinta @@ -34,59 +34,23 @@ ${broker} Quinta
34 Log ${TENDER} 34 Log ${TENDER}
35 35
36 36
37 -Можливість сформувати запит на скасування прямої закупівлі  
38 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість сформувати запит на скасування прямої закупівлі 37 +Можливість скасувати пряму закупівлю
  38 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість скасувати пряму закупівлю
39 ... tender_owner 39 ... tender_owner
40 ... ${USERS.users['${tender_owner}'].broker} 40 ... ${USERS.users['${tender_owner}'].broker}
41 - ... critical level 2 41 + ... level2
42 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} 42 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
43 - ${CANCEL_NUM}= Set variable 0  
44 - Set suite variable ${CANCEL_NUM}  
45 - ${cancellation_reason}= Set variable prosto tak :) 43 + ${cancellation_data}= Підготувати дані про скасування ${tender_owner}
46 Викликати для учасника ${tender_owner} 44 Викликати для учасника ${tender_owner}
47 - ... Додати запит на скасування 45 + ... Скасувати закупівлю
48 ... ${TENDER['TENDER_UAID']} 46 ... ${TENDER['TENDER_UAID']}
49 - ... ${cancellation_reason}  
50 - Викликати для учасника ${tender_owner}  
51 - ... Завантажити документацію до запиту на скасування  
52 - ... ${TENDER['TENDER_UAID']}  
53 - ... ${CANCEL_NUM}  
54 -  
55 -  
56 -Можливість змінити опис документа в скасуванні прямої закупівлі  
57 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість змінити опис документа в скасуванні прямої закупівлі  
58 - ... tender_owner  
59 - ... ${USERS.users['${tender_owner}'].broker}  
60 - ${FIRST_DOC}= Set variable 0  
61 - Set Suite Variable ${FIRST_DOC}  
62 - ${field}= Set variable description  
63 - ${value}= Set variable test description  
64 - Викликати для учасника ${tender_owner}  
65 - ... Змінити опис документа в скасуванні  
66 - ... ${TENDER['TENDER_UAID']} ${CANCEL_NUM} ${FIRST_DOC}  
67 - ... ${field}  
68 - ... ${value}  
69 - Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_document_description ${value}  
70 -  
71 -  
72 -Можливість завантажити нову версію документа до запиту на скасування прямої закупівлі  
73 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити нову версію документа до запиту на скасування прямої закупівлі  
74 - ... tender_owner  
75 - ... ${USERS.users['${tender_owner}'].broker}  
76 - Викликати для учасника ${tender_owner}  
77 - ... Завантажити нову версію документа до запиту на скасування  
78 - ... ${TENDER['TENDER_UAID']} ${CANCEL_NUM} ${FIRST_DOC}  
79 -  
80 -  
81 -Можливість активувати скасування прямої закупівлі  
82 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість активувати скасування прямої закупівлі  
83 - ... tender_owner  
84 - ... ${USERS.users['${tender_owner}'].broker}  
85 - ... critical level 2  
86 - Викликати для учасника ${tender_owner}  
87 - ... Підтвердити скасування закупівлі  
88 - ... ${TENDER['TENDER_UAID']}  
89 - ... ${CANCEL_NUM} 47 + ... ${cancellation_data['cancellation_reason']}
  48 + ... ${cancellation_data['document']}
  49 + ... ${cancellation_data['description']}
  50 + ${CANCEL_NUM}= Set variable 0
  51 + Set suite variable ${CANCEL_NUM}
  52 + ${DOC_NUM}= Set variable 0
  53 + Set suite variable ${DOC_NUM}
90 54
91 55
92 Відображення активного статусу скасування прямої закупівлі 56 Відображення активного статусу скасування прямої закупівлі
@@ -104,7 +68,7 @@ ${broker} Quinta @@ -104,7 +68,7 @@ ${broker} Quinta
104 ... viewer 68 ... viewer
105 ... ${USERS.users['${viewer}'].broker} 69 ... ${USERS.users['${viewer}'].broker}
106 Звірити поле тендера із значенням ${viewer} 70 Звірити поле тендера із значенням ${viewer}
107 - ... ${USERS.users['${tender_owner}']['cancellation_reason']['data']['reason']} 71 + ... ${USERS.users['${tender_owner}']['cancellation_data']['cancellation_reason']}
108 ... cancellations[${CANCEL_NUM}].reason 72 ... cancellations[${CANCEL_NUM}].reason
109 73
110 74
@@ -113,27 +77,17 @@ ${broker} Quinta @@ -113,27 +77,17 @@ ${broker} Quinta
113 ... viewer 77 ... viewer
114 ... ${USERS.users['${viewer}'].broker} 78 ... ${USERS.users['${viewer}'].broker}
115 Звірити поле тендера із значенням ${viewer} 79 Звірити поле тендера із значенням ${viewer}
116 - ... ${USERS.users['${tender_owner}']['cancellation_document_description']}  
117 - ... cancellations[${CANCEL_NUM}].documents[${FIRST_DOC}].description 80 + ... ${USERS.users['${tender_owner}']['cancellation_data']['description']}
  81 + ... cancellations[${CANCEL_NUM}].documents[${DOC_NUM}].description
118 82
119 83
120 -Відображення заголовку першого документа скасування прямої закупівлі  
121 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення заголовку першого документа скасування прямої закупівлі 84 +Відображення заголовку документа скасування прямої закупівлі
  85 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення заголовку документа скасування прямої закупівлі
122 ... viewer 86 ... viewer
123 ... ${USERS.users['${viewer}'].broker} 87 ... ${USERS.users['${viewer}'].broker}
124 Звірити поле тендера із значенням ${viewer} 88 Звірити поле тендера із значенням ${viewer}
125 - ... ${USERS.users['${tender_owner}']['first_cancel_doc']}  
126 - ... cancellations[${CANCEL_NUM}].documents[${FIRST_DOC}].title  
127 -  
128 -  
129 -Відображення заголовку другого документа скасування прямої закупівлі  
130 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення заголовку другого документа скасування прямої закупівлі  
131 - ... viewer  
132 - ... ${USERS.users['${viewer}'].broker}  
133 - ${second_doc_num}= Set variable 1  
134 - Звірити поле тендера із значенням ${viewer}  
135 - ... ${USERS.users['${tender_owner}']['second_cancel_doc']}  
136 - ... cancellations[${CANCEL_NUM}].documents[${second_doc_num}].title 89 + ... ${USERS.users['${tender_owner}']['cancellation_data']['document']}
  90 + ... cancellations[${CANCEL_NUM}].documents[${DOC_NUM}].title
137 91
138 ############################################################################################## 92 ##############################################################################################
139 # MAIN 93 # MAIN
@@ -144,7 +98,7 @@ ${broker} Quinta @@ -144,7 +98,7 @@ ${broker} Quinta
144 ... tender_owner 98 ... tender_owner
145 ... ${USERS.users['${tender_owner}'].broker} 99 ... ${USERS.users['${tender_owner}'].broker}
146 ... minimal 100 ... minimal
147 - ${tender_data}= Підготовка початкових даних 101 + ${tender_data}= Підготовка даних для створення тендера
148 ${TENDER_UAID}= Викликати для учасника ${tender_owner} 102 ${TENDER_UAID}= Викликати для учасника ${tender_owner}
149 ... Створити тендер 103 ... Створити тендер
150 ... ${tender_data} 104 ... ${tender_data}
@@ -197,13 +151,11 @@ ${broker} Quinta @@ -197,13 +151,11 @@ ${broker} Quinta
197 ... minimal 151 ... minimal
198 ${SUPP_NUM}= Set variable 0 152 ${SUPP_NUM}= Set variable 0
199 Set Suite Variable ${SUPP_NUM} 153 Set Suite Variable ${SUPP_NUM}
  154 + ${supplier_data}= Підготувати дані про постачальника ${tender_owner}
200 Викликати для учасника ${tender_owner} 155 Викликати для учасника ${tender_owner}
201 - ... Додати постачальника 156 + ... Додати і підтвердити постачальника
202 ... ${TENDER['TENDER_UAID']} 157 ... ${TENDER['TENDER_UAID']}
203 - Викликати для учасника ${tender_owner}  
204 - ... Підтвердити постачальника  
205 - ... ${TENDER['TENDER_UAID']}  
206 - ... ${SUPP_NUM} 158 + ... ${supplier_data}
207 159
208 ############################################################################################## 160 ##############################################################################################
209 # MAIN DATA 161 # MAIN DATA
@@ -219,33 +171,6 @@ ${broker} Quinta @@ -219,33 +171,6 @@ ${broker} Quinta
219 ... title 171 ... title
220 172
221 173
222 -Відображення власника прямої закупівлі  
223 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення власника прямої закупівлі  
224 - ... viewer  
225 - ... ${USERS.users['${viewer}'].broker}  
226 - Звірити поле тендера ${viewer}  
227 - ... ${USERS.users['${tender_owner}'].initial_data}  
228 - ... owner  
229 -  
230 -  
231 -Відображення методу прямої закупівлі  
232 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення методу прямої закупівлі  
233 - ... viewer  
234 - ... ${USERS.users['${viewer}'].broker}  
235 - Звірити поле тендера ${viewer}  
236 - ... ${USERS.users['${tender_owner}'].initial_data}  
237 - ... procurementMethod  
238 -  
239 -  
240 -Відображення типу методу прямої закупівлі  
241 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення типу методу прямої закупівлі  
242 - ... viewer  
243 - ... ${USERS.users['${viewer}'].broker}  
244 - Звірити поле тендера ${viewer}  
245 - ... ${USERS.users['${tender_owner}'].initial_data}  
246 - ... procurementMethodType  
247 -  
248 -  
249 Відображення ідентифікатора прямої закупівлі 174 Відображення ідентифікатора прямої закупівлі
250 [Tags] ${USERS.users['${viewer}'].broker}: Відображення ідентифікатора прямої закупівлі 175 [Tags] ${USERS.users['${viewer}'].broker}: Відображення ідентифікатора прямої закупівлі
251 ... viewer 176 ... viewer
@@ -297,8 +222,8 @@ ${broker} Quinta @@ -297,8 +222,8 @@ ${broker} Quinta
297 ... procuringEntity.address.countryName 222 ... procuringEntity.address.countryName
298 223
299 224
300 -Відображення міста замовника прямої закупівлі  
301 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення міста замовника прямої закупівлі 225 +Відображення населеного пункту замовника прямої закупівлі
  226 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення населеного пункту замовника прямої закупівлі
302 ... viewer 227 ... viewer
303 ... ${USERS.users['${viewer}'].broker} 228 ... ${USERS.users['${viewer}'].broker}
304 Звірити поле тендера ${viewer} 229 Звірити поле тендера ${viewer}
@@ -370,7 +295,7 @@ ${broker} Quinta @@ -370,7 +295,7 @@ ${broker} Quinta
370 295
371 296
372 Відображення схеми ідентифікації замовника прямої закупівлі 297 Відображення схеми ідентифікації замовника прямої закупівлі
373 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення схеми замовника прямої закупівлі 298 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення схеми ідентифікації замовника прямої закупівлі
374 ... viewer 299 ... viewer
375 ... ${USERS.users['${viewer}'].broker} 300 ... ${USERS.users['${viewer}'].broker}
376 Звірити поле тендера ${viewer} 301 Звірити поле тендера ${viewer}
@@ -574,8 +499,8 @@ ${broker} Quinta @@ -574,8 +499,8 @@ ${broker} Quinta
574 ... items[${ITEMS_NUM}].deliveryAddress.region 499 ... items[${ITEMS_NUM}].deliveryAddress.region
575 500
576 501
577 -Відображення міста адреси доставки номенклатури прямої закупівлі  
578 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення locality адреси доставки номенклатури прямої закупівлі 502 +Відображення населеного пункту адреси доставки номенклатури прямої закупівлі
  503 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення населеного пункту адреси доставки номенклатури прямої закупівлі
579 ... viewer 504 ... viewer
580 ... ${USERS.users['${viewer}'].broker} 505 ... ${USERS.users['${viewer}'].broker}
581 Звірити поле тендера ${viewer} 506 Звірити поле тендера ${viewer}
@@ -692,7 +617,7 @@ ${broker} Quinta @@ -692,7 +617,7 @@ ${broker} Quinta
692 617
693 618
694 Відображення схеми ідентифікації постачальника прямої закупівлі 619 Відображення схеми ідентифікації постачальника прямої закупівлі
695 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення контактного імейлу постачальника прямої закупівлі 620 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення схеми ідентифікації постачальника прямої закупівлі
696 ... viewer 621 ... viewer
697 ... ${USERS.users['${viewer}'].broker} 622 ... ${USERS.users['${viewer}'].broker}
698 Звірити поле тендера із значенням ${viewer} 623 Звірити поле тендера із значенням ${viewer}
@@ -6,8 +6,8 @@ Library Selenium2Library @@ -6,8 +6,8 @@ Library Selenium2Library
6 Library DebugLibrary 6 Library DebugLibrary
7 Resource keywords.robot 7 Resource keywords.robot
8 Resource resource.robot 8 Resource resource.robot
9 -Suite Setup TestSuiteSetup  
10 -Suite Teardown Close all browsers 9 +Suite Setup Test Suite Setup
  10 +Suite Teardown Test Suite Teardown
11 11
12 *** Variables *** 12 *** Variables ***
13 ${mode} single 13 ${mode} single
@@ -17,9 +17,12 @@ ${broker} Quinta @@ -17,9 +17,12 @@ ${broker} Quinta
17 17
18 *** Test Cases *** 18 *** Test Cases ***
19 Можливість оголосити однопредметний тендер з неціновим показником 19 Можливість оголосити однопредметний тендер з неціновим показником
20 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 20 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер з неціновим показником
  21 + ... tender_owner
  22 + ... ${USERS.users['${tender_owner}'].broker}
  23 + ... minimal
21 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), 24 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
22 - ${base_tender_data}= Підготовка початкових даних 25 + ${base_tender_data}= Підготовка даних для створення тендера
23 ${tender_data}= test_meat_tender_data ${base_tender_data} 26 ${tender_data}= test_meat_tender_data ${base_tender_data}
24 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 27 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
25 ${LAST_MODIFICATION_DATE}= Get Current TZdate 28 ${LAST_MODIFICATION_DATE}= Get Current TZdate
@@ -28,18 +31,25 @@ ${broker} Quinta @@ -28,18 +31,25 @@ ${broker} Quinta
28 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} 31 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
29 Log ${TENDER} 32 Log ${TENDER}
30 33
  34 +
31 Можливість знайти однопредметний тендер по ідентифікатору 35 Можливість знайти однопредметний тендер по ідентифікатору
32 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору 36 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
33 - ... viewer  
34 - ... ${USERS.users['${viewer}'].broker} 37 + ... viewer tender_owner provider provider1
  38 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  39 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
35 ... minimal 40 ... minimal
36 - Дочекатись синхронізації з майданчиком ${viewer}  
37 - ${usernames}= Create List ${viewer} ${tender_owner} ${provider} ${provider1}  
38 - :FOR ${username} IN @{usernames} 41 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  42 + \ Дочекатись синхронізації з майданчиком ${username}
39 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 43 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
40 44
  45 +
41 Неможливість перевищити ліміт для нецінових критеріїв 46 Неможливість перевищити ліміт для нецінових критеріїв
  47 + [Documentation]
  48 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
42 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 49 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  50 + ... tender_owner
  51 + ... ${USERS.users['${tender_owner}'].broker}
  52 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
43 ${invalid_features}= test_invalid_features_data 53 ${invalid_features}= test_invalid_features_data
44 ${fail}= Викликати для учасника ${tender_owner} Внести зміни в тендер shouldfail ${TENDER['TENDER_UAID']} features ${invalid_features} 54 ${fail}= Викликати для учасника ${tender_owner} Внести зміни в тендер shouldfail ${TENDER['TENDER_UAID']} features ${invalid_features}
45 Log ${fail} 55 Log ${fail}
@@ -48,58 +58,76 @@ ${broker} Quinta @@ -48,58 +58,76 @@ ${broker} Quinta
48 #Подання пропозицій 58 #Подання пропозицій
49 59
50 Відображення початку періоду прийому пропозицій оголошеного тендера 60 Відображення початку періоду прийому пропозицій оголошеного тендера
51 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
52 - ... viewer  
53 - ... ${USERS.users['${viewer}'].broker} 61 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
  62 + ... viewer provider provider1
  63 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker}
  64 + ... ${USERS.users['${provider1}'].broker}
54 ... minimal 65 ... minimal
55 - ${usernames}= Create List ${viewer} ${provider} ${provider1}  
56 - :FOR ${username} IN @{usernames} 66 + :FOR ${username} IN ${viewer} ${provider} ${provider1}
  67 + \ Дочекатись синхронізації з майданчиком ${username}
57 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate 68 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate
58 69
  70 +
59 Неможливість подати цінову пропозицію без нецінового показника 71 Неможливість подати цінову пропозицію без нецінового показника
  72 + [Documentation]
  73 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
60 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 74 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  75 + ... provider
  76 + ... ${USERS.users['${provider}'].broker}
  77 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
61 Дочекатись дати початку прийому пропозицій ${provider} 78 Дочекатись дати початку прийому пропозицій ${provider}
62 sleep 90 79 sleep 90
63 ${bid}= test bid data 80 ${bid}= test bid data
64 Log ${bid} 81 Log ${bid}
65 - ${biddingresponse0}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}  
66 - log ${biddingresponse0} 82 + ${failbid}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}
  83 + log ${failbid}
67 84
68 -Подати цінову пропозицію з неціновим показником 85 +
  86 +Можливість подати цінову пропозицію з неціновим показником
69 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 87 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  88 + ... provider
  89 + ... ${USERS.users['${provider}'].broker}
70 ${bid}= test bid data meat tender 90 ${bid}= test bid data meat tender
71 Log ${bid} 91 Log ${bid}
  92 + ${bidresponses}= Create Dictionary
  93 + Set To Dictionary ${bidresponses} bid ${bid}
  94 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
72 ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} 95 ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
73 - ${biddingresponse0}= Create Dictionary  
74 - Set To Dictionary ${biddingresponse0} resp ${resp}  
75 - Set To Dictionary ${USERS.users['${provider}']} biddingresponse0 ${biddingresponse0} 96 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
76 log ${resp} 97 log ${resp}
77 98
  99 +
78 Можливість змінити неціновий показник повторної цінової пропозиції до 0 100 Можливість змінити неціновий показник повторної цінової пропозиції до 0
79 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 101 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
80 - Set To Dictionary ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]} value 0  
81 - Log ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]}  
82 - ${fixbidparamsto0resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].biddingresponse0['resp']}  
83 - Set To Dictionary ${USERS.users['${provider}'].biddingresponse0} fixbidparamsto0resp ${fixbidparamsto0resp} 102 + ... provider
  103 + ... ${USERS.users['${provider}'].broker}
  104 + ${fixbidparamsto0resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} parameters.0.value 0
  105 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidparamsto0resp ${fixbidparamsto0resp}
84 log ${fixbidparamsto0resp} 106 log ${fixbidparamsto0resp}
85 107
  108 +
86 Можливість змінити неціновий показник повторної цінової пропозиції до 0.15 109 Можливість змінити неціновий показник повторної цінової пропозиції до 0.15
87 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 110 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
88 - Set To Dictionary ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]} value 0.15  
89 - Log ${USERS.users['${provider}'].biddingresponse0['resp'].data.parameters[0]}  
90 - ${fixbidparamsto015resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].biddingresponse0['resp']}  
91 - Set To Dictionary ${USERS.users['${provider}'].biddingresponse0} fixbidparamsto015resp ${fixbidparamsto015resp} 111 + ... provider
  112 + ... ${USERS.users['${provider}'].broker}
  113 + ${fixbidparamsto015resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} parameters.0.value 0.15
  114 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidparamsto015resp ${fixbidparamsto015resp}
92 log ${fixbidparamsto015resp} 115 log ${fixbidparamsto015resp}
93 116
94 -Подати цінову пропозицію з неціновим показником другим учасником 117 +
  118 +Можливість подати цінову пропозицію з неціновим показником другим учасником
95 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію 119 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  120 + ... provider1
  121 + ... ${USERS.users['${provider1}'].broker}
  122 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
96 Дочекатись дати початку прийому пропозицій ${provider1} 123 Дочекатись дати початку прийому пропозицій ${provider1}
97 ${bid}= test bid data meat tender 124 ${bid}= test bid data meat tender
98 Log ${bid} 125 Log ${bid}
99 ${bidresponses}= Create Dictionary 126 ${bidresponses}= Create Dictionary
100 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
101 - Set To Dictionary ${bidresponses} resp ${resp} 127 + Set To Dictionary ${bidresponses} bid ${bid}
102 Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses} 128 Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  129 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  130 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
103 log ${resp} 131 log ${resp}
104 log ${USERS.users['${provider1}'].bidresponses} 132 log ${USERS.users['${provider1}'].bidresponses}
105 133
@@ -111,15 +139,23 @@ ${broker} Quinta @@ -111,15 +139,23 @@ ${broker} Quinta
111 ... viewer 139 ... viewer
112 ... ${USERS.users['${viewer}'].broker} 140 ... ${USERS.users['${viewer}'].broker}
113 ... minimal 141 ... minimal
  142 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
114 Викликати для учасника ${viewer} Отримати інформацію із тендера auctionPeriod.startDate 143 Викликати для учасника ${viewer} Отримати інформацію із тендера auctionPeriod.startDate
115 144
116 145
117 Очікування аукціону 146 Очікування аукціону
  147 + [Tags] ${USERS.users['${viewer}'].broker}: Очікування аукціону
  148 + ... viewer
  149 + ... ${USERS.users['${viewer}'].broker}
118 Дочекатись дати початку аукціону ${viewer} 150 Дочекатись дати початку аукціону ${viewer}
119 sleep 1500 151 sleep 1500
120 152
121 -Завершення аукціону  
122 - Дочекатись синхронізації з майданчиком ${tender_owner} 153 +
  154 +Можливість отримати результати аукціону
  155 + [Tags] ${USERS.users['${tender_owner}'].broker}: Результати аукціону
  156 + ... tender_owner
  157 + ... ${USERS.users['${tender_owner}'].broker}
  158 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
123 ${tender_data}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 159 ${tender_data}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
124 ${result}= chef ${tender_data.data.bids} ${tender_data.data.features} 160 ${result}= chef ${tender_data.data.bids} ${tender_data.data.features}
125 Log Many ${result[0]} ${tender_data.data.awards[0]} 161 Log Many ${result[0]} ${tender_data.data.awards[0]}
@@ -6,8 +6,8 @@ Library Selenium2Library @@ -6,8 +6,8 @@ Library Selenium2Library
6 Library DebugLibrary 6 Library DebugLibrary
7 Resource keywords.robot 7 Resource keywords.robot
8 Resource resource.robot 8 Resource resource.robot
9 -Suite Setup TestSuiteSetup  
10 -Suite Teardown Close all browsers 9 +Suite Setup Test Suite Setup
  10 +Suite Teardown Test Suite Teardown
11 11
12 *** Variables *** 12 *** Variables ***
13 ${mode} multi 13 ${mode} multi
@@ -18,7 +18,10 @@ ${broker} Quinta @@ -18,7 +18,10 @@ ${broker} Quinta
18 *** Test Cases *** 18 *** Test Cases ***
19 Можливість оголосити багатопредметний тендер 19 Можливість оголосити багатопредметний тендер
20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
21 - ${tender_data}= Підготовка початкових даних 21 + ... tender_owner
  22 + ... ${USERS.users['${tender_owner}'].broker}
  23 + ... minimal
  24 + ${tender_data}= Підготовка даних для створення тендера
22 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 25 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
23 ${LAST_MODIFICATION_DATE}= Get Current TZdate 26 ${LAST_MODIFICATION_DATE}= Get Current TZdate
24 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data} 27 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
@@ -26,93 +29,152 @@ ${broker} Quinta @@ -26,93 +29,152 @@ ${broker} Quinta
26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} 29 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
27 log ${TENDER} 30 log ${TENDER}
28 31
29 -Отримати багатопредметний тендер по ідентифікатору 32 +Можливість знайти багатопредметний тендер по ідентифікатору
30 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору 33 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
31 - Дочекатись синхронізації з майданчиком ${viewer}  
32 - ${usernames}= Create List ${viewer} ${tender_owner} ${provider} ${provider1}  
33 - :FOR ${username} IN @{usernames} 34 + ... viewer tender_owner provider provider1
  35 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  36 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  37 + ... minimal
  38 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  39 + \ Дочекатись синхронізації з майданчиком ${username}
34 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 40 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
35 41
36 Відображення опису позицій закупівлі багатопредметного тендера 42 Відображення опису позицій закупівлі багатопредметного тендера
37 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 43 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  44 + ... viewer
  45 + ... ${USERS.users['${viewer}'].broker}
  46 + ... minimal
38 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} description 47 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} description
39 48
40 Відображення дати доставки позицій закупівлі багатопредметного тендера 49 Відображення дати доставки позицій закупівлі багатопредметного тендера
41 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 50 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  51 + ... viewer
  52 + ... ${USERS.users['${viewer}'].broker}
  53 + ... critical level 3
42 Звірити дату предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryDate.endDate 54 Звірити дату предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryDate.endDate
43 55
44 Відображення координат широти доставки позицій закупівлі багатопредметного тендера 56 Відображення координат широти доставки позицій закупівлі багатопредметного тендера
45 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 57 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  58 + ... viewer
  59 + ... ${USERS.users['${viewer}'].broker}
46 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryLocation.latitude 60 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryLocation.latitude
47 61
48 Відображення координат довготи доставки позицій закупівлі багатопредметного тендера 62 Відображення координат довготи доставки позицій закупівлі багатопредметного тендера
49 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 63 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  64 + ... viewer
  65 + ... ${USERS.users['${viewer}'].broker}
50 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryLocation.longitude 66 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryLocation.longitude
51 67
52 Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера 68 Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера
53 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 69 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  70 + ... viewer
  71 + ... ${USERS.users['${viewer}'].broker}
  72 + ... critical level 3
54 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.countryName 73 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.countryName
55 74
56 Відображення пошт. коду доставки позицій закупівлі багатопредметного тендера 75 Відображення пошт. коду доставки позицій закупівлі багатопредметного тендера
57 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 76 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  77 + ... viewer
  78 + ... ${USERS.users['${viewer}'].broker}
58 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.postalCode 79 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.postalCode
59 80
60 Відображення регіону доставки позицій закупівлі багатопредметного тендера 81 Відображення регіону доставки позицій закупівлі багатопредметного тендера
61 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 82 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  83 + ... viewer
  84 + ... ${USERS.users['${viewer}'].broker}
  85 + ... critical level 3
62 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.region 86 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.region
63 87
64 Відображення locality адреси доставки позицій закупівлі багатопредметного тендера 88 Відображення locality адреси доставки позицій закупівлі багатопредметного тендера
65 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 89 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  90 + ... viewer
  91 + ... ${USERS.users['${viewer}'].broker}
66 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.locality 92 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.locality
67 93
68 Відображення вулиці доставки позицій закупівлі багатопредметного тендера 94 Відображення вулиці доставки позицій закупівлі багатопредметного тендера
69 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 95 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  96 + ... viewer
  97 + ... ${USERS.users['${viewer}'].broker}
70 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.streetAddress 98 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.streetAddress
71 99
72 Відображення схеми класифікації позицій закупівлі багатопредметного тендера 100 Відображення схеми класифікації позицій закупівлі багатопредметного тендера
73 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 101 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  102 + ... viewer
  103 + ... ${USERS.users['${viewer}'].broker}
74 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.scheme 104 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.scheme
75 105
76 Відображення ідентифікатора класифікації позицій закупівлі багатопредметного тендера 106 Відображення ідентифікатора класифікації позицій закупівлі багатопредметного тендера
77 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 107 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  108 + ... viewer
  109 + ... ${USERS.users['${viewer}'].broker}
  110 + ... critical level 3
78 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.id 111 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.id
79 112
80 Відображення опису класифікації позицій закупівлі багатопредметного тендера 113 Відображення опису класифікації позицій закупівлі багатопредметного тендера
81 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 114 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  115 + ... viewer
  116 + ... ${USERS.users['${viewer}'].broker}
  117 + ... critical level 3
82 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.description 118 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.description
83 119
84 Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера 120 Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера
85 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 121 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  122 + ... viewer
  123 + ... ${USERS.users['${viewer}'].broker}
86 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].scheme 124 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].scheme
87 125
88 Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера 126 Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера
89 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 127 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  128 + ... viewer
  129 + ... ${USERS.users['${viewer}'].broker}
  130 + ... critical level 3
90 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].id 131 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].id
91 132
92 Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера 133 Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера
93 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 134 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  135 + ... viewer
  136 + ... ${USERS.users['${viewer}'].broker}
  137 + ... critical level 3
94 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].description 138 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].description
95 139
96 Відображення назви одиниці позицій закупівлі багатопредметного тендера 140 Відображення назви одиниці позицій закупівлі багатопредметного тендера
97 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 141 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  142 + ... viewer
  143 + ... ${USERS.users['${viewer}'].broker}
  144 + ... critical level 3
98 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} unit.name 145 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} unit.name
99 146
100 Відображення коду одиниці позицій закупівлі багатопредметного тендера 147 Відображення коду одиниці позицій закупівлі багатопредметного тендера
101 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 148 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  149 + ... viewer
  150 + ... ${USERS.users['${viewer}'].broker}
102 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} unit.code 151 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} unit.code
103 152
104 Відображення кількості позицій закупівлі багатопредметного тендера 153 Відображення кількості позицій закупівлі багатопредметного тендера
105 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 154 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
  155 + ... viewer
  156 + ... ${USERS.users['${viewer}'].broker}
  157 + ... critical level 3
106 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} quantity 158 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} quantity
107 159
108 Можливість редагувати багатопредметний тендер 160 Можливість редагувати багатопредметний тендер
109 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 161 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  162 + ... tender_owner
  163 + ... ${USERS.users['${tender_owner}'].broker}
  164 + ... critical level 2
  165 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
110 Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description 166 Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
111 167
112 Можливість додати позицію закупівлі в тендер 168 Можливість додати позицію закупівлі в тендер
113 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 169 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  170 + ... tender_owner
  171 + ... ${USERS.users['${tender_owner}'].broker}
  172 + ... critical level 2
114 Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 3 173 Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 3
115 174
116 Можливість видалити позиції закупівлі тендера 175 Можливість видалити позиції закупівлі тендера
117 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 176 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  177 + ... tender_owner
  178 + ... ${USERS.users['${tender_owner}'].broker}
  179 + ... critical level 2
118 Викликати для учасника ${tender_owner} Відняти предмети закупівлі ${TENDER['TENDER_UAID']} 2 180 Викликати для учасника ${tender_owner} Відняти предмети закупівлі ${TENDER['TENDER_UAID']} 2
@@ -6,8 +6,8 @@ Library Selenium2Library @@ -6,8 +6,8 @@ Library Selenium2Library
6 Library DebugLibrary 6 Library DebugLibrary
7 Resource keywords.robot 7 Resource keywords.robot
8 Resource resource.robot 8 Resource resource.robot
9 -Suite Setup TestSuiteSetup  
10 -Suite Teardown Close all browsers 9 +Suite Setup Test Suite Setup
  10 +Suite Teardown Test Suite Teardown
11 11
12 *** Variables *** 12 *** Variables ***
13 ${mode} multi 13 ${mode} multi
@@ -21,7 +21,10 @@ ${complaint_id} 1 @@ -21,7 +21,10 @@ ${complaint_id} 1
21 *** Test Cases *** 21 *** Test Cases ***
22 Можливість оголосити мультилотовий тендер 22 Можливість оголосити мультилотовий тендер
23 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер 23 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер
24 - ${tender_data}= Підготовка початкових даних 24 + ... tender_owner
  25 + ... ${USERS.users['${tender_owner}'].broker}
  26 + ... minimal
  27 + ${tender_data}= Підготовка даних для створення тендера
25 ${tender_data}= test_tender_data_multiple_lots ${tender_data} 28 ${tender_data}= test_tender_data_multiple_lots ${tender_data}
26 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 29 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
27 ${LAST_MODIFICATION_DATE}= Get Current TZdate 30 ${LAST_MODIFICATION_DATE}= Get Current TZdate
@@ -30,21 +33,24 @@ ${complaint_id} 1 @@ -30,21 +33,24 @@ ${complaint_id} 1
30 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} 33 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
31 Log ${TENDER} 34 Log ${TENDER}
32 35
33 -Пошук мультилотового тендера по ідентифікатору 36 +Можливість знайти мультилотовий тендер по ідентифікатору
34 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору 37 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
35 - Дочекатись синхронізації з майданчиком ${viewer}  
36 - ${usernames}= Create List ${viewer} ${tender_owner} ${provider} ${provider1}  
37 - :FOR ${username} IN @{usernames} 38 + ... viewer tender_owner provider provider1
  39 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  40 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  41 + ... minimal
  42 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  43 + \ Дочекатись синхронізації з майданчиком ${username}
38 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 44 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
39 45
40 -Отримання тендера  
41 - Дочекатись синхронізації з майданчиком ${tender_owner}  
42 - Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
43 -  
44 ####### 46 #######
45 #Операції з лотом 47 #Операції з лотом
46 48
47 -Створення лоту 49 +Можливість створення лоту
  50 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  51 + ... tender_owner
  52 + ... ${USERS.users['${tender_owner}'].broker}
  53 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
48 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} 54 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
49 ${lot}= test lot data 55 ${lot}= test lot data
50 ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot} 56 ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot}
@@ -54,12 +60,18 @@ ${complaint_id} 1 @@ -54,12 +60,18 @@ ${complaint_id} 1
54 log ${lotcreate} 60 log ${lotcreate}
55 61
56 Можливість видалення лоту 62 Можливість видалення лоту
  63 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  64 + ... tender_owner
  65 + ... ${USERS.users['${tender_owner}'].broker}
57 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} 66 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
58 ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp0']} 67 ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp0']}
59 ${lotdelete}= Викликати для учасника ${tender_owner} Видалити лот ${tender_data} ${lot} 68 ${lotdelete}= Викликати для учасника ${tender_owner} Видалити лот ${tender_data} ${lot}
60 Log ${lotdelete} 69 Log ${lotdelete}
61 70
62 -Повторне створення лоту 71 +Можливість повторого створення лоту
  72 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  73 + ... tender_owner
  74 + ... ${USERS.users['${tender_owner}'].broker}
63 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} 75 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
64 ${lot}= test lot data 76 ${lot}= test lot data
65 ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot} 77 ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot}
@@ -69,6 +81,9 @@ ${complaint_id} 1 @@ -69,6 +81,9 @@ ${complaint_id} 1
69 log ${lotcreate} 81 log ${lotcreate}
70 82
71 Можливість змінити цінову пропозицію у новому лоті до 8000 83 Можливість змінити цінову пропозицію у новому лоті до 8000
  84 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  85 + ... tender_owner
  86 + ... ${USERS.users['${tender_owner}'].broker}
72 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} 87 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
73 Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000 88 Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000
74 ${fixlotto8000resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']} 89 ${fixlotto8000resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']}
@@ -76,6 +91,9 @@ ${complaint_id} 1 @@ -76,6 +91,9 @@ ${complaint_id} 1
76 log ${fixlotto8000resp} 91 log ${fixlotto8000resp}
77 92
78 Можливість змінити цінову пропозицію у новому лоті до 100 93 Можливість змінити цінову пропозицію у новому лоті до 100
  94 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  95 + ... tender_owner
  96 + ... ${USERS.users['${tender_owner}'].broker}
79 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} 97 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
80 Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000 98 Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000
81 ${fixlotto100resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']} 99 ${fixlotto100resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']}
@@ -88,9 +106,14 @@ ${complaint_id} 1 @@ -88,9 +106,14 @@ ${complaint_id} 1
88 106
89 Можливість додати позицію закупівлі в тендер 107 Можливість додати позицію закупівлі в тендер
90 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 108 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  109 + ... tender_owner
  110 + ... ${USERS.users['${tender_owner}'].broker}
91 Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 1 111 Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 1
92 112
93 -Добавити предмет закупівлі до лоту 113 +Можливість добавити предмет закупівлі до лоту
  114 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  115 + ... tender_owner
  116 + ... ${USERS.users['${tender_owner}'].broker}
94 ${items}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data['items']} 117 ${items}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data['items']}
95 Log ${items} 118 Log ${items}
96 ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id} 119 ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id}
@@ -99,11 +122,19 @@ ${complaint_id} 1 @@ -99,11 +122,19 @@ ${complaint_id} 1
99 Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items} 122 Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items}
100 123
101 Неможливість видалення лоту з прив’язаними предметами закупівлі 124 Неможливість видалення лоту з прив’язаними предметами закупівлі
  125 + [Documentation]
  126 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
  127 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  128 + ... tender_owner
  129 + ... ${USERS.users['${tender_owner}'].broker}
102 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} 130 ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data}
103 ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp']} 131 ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp']}
104 Викликати для учасника ${tender_owner} Видалити лот shouldfail ${tender_data} ${lot} 132 Викликати для учасника ${tender_owner} Видалити лот shouldfail ${tender_data} ${lot}
105 133
106 Можливість видалити позиції закупівлі тендера 134 Можливість видалити позиції закупівлі тендера
  135 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  136 + ... tender_owner
  137 + ... ${USERS.users['${tender_owner}'].broker}
107 ${items}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data['items']} 138 ${items}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data['items']}
108 Log ${items} 139 Log ${items}
109 ${resp}= Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items[:-1]} 140 ${resp}= Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items[:-1]}
@@ -111,6 +142,8 @@ ${complaint_id} 1 @@ -111,6 +142,8 @@ ${complaint_id} 1
111 142
112 Можливість додати тендерну документацію лоту 143 Можливість додати тендерну документацію лоту
113 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ 144 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ
  145 + ... tender_owner
  146 + ... ${USERS.users['${tender_owner}'].broker}
114 [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі 147 [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі
115 ${filepath}= create_fake_doc 148 ${filepath}= create_fake_doc
116 ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id} 149 ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id}
@@ -125,19 +158,28 @@ ${complaint_id} 1 @@ -125,19 +158,28 @@ ${complaint_id} 1
125 ####### 158 #######
126 #Запитання до лоту 159 #Запитання до лоту
127 160
128 -Задати питання 161 +Можливість задати питання
129 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання 162 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
130 - ${question}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]}  
131 - log ${question} 163 + ... provider
  164 + ... ${USERS.users['${provider}'].broker}
  165 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  166 + ${question}= Підготовка даних для запитання
  167 + ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question}
132 ${now}= Get Current TZdate 168 ${now}= Get Current TZdate
133 - Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now}  
134 -  
135 -Відповісти на запитання 169 + ${question.data.date}= Set variable ${now}
  170 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp}
  171 + Set To Dictionary ${USERS.users['${provider}']} question_data ${question_data}
  172 +Можливість відповісти на запитання
136 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання 173 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
137 - Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} 174 + ... tender_owner
  175 + ... ${USERS.users['${tender_owner}'].broker}
  176 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  177 + ${answer}= Підготовка даних для відповіді на запитання
  178 + ${answer_resp}= Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
138 ${now}= Get Current TZdate 179 ${now}= Get Current TZdate
139 - Set To Dictionary ${ANSWERS[${question_id}-1].data} date ${now}  
140 - 180 + ${answer.data.date}= Set variable ${now}
  181 + ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp}
  182 + Set To Dictionary ${USERS.users['${provider}']} answer_data ${answer_data}
141 183
142 ###### 184 ######
143 #Cкарга на лот 185 #Cкарга на лот
@@ -198,119 +240,157 @@ ${complaint_id} 1 @@ -198,119 +240,157 @@ ${complaint_id} 1
198 240
199 Відображення початку періоду прийому пропозицій оголошеного тендера 241 Відображення початку періоду прийому пропозицій оголошеного тендера
200 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 242 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
201 - ... viewer 243 + ... viewer provider provider1
202 ... ${USERS.users['${viewer}'].broker} 244 ... ${USERS.users['${viewer}'].broker}
  245 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
203 ... minimal 246 ... minimal
204 - ${usernames}= Create List ${viewer} ${provider} ${provider1}  
205 - :FOR ${username} IN @{usernames} 247 + :FOR ${username} IN ${viewer} ${provider} ${provider1}
  248 + \ Дочекатись синхронізації з майданчиком ${username}
206 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate 249 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate
207 250
208 Відображення закінчення періоду прийому пропозицій оголошеного тендера 251 Відображення закінчення періоду прийому пропозицій оголошеного тендера
209 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 252 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
210 - ... viewer 253 + ... viewer provider provider1
211 ... ${USERS.users['${viewer}'].broker} 254 ... ${USERS.users['${viewer}'].broker}
  255 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
212 ... minimal 256 ... minimal
213 - ${usernames}= Create List ${viewer} ${provider} ${provider1}  
214 - :FOR ${username} IN @{usernames} 257 + :FOR ${username} IN ${viewer} ${provider} ${provider1}
  258 + \ Дочекатись синхронізації з майданчиком ${username}
215 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate 259 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate
216 260
217 Неможливість подати цінову пропозицію до початку періоду подачі пропозицій 261 Неможливість подати цінову пропозицію до початку періоду подачі пропозицій
  262 + [Documentation]
  263 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
218 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 264 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  265 + ... prvider
  266 + ... ${USERS.users['${provider}'].broker}
  267 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
219 ${bid}= test lots bid data 268 ${bid}= test lots bid data
220 Log ${bid} 269 Log ${bid}
221 ${bidresponses}= Create Dictionary 270 ${bidresponses}= Create Dictionary
222 - ${bid_before_bidperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}  
223 - Set To Dictionary ${bidresponses} bid_before_bidperiod_resp ${bid_before_bidperiod_resp} 271 + Set To Dictionary ${bidresponses} bid ${bid}
224 Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} 272 Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  273 + ${bid_before_bidperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}
  274 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_before_bidperiod_resp ${bid_before_bidperiod_resp}
225 log ${USERS.users['${provider}']} 275 log ${USERS.users['${provider}']}
226 276
227 Неможливість подати цінову пропозицію без прив’язки до лоту 277 Неможливість подати цінову пропозицію без прив’язки до лоту
  278 + [Documentation]
  279 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
228 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 280 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  281 + ... prvider
  282 + ... ${USERS.users['${provider}'].broker}
  283 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
229 Дочекатись дати початку прийому пропозицій ${provider} 284 Дочекатись дати початку прийому пропозицій ${provider}
230 ${bid}= test bid data 285 ${bid}= test bid data
231 Log ${bid} 286 Log ${bid}
232 ${bidresponses}= Create Dictionary 287 ${bidresponses}= Create Dictionary
233 - ${no_lot_bid_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}  
234 - Set To Dictionary ${bidresponses} no_lot_bid_resp ${no_lot_bid_resp} 288 + Set To Dictionary ${bidresponses} bid ${bid}
235 Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} 289 Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  290 + ${no_lot_bid_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}
  291 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} no_lot_bid_resp ${no_lot_bid_resp}
236 log ${USERS.users['${provider}']} 292 log ${USERS.users['${provider}']}
237 293
238 -Подати цінову пропозицію першим учасником 294 +Можливість подати цінову пропозицію першим учасником
239 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 295 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  296 + ... prvider
  297 + ... ${USERS.users['${provider}'].broker}
240 ${bid}= test lots bid data 298 ${bid}= test lots bid data
241 Log ${bid} 299 Log ${bid}
242 - ${biddingresponse0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
243 - Set Global Variable ${biddingresponse0}  
244 - log ${biddingresponse0} 300 + ${bidresponses}= Create Dictionary
  301 + Set To Dictionary ${bidresponses} bid ${bid}
  302 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  303 + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  304 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
  305 + log ${USERS.users['${provider}']}
245 306
246 Можливість скасувати цінову пропозицію 307 Можливість скасувати цінову пропозицію
247 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію 308 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
248 - ${biddingresponse_0}= Викликати для учасника ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponse0} 309 + ... prvider
  310 + ... ${USERS.users['${provider}'].broker}
  311 + ${canceledbidresp}= Викликати для учасника ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']}
  312 + Log ${canceledbidresp}
249 313
250 -Подати повторно цінову пропозицію першим учасником 314 +Можливість подати повторно цінову пропозицію першим учасником
251 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 315 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  316 + ... prvider
  317 + ... ${USERS.users['${provider}'].broker}
252 Дочекатись дати початку прийому пропозицій ${provider} 318 Дочекатись дати початку прийому пропозицій ${provider}
253 ${bid}= test lots bid data 319 ${bid}= test lots bid data
254 Log ${bid} 320 Log ${bid}
  321 + ${bidresponses}= Create Dictionary
  322 + Set To Dictionary ${bidresponses} bid ${bid}
  323 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
255 ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} 324 ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
256 Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp} 325 Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
257 - log ${resp}  
258 log ${USERS.users['${provider}'].bidresponses} 326 log ${USERS.users['${provider}'].bidresponses}
259 327
260 Можливість змінити повторну цінову пропозицію до 2000 328 Можливість змінити повторну цінову пропозицію до 2000
261 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 329 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
262 - Set To Dictionary ${USERS.users['${provider}'].bidresponses['resp'].data.lotValues[0].value} amount 2000  
263 - Log ${USERS.users['${provider}'].bidresponses['resp'].data.lotValues[0].value}  
264 - ${fixbidto50000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']}  
265 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto50000resp ${fixbidto50000resp}  
266 - log ${fixbidto50000resp} 330 + ... prvider
  331 + ... ${USERS.users['${provider}'].broker}
  332 + ${fixbidto2000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000
  333 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto2000resp ${fixbidto2000resp}
  334 + log ${fixbidto2000resp}
267 335
268 -Можливість змінити повторну цінову пропозицію до 100 336 +Можливість змінити повторну цінову пропозицію до 10
269 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 337 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
270 - Set To Dictionary ${USERS.users['${provider}'].bidresponses['resp'].data.lotValues[0].value} amount 100  
271 - Log ${USERS.users['${provider}'].bidresponses['fixbidto50000resp'].data.lotValues[0].value}  
272 - ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} 338 + ... prvider
  339 + ... ${USERS.users['${provider}'].broker}
  340 + ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 10
273 Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto10resp ${fixbidto10resp} 341 Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto10resp ${fixbidto10resp}
274 log ${fixbidto10resp} 342 log ${fixbidto10resp}
275 343
276 -Подати цінову пропозицію другим учасником 344 +Можливість подати цінову пропозицію другим учасником
277 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію 345 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  346 + ... prvider1
  347 + ... ${USERS.users['${provider1}'].broker}
  348 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
278 Дочекатись дати початку прийому пропозицій ${provider1} 349 Дочекатись дати початку прийому пропозицій ${provider1}
279 ${bid}= test lots bid data 350 ${bid}= test lots bid data
280 Log ${bid} 351 Log ${bid}
281 ${bidresponses}= Create Dictionary 352 ${bidresponses}= Create Dictionary
282 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
283 - Set To Dictionary ${bidresponses} resp ${resp} 353 + Set To Dictionary ${bidresponses} bid ${bid}
284 Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses} 354 Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  355 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  356 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
285 log ${resp} 357 log ${resp}
286 log ${USERS.users['${provider1}'].bidresponses} 358 log ${USERS.users['${provider1}'].bidresponses}
287 359
288 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій 360 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій
289 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію 361 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
  362 + ... viewer
  363 + ... ${USERS.users['${viewer}'].broker}
  364 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
290 ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids 365 ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids
291 Should Be Equal ${bids} ${None} 366 Should Be Equal ${bids} ${None}
292 367
293 -Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій  
294 - [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій 368 +Неможливість змінити цінову пропозицію до 2000 після закінчення прийому пропозицій
  369 + [Documentation]
  370 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
  371 + [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 2000 після закінчення прийому пропозицій
  372 + ... provider1
  373 + ... ${USERS.users['${provider1}'].broker}
  374 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
295 Дочекатись дати закінчення прийому пропозицій ${provider1} 375 Дочекатись дати закінчення прийому пропозицій ${provider1}
296 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value} amount 50000  
297 - Log ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value}  
298 - ${failfixbidto50000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']}  
299 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto50000resp ${failfixbidto50000resp}  
300 - log ${failfixbidto50000resp} 376 + ${failfixbidto2000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000
  377 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto2000resp ${failfixbidto2000resp}
  378 + log ${failfixbidto2000resp}
301 379
302 Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій 380 Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
  381 + [Documentation]
  382 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
303 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій 383 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
304 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value} amount 1  
305 - Log ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value}  
306 - ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} 384 + ... provider1
  385 + ... ${USERS.users['${provider1}'].broker}
  386 + ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} lotValues.0.value.amount 1
307 Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp} 387 Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp}
308 log ${failfixbidto1resp} 388 log ${failfixbidto1resp}
309 389
310 Неможливість скасувати цінову пропозицію 390 Неможливість скасувати цінову пропозицію
  391 + [Documentation]
  392 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
311 [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію 393 [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію
  394 + ... provider1
  395 + ... ${USERS.users['${provider1}'].broker}
312 ${biddingresponse}= Викликати для учасника ${provider1} Скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} 396 ${biddingresponse}= Викликати для учасника ${provider1} Скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']}
313 -  
314 -Отримання тендера після закінчення прийому пропозицій  
315 - Дочекатись синхронізації з майданчиком ${viewer}  
316 - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
  1 +*** Settings ***
  2 +Resource keywords.robot
  3 +Resource resource.robot
  4 +Suite Setup Test Suite Setup
  5 +Suite Teardown Test Suite Teardown
  6 +
  7 +*** Variables ***
  8 +${mode} openeu
  9 +
  10 +${role} viewer
  11 +${broker} Quinta
  12 +
  13 +
  14 +*** Test Cases ***
  15 +Можливість оголосити понадпороговий однопредметний тендер
  16 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  17 + ... tender_owner
  18 + ... ${USERS.users['${tender_owner}'].broker}
  19 + ... minimal
  20 + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера)
  21 + ${tender_data}= Підготовка даних для створення тендера
  22 + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
  23 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
  24 + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
  25 + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
  26 + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
  27 + Log ${TENDER}
  28 +
  29 +Пошук позапорогового однопредметного тендера по ідентифікатору
  30 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
  31 + ... viewer tender_owner provider provider1
  32 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  33 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  34 + ... minimal
  35 + ${usernames}= Create List ${viewer} ${tender_owner} ${provider} ${provider1}
  36 + :FOR ${username} IN @{usernames}
  37 + \ Дочекатись синхронізації з майданчиком ${username}
  38 + \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  39 +
  40 +Відображення типу закупівлі оголошеного тендер
  41 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  42 + ... viewer
  43 + ... ${USERS.users['${viewer}'].broker}
  44 + Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} procurementMethodType
  45 +
  46 +Відображення початку періоду прийому пропозицій оголошеного тендера
  47 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  48 + ... viewer
  49 + ... ${USERS.users['${viewer}'].broker}
  50 + ... minimal
  51 + ${usernames}= Create List ${viewer} ${provider} ${provider1}
  52 + :FOR ${username} IN @{usernames}
  53 + \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate
  54 +
  55 +Відображення закінчення періоду прийому пропозицій оголошеного тендера
  56 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  57 + ... viewer
  58 + ... ${USERS.users['${viewer}'].broker}
  59 + ... minimal
  60 + ${usernames}= Create List ${viewer} ${provider} ${provider1}
  61 + :FOR ${username} IN @{usernames}
  62 + \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate
  63 +
  64 +Відображення закінчення періоду подання скарг на оголошений тендер
  65 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  66 + ... viewer
  67 + ... ${USERS.users['${viewer}'].broker}
  68 + ... minimal
  69 + ${usernames}= Create List ${viewer} ${provider} ${provider1}
  70 + :FOR ${username} IN @{usernames}
  71 + \ Викликати для учасника ${username} Отримати інформацію із тендера complaintPeriod.endDate
  72 +
  73 +Можливість подати вимогу на умови більше ніж за 10 днів до завершення періоду подання пропозицій
  74 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати вимогу на умови
  75 + ... provider
  76 + ... ${USERS.users['${provider}'].broker}
  77 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  78 + ${claim}= Підготовка даних для подання скарги
  79 + Set To Dictionary ${claim.data} status claim
  80 + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${claim}
  81 + ${complaints}= Create Dictionary
  82 + Set To Dictionary ${complaints} claim0 ${claim}
  83 + Set To Dictionary ${USERS.users['${provider}']} complaints ${complaints}
  84 +
  85 +Можливість скасувати вимогу на умови
  86 + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати скаргу на умови
  87 + ... provider
  88 + ... ${USERS.users['${provider}'].broker}
  89 + ${claim}= Get From Dictionary ${USERS.users['${provider}'].complaints} claim0
  90 + Set To Dictionary ${claim.data} status cancelled
  91 + Set To Dictionary ${claim.data} cancellationReason test_draft_cancellation
  92 + Викликати для учасника ${provider} Обробити скаргу ${TENDER['TENDER_UAID']} 0 ${claim}
  93 +
  94 +
  95 +Подати цінову пропозицію першим учасником після оголошення тендеру
  96 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  97 + ... provider
  98 + ... ${USERS.users['${provider}'].broker}
  99 + ${bid}= test bid data
  100 + Log ${bid}
  101 + ${bidresponses}= Create Dictionary
  102 + Set To Dictionary ${bidresponses} bid ${bid}
  103 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  104 + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  105 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
  106 + log ${resp}
  107 +
  108 +Можливість завантажити публічний документ до пропозиції першим учасником
  109 + [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
  110 + ... provider
  111 + ... ${USERS.users['${provider}'].broker}
  112 + log ${USERS.users['${provider}'].broker}
  113 + ${filepath}= create_fake_doc
  114 + ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']}
  115 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload ${bid_doc_upload}
  116 +
  117 +Можливість змінити документацію цінової пропозиції з публічної на приватну
  118 + [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
  119 + ... provider
  120 + ... ${USERS.users['${provider}'].broker}
  121 + log ${USERS.users['${provider}'].broker}
  122 + ${privat_doc}= create_data_dict data.confidentialityRationale "Only our company sells badgers with pink hair."
  123 + Set To Dictionary ${privat_doc.data} confidentiality buyerOnly
  124 + ${bidid}= Get Variable Value ${USERS.users['${provider}'].bidresponses['resp'].data.id}
  125 + ${docid}= Get Variable Value ${USERS.users['${provider}'].bidresponses['bid_doc_upload']['upload_response'].data.id}
  126 + ${bid_doc_modified}= Викликати для учасника ${provider} Змінити документацію в ставці ${privat_doc} ${bidid} ${docid}
  127 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_modified ${bid_doc_modified}
  128 +
  129 +Можливість завантажити фінансовий документ до пропозиції першим учасником
  130 + [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
  131 + ... provider
  132 + ... ${USERS.users['${provider}'].broker}
  133 + log ${USERS.users['${provider}'].broker}
  134 + ${filepath}= create_fake_doc
  135 + ${doc_type}= Set variable financial_documents
  136 + ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
  137 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload ${bid_doc_upload}
  138 +
  139 +Можливість завантажити кваліфікаційний документ до пропозиції першим учасником
  140 + [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
  141 + ... provider
  142 + ... ${USERS.users['${provider}'].broker}
  143 + log ${USERS.users['${provider}'].broker}
  144 + ${filepath}= create_fake_doc
  145 + ${doc_type}= Set variable eligibility_documents
  146 + ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
  147 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload ${bid_doc_upload}
  148 +
  149 +Можливість завантажити документ для критеріїв прийнятності до пропозиції першим учасником
  150 + [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
  151 + ... provider
  152 + ... ${USERS.users['${provider}'].broker}
  153 + log ${USERS.users['${provider}'].broker}
  154 + ${filepath}= create_fake_doc
  155 + ${doc_type}= Set variable qualification_documents
  156 + ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
  157 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload ${bid_doc_upload}
  158 +
  159 +Подати цінову пропозицію другим учасником
  160 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  161 + ... provider1
  162 + ... ${USERS.users['${provider1}'].broker}
  163 + ${bid}= test bid data
  164 + Log ${bid}
  165 + ${bidresponses}= Create Dictionary
  166 + Set To Dictionary ${bidresponses} bid ${bid}
  167 + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  168 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  169 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
  170 + log ${resp}
  171 +
  172 +Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій
  173 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  174 + ... tender_owner
  175 + ... ${USERS.users['${tender_owner}'].broker}
  176 + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
  177 +
  178 +Перевірити на зміну статус пропозицій після редагування інформації про закупівлю
  179 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  180 + ... provider provider1
  181 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  182 + ${usernames}= Create List ${provider} ${provider1}
  183 + :FOR ${username} IN @{usernames}
  184 + \ Дочекатись синхронізації з майданчиком ${username}
  185 + \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  186 + \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}
  187 + \ Should Be Equal ${bid.data.status} invalid
  188 + \ Log ${bid}
  189 +
  190 +
  191 +Оновити статус цінової пропозиції першого учасника
  192 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  193 + ... provider
  194 + ... ${USERS.users['${provider}'].broker}
  195 + ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status pending
  196 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp ${activestatusresp}
  197 + log ${activestatusresp}
  198 +
  199 +Cкасувати цінову пропозицію другого учасника
  200 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію
  201 + ... provider1
  202 + ... ${USERS.users['${provider1}'].broker}
  203 + ${bid}= Get Variable Value ${USERS.users['${provider1}'].bidresponses['resp']}
  204 + ${bidresponses}= Викликати для учасника ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  205 +
  206 +Повторно подати цінову пропозицію другим учасником після першої зміни
  207 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  208 + ... provider1
  209 + ... ${USERS.users['${provider1}'].broker}
  210 + ${bid}= test bid data
  211 + Log ${bid}
  212 + ${bidresponses}= Create Dictionary
  213 + Set To Dictionary ${bidresponses} bid ${bid}
  214 + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  215 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  216 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
  217 + log ${resp}
  218 +
  219 +Неможливість редагувати однопредметний тендер менше ніж за 7 днів до завершення періоду подання пропозицій
  220 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  221 + ... tender_owner
  222 + ... ${USERS.users['${tender_owner}'].broker}
  223 + ${no_edit_time}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} -6
  224 + Дочекатись дати ${no_edit_time}
  225 + Викликати для учасника ${tender_owner} Внести зміни в тендер shouldfail ${TENDER['TENDER_UAID']} description description
  226 +
  227 +Неможливість подати вимогу на умови менше ніж за 10 днів до завершення періоду подання пропозицій
  228 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати вимогу на умови
  229 + ... provider
  230 + ... ${USERS.users['${provider}'].broker}
  231 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  232 + ${claim}= Підготовка даних для подання скарги
  233 + Set To Dictionary ${claim.data} status claim
  234 + Викликати для учасника ${provider} Подати скаргу shouldfail ${TENDER['TENDER_UAID']} ${claim}
  235 +
  236 +
  237 +Продовжити період редагування подання пропозиції на 7 днів
  238 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  239 + ... tender_owner
  240 + ... ${USERS.users['${tender_owner}'].broker}
  241 + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7
  242 + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} tenderPeriod.endDate ${endDate}
  243 +
  244 +
  245 +Можливість подати скаргу на умови більше ніж за 4 дні до завершення періоду подання пропозицій
  246 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
  247 + ... provider
  248 + ... ${USERS.users['${provider}'].broker}
  249 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  250 + Дочекатись синхронізації з майданчиком ${provider}
  251 + ${complaint}= Підготовка даних для подання скарги
  252 + Set To Dictionary ${complaint.data} status pending
  253 + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${complaint}
  254 + Set To Dictionary ${USERS.users['${provider}'].complaints} complaint ${complaint}
  255 +
  256 +
  257 +Можливість скасувати скаргу на умови
  258 + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати скаргу на умови
  259 + ... provider
  260 + ... ${USERS.users['${provider}'].broker}
  261 + ${complaint}= Get From Dictionary ${USERS.users['${provider}'].complaints} complaint
  262 + Set To Dictionary ${complaint.data} status cancelled
  263 + Set To Dictionary ${complaint.data} cancellationReason test_draft_cancellation
  264 + Викликати для учасника ${provider} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${complaint}
  265 +
  266 +
  267 +
  268 +Можливість редагувати однопредметний тендер після продовження періоду подання пропозицій
  269 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  270 + ... tender_owner
  271 + ... ${USERS.users['${tender_owner}'].broker}
  272 + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
  273 +
  274 +
  275 +Перевірити на зміну статус пропозицій після редагування інформації про закупівлю після другої зміни
  276 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  277 + ... provider provider1
  278 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  279 + ${usernames}= Create List ${provider} ${provider1}
  280 + :FOR ${username} IN @{usernames}
  281 + \ Дочекатись синхронізації з майданчиком ${username}
  282 + \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  283 + \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}
  284 + \ Should Be Equal ${bid.data.status} invalid
  285 + \ Log ${bid}
  286 +
  287 +
  288 +Можливість оновити статус цінової пропозиції першого учасника після другої зміни
  289 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  290 + ... provider
  291 + ... ${USERS.users['${provider}'].broker}
  292 + ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status pending
  293 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp ${activestatusresp}
  294 + log ${activestatusresp}
  295 +
  296 +
  297 +Повторно подати цінову пропозицію другим учасником після другої зміни
  298 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  299 + ... provider1
  300 + ... ${USERS.users['${provider1}'].broker}
  301 + ${bid}= test bid data
  302 + Log ${bid}
  303 + ${bidresponses}= Create Dictionary
  304 + Set To Dictionary ${bidresponses} bid ${bid}
  305 + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  306 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  307 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
  308 + log ${resp}
  309 +
  310 +
  311 +Неможливість подати скаргу на умови менше ніж за 4 дні до завершення періоду подання пропозицій
  312 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
  313 + ... provider
  314 + ... ${USERS.users['${provider}'].broker}
  315 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  316 + Дочекатись дати закінчення періоду подання скарг ${provider}
  317 + Дочекатись синхронізації з майданчиком ${provider}
  318 + ${complaint}= Підготовка даних для подання скарги
  319 + Set To Dictionary ${complaint.data} status pending
  320 + Викликати для учасника ${provider} Подати скаргу shouldfail ${TENDER['TENDER_UAID']} ${complaint}
  321 +
  322 +####
  323 +# Qualification
  324 +Відображення статусу першої пропозиції кваліфікації
  325 + [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера
  326 + ... tender_owner
  327 + ... ${USERS.users['${tender_owner}'].broker}
  328 + Дочекатись дати закінчення прийому пропозицій ${tender_owner}
  329 + Дочекатись синхронізації з майданчиком ${tender_owner}
  330 + Звірити поле тендера із значенням ${tender_owner} pending qualifications[0].status
  331 +
  332 +Відображення статусу другої пропозиції кваліфікації
  333 + [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера
  334 + ... tender_owner
  335 + ... ${USERS.users['${tender_owner}'].broker}
  336 + Дочекатись дати закінчення прийому пропозицій ${tender_owner}
  337 + Дочекатись синхронізації з майданчиком ${tender_owner}
  338 + Звірити поле тендера із значенням ${tender_owner} pending qualifications[1].status
  339 +
  340 +Можливість завантажити документ у кваліфікацію пропозиції першого учасника
  341 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  342 + ... tender_owner
  343 + ... ${USERS.users['${tender_owner}'].broker}
  344 + log ${USERS.users['${tender_owner}'].broker}
  345 + ${filepath}= create_fake_doc
  346 + Викликати для учасника ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} 0
  347 +
  348 +Можливість підтвердити першу пропозицію кваліфікації
  349 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  350 + ... tender_owner
  351 + ... ${USERS.users['${tender_owner}'].broker}
  352 + Викликати для учасника ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} 0
  353 +
  354 +Можливість завантажити документ у кваліфікацію пропозиції другого учасника
  355 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  356 + ... tender_owner
  357 + ... ${USERS.users['${tender_owner}'].broker}
  358 + log ${USERS.users['${tender_owner}'].broker}
  359 + ${filepath}= create_fake_doc
  360 + Викликати для учасника ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} 1
  361 +
  362 +Можливість відхилити другу пропозицію кваліфікації
  363 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  364 + ... tender_owner
  365 + ... ${USERS.users['${tender_owner}'].broker}
  366 + Викликати для учасника ${tender_owner} Відхилити кваліфікацію ${TENDER['TENDER_UAID']} 1
  367 +
  368 +Можливість скасувати рішення кваліфікації для другої пропопозиції
  369 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  370 + ... tender_owner
  371 + ... ${USERS.users['${tender_owner}'].broker}
  372 + Викликати для учасника ${tender_owner} Скасувати кваліфікацію ${TENDER['TENDER_UAID']} 1
  373 +
  374 +Можливість підтвердити другу пропозицію кваліфікації
  375 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  376 + ... tender_owner
  377 + ... ${USERS.users['${tender_owner}'].broker}
  378 + Викликати для учасника ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} 2
  1 +*** Settings ***
  2 +Resource keywords.robot
  3 +Resource resource.robot
  4 +Suite Setup Test Suite Setup
  5 +Suite Teardown Test Suite Teardown
  6 +
  7 +*** Variables ***
  8 +${mode} openua
  9 +
  10 +${role} viewer
  11 +${broker} Quinta
  12 +
  13 +
  14 +*** Test Cases ***
  15 +Можливість оголосити понадпороговий однопредметний тендер
  16 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  17 + ... tender_owner
  18 + ... ${USERS.users['${tender_owner}'].broker}
  19 + ... minimal
  20 + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера)
  21 + ${tender_data}= Підготовка даних для створення тендера
  22 + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
  23 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
  24 + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
  25 + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
  26 + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
  27 + Log ${TENDER}
  28 +
  29 +Пошук позапорогового однопредметного тендера по ідентифікатору
  30 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
  31 + ... viewer tender_owner provider provider1
  32 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  33 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  34 + ... minimal
  35 + ${usernames}= Create List ${viewer} ${tender_owner} ${provider} ${provider1}
  36 + :FOR ${username} IN @{usernames}
  37 + \ Дочекатись синхронізації з майданчиком ${username}
  38 + \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  39 +
  40 +Відображення типу закупівлі оголошеного тендер
  41 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  42 + ... viewer
  43 + ... ${USERS.users['${viewer}'].broker}
  44 + Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} procurementMethodType
  45 +
  46 +Відображення початку періоду прийому пропозицій оголошеного тендера
  47 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  48 + ... viewer
  49 + ... ${USERS.users['${viewer}'].broker}
  50 + ... minimal
  51 + ${usernames}= Create List ${viewer} ${provider} ${provider1}
  52 + :FOR ${username} IN @{usernames}
  53 + \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate
  54 +
  55 +Відображення закінчення періоду прийому пропозицій оголошеного тендера
  56 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
  57 + ... viewer
  58 + ... ${USERS.users['${viewer}'].broker}
  59 + ... minimal
  60 + ${usernames}= Create List ${viewer} ${provider} ${provider1}
  61 + :FOR ${username} IN @{usernames}
  62 + \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate
  63 +
  64 +Можливість подати вимогу на умови більше ніж за 10 днів до завершення періоду подання пропозицій
  65 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати вимогу на умови
  66 + ... provider
  67 + ... ${USERS.users['${provider}'].broker}
  68 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  69 + ${claim}= Підготовка даних для подання скарги
  70 + Set To Dictionary ${claim.data} status claim
  71 + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${claim}
  72 + ${complaints}= Create Dictionary
  73 + Set To Dictionary ${complaints} claim0 ${claim}
  74 + Set To Dictionary ${USERS.users['${provider}']} complaints ${complaints}
  75 +
  76 +Можливість скасувати вимогу на умови
  77 + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати скаргу на умови
  78 + ... provider
  79 + ... ${USERS.users['${provider}'].broker}
  80 + ${claim}= Get From Dictionary ${USERS.users['${provider}'].complaints} claim0
  81 + Set To Dictionary ${claim.data} status cancelled
  82 + Set To Dictionary ${claim.data} cancellationReason test_draft_cancellation
  83 + Викликати для учасника ${provider} Обробити скаргу ${TENDER['TENDER_UAID']} 0 ${claim}
  84 +
  85 +
  86 +Подати цінову пропозицію першим учасником після оголошення тендеру
  87 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  88 + ... provider
  89 + ... ${USERS.users['${provider}'].broker}
  90 + ${bid}= test bid data
  91 + Log ${bid}
  92 + ${bidresponses}= Create Dictionary
  93 + Set To Dictionary ${bidresponses} bid ${bid}
  94 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  95 + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  96 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
  97 + log ${resp}
  98 +
  99 +Подати цінову пропозицію другим учасником
  100 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  101 + ... provider1
  102 + ... ${USERS.users['${provider1}'].broker}
  103 + ${bid}= test bid data
  104 + Log ${bid}
  105 + ${bidresponses}= Create Dictionary
  106 + Set To Dictionary ${bidresponses} bid ${bid}
  107 + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  108 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  109 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
  110 + log ${resp}
  111 +
  112 +Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій
  113 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  114 + ... tender_owner
  115 + ... ${USERS.users['${tender_owner}'].broker}
  116 + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
  117 +
  118 +Перевірити на зміну статус пропозицій після редагування інформації про закупівлю
  119 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  120 + ... provider provider1
  121 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  122 + ${usernames}= Create List ${provider} ${provider1}
  123 + :FOR ${username} IN @{usernames}
  124 + \ Дочекатись синхронізації з майданчиком ${username}
  125 + \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  126 + \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}
  127 + \ Should Be Equal ${bid.data.status} invalid
  128 + \ Log ${bid}
  129 +
  130 +
  131 +Оновити статус цінової пропозиції першого учасника
  132 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  133 + ... provider
  134 + ... ${USERS.users['${provider}'].broker}
  135 + ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status active
  136 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp ${activestatusresp}
  137 + log ${activestatusresp}
  138 +
  139 +Cкасувати цінову пропозицію другого учасника
  140 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію
  141 + ... provider1
  142 + ... ${USERS.users['${provider1}'].broker}
  143 + ${bid}= Get Variable Value ${USERS.users['${provider1}'].bidresponses['resp']}
  144 + ${bidresponses}= Викликати для учасника ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  145 +
  146 +Повторно подати цінову пропозицію другим учасником після першої зміни
  147 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  148 + ... provider1
  149 + ... ${USERS.users['${provider1}'].broker}
  150 + ${bid}= test bid data
  151 + Log ${bid}
  152 + ${bidresponses}= Create Dictionary
  153 + Set To Dictionary ${bidresponses} bid ${bid}
  154 + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  155 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  156 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
  157 + log ${resp}
  158 +
  159 +Неможливість редагувати однопредметний тендер менше ніж за 7 днів до завершення періоду подання пропозицій
  160 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  161 + ... tender_owner
  162 + ... ${USERS.users['${tender_owner}'].broker}
  163 + ${no_edit_time}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} -6
  164 + Дочекатись дати ${no_edit_time}
  165 + Викликати для учасника ${tender_owner} Внести зміни в тендер shouldfail ${TENDER['TENDER_UAID']} description description
  166 +
  167 +Неможливість подати вимогу на умови менше ніж за 10 днів до завершення періоду подання пропозицій
  168 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати вимогу на умови
  169 + ... provider
  170 + ... ${USERS.users['${provider}'].broker}
  171 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  172 + ${claim}= Підготовка даних для подання скарги
  173 + Set To Dictionary ${claim.data} status claim
  174 + Викликати для учасника ${provider} Подати скаргу shouldfail ${TENDER['TENDER_UAID']} ${claim}
  175 +
  176 +
  177 +Продовжити період редагування подання пропозиції на 7 днів
  178 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  179 + ... tender_owner
  180 + ... ${USERS.users['${tender_owner}'].broker}
  181 + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7
  182 + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} tenderPeriod.endDate ${endDate}
  183 +
  184 +
  185 +Можливість подати скаргу на умови більше ніж за 4 дні до завершення періоду подання пропозицій
  186 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
  187 + ... provider
  188 + ... ${USERS.users['${provider}'].broker}
  189 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  190 + Дочекатись синхронізації з майданчиком ${provider}
  191 + ${complaint}= Підготовка даних для подання скарги
  192 + Set To Dictionary ${complaint.data} status pending
  193 + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${complaint}
  194 + Set To Dictionary ${USERS.users['${provider}'].complaints} complaint ${complaint}
  195 +
  196 +
  197 +Можливість скасувати скаргу на умови
  198 + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати скаргу на умови
  199 + ... provider
  200 + ... ${USERS.users['${provider}'].broker}
  201 + ${complaint}= Get From Dictionary ${USERS.users['${provider}'].complaints} complaint
  202 + Set To Dictionary ${complaint.data} status cancelled
  203 + Set To Dictionary ${complaint.data} cancellationReason test_draft_cancellation
  204 + Викликати для учасника ${provider} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${complaint}
  205 +
  206 +
  207 +
  208 +Можливість редагувати однопредметний тендер після продовження періоду подання пропозицій
  209 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
  210 + ... tender_owner
  211 + ... ${USERS.users['${tender_owner}'].broker}
  212 + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
  213 +
  214 +
  215 +Перевірити на зміну статус пропозицій після редагування інформації про закупівлю після другої зміни
  216 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  217 + ... provider provider1
  218 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  219 + ${usernames}= Create List ${provider} ${provider1}
  220 + :FOR ${username} IN @{usernames}
  221 + \ Дочекатись синхронізації з майданчиком ${username}
  222 + \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  223 + \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}
  224 + \ Should Be Equal ${bid.data.status} invalid
  225 + \ Log ${bid}
  226 +
  227 +
  228 +Можливість оновити статус цінової пропозиції першого учасника після другої зміни
  229 + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
  230 + ... provider
  231 + ... ${USERS.users['${provider}'].broker}
  232 + ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status active
  233 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp ${activestatusresp}
  234 + log ${activestatusresp}
  235 +
  236 +
  237 +Повторно подати цінову пропозицію другим учасником після другої зміни
  238 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  239 + ... provider1
  240 + ... ${USERS.users['${provider1}'].broker}
  241 + ${bid}= test bid data
  242 + Log ${bid}
  243 + ${bidresponses}= Create Dictionary
  244 + Set To Dictionary ${bidresponses} bid ${bid}
  245 + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  246 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  247 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
  248 + log ${resp}
  249 +
  250 +
  251 +Неможливість подати скаргу на умови менше ніж за 4 дні до завершення періоду подання пропозицій
  252 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
  253 + ... provider
  254 + ... ${USERS.users['${provider}'].broker}
  255 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  256 + Log ${USERS.users['${provider}'].tender_data.data.complaintPeriod.endDate}
  257 + Дочекатись Дати ${USERS.users['${provider}'].tender_data.data.complaintPeriod.endDate}
  258 + Дочекатись синхронізації з майданчиком ${provider}
  259 + ${complaint}= Підготовка даних для подання скарги
  260 + Set To Dictionary ${complaint.data} status pending
  261 + Викликати для учасника ${provider} Подати скаргу shouldfail ${TENDER['TENDER_UAID']} ${complaint}
1 # -*- coding: utf-8 - 1 # -*- coding: utf-8 -
2 from datetime import timedelta 2 from datetime import timedelta
3 from dateutil.parser import parse 3 from dateutil.parser import parse
4 -from dpath.util import set as xpathset 4 +from dpath.util import new as xpathnew
5 from iso8601 import parse_date 5 from iso8601 import parse_date
6 from json import load 6 from json import load
7 from jsonpath_rw import parse as parse_path 7 from jsonpath_rw import parse as parse_path
@@ -16,6 +16,7 @@ from robot.output.loggerhelper import Message @@ -16,6 +16,7 @@ from robot.output.loggerhelper import Message
16 from .initial_data import ( 16 from .initial_data import (
17 auction_bid, 17 auction_bid,
18 create_fake_doc, 18 create_fake_doc,
  19 + create_fake_sentence,
19 test_additional_items_data, 20 test_additional_items_data,
20 test_award_data, 21 test_award_data,
21 test_bid_data, 22 test_bid_data,
@@ -24,12 +25,12 @@ from .initial_data import ( @@ -24,12 +25,12 @@ from .initial_data import (
24 test_cancel_tender_data, 25 test_cancel_tender_data,
25 test_change_cancellation_document_field_data, 26 test_change_cancellation_document_field_data,
26 test_claim_answer_data, 27 test_claim_answer_data,
27 - test_claim_data,  
28 - test_confirm_data,  
29 test_claim_answer_satisfying_data, 28 test_claim_answer_satisfying_data,
  29 + test_claim_data,
30 test_complaint_answer_data, 30 test_complaint_answer_data,
31 test_complaint_data, 31 test_complaint_data,
32 test_complaint_reply_data, 32 test_complaint_reply_data,
  33 + test_confirm_data,
33 test_escalate_claim_data, 34 test_escalate_claim_data,
34 test_invalid_features_data, 35 test_invalid_features_data,
35 test_item_data, 36 test_item_data,
@@ -46,17 +47,24 @@ from .initial_data import ( @@ -46,17 +47,24 @@ from .initial_data import (
46 test_tender_data, 47 test_tender_data,
47 test_tender_data_limited, 48 test_tender_data_limited,
48 test_tender_data_multiple_items, 49 test_tender_data_multiple_items,
49 - test_tender_data_multiple_lots 50 + test_tender_data_multiple_lots,
  51 + test_tender_data_openeu,
  52 + test_tender_data_openua
50 ) 53 )
51 from .local_time import get_now, TZ 54 from .local_time import get_now, TZ
52 import os 55 import os
53 from barbecue import chef 56 from barbecue import chef
  57 +import re
54 58
55 59
56 def get_current_tzdate(): 60 def get_current_tzdate():
57 return get_now().strftime('%Y-%m-%d %H:%M:%S.%f') 61 return get_now().strftime('%Y-%m-%d %H:%M:%S.%f')
58 62
59 63
  64 +def add_minutes_to_date(date, minutes):
  65 + return (parse_date(date) + timedelta(minutes=int(minutes))).isoformat()
  66 +
  67 +
60 def get_file_contents(path): 68 def get_file_contents(path):
61 with open(path, 'r') as f: 69 with open(path, 'r') as f:
62 return unicode(f.read()) or u'' 70 return unicode(f.read()) or u''
@@ -71,7 +79,7 @@ def change_state(arguments): @@ -71,7 +79,7 @@ def change_state(arguments):
71 return "pass" 79 return "pass"
72 80
73 81
74 -def compare_date(date1, date2): 82 +def compare_date(date1, date2, accuracy):
75 date1 = parse(date1) 83 date1 = parse(date1)
76 date2 = parse(date2) 84 date2 = parse(date2)
77 if date1.tzinfo is None: 85 if date1.tzinfo is None:
@@ -80,7 +88,7 @@ def compare_date(date1, date2): @@ -80,7 +88,7 @@ def compare_date(date1, date2):
80 date2 = TZ.localize(date2) 88 date2 = TZ.localize(date2)
81 89
82 delta = (date1 - date2).total_seconds() 90 delta = (date1 - date2).total_seconds()
83 - if abs(delta) > 60: 91 + if abs(delta) > accuracy:
84 return False 92 return False
85 return True 93 return True
86 94
@@ -119,7 +127,7 @@ def log_object_data(data, file_name=None, format="yaml"): @@ -119,7 +127,7 @@ def log_object_data(data, file_name=None, format="yaml"):
119 127
120 def load_initial_data_from(file_name): 128 def load_initial_data_from(file_name):
121 if not os.path.exists(file_name): 129 if not os.path.exists(file_name):
122 - file_name = os.path.join(os.path.dirname(__file__), 'data/{}'.format(file_name)) 130 + file_name = os.path.join(os.path.dirname(__file__), 'data', file_name)
123 with open(file_name) as file_obj: 131 with open(file_name) as file_obj:
124 if file_name.endswith(".json"): 132 if file_name.endswith(".json"):
125 return Munch.fromDict(load(file_obj)) 133 return Munch.fromDict(load(file_obj))
@@ -127,14 +135,36 @@ def load_initial_data_from(file_name): @@ -127,14 +135,36 @@ def load_initial_data_from(file_name):
127 return fromYAML(file_obj) 135 return fromYAML(file_obj)
128 136
129 137
130 -def prepare_test_tender_data(period_intervals, mode): 138 +def prepare_test_tender_data(procedure_intervals, mode):
  139 + # Get actual intervals by mode name
  140 + if mode in procedure_intervals:
  141 + intervals = procedure_intervals[mode]
  142 + else:
  143 + intervals = procedure_intervals['default']
  144 + LOGGER.log_message(Message(intervals))
  145 +
  146 + # Set acceleration value for certain modes
  147 + if mode in ['openua', 'openeu']:
  148 + assert isinstance(intervals['accelerator'], int), \
  149 + "Accelerator should be an 'int', " \
  150 + "not '{}'".format(type(intervals['accelerator']).__name__)
  151 + assert intervals['accelerator'] >= 0, \
  152 + "Accelerator should not be less than 0"
  153 + else:
  154 + assert 'accelerator' not in intervals.keys(), \
  155 + "Accelerator is not available for mode '{0}'".format(mode)
  156 +
131 if mode == 'single': 157 if mode == 'single':
132 - return munchify({'data': test_tender_data(period_intervals)}) 158 + return munchify({'data': test_tender_data(intervals)})
133 elif mode == 'multi': 159 elif mode == 'multi':
134 - return munchify({'data': test_tender_data_multiple_items(period_intervals)}) 160 + return munchify({'data': test_tender_data_multiple_items(intervals)})
135 elif mode == 'limited': 161 elif mode == 'limited':
136 - return munchify({'data': test_tender_data_limited(period_intervals)})  
137 - raise ValueError('Invalid mode for test_tender_data') 162 + return munchify({'data': test_tender_data_limited(intervals)})
  163 + elif mode == 'openua':
  164 + return munchify({'data': test_tender_data_openua(intervals)})
  165 + elif mode == 'openeu':
  166 + return munchify({'data': test_tender_data_openeu(intervals)})
  167 + raise ValueError("Invalid mode for prepare_test_tender_data")
138 168
139 169
140 def run_keyword_and_ignore_keyword_definitions(name, *args): 170 def run_keyword_and_ignore_keyword_definitions(name, *args):
@@ -175,7 +205,7 @@ def set_access_key(tender, access_token): @@ -175,7 +205,7 @@ def set_access_key(tender, access_token):
175 205
176 206
177 def set_to_object(obj, attribute, value): 207 def set_to_object(obj, attribute, value):
178 - xpathset(obj, attribute.replace('.', '/'), value) 208 + xpathnew(obj, attribute, value, separator='.')
179 return obj 209 return obj
180 210
181 211
@@ -206,6 +236,74 @@ def merge_dicts(left, right): @@ -206,6 +236,74 @@ def merge_dicts(left, right):
206 new.update(right) 236 new.update(right)
207 return new 237 return new
208 238
  239 +
  240 +def create_data_dict(path_to_value=None, value=None):
  241 + data_dict = munchify({'data': {}})
  242 + if isinstance(path_to_value, basestring) and value:
  243 + list_items = re.search('\d+', path_to_value)
  244 + if list_items:
  245 + list_items = list_items.group(0)
  246 + path_to_value = path_to_value.split('[' + list_items + ']')
  247 + path_to_value.insert(1, '.' + list_items)
  248 + set_to_object(data_dict, path_to_value[0], [])
  249 + set_to_object(data_dict, ''.join(path_to_value[:2]), {})
  250 + set_to_object(data_dict, ''.join(path_to_value), value)
  251 + else:
  252 + data_dict = set_to_object(data_dict, path_to_value, value)
  253 + return data_dict
  254 +
  255 +
  256 +def cancel_tender(cancellation_reason):
  257 + return {
  258 + 'data': {
  259 + 'reason': cancellation_reason
  260 + }
  261 + }
  262 +
  263 +
  264 +def confirm_supplier(supplier_id):
  265 + return {
  266 + "data": {
  267 + "status": "active",
  268 + "id": supplier_id
  269 + }
  270 + }
  271 +
  272 +
  273 +def change_cancellation_document_field(key, value):
  274 + data = {
  275 + "data": {
  276 + key: value
  277 + }
  278 + }
  279 + return data
  280 +
  281 +
  282 +def confirm_cancellation(cancellation_id):
  283 + data = {
  284 + "data": {
  285 + "status": "active",
  286 + "id": cancellation_id
  287 + }
  288 + }
  289 + return data
  290 +
  291 +
  292 +def confirm_contract(contract_id):
  293 + data = {
  294 + "data": {
  295 + "id": contract_id,
  296 + "status": "active"
  297 + }
  298 + }
  299 + return data
  300 +
  301 +
  302 +def additional_items_data(tender_id, access_token):
  303 + data = {"access": {"token": access_token}, "data": {"id": tender_id, "items": [{"unit": {"code": "MON", "name": "month"}, "quantity": 9}]}}
  304 + return data
  305 +
  306 +
209 def munch_dict(arg=None, data=False): 307 def munch_dict(arg=None, data=False):
210 if arg is None: 308 if arg is None:
211 arg = {} 309 arg = {}
@@ -6,8 +6,8 @@ Library Selenium2Library @@ -6,8 +6,8 @@ Library Selenium2Library
6 Library DebugLibrary 6 Library DebugLibrary
7 Resource keywords.robot 7 Resource keywords.robot
8 Resource resource.robot 8 Resource resource.robot
9 -Suite Setup TestSuiteSetup  
10 -Suite Teardown Close all browsers 9 +Suite Setup Test Suite Setup
  10 +Suite Teardown Test Suite Teardown
11 11
12 *** Variables *** 12 *** Variables ***
13 ${mode} single 13 ${mode} single
@@ -24,7 +24,7 @@ ${question_id} 0 @@ -24,7 +24,7 @@ ${question_id} 0
24 ... ${USERS.users['${tender_owner}'].broker} 24 ... ${USERS.users['${tender_owner}'].broker}
25 ... minimal 25 ... minimal
26 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), 26 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
27 - ${tender_data}= Підготовка початкових даних 27 + ${tender_data}= Підготовка даних для створення тендера
28 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 28 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
29 ${LAST_MODIFICATION_DATE}= Get Current TZdate 29 ${LAST_MODIFICATION_DATE}= Get Current TZdate
30 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data} 30 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
@@ -33,9 +33,10 @@ ${question_id} 0 @@ -33,9 +33,10 @@ ${question_id} 0
33 Log ${TENDER} 33 Log ${TENDER}
34 34
35 Можливість додати тендерну документацію 35 Можливість додати тендерну документацію
36 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ  
37 - ... tender_owner  
38 - ... ${USERS.users['${tender_owner}'].broker} 36 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ
  37 + ... tender_owner
  38 + ... ${USERS.users['${tender_owner}'].broker}
  39 + ... critical level 2
39 [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі 40 [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі
40 ${filepath}= create_fake_doc 41 ${filepath}= create_fake_doc
41 ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']} 42 ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']}
@@ -46,12 +47,12 @@ ${question_id} 0 @@ -46,12 +47,12 @@ ${question_id} 0
46 47
47 Можливість знайти однопредметний тендер по ідентифікатору 48 Можливість знайти однопредметний тендер по ідентифікатору
48 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору 49 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
49 - ... viewer  
50 - ... ${USERS.users['${viewer}'].broker} 50 + ... viewer tender_owner provider provider1
  51 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  52 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
51 ... minimal 53 ... minimal
52 - Дочекатись синхронізації з майданчиком ${viewer}  
53 - ${usernames}= Create List ${viewer} ${tender_owner} ${provider} ${provider1}  
54 - :FOR ${username} IN @{usernames} 54 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  55 + \ Дочекатись синхронізації з майданчиком ${username}
55 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 56 \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
56 57
57 ###### 58 ######
@@ -61,35 +62,39 @@ ${question_id} 0 @@ -61,35 +62,39 @@ ${question_id} 0
61 62
62 Відображення заголовку оголошеного тендера 63 Відображення заголовку оголошеного тендера
63 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 64 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
64 - ... viewer  
65 - ... ${USERS.users['${viewer}'].broker} 65 + ... viewer provider provider1
  66 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
66 ... minimal 67 ... minimal
67 - ${usernames}= Create List ${viewer} ${provider}  
68 - :FOR ${username} IN @{usernames} 68 + :FOR ${username} IN ${viewer} ${provider} ${provider1}
  69 + \ Дочекатись синхронізації з майданчиком ${username}
69 \ Звірити поле тендера ${username} ${USERS.users['${tender_owner}'].initial_data} title 70 \ Звірити поле тендера ${username} ${USERS.users['${tender_owner}'].initial_data} title
70 71
71 Відображення опису оголошеного тендера 72 Відображення опису оголошеного тендера
72 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 73 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
73 ... viewer 74 ... viewer
74 ... ${USERS.users['${viewer}'].broker} 75 ... ${USERS.users['${viewer}'].broker}
  76 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
75 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} description 77 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} description
76 78
77 Відображення бюджету оголошеного тендера 79 Відображення бюджету оголошеного тендера
78 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 80 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
79 ... viewer 81 ... viewer
80 ... ${USERS.users['${viewer}'].broker} 82 ... ${USERS.users['${viewer}'].broker}
  83 + ... critical level 2
81 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} value.amount 84 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} value.amount
82 85
83 Відображення tenderID оголошеного тендера 86 Відображення tenderID оголошеного тендера
84 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 87 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
85 ... viewer 88 ... viewer
86 ... ${USERS.users['${viewer}'].broker} 89 ... ${USERS.users['${viewer}'].broker}
  90 + ... critical level 2
87 Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} tenderID 91 Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} tenderID
88 92
89 Відображення procuringEntity.name оголошеного тендера 93 Відображення procuringEntity.name оголошеного тендера
90 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 94 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
91 ... viewer 95 ... viewer
92 ... ${USERS.users['${viewer}'].broker} 96 ... ${USERS.users['${viewer}'].broker}
  97 + ... critical level 2
93 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} procuringEntity.name 98 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} procuringEntity.name
94 99
95 Відображення початку періоду уточнення оголошеного тендера 100 Відображення початку періоду уточнення оголошеного тендера
@@ -107,20 +112,20 @@ ${question_id} 0 @@ -107,20 +112,20 @@ ${question_id} 0
107 112
108 Відображення початку періоду прийому пропозицій оголошеного тендера 113 Відображення початку періоду прийому пропозицій оголошеного тендера
109 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 114 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
110 - ... viewer  
111 - ... ${USERS.users['${viewer}'].broker} 115 + ... viewer provider provider1
  116 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
112 ... minimal 117 ... minimal
113 - ${usernames}= Create List ${viewer} ${provider} ${provider1}  
114 - :FOR ${username} IN @{usernames} 118 + :FOR ${username} IN ${viewer} ${provider} ${provider1}
  119 + \ Дочекатись синхронізації з майданчиком ${username}
115 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate 120 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate
116 121
117 Відображення закінчення періоду прийому пропозицій оголошеного тендера 122 Відображення закінчення періоду прийому пропозицій оголошеного тендера
118 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 123 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
119 - ... viewer  
120 - ... ${USERS.users['${viewer}'].broker} 124 + ... viewer provider provider1
  125 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
121 ... minimal 126 ... minimal
122 - ${usernames}= Create List ${viewer} ${provider} ${provider1}  
123 - :FOR ${username} IN @{usernames} 127 + :FOR ${username} IN ${viewer} ${provider} ${provider1}
  128 + \ Дочекатись синхронізації з майданчиком ${username}
124 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate 129 \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate
125 130
126 Відображення мінімального кроку оголошеного тендера 131 Відображення мінімального кроку оголошеного тендера
@@ -133,6 +138,8 @@ ${question_id} 0 @@ -133,6 +138,8 @@ ${question_id} 0
133 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 138 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
134 ... tender_owner 139 ... tender_owner
135 ... ${USERS.users['${tender_owner}'].broker} 140 ... ${USERS.users['${tender_owner}'].broker}
  141 + ... critical level 2
  142 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
136 Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description 143 Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
137 144
138 ####### 145 #######
@@ -143,12 +150,15 @@ ${question_id} 0 @@ -143,12 +150,15 @@ ${question_id} 0
143 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 150 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
144 ... viewer 151 ... viewer
145 ... ${USERS.users['${viewer}'].broker} 152 ... ${USERS.users['${viewer}'].broker}
  153 + ... critical level 2
  154 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
146 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].description 155 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].description
147 156
148 Відображення дати доставки позицій закупівлі однопредметного тендера 157 Відображення дати доставки позицій закупівлі однопредметного тендера
149 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 158 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
150 ... viewer 159 ... viewer
151 ... ${USERS.users['${viewer}'].broker} 160 ... ${USERS.users['${viewer}'].broker}
  161 + ... critical level 3
152 Звірити дату тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryDate.endDate 162 Звірити дату тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryDate.endDate
153 163
154 Відображення координат широти доставки позицій закупівлі однопредметного тендера 164 Відображення координат широти доставки позицій закупівлі однопредметного тендера
@@ -167,6 +177,7 @@ ${question_id} 0 @@ -167,6 +177,7 @@ ${question_id} 0
167 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 177 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
168 ... viewer 178 ... viewer
169 ... ${USERS.users['${viewer}'].broker} 179 ... ${USERS.users['${viewer}'].broker}
  180 + ... critical level 3
170 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryAddress.countryName 181 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryAddress.countryName
171 182
172 Відображення пошт. коду доставки позицій закупівлі однопредметного тендера 183 Відображення пошт. коду доставки позицій закупівлі однопредметного тендера
@@ -179,6 +190,7 @@ ${question_id} 0 @@ -179,6 +190,7 @@ ${question_id} 0
179 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 190 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
180 ... viewer 191 ... viewer
181 ... ${USERS.users['${viewer}'].broker} 192 ... ${USERS.users['${viewer}'].broker}
  193 + ... critical level 3
182 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryAddress.region 194 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryAddress.region
183 195
184 Відображення locality адреси доставки позицій закупівлі однопредметного тендера 196 Відображення locality адреси доставки позицій закупівлі однопредметного тендера
@@ -203,12 +215,14 @@ ${question_id} 0 @@ -203,12 +215,14 @@ ${question_id} 0
203 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 215 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
204 ... viewer 216 ... viewer
205 ... ${USERS.users['${viewer}'].broker} 217 ... ${USERS.users['${viewer}'].broker}
  218 + ... critical level 3
206 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].classification.id 219 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].classification.id
207 220
208 Відображення опису класифікації позицій закупівлі однопредметного тендера 221 Відображення опису класифікації позицій закупівлі однопредметного тендера
209 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 222 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
210 ... viewer 223 ... viewer
211 ... ${USERS.users['${viewer}'].broker} 224 ... ${USERS.users['${viewer}'].broker}
  225 + ... critical level 3
212 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].classification.description 226 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].classification.description
213 227
214 Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера 228 Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера
@@ -221,18 +235,21 @@ ${question_id} 0 @@ -221,18 +235,21 @@ ${question_id} 0
221 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 235 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
222 ... viewer 236 ... viewer
223 ... ${USERS.users['${viewer}'].broker} 237 ... ${USERS.users['${viewer}'].broker}
  238 + ... critical level 3
224 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].additionalClassifications[0].id 239 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].additionalClassifications[0].id
225 240
226 Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера 241 Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера
227 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 242 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
228 ... viewer 243 ... viewer
229 ... ${USERS.users['${viewer}'].broker} 244 ... ${USERS.users['${viewer}'].broker}
  245 + ... critical level 3
230 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].additionalClassifications[0].description 246 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].additionalClassifications[0].description
231 247
232 Відображення назви одиниці позицій закупівлі однопредметного тендера 248 Відображення назви одиниці позицій закупівлі однопредметного тендера
233 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 249 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
234 ... viewer 250 ... viewer
235 ... ${USERS.users['${viewer}'].broker} 251 ... ${USERS.users['${viewer}'].broker}
  252 + ... critical level 3
236 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].unit.name 253 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].unit.name
237 254
238 Відображення коду одиниці позицій закупівлі однопредметного тендера 255 Відображення коду одиниці позицій закупівлі однопредметного тендера
@@ -245,6 +262,7 @@ ${question_id} 0 @@ -245,6 +262,7 @@ ${question_id} 0
245 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера 262 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів однопредметного тендера
246 ... viewer 263 ... viewer
247 ... ${USERS.users['${viewer}'].broker} 264 ... ${USERS.users['${viewer}'].broker}
  265 + ... critical level 3
248 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].quantity 266 Звірити поле тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].quantity
249 267
250 ####### 268 #######
@@ -254,38 +272,51 @@ ${question_id} 0 @@ -254,38 +272,51 @@ ${question_id} 0
254 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання 272 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
255 ... provider 273 ... provider
256 ... ${USERS.users['${provider}'].broker} 274 ... ${USERS.users['${provider}'].broker}
257 - Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} 275 + ... critical level 2
  276 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  277 + ${question}= Підготовка даних для запитання
  278 + ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question}
258 ${now}= Get Current TZdate 279 ${now}= Get Current TZdate
259 - Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} 280 + ${question.data.date}= Set variable ${now}
  281 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp}
  282 + ${question_data}= munch_dict arg=${question_data}
  283 + Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data}
260 284
261 Відображення заголовку анонімного питання без відповіді 285 Відображення заголовку анонімного питання без відповіді
262 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей 286 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
263 ... viewer 287 ... viewer
264 ... ${USERS.users['${viewer}'].broker} 288 ... ${USERS.users['${viewer}'].broker}
265 - Дочекатись синхронізації з майданчиком ${viewer} 289 + ... critical level 2
  290 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
266 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} 291 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
267 - Звірити поле тендера із значенням ${viewer} ${QUESTIONS[${question_id}].data.title} questions[${question_id}].title 292 + Звірити поле тендера із значенням ${viewer} ${USERS.users['${provider}'].question_data.question.data.title} questions[${question_id}].title
268 293
269 Відображення опису анонімного питання без відповіді 294 Відображення опису анонімного питання без відповіді
270 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей 295 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
271 ... viewer 296 ... viewer
272 ... ${USERS.users['${viewer}'].broker} 297 ... ${USERS.users['${viewer}'].broker}
273 - Звірити поле тендера із значенням ${viewer} ${QUESTIONS[${question_id}].data.description} questions[${question_id}].description 298 + ... critical level 2
  299 + Звірити поле тендера із значенням ${viewer} ${USERS.users['${provider}'].question_data.question.data.description} questions[${question_id}].description
274 300
275 Відображення дати анонімного питання без відповіді 301 Відображення дати анонімного питання без відповіді
276 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей 302 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
277 ... viewer 303 ... viewer
278 ... ${USERS.users['${viewer}'].broker} 304 ... ${USERS.users['${viewer}'].broker}
279 - Звірити дату тендера із значенням ${viewer} ${QUESTIONS[${question_id}].data.date} questions[${question_id}].date 305 + Звірити дату тендера із значенням ${viewer} ${USERS.users['${provider}'].question_data.question.data.date} questions[${question_id}].date
280 306
281 Неможливість подати цінову пропозицію до початку періоду подачі пропозицій першим учасником 307 Неможливість подати цінову пропозицію до початку періоду подачі пропозицій першим учасником
282 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 308 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
283 ... provider 309 ... provider
284 ... ${USERS.users['${provider}'].broker} 310 ... ${USERS.users['${provider}'].broker}
  311 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
285 ${bid}= test bid data 312 ${bid}= test bid data
286 Log ${bid} 313 Log ${bid}
  314 + ${bidresponses}= Create Dictionary
  315 + Set To Dictionary ${bidresponses} bid ${bid}
  316 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
287 ${bid_before_bidperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid} 317 ${bid_before_bidperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid}
288 - Log ${bid_before_bidperiod_resp} 318 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_before_bidperiod_resp ${bid_before_bidperiod_resp}
  319 + log ${USERS.users['${provider}']}
289 320
290 ####### 321 #######
291 #Відображення відповіді на запитання 322 #Відображення відповіді на запитання
@@ -294,34 +325,45 @@ ${question_id} 0 @@ -294,34 +325,45 @@ ${question_id} 0
294 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання 325 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
295 ... tender_owner 326 ... tender_owner
296 ... ${USERS.users['${tender_owner}'].broker} 327 ... ${USERS.users['${tender_owner}'].broker}
297 - Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} 328 + ... critical level 2
  329 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  330 + ${answer}= Підготовка даних для відповіді на запитання
  331 + ${answer_resp}= Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
298 ${now}= Get Current TZdate 332 ${now}= Get Current TZdate
299 - Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} 333 + ${answer.data.date}= Set variable ${now}
  334 + ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp}
  335 + Set To Dictionary ${USERS.users['${provider}']} answer_data ${answer_data}
300 336
301 Відображення відповіді на запитання 337 Відображення відповіді на запитання
302 [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання 338 [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
303 ... viewer 339 ... viewer
304 ... ${USERS.users['${viewer}'].broker} 340 ... ${USERS.users['${viewer}'].broker}
305 - Дочекатись синхронізації з майданчиком ${viewer} 341 + ... critical level 2
  342 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
306 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} 343 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
307 - Звірити поле тендера із значенням ${viewer} ${ANSWERS[${question_id}].data.answer} questions[${question_id}].answer 344 + Звірити поле тендера із значенням ${viewer} ${USERS.users['${provider}']['answer_data']['answer'].data.answer} questions[${question_id}].answer
308 345
309 Можливість подати цінову пропозицію першим учасником 346 Можливість подати цінову пропозицію першим учасником
310 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 347 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
311 ... provider 348 ... provider
312 ... ${USERS.users['${provider}'].broker} 349 ... ${USERS.users['${provider}'].broker}
  350 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
313 Дочекатись дати початку прийому пропозицій ${provider} 351 Дочекатись дати початку прийому пропозицій ${provider}
314 ${bid}= test bid data 352 ${bid}= test bid data
315 Log ${bid} 353 Log ${bid}
316 - ${biddingresponse0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
317 - Set Global Variable ${biddingresponse0}  
318 - log ${biddingresponse0} 354 + ${bidresponses}= Create Dictionary
  355 + Set To Dictionary ${bidresponses} bid ${bid}
  356 + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  357 + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  358 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
  359 + log ${USERS.users['${provider}'].bidresponses}
319 360
320 Можливість скасувати цінову пропозицію 361 Можливість скасувати цінову пропозицію
321 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію 362 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
322 - ... provider  
323 - ... ${USERS.users['${provider}'].broker}  
324 - ${biddingresponse_0}= Викликати для учасника ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponse0} 363 + ... provider
  364 + ... ${USERS.users['${provider}'].broker}
  365 + ${canceledbidresp}= Викликати для учасника ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']}
  366 + Log ${canceledbidresp}
325 367
326 Можливість подати повторно цінову пропозицію першим учасником 368 Можливість подати повторно цінову пропозицію першим учасником
327 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 369 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
@@ -332,18 +374,17 @@ ${question_id} 0 @@ -332,18 +374,17 @@ ${question_id} 0
332 ${bid}= test bid data 374 ${bid}= test bid data
333 Log ${bid} 375 Log ${bid}
334 ${bidresponses}= Create Dictionary 376 ${bidresponses}= Create Dictionary
335 - ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
336 - Set To Dictionary ${bidresponses} resp ${resp} 377 + Set To Dictionary ${bidresponses} bid ${bid}
337 Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} 378 Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses}
  379 + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  380 + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}
338 log ${USERS.users['${provider}'].bidresponses} 381 log ${USERS.users['${provider}'].bidresponses}
339 382
340 Можливість змінити повторну цінову пропозицію до 50000 383 Можливість змінити повторну цінову пропозицію до 50000
341 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 384 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
342 ... provider 385 ... provider
343 ... ${USERS.users['${provider}'].broker} 386 ... ${USERS.users['${provider}'].broker}
344 - Set To Dictionary ${USERS.users['${provider}'].bidresponses['resp'].data.value} amount 50000  
345 - Log ${USERS.users['${provider}'].bidresponses['resp'].data.value}  
346 - ${fixbidto50000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} 387 + ${fixbidto50000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} value.amount 50000
347 Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto50000resp ${fixbidto50000resp} 388 Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto50000resp ${fixbidto50000resp}
348 log ${fixbidto50000resp} 389 log ${fixbidto50000resp}
349 390
@@ -351,9 +392,7 @@ ${question_id} 0 @@ -351,9 +392,7 @@ ${question_id} 0
351 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 392 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
352 ... provider 393 ... provider
353 ... ${USERS.users['${provider}'].broker} 394 ... ${USERS.users['${provider}'].broker}
354 - Set To Dictionary ${USERS.users['${provider}'].bidresponses['resp'].data.value} amount 10  
355 - Log ${USERS.users['${provider}'].bidresponses['fixbidto50000resp'].data.value}  
356 - ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} 395 + ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} value.amount 10
357 Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto10resp ${fixbidto10resp} 396 Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto10resp ${fixbidto10resp}
358 log ${fixbidto10resp} 397 log ${fixbidto10resp}
359 398
@@ -361,6 +400,7 @@ ${question_id} 0 @@ -361,6 +400,7 @@ ${question_id} 0
361 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця 400 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
362 ... provider 401 ... provider
363 ... ${USERS.users['${provider}'].broker} 402 ... ${USERS.users['${provider}'].broker}
  403 + ... critical level 2
364 log ${USERS.users['${provider}'].broker} 404 log ${USERS.users['${provider}'].broker}
365 ${filepath}= create_fake_doc 405 ${filepath}= create_fake_doc
366 ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} 406 ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']}
@@ -379,24 +419,27 @@ ${question_id} 0 @@ -379,24 +419,27 @@ ${question_id} 0
379 419
380 Неможливість задати запитання після закінчення періоду уточнень 420 Неможливість задати запитання після закінчення періоду уточнень
381 [Documentation] 421 [Documentation]
382 - ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" 422 + ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
383 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання 423 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
384 ... provider 424 ... provider
385 ... ${USERS.users['${provider}'].broker} 425 ... ${USERS.users['${provider}'].broker}
386 - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} 426 + ${question}= Підготовка даних для запитання
  427 + Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${question}
387 428
388 Можливість подати цінову пропозицію другим учасником 429 Можливість подати цінову пропозицію другим учасником
389 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію 430 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
390 ... provider1 431 ... provider1
391 ... ${USERS.users['${provider1}'].broker} 432 ... ${USERS.users['${provider1}'].broker}
392 ... minimal 433 ... minimal
  434 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
393 Дочекатись дати початку прийому пропозицій ${provider1} 435 Дочекатись дати початку прийому пропозицій ${provider1}
394 ${bid}= test bid data 436 ${bid}= test bid data
395 Log ${bid} 437 Log ${bid}
396 ${bidresponses}= Create Dictionary 438 ${bidresponses}= Create Dictionary
397 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
398 - Set To Dictionary ${bidresponses} resp ${resp} 439 + Set To Dictionary ${bidresponses} bid ${bid}
399 Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses} 440 Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}
  441 + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  442 + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}
400 log ${resp} 443 log ${resp}
401 log ${USERS.users['${provider1}'].bidresponses} 444 log ${USERS.users['${provider1}'].bidresponses}
402 445
@@ -404,14 +447,16 @@ ${question_id} 0 @@ -404,14 +447,16 @@ ${question_id} 0
404 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію 447 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
405 ... viewer 448 ... viewer
406 ... ${USERS.users['${viewer}'].broker} 449 ... ${USERS.users['${viewer}'].broker}
  450 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
407 ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids 451 ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids
408 - ${bool}= Convert To Boolean ${bids}  
409 - Should Be Equal ${bool} ${False} 452 + Should Not Be True ${bids}
410 453
411 Можливість завантажити документ другим учасником 454 Можливість завантажити документ другим учасником
412 [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця 455 [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця
413 ... provider1 456 ... provider1
414 ... ${USERS.users['${provider1}'].broker} 457 ... ${USERS.users['${provider1}'].broker}
  458 + ... critical level 2
  459 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
415 log ${USERS.users['${provider1}'].broker} 460 log ${USERS.users['${provider1}'].broker}
416 ${filepath}= create_fake_doc 461 ${filepath}= create_fake_doc
417 ${bid_doc_upload}= Викликати для учасника ${provider1} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} 462 ${bid_doc_upload}= Викликати для учасника ${provider1} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']}
@@ -422,9 +467,7 @@ ${question_id} 0 @@ -422,9 +467,7 @@ ${question_id} 0
422 ... provider1 467 ... provider1
423 ... ${USERS.users['${provider1}'].broker} 468 ... ${USERS.users['${provider1}'].broker}
424 Дочекатись дати закінчення прийому пропозицій ${provider1} 469 Дочекатись дати закінчення прийому пропозицій ${provider1}
425 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses['resp'].data.value} amount 50000  
426 - Log ${USERS.users['${provider1}'].bidresponses['resp'].data.value}  
427 - ${failfixbidto50000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} 470 + ${failfixbidto50000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} value.amount 50000
428 Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto50000resp ${failfixbidto50000resp} 471 Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto50000resp ${failfixbidto50000resp}
429 log ${failfixbidto50000resp} 472 log ${failfixbidto50000resp}
430 473
@@ -432,9 +475,7 @@ ${question_id} 0 @@ -432,9 +475,7 @@ ${question_id} 0
432 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій 475 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
433 ... provider1 476 ... provider1
434 ... ${USERS.users['${provider1}'].broker} 477 ... ${USERS.users['${provider1}'].broker}
435 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses['resp'].data.value} amount 1  
436 - Log ${USERS.users['${provider1}'].bidresponses['resp'].data.value}  
437 - ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} 478 + ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} value.amount 1
438 Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp} 479 Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp}
439 log ${failfixbidto1resp} 480 log ${failfixbidto1resp}
440 481
@@ -463,28 +504,30 @@ ${question_id} 0 @@ -463,28 +504,30 @@ ${question_id} 0
463 Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_modified_failed ${bid_doc_modified_failed} 504 Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_modified_failed ${bid_doc_modified_failed}
464 505
465 Можливість вичитати посилання на аукціон для глядача 506 Можливість вичитати посилання на аукціон для глядача
466 - [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію  
467 - ... viewer  
468 - ... ${USERS.users['${viewer}'].broker}  
469 - ... minimal 507 + [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
  508 + ... viewer
  509 + ... ${USERS.users['${viewer}'].broker}
  510 + ... minimal
  511 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
470 Дочекатись дати закінчення прийому пропозицій ${viewer} 512 Дочекатись дати закінчення прийому пропозицій ${viewer}
471 - Дочекатись синхронізації з майданчиком ${viewer}  
472 Sleep 120 513 Sleep 120
473 ${url}= Викликати для учасника ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} 514 ${url}= Викликати для учасника ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']}
474 Log URL аукціону для глядача: ${url} 515 Log URL аукціону для глядача: ${url}
475 516
476 Можливість вичитати посилання на участь в аукціоні для першого учасника 517 Можливість вичитати посилання на участь в аукціоні для першого учасника
477 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
478 - ... provider  
479 - ... ${USERS.users['${provider}'].broker}  
480 - ... minimal 518 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  519 + ... provider
  520 + ... ${USERS.users['${provider}'].broker}
  521 + ... minimal
  522 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
481 ${url}= Викликати для учасника ${provider} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']} 523 ${url}= Викликати для учасника ${provider} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']}
482 Log URL аукціону для першого учасника: ${url} 524 Log URL аукціону для першого учасника: ${url}
483 525
484 Можливість вичитати посилання на участь в аукціоні для другого учасника 526 Можливість вичитати посилання на участь в аукціоні для другого учасника
485 - [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію  
486 - ... provider1  
487 - ... ${USERS.users['${provider1}'].broker}  
488 - ... minimal 527 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  528 + ... provider1
  529 + ... ${USERS.users['${provider1}'].broker}
  530 + ... minimal
  531 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
489 ${url}= Викликати для учасника ${provider1} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']} 532 ${url}= Викликати для учасника ${provider1} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']}
490 Log URL аукціону для другого учасника: ${url} 533 Log URL аукціону для другого учасника: ${url}
@@ -6,8 +6,8 @@ Library Selenium2Library @@ -6,8 +6,8 @@ Library Selenium2Library
6 Library DebugLibrary 6 Library DebugLibrary
7 Resource keywords.robot 7 Resource keywords.robot
8 Resource resource.robot 8 Resource resource.robot
9 -Suite Setup TestSuiteSetup  
10 -Suite Teardown Close all browsers 9 +Suite Setup Test Suite Setup
  10 +Suite Teardown Test Suite Teardown
11 11
12 *** Variables *** 12 *** Variables ***
13 ${mode} single 13 ${mode} single
@@ -20,7 +20,7 @@ ${broker} Quinta @@ -20,7 +20,7 @@ ${broker} Quinta
20 ... tender_owner 20 ... tender_owner
21 ... ${USERS.users['${tender_owner}'].broker} 21 ... ${USERS.users['${tender_owner}'].broker}
22 ... from-0.12 22 ... from-0.12
23 - ${tender_data}= Підготовка початкових даних 23 + ${tender_data}= Підготовка даних для створення тендера
24 ${TENDER_UAID}= Викликати для учасника ${tender_owner} 24 ${TENDER_UAID}= Викликати для учасника ${tender_owner}
25 ... Створити тендер 25 ... Створити тендер
26 ... ${tender_data} 26 ... ${tender_data}
@@ -58,7 +58,7 @@ ${broker} Quinta @@ -58,7 +58,7 @@ ${broker} Quinta
58 ... ${USERS.users['${provider}'].broker} 58 ... ${USERS.users['${provider}'].broker}
59 ... from-0.12 59 ... from-0.12
60 [Setup] Дочекатись синхронізації з майданчиком ${provider} 60 [Setup] Дочекатись синхронізації з майданчиком ${provider}
61 - ${claim}= test_claim_data 61 + ${claim}= Підготовка даних для подання вимоги
62 ${claim_resp}= Викликати для учасника ${provider} 62 ${claim_resp}= Викликати для учасника ${provider}
63 ... Створити вимогу 63 ... Створити вимогу
64 ... ${TENDER['TENDER_UAID']} 64 ... ${TENDER['TENDER_UAID']}
@@ -358,7 +358,7 @@ ${broker} Quinta @@ -358,7 +358,7 @@ ${broker} Quinta
358 ... provider 358 ... provider
359 ... ${USERS.users['${provider}'].broker} 359 ... ${USERS.users['${provider}'].broker}
360 ... from-0.12 360 ... from-0.12
361 - ${claim}= test_claim_data 361 + ${claim}= Підготовка даних для подання вимоги
362 ${claim_resp}= Викликати для учасника ${provider} 362 ${claim_resp}= Викликати для учасника ${provider}
363 ... Створити вимогу 363 ... Створити вимогу
364 ... ${TENDER['TENDER_UAID']} 364 ... ${TENDER['TENDER_UAID']}
@@ -436,7 +436,7 @@ ${broker} Quinta @@ -436,7 +436,7 @@ ${broker} Quinta
436 ... provider 436 ... provider
437 ... ${USERS.users['${provider}'].broker} 437 ... ${USERS.users['${provider}'].broker}
438 ... from-0.12 438 ... from-0.12
439 - ${claim}= test_claim_data 439 + ${claim}= Підготовка даних для подання вимоги
440 ${claim_resp}= Викликати для учасника ${provider} 440 ${claim_resp}= Викликати для учасника ${provider}
441 ... Створити вимогу 441 ... Створити вимогу
442 ... ${TENDER['TENDER_UAID']} 442 ... ${TENDER['TENDER_UAID']}
@@ -503,7 +503,7 @@ ${broker} Quinta @@ -503,7 +503,7 @@ ${broker} Quinta
503 ... provider 503 ... provider
504 ... ${USERS.users['${provider}'].broker} 504 ... ${USERS.users['${provider}'].broker}
505 ... from-0.12 505 ... from-0.12
506 - ${claim}= test_claim_data 506 + ${claim}= Підготовка даних для подання вимоги
507 ${claim_resp}= Викликати для учасника ${provider} 507 ${claim_resp}= Викликати для учасника ${provider}
508 ... Створити вимогу 508 ... Створити вимогу
509 ... ${TENDER['TENDER_UAID']} 509 ... ${TENDER['TENDER_UAID']}
@@ -580,7 +580,7 @@ ${broker} Quinta @@ -580,7 +580,7 @@ ${broker} Quinta
580 ... provider 580 ... provider
581 ... ${USERS.users['${provider}'].broker} 581 ... ${USERS.users['${provider}'].broker}
582 ... from-0.12 582 ... from-0.12
583 - ${claim}= test_claim_data 583 + ${claim}= Підготовка даних для подання вимоги
584 ${claim_resp}= Викликати для учасника ${provider} 584 ${claim_resp}= Викликати для учасника ${provider}
585 ... Створити вимогу 585 ... Створити вимогу
586 ... ${TENDER['TENDER_UAID']} 586 ... ${TENDER['TENDER_UAID']}
Please register or login to post a comment