Commit e3bdc96c4cd5a3bb5d0faa9ab434f51cd81a418b

Authored by Andrew Leitsius
2 parents 78309981 9fe91b7f

Merge pull request #214 from openprocurement/devel

Merge devel in master

Too many changes to show.

To preserve performance only 18 of 18+ files are displayed.

1 -*** Settings ***  
2 -Resource keywords.robot  
3 -Resource resource.robot  
4 -Suite Setup Test Suite Setup  
5 -Suite Teardown Test Suite Teardown  
6 -  
7 -  
8 -*** Variables ***  
9 -${mode} openeu  
10 -@{used_roles} tender_owner provider provider1 viewer  
11 -  
12 -  
13 -*** Test Cases ***  
14 -Можливість оголосити понадпороговий однопредметний тендер  
15 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
16 - ... tender_owner  
17 - ... ${USERS.users['${tender_owner}'].broker}  
18 - ... minimal  
19 - [Teardown] Оновити LAST_MODIFICATION_DATE  
20 - ${tender_data}= Підготовка даних для створення тендера  
21 - ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}  
22 - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data}  
23 - Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}  
24 - Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}  
25 - Log ${TENDER}  
26 -  
27 -  
28 -Можливість знайти понадпороговий однопредметний тендер по ідентифікатору  
29 - [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти тендер  
30 - ... viewer tender_owner provider provider1  
31 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
32 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
33 - ... minimal  
34 - :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}  
35 - \ Дочекатись синхронізації з майданчиком ${username}  
36 - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
37 -  
38 -  
39 -Відображення типу оголошеного тендера  
40 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера  
41 - ... viewer  
42 - ... ${USERS.users['${viewer}'].broker}  
43 - Звірити поле тендера ${viewer} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} procurementMethodType  
44 -  
45 -  
46 -Відображення початку періоду прийому пропозицій понадпорогового тендера  
47 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера  
48 - ... viewer  
49 - ... ${USERS.users['${viewer}'].broker}  
50 - ... minimal  
51 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
52 - \ Звірити дату тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate  
53 -  
54 -  
55 -Відображення закінчення періоду прийому пропозицій понадпорогового тендера  
56 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера  
57 - ... viewer  
58 - ... ${USERS.users['${viewer}'].broker}  
59 - ... minimal  
60 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
61 - \ Звірити дату тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate  
62 -  
63 -  
64 -Відображення закінчення періоду подання скарг на оголошений тендер  
65 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера  
66 - ... viewer  
67 - ... ${USERS.users['${viewer}'].broker}  
68 - ... minimal  
69 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
70 - \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} complaintPeriod.endDate  
71 -  
72 -  
73 -Можливість подати вимогу на умови більше ніж за 10 днів до завершення періоду подання пропозицій  
74 - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги  
75 - ... provider  
76 - ... ${USERS.users['${provider}'].broker}  
77 - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера  
78 - [Teardown] Оновити LAST_MODIFICATION_DATE  
79 - Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}  
80 - ${claim}= Підготовка даних для подання вимоги  
81 - ${complaintID}= Викликати для учасника ${provider}  
82 - ... Створити вимогу  
83 - ... ${TENDER['TENDER_UAID']}  
84 - ... ${claim}  
85 - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID}  
86 - Set To Dictionary ${USERS.users['${provider}']} claim_data=${claim_data}  
87 -  
88 -  
89 -Можливість скасувати вимогу на умови  
90 - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги  
91 - ... provider  
92 - ... ${USERS.users['${provider}'].broker}  
93 - [Teardown] Оновити LAST_MODIFICATION_DATE  
94 - ${cancellation_reason}= create_fake_sentence  
95 - ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason}  
96 - ${cancellation_data}= Create Dictionary data=${data}  
97 - Викликати для учасника ${provider}  
98 - ... Скасувати вимогу  
99 - ... ${TENDER['TENDER_UAID']}  
100 - ... ${USERS.users['${provider}']['claim_data']['complaintID']}  
101 - ... ${cancellation_data}  
102 - Set To Dictionary ${USERS.users['${provider}'].claim_data} cancellation=${cancellation_data}  
103 -  
104 -  
105 -Можливість подати цінову пропозицію першим учасником  
106 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
107 - ... provider  
108 - ... ${USERS.users['${provider}'].broker}  
109 - [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}  
110 - [Teardown] Оновити LAST_MODIFICATION_DATE  
111 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
112 - Log ${bid}  
113 - ${bidresponses}= Create Dictionary  
114 - Set To Dictionary ${bidresponses} bid=${bid}  
115 - Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}  
116 - ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
117 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp=${resp}  
118 - log ${resp}  
119 -  
120 -  
121 -Можливість завантажити публічний документ до пропозиції першим учасником  
122 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
123 - ... provider  
124 - ... ${USERS.users['${provider}'].broker}  
125 - [Teardown] Оновити LAST_MODIFICATION_DATE  
126 - log ${USERS.users['${provider}'].broker}  
127 - ${filepath}= create_fake_doc  
128 - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']}  
129 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload ${bid_doc_upload}  
130 -  
131 -##############################################################################################  
132 -# openEU: Операції із документацію пропозиції  
133 -  
134 -Можливість змінити документацію цінової пропозиції з публічної на приватну  
135 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
136 - ... provider  
137 - ... ${USERS.users['${provider}'].broker}  
138 - ... openeu  
139 - [Teardown] Оновити LAST_MODIFICATION_DATE  
140 - log ${USERS.users['${provider}'].broker}  
141 - ${privat_doc}= create_data_dict data.confidentialityRationale "Only our company sells badgers with pink hair."  
142 - Set To Dictionary ${privat_doc.data} confidentiality=buyerOnly  
143 - ${bidid}= Get Variable Value ${USERS.users['${provider}'].bidresponses['resp'].data.id}  
144 - ${docid}= Get Variable Value ${USERS.users['${provider}'].bidresponses['bid_doc_upload']['upload_response'].data.id}  
145 - ${bid_doc_modified}= Викликати для учасника ${provider} Змінити документацію в ставці ${privat_doc} ${bidid} ${docid}  
146 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_modified=${bid_doc_modified}  
147 -  
148 -  
149 -Можливість завантажити фінансовий документ до пропозиції першим учасником  
150 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
151 - ... provider  
152 - ... ${USERS.users['${provider}'].broker}  
153 - ... openeu  
154 - [Teardown] Оновити LAST_MODIFICATION_DATE  
155 - log ${USERS.users['${provider}'].broker}  
156 - ${filepath}= create_fake_doc  
157 - ${doc_type}= Set variable financial_documents  
158 - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}  
159 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload=${bid_doc_upload}  
160 -  
161 -  
162 -Можливість завантажити кваліфікаційний документ до пропозиції першим учасником  
163 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
164 - ... provider  
165 - ... ${USERS.users['${provider}'].broker}  
166 - ... openeu  
167 - [Teardown] Оновити LAST_MODIFICATION_DATE  
168 - log ${USERS.users['${provider}'].broker}  
169 - ${filepath}= create_fake_doc  
170 - ${doc_type}= Set variable eligibility_documents  
171 - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}  
172 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload=${bid_doc_upload}  
173 -  
174 -  
175 -Можливість завантажити документ для критеріїв прийнятності до пропозиції першим учасником  
176 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
177 - ... provider  
178 - ... ${USERS.users['${provider}'].broker}  
179 - ... openeu  
180 - [Teardown] Оновити LAST_MODIFICATION_DATE  
181 - log ${USERS.users['${provider}'].broker}  
182 - ${filepath}= create_fake_doc  
183 - ${doc_type}= Set variable qualification_documents  
184 - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}  
185 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload=${bid_doc_upload}  
186 -  
187 -##############################################################################################  
188 -  
189 -Можливість подати цінову пропозицію другим учасником  
190 - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції  
191 - ... provider1  
192 - ... ${USERS.users['${provider1}'].broker}  
193 - [Setup] Дочекатись дати початку прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']}  
194 - [Teardown] Оновити LAST_MODIFICATION_DATE  
195 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
196 - Log ${bid}  
197 - ${bidresponses}= Create Dictionary  
198 - Set To Dictionary ${bidresponses} bid=${bid}  
199 - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}  
200 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
201 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}  
202 - log ${resp}  
203 -  
204 -  
205 -Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій  
206 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер  
207 - ... tender_owner  
208 - ... ${USERS.users['${tender_owner}'].broker}  
209 - [Teardown] Оновити LAST_MODIFICATION_DATE  
210 - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description  
211 -  
212 -  
213 -Відображення зміни статусу пропозицій після редагування інформації про тендер  
214 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
215 - ... provider provider1  
216 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
217 - :FOR ${username} IN ${provider} ${provider1}  
218 - \ Дочекатись синхронізації з майданчиком ${username}  
219 - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
220 - \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}  
221 - \ Should Be Equal ${bid.data.status} invalid  
222 - \ Log ${bid}  
223 -  
224 -  
225 -Можливість оновити статус цінової пропозиції першого учасника  
226 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
227 - ... provider  
228 - ... ${USERS.users['${provider}'].broker}  
229 - [Teardown] Оновити LAST_MODIFICATION_DATE  
230 - ${status}= Run Keyword IF '${mode}'=='openeu' Set Variable pending  
231 - ... ELSE IF '${mode}'=='openua' Set Variable active  
232 - ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status}  
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 - [Teardown] Оновити LAST_MODIFICATION_DATE  
242 - ${bid}= Get Variable Value ${USERS.users['${provider1}'].bidresponses['resp']}  
243 - ${bidresponses}= Викликати для учасника ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
244 -  
245 -  
246 -Можливість повторно подати цінову пропозицію другим учасником після першої зміни  
247 - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції  
248 - ... provider1  
249 - ... ${USERS.users['${provider1}'].broker}  
250 - [Teardown] Оновити LAST_MODIFICATION_DATE  
251 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
252 - Log ${bid}  
253 - ${bidresponses}= Create Dictionary  
254 - Set To Dictionary ${bidresponses} bid=${bid}  
255 - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}  
256 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
257 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}  
258 - log ${resp}  
259 -  
260 -  
261 -Неможливість редагувати однопредметний тендер менше ніж за 7 днів до завершення періоду подання пропозицій  
262 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер  
263 - ... tender_owner  
264 - ... ${USERS.users['${tender_owner}'].broker}  
265 - ${no_edit_time}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} -6  
266 - Дочекатись дати ${no_edit_time}  
267 - Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description  
268 -  
269 -  
270 -Неможливість подати вимогу на умови менше ніж за 10 днів до завершення періоду подання пропозицій  
271 - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги  
272 - ... provider  
273 - ... ${USERS.users['${provider}'].broker}  
274 - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера  
275 - ${claim}= Підготовка даних для подання вимоги  
276 - ${complaintID}= Require failure ${provider}  
277 - ... Створити вимогу  
278 - ... ${TENDER['TENDER_UAID']}  
279 - ... ${claim}  
280 - ${claim_data2}= Create Dictionary claim=${claim} complaintID=${complaintID}  
281 - Set To Dictionary ${USERS.users['${provider}']} claim_data2=${claim_data2}  
282 -  
283 -  
284 -  
285 -Можливість продовжити період подання пропозиції на 7 днів  
286 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер  
287 - ... tender_owner  
288 - ... ${USERS.users['${tender_owner}'].broker}  
289 - [Teardown] Оновити LAST_MODIFICATION_DATE  
290 - ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7  
291 - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} tenderPeriod.endDate ${endDate}  
292 -  
293 -  
294 -Можливість подати скаргу на умови більше ніж за 4 дні до завершення періоду подання пропозицій  
295 - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги  
296 - ... provider  
297 - ... ${USERS.users['${provider}'].broker}  
298 - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера  
299 - [Setup] Дочекатись синхронізації з майданчиком ${provider}  
300 - [Teardown] Оновити LAST_MODIFICATION_DATE  
301 - ${claim}= Підготовка даних для подання вимоги  
302 - ${complaintID}= Викликати для учасника ${provider}  
303 - ... Створити вимогу  
304 - ... ${TENDER['TENDER_UAID']}  
305 - ... ${claim}  
306 - ${claim_data3}= Create Dictionary claim=${claim} complaintID=${complaintID}  
307 - Set To Dictionary ${USERS.users['${provider}']} claim_data3=${claim_data3}  
308 -  
309 - ${data}= Create Dictionary status=pending satisfied=${False}  
310 - ${escalation_data}= Create Dictionary data=${data}  
311 - Викликати для учасника ${provider}  
312 - ... Перетворити вимогу в скаргу  
313 - ... ${TENDER['TENDER_UAID']}  
314 - ... ${USERS.users['${provider}']['claim_data3']['complaintID']}  
315 - ... ${escalation_data}  
316 - Set To Dictionary ${USERS.users['${provider}'].claim_data3} escalation=${escalation_data}  
317 -  
318 -  
319 -Можливість скасувати скаргу на умови  
320 - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги  
321 - ... provider  
322 - ... ${USERS.users['${provider}'].broker}  
323 - [Teardown] Оновити LAST_MODIFICATION_DATE  
324 - ${cancellation_reason}= create_fake_sentence  
325 - ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason}  
326 - ${cancellation_data}= Create Dictionary data=${data}  
327 - Викликати для учасника ${provider}  
328 - ... Скасувати вимогу  
329 - ... ${TENDER['TENDER_UAID']}  
330 - ... ${USERS.users['${provider}']['claim_data3']['complaintID']}  
331 - ... ${cancellation_data}  
332 - Set To Dictionary ${USERS.users['${provider}'].claim_data3} cancellation=${cancellation_data}  
333 -  
334 -  
335 -Можливість редагувати однопредметний тендер після продовження періоду подання пропозицій  
336 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер  
337 - ... tender_owner  
338 - ... ${USERS.users['${tender_owner}'].broker}  
339 - [Teardown] Оновити LAST_MODIFICATION_DATE  
340 - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description  
341 -  
342 -  
343 -Відображення зміни статусу пропозицій після другої зміни  
344 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
345 - ... provider provider1  
346 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
347 - :FOR ${username} IN ${provider} ${provider1}  
348 - \ Дочекатись синхронізації з майданчиком ${username}  
349 - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
350 - \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}  
351 - \ Should Be Equal ${bid.data.status} invalid  
352 - \ Log ${bid}  
353 -  
354 -  
355 -Можливість оновити статус цінової пропозиції першого учасника після другої зміни  
356 - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції  
357 - ... provider  
358 - ... ${USERS.users['${provider}'].broker}  
359 - [Teardown] Оновити LAST_MODIFICATION_DATE  
360 - ${status}= Run Keyword IF '${mode}'=='openeu' Set Variable pending  
361 - ... ELSE IF '${mode}'=='openua' Set Variable active  
362 - ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status}  
363 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp=${activestatusresp}  
364 - log ${activestatusresp}  
365 -  
366 -  
367 -Можливість повторно подати цінову пропозицію другим учасником після другої зміни  
368 - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції  
369 - ... provider1  
370 - ... ${USERS.users['${provider1}'].broker}  
371 - [Teardown] Оновити LAST_MODIFICATION_DATE  
372 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
373 - Log ${bid}  
374 - ${bidresponses}= Create Dictionary  
375 - Set To Dictionary ${bidresponses} bid=${bid}  
376 - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}  
377 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
378 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}  
379 - log ${resp}  
380 -  
381 -  
382 -Неможливість подати скаргу на умови менше ніж за 4 дні до завершення періоду подання пропозицій  
383 - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги  
384 - ... provider  
385 - ... ${USERS.users['${provider}'].broker}  
386 - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера  
387 - [Setup] Дочекатись дати закінчення періоду подання скарг ${provider}  
388 - ${claim}= Підготовка даних для подання вимоги  
389 - ${complaintID}= Викликати для учасника ${provider}  
390 - ... Створити вимогу  
391 - ... ${TENDER['TENDER_UAID']}  
392 - ... ${claim}  
393 - ${claim_data4}= Create Dictionary claim=${claim} complaintID=${complaintID}  
394 - Set To Dictionary ${USERS.users['${provider}']} claim_data4=${claim_data4}  
395 -  
396 -  
397 - ${data}= Create Dictionary status=pending satisfied=${False}  
398 - ${escalation_data}= Create Dictionary data=${data}  
399 - Викликати для учасника ${provider}  
400 - ... Перетворити вимогу в скаргу  
401 - ... ${TENDER['TENDER_UAID']}  
402 - ... ${USERS.users['${provider}']['claim_data4']['complaintID']}  
403 - ... ${escalation_data}  
404 - Set To Dictionary ${USERS.users['${provider}'].claim_data4} escalation=${escalation_data}  
405 -  
406 -##############################################################################################  
407 -# OPENEU Pre-Qualification  
408 -##############################################################################################  
409 -  
410 -Відображення статусу першої пропозиції кваліфікації  
411 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
412 - ... tender_owner  
413 - ... ${USERS.users['${tender_owner}'].broker}  
414 - ... openeu  
415 - [Setup] Дочекатись дати закінчення прийому пропозицій ${tender_owner} ${TENDER['TENDER_UAID']}  
416 - Звірити поле тендера із значенням ${tender_owner} ${TENDER['TENDER_UAID']} pending qualifications[0].status  
417 -  
418 -  
419 -Відображення статусу другої пропозиції кваліфікації  
420 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
421 - ... tender_owner  
422 - ... ${USERS.users['${tender_owner}'].broker}  
423 - ... openeu  
424 - [Setup] Дочекатись дати закінчення прийому пропозицій ${tender_owner} ${TENDER['TENDER_UAID']}  
425 - Звірити поле тендера із значенням ${tender_owner} ${TENDER['TENDER_UAID']} pending qualifications[1].status  
426 -  
427 -  
428 -Можливість завантажити документ у кваліфікацію пропозиції першого учасника  
429 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
430 - ... tender_owner  
431 - ... ${USERS.users['${tender_owner}'].broker}  
432 - ... openeu  
433 - [Teardown] Оновити LAST_MODIFICATION_DATE  
434 - ${filepath}= create_fake_doc  
435 - Викликати для учасника ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} 0  
436 -  
437 -  
438 -Можливість підтвердити першу пропозицію кваліфікації  
439 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
440 - ... tender_owner  
441 - ... ${USERS.users['${tender_owner}'].broker}  
442 - ... openeu  
443 - [Teardown] Оновити LAST_MODIFICATION_DATE  
444 - Викликати для учасника ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} 0  
445 -  
446 -  
447 -Можливість завантажити документ у кваліфікацію пропозиції другого учасника  
448 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
449 - ... tender_owner  
450 - ... ${USERS.users['${tender_owner}'].broker}  
451 - ... openeu  
452 - [Teardown] Оновити LAST_MODIFICATION_DATE  
453 - ${filepath}= create_fake_doc  
454 - Викликати для учасника ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} 1  
455 -  
456 -  
457 -Можливість відхилити другу пропозицію кваліфікації  
458 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
459 - ... tender_owner  
460 - ... ${USERS.users['${tender_owner}'].broker}  
461 - ... openeu  
462 - [Teardown] Оновити LAST_MODIFICATION_DATE  
463 - Викликати для учасника ${tender_owner} Відхилити кваліфікацію ${TENDER['TENDER_UAID']} 1  
464 -  
465 -  
466 -Можливість скасувати рішення кваліфікації для другої пропопозиції  
467 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
468 - ... tender_owner  
469 - ... ${USERS.users['${tender_owner}'].broker}  
470 - ... openeu  
471 - [Teardown] Оновити LAST_MODIFICATION_DATE  
472 - Викликати для учасника ${tender_owner} Скасувати кваліфікацію ${TENDER['TENDER_UAID']} 1  
473 -  
474 -  
475 -Можливість підтвердити другу пропозицію кваліфікації  
476 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
477 - ... tender_owner  
478 - ... ${USERS.users['${tender_owner}'].broker}  
479 - ... openeu  
480 - [Teardown] Оновити LAST_MODIFICATION_DATE  
481 - Викликати для учасника ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} 2  
482 -  
483 -  
484 -Можливість затвердити остаточне рішення кваліфікації  
485 - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація  
486 - ... tender_owner  
487 - ... ${USERS.users['${tender_owner}'].broker}  
488 - ... openeu  
489 - [Teardown] Оновити LAST_MODIFICATION_DATE  
490 - Викликати для учасника ${tender_owner} Затвердити остаточне рішення кваліфікації ${TENDER['TENDER_UAID']}  
  1 +*** Settings ***
  2 +Library op_robot_tests.tests_files.service_keywords
  3 +Library Collections
  4 +Resource keywords.robot
  5 +Resource resource.robot
  6 +Resource base_keywords.robot
  7 +
  8 +
  9 +*** Keywords ***
  10 +
  11 +Неможливість редагувати однопредметний тендер менше ніж за 7 днів до завершення періоду подання пропозицій
  12 + ${no_edit_time}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} -6
  13 + Дочекатись дати ${no_edit_time}
  14 + Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
  15 +
  16 +
  17 +Можливість продовжити період подання пропозиції на 7 днів
  18 + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7
  19 + Можливість змінити поле tenderPeriod.endDate тендера на ${endDate}
  20 +
  21 +##############################################################################################
  22 +# BIDDING
  23 +##############################################################################################
  24 +
  25 +Відображення зміни статусу пропозицій на ${status} для учасника ${username}
  26 + Дочекатись синхронізації з майданчиком ${username}
  27 + Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  28 + ${bid_status}= Run As ${username} Отримати інформацію із пропозиції ${TENDER['TENDER_UAID']} status
  29 + Should Be Equal ${bid_status} ${status}
  30 +
  31 +
  32 +Можливість оновити статус цінової пропозиції учасником ${username}
  33 + ${status}= Run Keyword IF '${mode}'=='openeu' Set Variable pending
  34 + ... ELSE IF '${mode}'=='openua' Set Variable active
  35 + ${activestatusresp}= Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status}
  36 + Set To Dictionary ${USERS.users['${username}'].bidresponses} activestatusresp=${activestatusresp}
  37 + log ${activestatusresp}
  38 +
  39 +##############################################################################################
  40 +# OPENEU Bid documentation
  41 +##############################################################################################
  42 +
  43 +Можливість змінити документацію цінової пропозиції з публічної на приватну учасником ${username}
  44 + ${confidentialityRationale}= create_fake_sentence
  45 + ${privat_doc}= create_data_dict data.confidentialityRationale ${confidentialityRationale}
  46 + Set To Dictionary ${privat_doc.data} confidentiality=buyerOnly
  47 + ${docid}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid_doc_upload']['upload_response'].data.id}
  48 + ${bid_doc_modified}= Run As ${username} Змінити документацію в ставці ${privat_doc} ${docid}
  49 + Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_modified=${bid_doc_modified}
  50 +
  51 +
  52 +Можливість завантажити ${doc_type} документ до пропозиції учасником ${username}
  53 + ${filepath}= create_fake_doc
  54 + ${bid_doc_upload}= Run As ${username} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
  55 + Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_upload=${bid_doc_upload}
  56 +
  57 +##############################################################################################
  58 +# OPENEU Pre-Qualification
  59 +##############################################################################################
  60 +
  61 +Можливість завантажити документ у кваліфікацію ${bid_index} пропозиції
  62 + ${filepath}= create_fake_doc
  63 + Run As ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} ${bid_index}
  64 +
  65 +
  66 +Можливість відхилити ${bid_index} пропозиції кваліфікації
  67 + Run As ${tender_owner} Відхилити кваліфікацію ${TENDER['TENDER_UAID']} ${bid_index}
  68 +
  69 +
  70 +Можливість скасувати рішення кваліфікації для ${bid_index} пропопозиції
  71 + Run As ${tender_owner} Скасувати кваліфікацію ${TENDER['TENDER_UAID']} ${bid_index}
  72 +
  73 +
  74 +Можливість підтвердити ${bid_index} пропозицію кваліфікації
  75 + Run As ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} ${bid_index}
  76 +
  77 +
  78 +Можливість затвердити остаточне рішення кваліфікації
  79 + Run As ${tender_owner} Затвердити остаточне рішення кваліфікації ${TENDER['TENDER_UAID']}
@@ -8,12 +8,13 @@ Suite Teardown Test Suite Teardown @@ -8,12 +8,13 @@ Suite Teardown Test Suite Teardown
8 *** Variables *** 8 *** Variables ***
9 @{used_roles} viewer 9 @{used_roles} viewer
10 10
  11 +
11 *** Test Cases *** 12 *** Test Cases ***
12 Можливість знайти закупівлю по ідентифікатору 13 Можливість знайти закупівлю по ідентифікатору
13 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору 14 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
14 ... ${USERS.users['${viewer}'].broker} 15 ... ${USERS.users['${viewer}'].broker}
15 Завантажити дані про тендер 16 Завантажити дані про тендер
16 - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 17 + Run As ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
17 18
18 ############################################################################################## 19 ##############################################################################################
19 # AUCTION 20 # AUCTION
@@ -24,7 +25,7 @@ Suite Teardown Test Suite Teardown @@ -24,7 +25,7 @@ Suite Teardown Test Suite Teardown
24 ... viewer 25 ... viewer
25 ... ${USERS.users['${viewer}'].broker} 26 ... ${USERS.users['${viewer}'].broker}
26 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 27 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
27 - Отримати дані із тендера ${viewer} auctionPeriod.startDate ${TENDER['LOT_ID']} 28 + Отримати дані із тендера ${viewer} ${TENDER['TENDER_UAID']} auctionPeriod.startDate ${TENDER['LOT_ID']}
28 29
29 30
30 Можливість дочекатися початку аукціону 31 Можливість дочекатися початку аукціону
@@ -34,15 +35,19 @@ Suite Teardown Test Suite Teardown @@ -34,15 +35,19 @@ Suite Teardown Test Suite Teardown
34 Дочекатись дати початку аукціону ${viewer} 35 Дочекатись дати початку аукціону ${viewer}
35 36
36 37
  38 +Можливість вичитати посилання на аукціон для глядача
  39 + [Tags] ${USERS.users['${viewer}'].broker}: Участь в аукціоні
  40 + ... viewer
  41 + ... ${USERS.users['${viewer}'].broker}
  42 + Можливість вичитати посилання на аукціон для ${viewer}
  43 +
  44 +
37 Можливість дочекатися завершення аукціону 45 Можливість дочекатися завершення аукціону
38 [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону 46 [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону
39 ... viewer 47 ... viewer
40 ... ${USERS.users['${viewer}'].broker} 48 ... ${USERS.users['${viewer}'].broker}
41 [Teardown] Оновити LAST_MODIFICATION_DATE 49 [Teardown] Оновити LAST_MODIFICATION_DATE
42 - Відкрити сторінку аукціону для глядача  
43 - Wait Until Keyword Succeeds 61 times 30 s Page should contain Аукціон завершився  
44 - Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників  
45 - Close browser 50 + Дочекатись дати закінчення аукціону користувачем ${viewer}
46 51
47 52
48 Відображення дати завершення аукціону 53 Відображення дати завершення аукціону
@@ -50,4 +55,34 @@ Suite Teardown Test Suite Teardown @@ -50,4 +55,34 @@ Suite Teardown Test Suite Teardown
50 ... viewer 55 ... viewer
51 ... ${USERS.users['${viewer}'].broker} 56 ... ${USERS.users['${viewer}'].broker}
52 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 57 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
53 - Отримати дані із тендера ${viewer} auctionPeriod.endDate ${TENDER['LOT_ID']} 58 + Отримати дані із тендера ${viewer} ${TENDER['TENDER_UAID']} auctionPeriod.endDate ${TENDER['LOT_ID']}
  59 +
  60 +
  61 +*** Keywords ***
  62 +Дочекатись дати початку аукціону
  63 + [Arguments] ${username}
  64 + # Can't use that dirty hack here since we don't know
  65 + # the date of auction when creating the procurement :)
  66 + ${auctionStart}= Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} auctionPeriod.startDate ${TENDER['LOT_ID']}
  67 + Дочекатись дати ${auctionStart}
  68 + Оновити LAST_MODIFICATION_DATE
  69 + Дочекатись синхронізації з майданчиком ${username}
  70 +
  71 +
  72 +Можливість вичитати посилання на аукціон для ${username}
  73 + ${url}= Run As ${username} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']}
  74 + Should Be True '${url}'
  75 + Should Match Regexp ${url} ^https?:\/\/auction(?:-sandbox)?\.openprocurement\.org\/tenders\/([0-9A-Fa-f]{32})
  76 + Log URL аукціону для глядача: ${url}
  77 +
  78 +
  79 +Відкрити сторінку аукціону для ${username}
  80 + ${url}= Run as ${username} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']}
  81 + Open browser ${url} ${USERS.users['${username}'].browser}
  82 +
  83 +
  84 +Дочекатись дати закінчення аукціону користувачем ${username}
  85 + Відкрити сторінку аукціону для ${username}
  86 + Wait Until Keyword Succeeds 61 times 30 s Page should contain Аукціон завершився
  87 + Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників
  88 + Close browser
  1 +*** Settings ***
  2 +Library op_robot_tests.tests_files.service_keywords
  3 +Library Collections
  4 +Resource keywords.robot
  5 +Resource resource.robot
  6 +
  7 +
  8 +*** Keywords ***
  9 +Можливість оголосити тендер
  10 + ${number_of_lots}= Convert To Integer ${number_of_lots}
  11 + ${number_of_items}= Convert To Integer ${number_of_items}
  12 + ${tender_parameters}= Create Dictionary
  13 + ... mode=${mode}
  14 + ... number_of_items=${number_of_items}
  15 + ... number_of_lots=${number_of_lots}
  16 + ... tender_meat=${${tender_meat}}
  17 + ... lot_meat=${${lot_meat}}
  18 + ... item_meat=${${item_meat}}
  19 + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters}
  20 + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}
  21 + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data}
  22 + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}
  23 + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}
  24 +
  25 +
  26 +Можливість знайти тендер по ідентифікатору для усіх користувачів
  27 + :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer}
  28 + \ Дочекатись синхронізації з майданчиком ${username}
  29 + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  30 +
  31 +
  32 +Можливість змінити поле ${field_name} тендера на ${field_value}
  33 + Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value}
  34 +
  35 +
  36 +Можливість додати документацію до тендера
  37 + ${filepath}= create_fake_doc
  38 + Run As ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']}
  39 +
  40 +
  41 +Можливість додати предмет закупівлі в тендер
  42 + ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']}
  43 + Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item}
  44 + ${item_id}= get_id_from_object ${item}
  45 + ${item_data}= Create Dictionary item=${item} item_id=${item_id}
  46 + ${item_data}= munch_dict arg=${item_data}
  47 + Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data}
  48 +
  49 +
  50 +Можливість видалити предмет закупівлі з тендера
  51 + Run As ${tender_owner} Видалити предмет закупівлі ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id}
  52 +
  53 +
  54 +Звірити відображення поля ${field} тендера для усіх користувачів
  55 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  56 + \ Звірити відображення поля ${field} тендера для користувача ${username}
  57 +
  58 +
  59 +Звірити відображення поля ${field} тендера із ${data} для користувача ${username}
  60 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${data} ${field}
  61 +
  62 +
  63 +Звірити відображення поля ${field} тендера для користувача ${username}
  64 + Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field}
  65 +
  66 +Звірити відображення дати ${date} тендера для усіх користувачів
  67 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  68 + \ Звірити відображення дати ${date} тендера для користувача ${username}
  69 +
  70 +
  71 +Звірити відображення дати ${date} тендера для користувача ${username}
  72 + Звірити дату тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${date}
  73 +
  74 +
  75 +Звірити відображення поля ${field} усіх предметів для користувача ${username}
  76 + ${number_of_items}= Get Length ${USERS.users['${tender_owner}'].initial_data.data['items']}
  77 + :FOR ${item_index} IN RANGE ${number_of_items}
  78 + \ Звірити відображення поля ${field} ${item_index} предмету для користувача ${username}
  79 +
  80 +
  81 +Звірити відображення поля ${field} ${item_index} предмету для користувача ${username}
  82 + ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]}
  83 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${field}} ${field} ${item_id}
  84 +
  85 +
  86 +Звірити відображення дати ${field} усіх предметів для користувача ${username}
  87 + ${number_of_items}= Get Length ${USERS.users['${tender_owner}'].initial_data.data['items']}
  88 + :FOR ${item_index} IN RANGE ${number_of_items}
  89 + \ Звірити відображення дати ${field} ${item_index} предмету для користувача ${username}
  90 +
  91 +
  92 +Звірити відображення дати ${date} ${item_index} предмету для користувача ${username}
  93 + ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]}
  94 + Звірити дату тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${date}} ${date} ${item_id}
  95 +
  96 +
  97 +Звірити відображення координат усіх предметів для користувача ${username}
  98 + ${number_of_items}= Get Length ${USERS.users['${tender_owner}'].initial_data.data['items']}
  99 + :FOR ${item_index} IN RANGE ${number_of_items}
  100 + \ Звірити відображення координат ${item_index} предмету для користувача ${username}
  101 +
  102 +
  103 +Звірити відображення координат ${item_index} предмету для користувача ${username}
  104 + Звірити координати доставки тендера ${viewer} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} items[${item_index}]
  105 +
  106 +
  107 +Отримати дані із поля ${field} тендера для усіх користувачів
  108 + :FOR ${username} IN ${viewer} ${provider} ${provider1} ${tender_owner}
  109 + \ Отримати дані із поля ${field} тендера для користувача ${username}
  110 +
  111 +
  112 +Отримати дані із поля ${field} тендера для користувача ${username}
  113 + Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} ${field}
  114 +
  115 +
  116 +
  117 +##############################################################################################
  118 +# LOTS
  119 +##############################################################################################
  120 +
  121 +Можливість додати документацію до ${lot_index} лоту
  122 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  123 + ${filepath}= create_fake_doc
  124 + Run As ${tender_owner} Завантажити документ в лот ${filepath} ${TENDER['TENDER_UAID']} ${lot_id}
  125 +
  126 +
  127 +Можливість додати предмет закупівлі в ${lot_index} лот
  128 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  129 + ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']}
  130 + Run As ${tender_owner} Додати предмет закупівлі в лот ${TENDER['TENDER_UAID']} ${lot_id} ${item}
  131 + ${item_id}= get_id_from_object ${item}
  132 + ${item_data}= Create Dictionary item=${item} item_id=${item_id}
  133 + ${item_data}= munch_dict arg=${item_data}
  134 + Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data}
  135 +
  136 +
  137 +Можливість видалити предмет закупівлі з ${lot_index} лоту
  138 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  139 + Run As ${tender_owner} Видалити предмет закупівлі ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id} ${lot_id}
  140 +
  141 +
  142 +Можливість створення лоту
  143 + ${lot}= Підготувати дані для створення лоту ${USERS.users['${tender_owner}'].tender_data.data.value.amount}
  144 + ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot}
  145 + ${lot_id}= get_id_from_object ${lot.data}
  146 + ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id}
  147 + ${lot_data}= munch_dict arg=${lot_data}
  148 + Set To Dictionary ${USERS.users['${tender_owner}']} lot_data=${lot_data}
  149 +
  150 +
  151 +Можливість видалення ${lot_index} лоту
  152 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  153 + Run As ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${lot_id}
  154 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  155 + \ Remove From List ${USERS.users['${username}'].tender_data.data.lots} ${lot_index}
  156 +
  157 +
  158 +Звірити відображення поля ${field} усіх лотів для усіх користувачів
  159 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  160 + \ Звірити відображення поля ${field} усіх лотів для користувача ${username}
  161 +
  162 +
  163 +Звірити відображення поля ${field} усіх лотів для користувача ${username}
  164 + ${number_of_lots}= Get Length ${USERS.users['${tender_owner}'].initial_data.data.lots}
  165 + :FOR ${lot_index} IN RANGE ${number_of_lots}
  166 + \ Звірити відображення поля ${field} ${lot_index} лоту для користувача ${username}
  167 +
  168 +
  169 +Звірити відображення поля ${field} ${lot_index} лоту для користувача ${username}
  170 + Дочекатись синхронізації з майданчиком ${username}
  171 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}]}
  172 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']}
  173 + ... ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}].${field}} ${field}
  174 + ... object_id=${lot_id}
  175 +
  176 +
  177 +Звірити відображення поля ${field} у новоствореному лоті для усіх користувачів
  178 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  179 + \ Звірити відображення поля ${field} у новоствореному лоті для користувача ${username}
  180 +
  181 +
  182 +Звірити відображення поля ${field} у новоствореному лоті для користувача ${username}
  183 + Дочекатись синхронізації з майданчиком ${username}
  184 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']}
  185 + ... ${USERS.users['${tender_owner}'].lot_data.lot.data.${field}} ${field}
  186 + ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id}
  187 +
  188 +
  189 +Можливість змінити на ${percent} відсотки бюджет ${lot_index} лоту
  190 + ${percent}= Convert To Number ${percent}
  191 + ${value}= Evaluate ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}].value.amount}*${percent}/${100}
  192 + Можливість змінити value.amount ${lot_index} лоту на ${value}
  193 +
  194 +
  195 +Можливість змінити ${field} ${lot_index} лоту на ${value}
  196 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  197 + Run As ${tender_owner} Змінити лот ${TENDER['TENDER_UAID']} ${lot_id} ${field} ${value}
  198 +
  199 +##############################################################################################
  200 +# FEATURES
  201 +##############################################################################################
  202 +
  203 +Можливість добавити неціновий показник на тендер
  204 + ${feature}= Підготувати дані для створення нецінового показника
  205 + Set To Dictionary ${feature} featureOf=tenderer
  206 + Run As ${tender_owner} Додати неціновий показник на тендер ${TENDER['TENDER_UAID']} ${feature}
  207 + ${feature_id}= get_id_from_object ${feature}
  208 + ${feature_data}= Create Dictionary feature=${feature} feature_id=${feature_id}
  209 + ${feature_data}= munch_dict arg=${feature_data}
  210 + Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data}
  211 +
  212 +
  213 +Можливість добавити неціновий показник на ${lot_index} лот
  214 + ${feature}= Підготувати дані для створення нецінового показника
  215 + Set To Dictionary ${feature} featureOf=lot
  216 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  217 + Run As ${tender_owner} Додати неціновий показник на лот ${TENDER['TENDER_UAID']} ${feature} ${lot_id}
  218 + ${feature_id}= get_id_from_object ${feature}
  219 + ${feature_data}= Create Dictionary feature=${feature} feature_id=${feature_id}
  220 + ${feature_data}= munch_dict arg=${feature_data}
  221 + Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data}
  222 +
  223 +
  224 +Можливість добавити неціновий показник на ${item_index} предмет
  225 + ${feature}= Підготувати дані для створення нецінового показника
  226 + Set To Dictionary ${feature} featureOf=item
  227 + ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][${item_index}]}
  228 + Run As ${tender_owner} Додати неціновий показник на предмет ${TENDER['TENDER_UAID']} ${feature} ${item_id}
  229 + ${feature_id}= get_id_from_object ${feature}
  230 + ${feature_data}= Create Dictionary feature=${feature} feature_id=${feature_id}
  231 + ${feature_data}= munch_dict arg=${feature_data}
  232 + Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data}
  233 +
  234 +
  235 +Звірити відображення поля ${field} у новоствореному неціновому показнику для усіх користувачів
  236 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  237 + \ Звірити відображення поля ${field} у новоствореному неціновому показнику для користувача ${username}
  238 +
  239 +
  240 +Звірити відображення поля ${field} у новоствореному неціновому показнику для користувача ${username}
  241 + Дочекатись синхронізації з майданчиком ${username}
  242 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']}
  243 + ... ${USERS.users['${tender_owner}'].feature_data.feature.${field}} ${field}
  244 + ... object_id=${USERS.users['${tender_owner}'].feature_data.feature_id}
  245 +
  246 +
  247 +Звірити відображення поля ${field} усіх нецінових показників для усіх користувачів
  248 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  249 + \ Звірити відображення поля ${field} усіх нецінових показників для користувача ${username}
  250 +
  251 +
  252 +Звірити відображення поля ${field} усіх нецінових показників для користувача ${username}
  253 + ${number_of_features}= Get Length ${USERS.users['${tender_owner}'].initial_data.data.features}
  254 + :FOR ${feature_index} IN RANGE ${number_of_features}
  255 + \ Звірити відображення поля ${field} ${feature_index} нецінового показника для користувача ${username}
  256 +
  257 +
  258 +Звірити відображення поля ${field} ${feature_index} нецінового показника для користувача ${username}
  259 + Дочекатись синхронізації з майданчиком ${username}
  260 + ${feature_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.features[${feature_index}]}
  261 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']}
  262 + ... ${USERS.users['${tender_owner}'].initial_data.data.features[${feature_index}].${field}} ${field}
  263 + ... object_id=${feature_id}
  264 +
  265 +
  266 +Можливість видалити ${feature_index} неціновий показник
  267 + ${feature_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['features'][${feature_index}]}
  268 + Run As ${tender_owner} Видалити неціновий показник ${TENDER['TENDER_UAID']} ${feature_id}
  269 + ${feature_index}= get_object_index_by_id ${USERS.users['${tender_owner}'].tender_data.data['features']} ${feature_id}
  270 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  271 + \ Remove From List ${USERS.users['${username}'].tender_data.data['features']} ${feature_index}
  272 +
  273 +##############################################################################################
  274 +# QUESTIONS
  275 +##############################################################################################
  276 +
  277 +Можливість задати запитання на тендер користувачем ${username}
  278 + ${question}= Підготувати дані для запитання
  279 + ${question_resp}= Run As ${username} Задати запитання на тендер ${TENDER['TENDER_UAID']} ${question}
  280 + ${now}= Get Current TZdate
  281 + ${question.data.date}= Set variable ${now}
  282 + ${question_id}= get_id_from_object ${question.data}
  283 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
  284 + ${question_data}= munch_dict arg=${question_data}
  285 + Set To Dictionary ${USERS.users['${username}']} question_data=${question_data}
  286 +
  287 +
  288 +Можливість задати запитання на ${lot_index} лот користувачем ${username}
  289 + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]}
  290 + ${question}= Підготувати дані для запитання
  291 + ${question_resp}= Run As ${username} Задати запитання на лот ${TENDER['TENDER_UAID']} ${lot_id} ${question}
  292 + ${now}= Get Current TZdate
  293 + ${question.data.date}= Set variable ${now}
  294 + ${question_id}= get_id_from_object ${question.data}
  295 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
  296 + ${question_data}= munch_dict arg=${question_data}
  297 + Set To Dictionary ${USERS.users['${username}']} question_data=${question_data}
  298 +
  299 +Можливість задати запитання на ${item_index} предмет користувачем ${username}
  300 + ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][${item_index}]}
  301 + ${question}= Підготувати дані для запитання
  302 + ${question_resp}= Run As ${username} Задати запитання на предмет ${TENDER['TENDER_UAID']} ${item_id} ${question}
  303 + ${now}= Get Current TZdate
  304 + ${question.data.date}= Set variable ${now}
  305 + ${question_id}= get_id_from_object ${question.data}
  306 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
  307 + ${question_data}= munch_dict arg=${question_data}
  308 + Set To Dictionary ${USERS.users['${username}']} question_data=${question_data}
  309 +
  310 +Можливість відповісти на запитання
  311 + ${answer}= Підготувати дані для відповіді на запитання
  312 + Run As ${tender_owner}
  313 + ... Відповісти на запитання ${TENDER['TENDER_UAID']}
  314 + ... ${answer}
  315 + ... ${USERS.users['${provider}'].question_data.question_id}
  316 + Set To Dictionary ${USERS.users['${provider}'].question_data.question.data} answer=${answer.data.answer}
  317 +
  318 +
  319 +Звірити відображення поля ${field} запитання для усіх користувачів
  320 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  321 + \ Звірити відображення поля ${field} запитання для користувача ${username}
  322 +
  323 +
  324 +Звірити відображення поля ${field} запитання для користувача ${username}
  325 + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].question_data.question.data.${field}} ${field} ${USERS.users['${provider}'].question_data.question_id}
  326 +
  327 +##############################################################################################
  328 +# COMPLAINTS
  329 +##############################################################################################
  330 +
  331 +
  332 +Можливість створити чернетку вимоги
  333 + ${claim}= Підготувати дані для подання вимоги
  334 + ${complaintID}= Run As ${provider}
  335 + ... Створити чернетку вимоги
  336 + ... ${TENDER['TENDER_UAID']}
  337 + ... ${claim}
  338 + ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID}
  339 + ${claim_data}= munch_dict arg=${claim_data}
  340 + Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data}
  341 +
  342 +
  343 +Можливість створити вимогу із документацією
  344 + ${claim}= Підготувати дані для подання вимоги
  345 + ${document}= create_fake_doc
  346 + ${complaintID}= Run As ${provider}
  347 + ... Створити вимогу
  348 + ... ${TENDER['TENDER_UAID']}
  349 + ... ${claim}
  350 + ... ${document}
  351 + ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} document=${document}
  352 + ${claim_data}= munch_dict arg=${claim_data}
  353 + Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data}
  354 +
  355 +
  356 +Можливість скасувати вимогу
  357 + ${cancellation_reason}= create_fake_sentence
  358 + ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason}
  359 + ${cancellation_data}= Create Dictionary data=${data}
  360 + ${cancellation_data}= munch_dict arg=${cancellation_data}
  361 + Run As ${provider}
  362 + ... Скасувати вимогу
  363 + ... ${TENDER['TENDER_UAID']}
  364 + ... ${USERS.users['${provider}']['claim_data']['complaintID']}
  365 + ... ${cancellation_data}
  366 + Set To Dictionary ${USERS.users['${provider}'].claim_data} cancellation ${cancellation_data}
  367 +
  368 +Можливість перетворити вимогу в скаргу
  369 + ${data}= Create Dictionary status=pending satisfied=${False}
  370 + ${escalation_data}= Create Dictionary data=${data}
  371 + ${escalation_data}= munch_dict arg=${escalation_data}
  372 + Run As ${provider}
  373 + ... Перетворити вимогу в скаргу
  374 + ... ${TENDER['TENDER_UAID']}
  375 + ... ${USERS.users['${provider}']['claim_data']['complaintID']}
  376 + ... ${escalation_data}
  377 + Set To Dictionary ${USERS.users['${provider}'].claim_data} escalation ${escalation_data}
  378 +
  379 +
  380 +
  381 +Звірити відображення поля ${field} вимоги із ${data} для користувача ${username}
  382 + Звірити поле скарги із значенням ${username}
  383 + ... ${data}
  384 + ... ${field}
  385 + ... ${USERS.users['${provider}'].claim_data['complaintID']}
  386 +
  387 +
  388 +Можливість відповісти на вимогу
  389 + ${answer_data}= test_claim_answer_data
  390 + Log ${answer_data}
  391 + Run As ${tender_owner}
  392 + ... Відповісти на вимогу
  393 + ... ${TENDER['TENDER_UAID']}
  394 + ... ${USERS.users['${provider}']['claim_data']['complaintID']}
  395 + ... ${answer_data}
  396 + ${claim_data}= Create Dictionary claim_answer=${answer_data}
  397 + ${claim_data}= munch_dict arg=${claim_data}
  398 + Set To Dictionary ${USERS.users['${tender_owner}']} claim_data ${claim_data}
  399 +
  400 +
  401 +Можливість підтвердити задоволення вимоги про виправлення умов закупівлі
  402 + ${data}= Create Dictionary status=resolved satisfied=${True}
  403 + ${confirmation_data}= Create Dictionary data=${data}
  404 + ${confirmation_data}= munch_dict arg=${confirmation_data}
  405 + Run As ${provider}
  406 + ... Підтвердити вирішення вимоги
  407 + ... ${TENDER['TENDER_UAID']}
  408 + ... ${USERS.users['${provider}']['claim_data']['complaintID']}
  409 + ... ${confirmation_data}
  410 + Set To Dictionary ${USERS.users['${provider}']['claim_data']} claim_answer_confirm ${confirmation_data}
  411 +
  412 +
  413 +##############################################################################################
  414 +# BIDDING
  415 +##############################################################################################
  416 +
  417 +Можливість подати цінову пропозицію користувачем ${username}
  418 + ${bid}= Підготувати дані для подання пропозиції ${username}
  419 + ${bidresponses}= Create Dictionary bid=${bid}
  420 + Set To Dictionary ${USERS.users['${username}']} bidresponses=${bidresponses}
  421 + ${resp}= Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  422 + Set To Dictionary ${USERS.users['${username}'].bidresponses} resp=${resp}
  423 +
  424 +
  425 +Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username}
  426 + ${bid}= Підготувати дані для подання пропозиції ${username}
  427 + ${values}= Get Variable Value ${bid.data.lotValues[0]}
  428 + Remove From Dictionary ${bid.data} lotValues
  429 + Set_To_Object ${bid} data ${values}
  430 + Require Failure ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  431 +
  432 +
  433 +Неможливість подати цінову пропозицію без нецінових показників користувачем ${username}
  434 + ${bid}= Підготувати дані для подання пропозиції ${username}
  435 + Remove From Dictionary ${bid.data} parameters
  436 + Require Failure ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  437 +
  438 +
  439 +Можливість змінити пропозицію до ${amount} користувачем ${username}
  440 + ${field}= Set Variable If ${number_of_lots} == 0 value.amount lotValues[0].value.amount
  441 + ${fixbidto10resp}= Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${field} ${amount}
  442 +
  443 +
  444 +Можливість завантажити документ в пропозицію користувачем ${username}
  445 + ${filepath}= create_fake_doc
  446 + ${bid_doc_upload}= Run As ${username} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']}
  447 + Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_upload=${bid_doc_upload}
  448 +
  449 +
  450 +Можливість змінити документацію цінової пропозиції користувачем ${username}
  451 + ${filepath}= create_fake_doc
  452 + ${docid}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid_doc_upload']['upload_response'].data.id}
  453 + ${bid_doc_modified}= Run As ${username} Змінити документ в ставці ${filepath} ${docid}
  454 + Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_modified=${bid_doc_modified}
  455 +
  456 +
  457 +Можливість скасувати цінову пропозицію користувачем ${username}
  458 + ${canceledbidresp}= Run As ${username} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']}
@@ -10,7 +10,8 @@ Library openprocurement_client_helper.py @@ -10,7 +10,8 @@ Library openprocurement_client_helper.py
10 Log Many ${USERS.users['${username}'].id_map} 10 Log Many ${USERS.users['${username}'].id_map}
11 ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].id_map} ${tender_uaid} 11 ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].id_map} ${tender_uaid}
12 Run Keyword And Return If ${status} Get From Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} 12 Run Keyword And Return If ${status} Get From Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid}
13 - ${tender_id}= get_tender_id_by_uaid ${tender_uaid} ${USERS.users['${username}'].client} 13 + Call Method ${USERS.users['${username}'].client} get_tenders
  14 + ${tender_id}= Wait Until Keyword Succeeds 5x 30 sec get_tender_id_by_uaid ${tender_uaid} ${USERS.users['${username}'].client}
14 Set To Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} ${tender_id} 15 Set To Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} ${tender_id}
15 [return] ${tender_id} 16 [return] ${tender_id}
16 17
@@ -28,6 +29,37 @@ Library openprocurement_client_helper.py @@ -28,6 +29,37 @@ Library openprocurement_client_helper.py
28 Log Variables 29 Log Variables
29 30
30 31
  32 +Завантажити документ
  33 + [Arguments] ${username} ${filepath} ${tender_uaid}
  34 + Log ${username}
  35 + Log ${tender_uaid}
  36 + Log ${filepath}
  37 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  38 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
  39 + ${reply}= Call Method ${USERS.users['${username}'].client} upload_document ${filepath} ${tender}
  40 + Log object data ${reply} reply
  41 + [return] ${reply}
  42 +
  43 +
  44 +Отримати документ
  45 + [Arguments] ${username} ${tender_uaid} ${url}
  46 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  47 + ${token}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].access.token}
  48 + ${contents} ${filename}= Call Method ${USERS.users['${username}'].client} get_file ${tender} ${url} ${token}
  49 + [return] ${contents} ${filename}
  50 +
  51 +
  52 +Отримати посилання на аукціон для глядача
  53 + [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty}
  54 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  55 + ${auctionUrl}= Run Keyword IF '${lot_id}' Set Variable ${tender.data.lots[${lot_index}].auctionUrl}
  56 + ... ELSE Set Variable ${tender.data.auctionUrl}
  57 + [return] ${auctionUrl}
  58 +
  59 +##############################################################################
  60 +# Tender operations
  61 +##############################################################################
  62 +
31 Підготувати дані для оголошення тендера 63 Підготувати дані для оголошення тендера
32 [Documentation] Це слово використовується в майданчиків, тому потрібно, щоб воно було і тут 64 [Documentation] Це слово використовується в майданчиків, тому потрібно, щоб воно було і тут
33 [Arguments] ${username} ${tender_data} 65 [Arguments] ${username} ${tender_data}
@@ -41,8 +73,6 @@ Library openprocurement_client_helper.py @@ -41,8 +73,6 @@ Library openprocurement_client_helper.py
41 ${access_token}= Get Variable Value ${tender.access.token} 73 ${access_token}= Get Variable Value ${tender.access.token}
42 Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} 74 Set To Dictionary ${USERS.users['${username}']} access_token=${access_token}
43 Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} 75 Set To Dictionary ${USERS.users['${username}']} tender_data=${tender}
44 - Log ${access_token}  
45 - Log ${tender.data.id}  
46 Log ${USERS.users['${username}'].tender_data} 76 Log ${USERS.users['${username}'].tender_data}
47 [return] ${tender.data.tenderID} 77 [return] ${tender.data.tenderID}
48 78
@@ -50,14 +80,17 @@ Library openprocurement_client_helper.py @@ -50,14 +80,17 @@ Library openprocurement_client_helper.py
50 Пошук тендера по ідентифікатору 80 Пошук тендера по ідентифікатору
51 [Arguments] ${username} ${tender_uaid} 81 [Arguments] ${username} ${tender_uaid}
52 ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} 82 ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid}
53 - ${tender}= openprocurement_client.Отримати тендер ${username} ${internalid} 83 + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid}
  84 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
  85 + Set To Dictionary ${USERS.users['${username}']} tender_data=${tender}
  86 + ${tender}= munch_dict arg=${tender}
  87 + Log ${tender}
54 [return] ${tender} 88 [return] ${tender}
55 89
56 90
57 Оновити сторінку з тендером 91 Оновити сторінку з тендером
58 [Arguments] ${username} ${tender_uaid} 92 [Arguments] ${username} ${tender_uaid}
59 - ${tender_data}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
60 - Log ${tender_data} 93 + openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
61 94
62 95
63 Отримати інформацію із тендера 96 Отримати інформацію із тендера
@@ -75,12 +108,6 @@ Library openprocurement_client_helper.py @@ -75,12 +108,6 @@ Library openprocurement_client_helper.py
75 Fail Field not found: ${field_name} 108 Fail Field not found: ${field_name}
76 109
77 110
78 -Отримати інформацію із запитання  
79 - [Arguments] ${username} ${tender_uaid} ${question_id} ${field_name}  
80 - ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${question_id}  
81 - Run Keyword And Return openprocurement_client.Отримати інформацію із тендера ${username} ${tender_uaid} ${field_name}  
82 -  
83 -  
84 Внести зміни в тендер 111 Внести зміни в тендер
85 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} 112 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
86 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 113 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
@@ -92,17 +119,9 @@ Library openprocurement_client_helper.py @@ -92,17 +119,9 @@ Library openprocurement_client_helper.py
92 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 119 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
93 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} 120 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue}
94 121
95 -  
96 -Отримати тендер  
97 - [Arguments] ${username} ${internalid}  
98 - Log ${username}  
99 - Log ${internalid}  
100 - ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid}  
101 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}  
102 - Set To Dictionary ${USERS.users['${username}']} tender_data=${tender}  
103 - Log ${tender}  
104 - [Return] ${tender}  
105 - 122 +##############################################################################
  123 +# Item operations
  124 +##############################################################################
106 125
107 Додати предмет закупівлі 126 Додати предмет закупівлі
108 [Arguments] ${username} ${tender_uaid} ${item} 127 [Arguments] ${username} ${tender_uaid} ${item}
@@ -111,163 +130,19 @@ Library openprocurement_client_helper.py @@ -111,163 +130,19 @@ Library openprocurement_client_helper.py
111 Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 130 Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
112 131
113 132
  133 +Отримати інформацію із предмету
  134 + [Arguments] ${username} ${tender_uaid} ${item_id} ${field_name}
  135 + ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${item_id}
  136 + Run Keyword And Return openprocurement_client.Отримати інформацію із тендера ${username} ${tender_uaid} ${field_name}
  137 +
  138 +
114 Видалити предмет закупівлі 139 Видалити предмет закупівлі
115 - [Arguments] ${username} ${tender_uaid} ${item_id} 140 + [Arguments] ${username} ${tender_uaid} ${item_id} ${lot_id}=${Empty}
116 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 141 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
117 ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id} 142 ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id}
118 Remove From List ${tender.data['items']} ${item_index} 143 Remove From List ${tender.data['items']} ${item_index}
119 Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 144 Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
120 145
121 -  
122 -Задати питання  
123 - [Arguments] ${username} ${tender_uaid} ${question}  
124 - Log ${question}  
125 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
126 - ${biddingresponse}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question}  
127 - [return] ${biddingresponse}  
128 -  
129 -  
130 -Відповісти на питання  
131 - [Arguments] ${username} ${tender_uaid} ${question} ${answer_data} ${question_id}  
132 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
133 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}  
134 - ${answer_data.data.id}= openprocurement_client.Отримати інформацію із запитання ${username} ${tender_uaid} ${question_id} id  
135 - ${question_with_answer}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data}  
136 - Log object data ${question_with_answer} question_with_answer  
137 - [return] ${question_with_answer}  
138 -  
139 -  
140 -Подати цінову пропозицію  
141 - [Arguments] ${username} ${tender_uaid} ${bid}  
142 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
143 - ${lots}= Run Keyword If "${mode}" == "single" Get Variable Value ${tender.data.lots}  
144 - ${bid}= Run Keyword If ${lots} test_bid_data multiLot  
145 - ... ELSE Set Variable ${bid}  
146 - Run Keyword If ${lots}  
147 - ... Run Keywords  
148 - ... Remove From List ${bid.data.lotValues} 1  
149 - ... AND  
150 - ... Set_To_Object ${bid.data.lotValues[0]} relatedLot ${lots[0].id}  
151 - ${biddingresponse}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid}  
152 - Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id=${biddingresponse['data']['id']}  
153 - Log ${biddingresponse}  
154 - [return] ${biddingresponse}  
155 -  
156 -  
157 -Змінити цінову пропозицію  
158 - [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}  
159 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
160 - ${lots}= Run Keyword If "${mode}" == "single" Get Variable Value ${tender.data.lots}  
161 - ${fieldname}= Run Keyword If ${lots} Set Variable lotValues.0.${fieldname}  
162 - ... ELSE Set Variable ${fieldname}  
163 - ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}  
164 - Set_To_Object ${bid.data} ${fieldname} ${fieldvalue}  
165 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}  
166 - ${changed_bid}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${bid}  
167 - Log ${changed_bid}  
168 - [return] ${changed_bid}  
169 -  
170 -  
171 -Скасувати цінову пропозицію  
172 - [Arguments] ${username} ${tender_uaid} ${bid}  
173 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
174 - Set To Dictionary ${bid.data} id=${USERS.users['${username}'].bidresponses['bid'].data.id}  
175 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}  
176 - ${changed_bid}= Call Method ${USERS.users['${username}'].client} delete_bid ${tender} ${bid}  
177 - Log ${changed_bid}  
178 - [return] ${changed_bid}  
179 -  
180 -  
181 -Прийняти цінову пропозицію  
182 - [Arguments] ${username} ${tender_uaid} ${award}  
183 - ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid}  
184 - ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid}  
185 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}  
186 - ${award_activeted_response}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award}  
187 - Log ${award_activeted_response}  
188 - [return] ${award_activeted_response}  
189 -  
190 -  
191 -Завантажити документ в ставку  
192 - [Arguments] ${username} ${path} ${tender_uaid} ${doc_type}=documents  
193 - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}  
194 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
195 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}  
196 - ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document ${path} ${tender} ${bid_id} ${doc_type}  
197 - ${uploaded_file} = Create Dictionary filepath=${path} upload_response=${response}  
198 - Log ${response}  
199 - Log object data ${uploaded_file}  
200 - [return] ${uploaded_file}  
201 -  
202 -  
203 -Змінити документ в ставці  
204 - [Arguments] ${username} ${path} ${bidid} ${docid}  
205 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${TENDER['TENDER_UAID']}  
206 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}  
207 - ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document ${path} ${tender} ${bidid} ${docid}  
208 - ${uploaded_file} = Create Dictionary filepath=${path} upload_response=${response}  
209 - Log ${response}  
210 - Log object data ${uploaded_file}  
211 - [return] ${uploaded_file}  
212 -  
213 -  
214 -Змінити документацію в ставці  
215 - [Arguments] ${username} ${doc_data} ${bidid} ${docid}  
216 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${TENDER['TENDER_UAID']}  
217 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}  
218 - ${response}= Call Method ${USERS.users['${username}'].client} patch_bid_document ${tender} ${doc_data} ${bidid} ${docid}  
219 - Log ${response}  
220 - [return] ${response}  
221 -  
222 -  
223 -Завантажити документ  
224 - [Arguments] ${username} ${filepath} ${tender_uaid}  
225 - Log ${username}  
226 - Log ${tender_uaid}  
227 - Log ${filepath}  
228 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
229 - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}  
230 - ${reply}= Call Method ${USERS.users['${username}'].client} upload_document ${filepath} ${tender}  
231 - Log object data ${reply} reply  
232 - [return] ${reply}  
233 -  
234 -  
235 -Отримати посилання на аукціон для глядача  
236 - [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty}  
237 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
238 - ${lot_auctionUrl}= Run Keyword If "${mode}" == "single" Get Variable Value ${tender.data.lots[0].auctionUrl}  
239 - ${auctionUrl}= Run Keyword If ${lot_auctionUrl} Set Variable ${lot_auctionUrl}  
240 - ... ELSE IF '${lot_id}' Set Variable ${tender.data.lots[${lot_index}].auctionUrl}  
241 - ... ELSE Set Variable ${tender.data.auctionUrl}  
242 - [return] ${auctionUrl}  
243 -  
244 -  
245 -Отримати посилання на аукціон для учасника  
246 - [Arguments] ${username} ${tender_uaid}  
247 - ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}  
248 - ${lot_participationUrl}= Run Keyword If "${mode}" == "single" Get Variable Value ${bid.data.lots[0].participationUrl}  
249 - ${participationUrl}= Run Keyword If ${lot_participationUrl} Set Variable ${participationUrl}  
250 - ... ELSE Set Variable ${bid.data.participationUrl}  
251 - [return] ${participationUrl}  
252 -  
253 -  
254 -Отримати пропозицію  
255 - [Arguments] ${username} ${tender_uaid}  
256 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
257 - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}  
258 - ${token}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].access.token}  
259 - ${bid}= Call Method ${USERS.users['${username}'].client} get_bid ${tender} ${bid_id} ${token}  
260 - [return] ${bid}  
261 -  
262 -  
263 -Отримати документ  
264 - [Arguments] ${username} ${tender_uaid} ${url}  
265 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
266 - ${token}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].access.token}  
267 - ${contents} ${filename}= Call Method ${USERS.users['${username}'].client} get_file ${tender} ${url} ${token}  
268 - Log ${filename}  
269 - [return] ${contents} ${filename}  
270 -  
271 ############################################################################## 146 ##############################################################################
272 # Lot operations 147 # Lot operations
273 ############################################################################## 148 ##############################################################################
@@ -305,16 +180,6 @@ Library openprocurement_client_helper.py @@ -305,16 +180,6 @@ Library openprocurement_client_helper.py
305 Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 180 Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
306 181
307 182
308 -Задати питання до лоту  
309 - [Arguments] ${username} ${tender_uaid} ${lot_id} ${question}  
310 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}  
311 - ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id}  
312 - ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id}  
313 - ${question}= test_lot_question_data ${question} ${lot_id}  
314 - ${biddingresponse}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question}  
315 - [return] ${biddingresponse}  
316 -  
317 -  
318 Завантажити документ в лот 183 Завантажити документ в лот
319 [Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id} 184 [Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id}
320 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 185 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
@@ -335,14 +200,111 @@ Library openprocurement_client_helper.py @@ -335,14 +200,111 @@ Library openprocurement_client_helper.py
335 [return] ${reply} 200 [return] ${reply}
336 201
337 202
338 -Подати цінову пропозицію на лоти  
339 - [Arguments] ${username} ${tender_uaid} ${bid} ${lots_ids} 203 +Скасувати лот
  204 + [Arguments] ${username} ${tender_uaid} ${lot_id} ${cancellation_reason} ${document} ${new_description}
  205 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  206 + ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id}
  207 + ${data}= Create dictionary reason=${cancellation_reason} cancellationOf=lot relatedLot=${lot_id}
  208 + ${cancellation_data}= Create dictionary data=${data}
  209 + ${cancellation_data}= munch_dict arg=${cancellation_data}
  210 + ${cancel_reply}= Call Method ${USERS.users['${username}'].client} create_cancellation ${tender} ${cancellation_data}
  211 + ${cancellation_id}= Set variable ${cancel_reply.data.id}
  212 +
  213 + ${document_id}= openprocurement_client.Завантажити документацію до запиту на скасування ${username} ${tender_uaid} ${cancellation_id} ${document}
  214 +
  215 + openprocurement_client.Змінити опис документа в скасуванні ${username} ${tender_uaid} ${cancellation_id} ${document_id} ${new_description}
  216 +
  217 + openprocurement_client.Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id}
  218 +
  219 +
  220 +##############################################################################
  221 +# Feature operations
  222 +##############################################################################
  223 +
  224 +Додати неціновий показник на тендер
  225 + [Arguments] ${username} ${tender_uaid} ${feature}
  226 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  227 + Append To List ${tender.data['features']} ${feature}
  228 + Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  229 +
  230 +
  231 +Додати неціновий показник на предмет
  232 + [Arguments] ${username} ${tender_uaid} ${feature} ${item_id}
  233 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  234 + ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id}
  235 + ${item_id}= Get Variable Value ${tender.data['items'][${item_index}].id}
  236 + Set To Dictionary ${feature} relatedItem=${item_id}
  237 + Append To List ${tender.data['features']} ${feature}
  238 + Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  239 +
  240 +
  241 +Додати неціновий показник на лот
  242 + [Arguments] ${username} ${tender_uaid} ${feature} ${lot_id}
  243 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  244 + ${lot_index}= get_object_index_by_id ${tender.data['lots']} ${lot_id}
  245 + ${lot_id}= Get Variable Value ${tender.data['lots'][${lot_index}].id}
  246 + Set To Dictionary ${feature} relatedItem=${lot_id}
  247 + Append To List ${tender.data['features']} ${feature}
  248 + Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  249 +
  250 +
  251 +Отримати інформацію із нецінового показника
  252 + [Arguments] ${username} ${tender_uaid} ${feature_id} ${field_name}
  253 + ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${feature_id}
  254 + Run Keyword And Return openprocurement_client.Отримати інформацію із тендера ${username} ${tender_uaid} ${field_name}
  255 +
  256 +
  257 +Видалити неціновий показник
  258 + [Arguments] ${username} ${tender_uaid} ${feature_id} ${obj_id}=${Empty}
  259 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  260 + ${feature_index}= get_object_index_by_id ${tender.data['features']} ${feature_id}
  261 + Remove From List ${tender.data['features']} ${feature_index}
  262 + Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  263 +
  264 +
  265 +##############################################################################
  266 +# Questions
  267 +##############################################################################
  268 +
  269 +Задати запитання на предмет
  270 + [Arguments] ${username} ${tender_uaid} ${item_id} ${question}
  271 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  272 + ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id}
  273 + ${item_id}= Get Variable Value ${tender.data['items'][${item_index}].id}
  274 + ${question}= test_related_question ${question} item ${item_id}
  275 + ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question}
  276 + [return] ${reply}
  277 +
  278 +
  279 +Задати запитання на лот
  280 + [Arguments] ${username} ${tender_uaid} ${lot_id} ${question}
340 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 281 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
341 - : FOR ${index} ${lot_id} IN ENUMERATE @{lots_ids}  
342 - \ ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id}  
343 - \ ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id}  
344 - \ Set To Dictionary ${bid.data.lotValues[${index}]} relatedLot=${lot_id}  
345 - ${reply}= openprocurement_client.Подати цінову пропозицію ${username} ${tender_uaid} ${bid} 282 + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id}
  283 + ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id}
  284 + ${question}= test_related_question ${question} lot ${lot_id}
  285 + ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question}
  286 + [return] ${reply}
  287 +
  288 +
  289 +Задати запитання на тендер
  290 + [Arguments] ${username} ${tender_uaid} ${question}
  291 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  292 + ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question}
  293 + [return] ${reply}
  294 +
  295 +
  296 +Отримати інформацію із запитання
  297 + [Arguments] ${username} ${tender_uaid} ${question_id} ${field_name}
  298 + ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${question_id}
  299 + Run Keyword And Return openprocurement_client.Отримати інформацію із тендера ${username} ${tender_uaid} ${field_name}
  300 +
  301 +
  302 +Відповісти на запитання
  303 + [Arguments] ${username} ${tender_uaid} ${answer_data} ${question_id}
  304 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  305 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
  306 + ${answer_data.data.id}= openprocurement_client.Отримати інформацію із запитання ${username} ${tender_uaid} ${question_id} id
  307 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data}
346 [return] ${reply} 308 [return] ${reply}
347 309
348 ############################################################################## 310 ##############################################################################
@@ -465,6 +427,92 @@ Library openprocurement_client_helper.py @@ -465,6 +427,92 @@ Library openprocurement_client_helper.py
465 Log ${reply} 427 Log ${reply}
466 428
467 ############################################################################## 429 ##############################################################################
  430 +# Bid operations
  431 +##############################################################################
  432 +
  433 +Подати цінову пропозицію
  434 + [Arguments] ${username} ${tender_uaid} ${bid}
  435 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  436 + ${reply}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid}
  437 + Set To Dictionary ${USERS.users['${username}']} access_token=${reply['access']['token']}
  438 + Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id=${reply['data']['id']}
  439 + Log ${reply}
  440 + [return] ${reply}
  441 +
  442 +
  443 +Змінити цінову пропозицію
  444 + [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
  445 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  446 + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}
  447 + Set_To_Object ${bid.data} ${fieldname} ${fieldvalue}
  448 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
  449 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${bid}
  450 + Log ${reply}
  451 + [return] ${reply}
  452 +
  453 +
  454 +Скасувати цінову пропозицію
  455 + [Arguments] ${username} ${tender_uaid}
  456 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  457 + ${bid_id}= openprocurement_client.Отримати інформацію із пропозиції ${username} ${tender_uaid} id
  458 + ${reply}= Call Method ${USERS.users['${username}'].client} delete_bid ${tender} ${bid_id} ${USERS.users['${username}'].bidresponses['resp'].access.token}
  459 + Log ${reply}
  460 + [return] ${reply}
  461 +
  462 +Завантажити документ в ставку
  463 + [Arguments] ${username} ${path} ${tender_uaid} ${doc_type}=documents
  464 + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}
  465 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  466 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
  467 + ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document ${path} ${tender} ${bid_id} ${doc_type}
  468 + ${uploaded_file} = Create Dictionary filepath=${path} upload_response=${response}
  469 + Log object data ${uploaded_file}
  470 + [return] ${uploaded_file}
  471 +
  472 +
  473 +Змінити документ в ставці
  474 + [Arguments] ${username} ${path} ${docid}
  475 + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}
  476 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${TENDER['TENDER_UAID']}
  477 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
  478 + ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document ${path} ${tender} ${bid_id} ${docid}
  479 + ${uploaded_file} = Create Dictionary filepath=${path} upload_response=${response}
  480 + Log object data ${uploaded_file}
  481 + [return] ${uploaded_file}
  482 +
  483 +
  484 +Змінити документацію в ставці
  485 + [Arguments] ${username} ${doc_data} ${docid}
  486 + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}
  487 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${TENDER['TENDER_UAID']}
  488 + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token}
  489 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_bid_document ${tender} ${doc_data} ${bid_id} ${docid}
  490 + [return] ${reply}
  491 +
  492 +
  493 +Отримати пропозицію
  494 + [Arguments] ${username} ${tender_uaid}
  495 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  496 + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id}
  497 + ${token}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].access.token}
  498 + ${reply}= Call Method ${USERS.users['${username}'].client} get_bid ${tender} ${bid_id} ${token}
  499 + [return] ${reply}
  500 +
  501 +
  502 +Отримати інформацію із пропозиції
  503 + [Arguments] ${username} ${tender_uaid} ${field}
  504 + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}
  505 + [return] ${bid.data.${field}}
  506 +
  507 +
  508 +Отримати посилання на аукціон для учасника
  509 + [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty}
  510 + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}
  511 + ${participationUrl}= Run Keyword IF '${lot_id}' Set Variable ${bid.data.lotValues[${lot_index}].participationUrl}
  512 + ... ELSE Set Variable ${bid.data.participationUrl}
  513 + [return] ${participationUrl}
  514 +
  515 +##############################################################################
468 # Qualification operations 516 # Qualification operations
469 ############################################################################## 517 ##############################################################################
470 518
@@ -473,14 +521,9 @@ Library openprocurement_client_helper.py @@ -473,14 +521,9 @@ Library openprocurement_client_helper.py
473 ... [Arguments] Username, tender uaid, qualification number and document to upload 521 ... [Arguments] Username, tender uaid, qualification number and document to upload
474 ... [Description] Find tender using uaid, and call upload_qualification_document 522 ... [Description] Find tender using uaid, and call upload_qualification_document
475 ... [Return] Reply of API 523 ... [Return] Reply of API
476 - [Arguments] ${username} ${document} ${tender_uaid} ${award_num} ${lot_id}=${Empty} 524 + [Arguments] ${username} ${document} ${tender_uaid} ${award_num}
477 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 525 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
478 ${doc}= Call Method ${USERS.users['${username}'].client} upload_award_document ${document} ${tender} ${tender.data.awards[${award_num}].id} 526 ${doc}= Call Method ${USERS.users['${username}'].client} upload_award_document ${document} ${tender} ${tender.data.awards[${award_num}].id}
479 - ${lot_index}= Run Keyword If '${lot_id}' get_object_index_by_id ${tender.data.lots} ${lot_id}  
480 - Run Keyword If '${lot_id}'  
481 - ... Set To Object ${doc.data} documentOf lot  
482 - ... Set To Object ${doc.data} relatedItem ${tender.data.lots[${lot_index}].id}  
483 - ... Call Method ${USERS.users['${username}'].client} patch_document ${tender} ${doc}  
484 Log ${doc} 527 Log ${doc}
485 [Return] ${doc} 528 [Return] ${doc}
486 529
@@ -494,6 +537,10 @@ Library openprocurement_client_helper.py @@ -494,6 +537,10 @@ Library openprocurement_client_helper.py
494 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 537 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
495 ${award}= create_data_dict data.status active 538 ${award}= create_data_dict data.status active
496 Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} 539 Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id}
  540 + Run Keyword IF 'open' in '${mode}'
  541 + ... Set To Dictionary ${award.data}
  542 + ... qualified=${True}
  543 + ... eligible=${True}
497 ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} 544 ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award}
498 Log ${reply} 545 Log ${reply}
499 546
@@ -503,8 +550,8 @@ Library openprocurement_client_helper.py @@ -503,8 +550,8 @@ Library openprocurement_client_helper.py
503 ... [Arguments] Username, tender uaid and award number 550 ... [Arguments] Username, tender uaid and award number
504 ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_award 551 ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_award
505 ... [Return] Reply of API 552 ... [Return] Reply of API
506 - [Arguments] ${username} ${tender_uid} ${award_num}  
507 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid} 553 + [Arguments] ${username} ${tender_uaid} ${award_num}
  554 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
508 ${award}= create_data_dict data.status unsuccessful 555 ${award}= create_data_dict data.status unsuccessful
509 Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} 556 Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id}
510 ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} 557 ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award}
@@ -517,8 +564,8 @@ Library openprocurement_client_helper.py @@ -517,8 +564,8 @@ Library openprocurement_client_helper.py
517 ... [Arguments] Username, tender uaid and award number 564 ... [Arguments] Username, tender uaid and award number
518 ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_award 565 ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_award
519 ... [Return] Reply of API 566 ... [Return] Reply of API
520 - [Arguments] ${username} ${tender_uid} ${award_num}  
521 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid} 567 + [Arguments] ${username} ${tender_uaid} ${award_num}
  568 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
522 ${award}= create_data_dict data.status cancelled 569 ${award}= create_data_dict data.status cancelled
523 Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} 570 Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id}
524 ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} 571 ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award}
@@ -640,8 +687,8 @@ Library openprocurement_client_helper.py @@ -640,8 +687,8 @@ Library openprocurement_client_helper.py
640 ... [Arguments] Username, tender uaid and qualification number 687 ... [Arguments] Username, tender uaid and qualification number
641 ... [Description] Find tender using uaid, create data dict with active status and call patch_qualification 688 ... [Description] Find tender using uaid, create data dict with active status and call patch_qualification
642 ... [Return] Reply of API 689 ... [Return] Reply of API
643 - [Arguments] ${username} ${tender_uid} ${qualification_num}  
644 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid} 690 + [Arguments] ${username} ${tender_uaid} ${qualification_num}
  691 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
645 ${qualification}= create_data_dict data.status active 692 ${qualification}= create_data_dict data.status active
646 Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} eligible=${True} qualified=${True} 693 Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} eligible=${True} qualified=${True}
647 ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} 694 ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification}
@@ -654,8 +701,8 @@ Library openprocurement_client_helper.py @@ -654,8 +701,8 @@ Library openprocurement_client_helper.py
654 ... [Arguments] Username, tender uaid and qualification number 701 ... [Arguments] Username, tender uaid and qualification number
655 ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_qualification 702 ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_qualification
656 ... [Return] Reply of API 703 ... [Return] Reply of API
657 - [Arguments] ${username} ${tender_uid} ${qualification_num}  
658 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid} 704 + [Arguments] ${username} ${tender_uaid} ${qualification_num}
  705 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
659 ${qualification}= create_data_dict data.status unsuccessful 706 ${qualification}= create_data_dict data.status unsuccessful
660 Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} 707 Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id}
661 ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} 708 ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification}
@@ -680,8 +727,8 @@ Library openprocurement_client_helper.py @@ -680,8 +727,8 @@ Library openprocurement_client_helper.py
680 ... [Arguments] Username, tender uaid and qualification number 727 ... [Arguments] Username, tender uaid and qualification number
681 ... [Description] Find tender using uaid, create data dict with cancelled status and call patch_qualification 728 ... [Description] Find tender using uaid, create data dict with cancelled status and call patch_qualification
682 ... [Return] Reply of API 729 ... [Return] Reply of API
683 - [Arguments] ${username} ${tender_uid} ${qualification_num}  
684 - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uid} 730 + [Arguments] ${username} ${tender_uaid} ${qualification_num}
  731 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
685 ${qualification}= create_data_dict data.status cancelled 732 ${qualification}= create_data_dict data.status cancelled
686 Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} 733 Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id}
687 ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} 734 ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification}
  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 +@{used_roles} tender_owner viewer
  9 +
  10 +
  11 +*** Test Cases ***
  12 +Можливість знайти закупівлю по ідентифікатору
  13 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
  14 + ... viewer
  15 + ... ${USERS.users['${viewer}'].broker}
  16 + ... tender_cancelation lot_cancelation delete_lot
  17 + Завантажити дані про тендер
  18 + Run As ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  19 +
  20 +##############################################################################################
  21 +# TENDER CANCELLATION
  22 +##############################################################################################
  23 +Можливість скасувати тендер
  24 + [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера
  25 + ... tender_owner
  26 + ... ${USERS.users['${tender_owner}'].broker}
  27 + ... tender_cancelation
  28 + [Teardown] Оновити LAST_MODIFICATION_DATE
  29 + Можливість скасувати тендер
  30 +
  31 +
  32 +Відображення активного статусу скасування тендера
  33 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  34 + ... viewer
  35 + ... ${USERS.users['${viewer}'].broker}
  36 + ... tender_cancelation
  37 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  38 + Відображення активного статусу скасування
  39 +
  40 +
  41 +Відображення причини скасування тендера
  42 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  43 + ... viewer
  44 + ... ${USERS.users['${viewer}'].broker}
  45 + ... tender_cancelation
  46 + Відображення причини скасування
  47 +
  48 +
  49 +Відображення опису документа скасування тендера
  50 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  51 + ... viewer
  52 + ... ${USERS.users['${viewer}'].broker}
  53 + ... tender_cancelation
  54 + Відображення опису документа скасування
  55 +
  56 +
  57 +Відображення заголовку документа скасування тендера
  58 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  59 + ... viewer
  60 + ... ${USERS.users['${viewer}'].broker}
  61 + ... tender_cancelation
  62 + Відображення заголовку документа скасування
  63 +
  64 +##############################################################################################
  65 +# LOT CANCELLATION
  66 +##############################################################################################
  67 +
  68 +Можливість скасувати лот
  69 + [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування лота
  70 + ... tender_owner
  71 + ... ${USERS.users['${tender_owner}'].broker}
  72 + ... lot_cancelation
  73 + [Teardown] Оновити LAST_MODIFICATION_DATE
  74 + Можливість скасувати лот
  75 +
  76 +
  77 +Відображення активного статусу скасування лота
  78 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота
  79 + ... viewer
  80 + ... ${USERS.users['${viewer}'].broker}
  81 + ... lot_cancelation
  82 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  83 + Відображення активного статусу скасування
  84 +
  85 +
  86 +Відображення причини скасування лота
  87 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота
  88 + ... viewer
  89 + ... ${USERS.users['${viewer}'].broker}
  90 + ... lot_cancelation
  91 + Відображення причини скасування
  92 +
  93 +
  94 +Відображення опису документа скасування лота
  95 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота
  96 + ... viewer
  97 + ... ${USERS.users['${viewer}'].broker}
  98 + ... lot_cancelation
  99 + Відображення опису документа скасування
  100 +
  101 +
  102 +Відображення заголовку документа скасування лота
  103 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота
  104 + ... viewer
  105 + ... ${USERS.users['${viewer}'].broker}
  106 + ... lot_cancelation
  107 + Відображення заголовку документа скасування
  108 +
  109 +##############################################################################################
  110 +# DELETING LOT
  111 +##############################################################################################
  112 +
  113 +Неможливість видалення лоту
  114 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  115 + ... tender_owner
  116 + ... ${USERS.users['${tender_owner}'].broker}
  117 + ... delete_lot
  118 + [Teardown] Оновити LAST_MODIFICATION_DATE
  119 + Require Failure ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']}
  120 +
  121 +
  122 +*** Keywords ***
  123 +Можливість скасувати тендер
  124 + ${cancellation_data}= Підготувати дані про скасування ${tender_owner}
  125 + Run As ${tender_owner}
  126 + ... Скасувати закупівлю
  127 + ... ${TENDER['TENDER_UAID']}
  128 + ... ${cancellation_data['cancellation_reason']}
  129 + ... ${cancellation_data['document']}
  130 + ... ${cancellation_data['description']}
  131 +
  132 +
  133 +Можливість скасувати лот
  134 + ${cancellation_data}= Підготувати дані про скасування ${tender_owner}
  135 + Run As ${tender_owner}
  136 + ... Скасувати лот
  137 + ... ${TENDER['TENDER_UAID']}
  138 + ... ${TENDER['LOT_ID']}
  139 + ... ${cancellation_data['cancellation_reason']}
  140 + ... ${cancellation_data['document']}
  141 + ... ${cancellation_data['description']}
  142 +
  143 +
  144 +Відображення активного статусу скасування
  145 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  146 + ... active
  147 + ... cancellations[0].status
  148 +
  149 +
  150 +Відображення причини скасування
  151 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  152 + ... ${USERS.users['${tender_owner}']['cancellation_data']['cancellation_reason']}
  153 + ... cancellations[0].reason
  154 +
  155 +
  156 +Відображення опису документа скасування
  157 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  158 + ... ${USERS.users['${tender_owner}']['cancellation_data']['description']}
  159 + ... cancellations[0].documents[0].description
  160 +
  161 +
  162 +Відображення заголовку документа скасування
  163 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  164 + ... ${USERS.users['${tender_owner}']['cancellation_data']['document']}
  165 + ... cancellations[0].documents[0].title
@@ -16,7 +16,7 @@ Suite Teardown Test Suite Teardown @@ -16,7 +16,7 @@ Suite Teardown Test Suite Teardown
16 ... minimal 16 ... minimal
17 Завантажити дані про тендер 17 Завантажити дані про тендер
18 :FOR ${username} IN ${viewer} ${tender_owner} 18 :FOR ${username} IN ${viewer} ${tender_owner}
19 - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} 19 + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
20 20
21 ############################################################################################## 21 ##############################################################################################
22 # CONTRACT 22 # CONTRACT
@@ -27,23 +27,26 @@ Suite Teardown Test Suite Teardown @@ -27,23 +27,26 @@ Suite Teardown Test Suite Teardown
27 ... tender_owner 27 ... tender_owner
28 ... ${USERS.users['${tender_owner}'].broker} 28 ... ${USERS.users['${tender_owner}'].broker}
29 :FOR ${username} IN ${viewer} ${tender_owner} 29 :FOR ${username} IN ${viewer} ${tender_owner}
30 - \ Отримати дані із тендера ${username} awards[1].complaintPeriod.endDate 30 + \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[1].complaintPeriod.endDate
  31 +
31 32
32 Дочекатися закічення stand still періоду 33 Дочекатися закічення stand still періоду
33 ${standstillEnd}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data.awards[1].complaintPeriod.endDate} 34 ${standstillEnd}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data.awards[1].complaintPeriod.endDate}
34 Дочекатись дати ${standstillEnd} 35 Дочекатись дати ${standstillEnd}
35 36
  37 +
36 Можливість укласти угоду для закупівлі 38 Можливість укласти угоду для закупівлі
37 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для прямої закупівлі 39 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для прямої закупівлі
38 ... tender_owner 40 ... tender_owner
39 ... ${USERS.users['${tender_owner}'].broker} 41 ... ${USERS.users['${tender_owner}'].broker}
40 [Teardown] Оновити LAST_MODIFICATION_DATE 42 [Teardown] Оновити LAST_MODIFICATION_DATE
41 - Викликати для учасника ${tender_owner} Підтвердити підписання контракту ${TENDER['TENDER_UAID']} 1 43 + Run As ${tender_owner} Підтвердити підписання контракту ${TENDER['TENDER_UAID']} 1
  44 +
42 45
43 Відображення статусу підписаної угоди з постачальником закупівлі 46 Відображення статусу підписаної угоди з постачальником закупівлі
44 [Tags] ${USERS.users['${viewer}'].broker}: Відображення статусу підписаної угоди з постачальником прямої закупівлі 47 [Tags] ${USERS.users['${viewer}'].broker}: Відображення статусу підписаної угоди з постачальником прямої закупівлі
45 ... viewer 48 ... viewer
46 ... ${USERS.users['${viewer}'].broker} 49 ... ${USERS.users['${viewer}'].broker}
47 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 50 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
48 - Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}  
49 - Звірити поле тендера із значенням ${viewer} active contracts[1].status 51 + Run As ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
  52 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} active contracts[1].status
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 from datetime import timedelta 2 from datetime import timedelta
3 from faker import Factory 3 from faker import Factory
4 from munch import munchify 4 from munch import munchify
  5 +from uuid import uuid4
5 from tempfile import NamedTemporaryFile 6 from tempfile import NamedTemporaryFile
6 from .local_time import get_now 7 from .local_time import get_now
7 from op_faker import OP_Provider 8 from op_faker import OP_Provider
@@ -46,7 +47,7 @@ def create_fake_doc(): @@ -46,7 +47,7 @@ def create_fake_doc():
46 return tf.name 47 return tf.name
47 48
48 49
49 -def test_tender_data(intervals, periods=("enquiry", "tender")): 50 +def test_tender_data(params, periods=("enquiry", "tender")):
50 now = get_now() 51 now = get_now()
51 value_amount = round(random.uniform(3000, 99999999999.99), 2) # max value equals to budget of Ukraine in hryvnias 52 value_amount = round(random.uniform(3000, 99999999999.99), 2) # max value equals to budget of Ukraine in hryvnias
52 data = { 53 data = {
@@ -68,11 +69,10 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): @@ -68,11 +69,10 @@ def test_tender_data(intervals, periods=("enquiry", "tender")):
68 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), 69 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2),
69 "currency": u"UAH" 70 "currency": u"UAH"
70 }, 71 },
71 - "items": [] 72 + "items": [],
  73 + "features": []
72 } 74 }
73 data["procuringEntity"]["kind"] = "other" 75 data["procuringEntity"]["kind"] = "other"
74 - new_item = test_item_data()  
75 - data["items"].append(new_item)  
76 if data.get("mode") == "test": 76 if data.get("mode") == "test":
77 data["title"] = u"[ТЕСТУВАННЯ] {}".format(data["title"]) 77 data["title"] = u"[ТЕСТУВАННЯ] {}".format(data["title"])
78 data["title_en"] = u"[TESTING] {}".format(data["title_en"]) 78 data["title_en"] = u"[TESTING] {}".format(data["title_en"])
@@ -82,21 +82,57 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): @@ -82,21 +82,57 @@ def test_tender_data(intervals, periods=("enquiry", "tender")):
82 for period_name in periods: 82 for period_name in periods:
83 period_dict[period_name + "Period"] = {} 83 period_dict[period_name + "Period"] = {}
84 for i, j in zip(range(2), ("start", "end")): 84 for i, j in zip(range(2), ("start", "end")):
85 - inc_dt += timedelta(minutes=intervals[period_name][i]) 85 + inc_dt += timedelta(minutes=params['intervals'][period_name][i])
86 period_dict[period_name + "Period"][j + "Date"] = inc_dt.isoformat() 86 period_dict[period_name + "Period"][j + "Date"] = inc_dt.isoformat()
87 data.update(period_dict) 87 data.update(period_dict)
  88 + cpv_group = fake.cpv()[:3]
  89 + if params['number_of_lots']:
  90 + data['lots'] = []
  91 + for lot_number in range(params['number_of_lots']):
  92 + lot_id = uuid4().hex
  93 + new_lot = test_lot_data(data['value']['amount'])
  94 + data['lots'].append(new_lot)
  95 + data['lots'][lot_number]['id'] = lot_id
  96 + for i in range(params['number_of_items']):
  97 + new_item = test_item_data(cpv_group)
  98 + new_item['relatedLot'] = lot_id
  99 + data['items'].append(new_item)
  100 + value_amount = sum(lot['value']['amount'] for lot in data['lots'])
  101 + minimalStep = min(lot['minimalStep']['amount'] for lot in data['lots'])
  102 + data['value']['amount'] = value_amount
  103 + data['minimalStep']['amount'] = minimalStep
  104 + else:
  105 + for i in range(params['number_of_items']):
  106 + new_item = test_item_data(cpv_group)
  107 + data['items'].append(new_item)
  108 + if params['tender_meat']:
  109 + new_feature = test_feature_data()
  110 + new_feature.featureOf = "tenderer"
  111 + data['features'].append(new_feature)
  112 + if params['lot_meat'] and params['number_of_lots']:
  113 + new_feature = test_feature_data()
  114 + new_feature['featureOf'] = "lot"
  115 + data['lots'][0]['id'] = data['lots'][0].get('id', uuid4().hex)
  116 + new_feature['relatedItem'] = data['lots'][0]['id']
  117 + data['features'].append(new_feature)
  118 + if params['item_meat'] and params['number_of_items']:
  119 + new_feature = test_feature_data()
  120 + new_feature['featureOf'] = "item"
  121 + data['items'][0]['id'] = data['items'][0].get('id', uuid4().hex)
  122 + new_feature['relatedItem'] = data['items'][0]['id']
  123 + data['features'].append(new_feature)
88 return munchify(data) 124 return munchify(data)
89 125
90 126
91 -def test_tender_data_limited(intervals, procurement_method_type):  
92 - data = test_tender_data(intervals) 127 +def test_tender_data_limited(params):
  128 + data = test_tender_data(params)
93 del data["submissionMethodDetails"] 129 del data["submissionMethodDetails"]
94 del data["minimalStep"] 130 del data["minimalStep"]
95 del data["enquiryPeriod"] 131 del data["enquiryPeriod"]
96 del data["tenderPeriod"] 132 del data["tenderPeriod"]
97 data["procuringEntity"]["kind"] = "general" 133 data["procuringEntity"]["kind"] = "general"
98 - data.update({"procurementMethodType": procurement_method_type, "procurementMethod": "limited"})  
99 - if procurement_method_type == "negotiation": 134 + data.update({"procurementMethodType": params['mode'], "procurementMethod": "limited"})
  135 + if params['mode'] == "negotiation":
100 cause_variants = ( 136 cause_variants = (
101 "artContestIP", 137 "artContestIP",
102 "noCompetition", 138 "noCompetition",
@@ -107,11 +143,11 @@ def test_tender_data_limited(intervals, procurement_method_type): @@ -107,11 +143,11 @@ def test_tender_data_limited(intervals, procurement_method_type):
107 ) 143 )
108 cause = fake.random_element(cause_variants) 144 cause = fake.random_element(cause_variants)
109 data.update({"cause": cause}) 145 data.update({"cause": cause})
110 - if procurement_method_type == "negotiation.quick": 146 + if params['mode'] == "negotiation.quick":
111 cause_variants = ('quick',) 147 cause_variants = ('quick',)
112 cause = fake.random_element(cause_variants) 148 cause = fake.random_element(cause_variants)
113 data.update({"cause": cause}) 149 data.update({"cause": cause})
114 - if procurement_method_type in ("negotiation", "negotiation.quick"): 150 + if params['mode'] in ("negotiation", "negotiation.quick"):
115 data.update({ 151 data.update({
116 "procurementMethodDetails": "quick, accelerator=1440", 152 "procurementMethodDetails": "quick, accelerator=1440",
117 "causeDescription": fake.description() 153 "causeDescription": fake.description()
@@ -119,77 +155,26 @@ def test_tender_data_limited(intervals, procurement_method_type): @@ -119,77 +155,26 @@ def test_tender_data_limited(intervals, procurement_method_type):
119 return munchify(data) 155 return munchify(data)
120 156
121 157
122 -def test_tender_data_multiple_items(intervals):  
123 - t_data = test_tender_data(intervals)  
124 - for _ in range(4):  
125 - new_item = test_item_data()  
126 - t_data['items'].append(new_item)  
127 - return munchify(t_data)  
128 -  
129 -  
130 -def test_tender_data_multiple_lots(intervals):  
131 - tender = test_tender_data(intervals)  
132 - first_lot_id = "3c8f387879de4c38957402dbdb8b31af"  
133 - tender['items'][0]['relatedLot'] = first_lot_id  
134 - tender['lots'] = [test_lot_data(tender['value']['amount'])]  
135 - tender['lots'][0]['id'] = first_lot_id  
136 - max_lot_value_amount = max([lot['value']['amount'] for lot in tender['lots']])  
137 - tender['value']['amount'] = max_lot_value_amount  
138 - return munchify(tender)  
139 -  
140 -  
141 -def test_tender_data_meat(intervals):  
142 - tender = munchify(test_tender_data(intervals))  
143 - item_id = "edd0032574bf4402877ad5f362df225a"  
144 - tender['items'][0].id = item_id  
145 - tender.features = [  
146 - {  
147 - "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",  
148 - "featureOf": "tenderer",  
149 - "title": field_with_id("f", fake.title()),  
150 - "description": fake.description(),  
151 - "enum": [  
152 - {  
153 - "value": 0.15,  
154 - "title": fake.word()  
155 - },  
156 - {  
157 - "value": 0.1,  
158 - "title": fake.word()  
159 - },  
160 - {  
161 - "value": 0.05,  
162 - "title": fake.word()  
163 - },  
164 - {  
165 - "value": 0,  
166 - "title": fake.word()  
167 - }  
168 - ]  
169 - },  
170 - {  
171 - "code": "48cfd91612c04125ab406374d7cc8d93",  
172 - "featureOf": "item",  
173 - "relatedItem": item_id,  
174 - "title": field_with_id("f", fake.title()),  
175 - "description": fake.description(),  
176 - "enum": [  
177 - {  
178 - "value": 0.05,  
179 - "title": fake.word()  
180 - },  
181 - {  
182 - "value": 0.01,  
183 - "title": fake.word()  
184 - },  
185 - {  
186 - "value": 0,  
187 - "title": fake.word()  
188 - }  
189 - ]  
190 - }  
191 - ]  
192 - return munchify(tender) 158 +def test_feature_data():
  159 + return munchify({
  160 + "code": uuid4().hex,
  161 + "title": field_with_id("f", fake.title()),
  162 + "description": fake.description(),
  163 + "enum": [
  164 + {
  165 + "value": 0.05,
  166 + "title": fake.word()
  167 + },
  168 + {
  169 + "value": 0.01,
  170 + "title": fake.word()
  171 + },
  172 + {
  173 + "value": 0,
  174 + "title": fake.word()
  175 + }
  176 + ]
  177 + })
193 178
194 179
195 def test_question_data(): 180 def test_question_data():
@@ -202,6 +187,11 @@ def test_question_data(): @@ -202,6 +187,11 @@ def test_question_data():
202 }) 187 })
203 188
204 189
  190 +def test_related_question(question, relation, obj_id):
  191 + question.data.update({"questionOf": relation, "relatedItem": obj_id})
  192 + return munchify(question)
  193 +
  194 +
205 def test_question_answer_data(): 195 def test_question_answer_data():
206 return munchify({ 196 return munchify({
207 "data": { 197 "data": {
@@ -263,7 +253,7 @@ def test_complaint_reply_data(): @@ -263,7 +253,7 @@ def test_complaint_reply_data():
263 }) 253 })
264 254
265 255
266 -def test_bid_data(mode, max_value_amount): 256 +def test_bid_data():
267 bid = munchify({ 257 bid = munchify({
268 "data": { 258 "data": {
269 "tenderers": [ 259 "tenderers": [
@@ -273,35 +263,9 @@ def test_bid_data(mode, max_value_amount): @@ -273,35 +263,9 @@ def test_bid_data(mode, max_value_amount):
273 }) 263 })
274 bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName) 264 bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName)
275 bid.data.tenderers[0].address.countryName_ru = translate_country_ru(bid.data.tenderers[0].address.countryName) 265 bid.data.tenderers[0].address.countryName_ru = translate_country_ru(bid.data.tenderers[0].address.countryName)
276 - if 'open' in mode:  
277 - bid.data['selfEligible'] = True  
278 - bid.data['selfQualified'] = True  
279 - if mode == 'multiLot':  
280 - bid.data.lotValues = list()  
281 - for _ in range(2):  
282 - bid.data.lotValues.append(test_bid_value(max_value_amount))  
283 - else:  
284 - bid.data.update(test_bid_value(max_value_amount))  
285 - if mode == 'meat':  
286 - bid.data.update(test_bid_params())  
287 return bid 266 return bid
288 267
289 268
290 -def test_bid_params():  
291 - return munchify({  
292 - "parameters": [  
293 - {  
294 - "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",  
295 - "value": fake.random_element(elements=(0.15, 0.1, 0.05, 0))  
296 - },  
297 - {  
298 - "code": "48cfd91612c04125ab406374d7cc8d93",  
299 - "value": fake.random_element(elements=(0.05, 0.01, 0))  
300 - }  
301 - ]  
302 - })  
303 -  
304 -  
305 def test_bid_value(max_value_amount): 269 def test_bid_value(max_value_amount):
306 return munchify({ 270 return munchify({
307 "value": { 271 "value": {
@@ -354,23 +318,6 @@ def test_invalid_features_data(): @@ -354,23 +318,6 @@ def test_invalid_features_data():
354 "title": fake.word() 318 "title": fake.word()
355 } 319 }
356 ] 320 ]
357 - },  
358 - {  
359 - "code": "48cfd91612c04125ab406374d7cc8d93",  
360 - "featureOf": "item",  
361 - "relatedItem": "edd0032574bf4402877ad5f362df225a",  
362 - "title": fake.title(),  
363 - "description": fake.description(),  
364 - "enum": [  
365 - {  
366 - "value": 0.35,  
367 - "title": fake.word()  
368 - },  
369 - {  
370 - "value": 0,  
371 - "title": fake.word()  
372 - }  
373 - ]  
374 } 321 }
375 ] 322 ]
376 323
@@ -400,49 +347,45 @@ def test_lot_document_data(document, lot_id): @@ -400,49 +347,45 @@ def test_lot_document_data(document, lot_id):
400 return munchify(document) 347 return munchify(document)
401 348
402 349
403 -def test_lot_question_data(question, lot_id):  
404 - question.data.update({"questionOf": "lot", "relatedItem": lot_id})  
405 - return munchify(question)  
406 -  
407 -  
408 def test_lot_complaint_data(complaint, lot_id): 350 def test_lot_complaint_data(complaint, lot_id):
409 complaint.data.update({"complaintOf": "lot", "relatedItem": lot_id}) 351 complaint.data.update({"complaintOf": "lot", "relatedItem": lot_id})
410 return munchify(complaint) 352 return munchify(complaint)
411 353
412 354
413 -def test_tender_data_openua(intervals):  
414 - accelerator = intervals['accelerator'] 355 +def test_tender_data_openua(params):
  356 + accelerator = params['intervals']['accelerator']
415 # Since `accelerator` field is not really a list containing timings 357 # Since `accelerator` field is not really a list containing timings
416 # for a period called `acceleratorPeriod`, let's remove it :) 358 # for a period called `acceleratorPeriod`, let's remove it :)
417 - del intervals['accelerator'] 359 + del params['intervals']['accelerator']
418 # We should not provide any values for `enquiryPeriod` when creating 360 # We should not provide any values for `enquiryPeriod` when creating
419 # an openUA or openEU procedure. That field should not be present at all. 361 # an openUA or openEU procedure. That field should not be present at all.
420 # Therefore, we pass a nondefault list of periods to `test_tender_data()`. 362 # Therefore, we pass a nondefault list of periods to `test_tender_data()`.
421 - t_data = test_tender_data(intervals, periods=('tender',))  
422 - t_data['procurementMethodType'] = 'aboveThresholdUA'  
423 - t_data['procurementMethodDetails'] = 'quick, ' \ 363 + data = test_tender_data(params, ('tender',))
  364 + data['procurementMethodType'] = 'aboveThresholdUA'
  365 + data['procurementMethodDetails'] = 'quick, ' \
424 'accelerator={}'.format(accelerator) 366 'accelerator={}'.format(accelerator)
425 - t_data['procuringEntity']['kind'] = 'general'  
426 - return t_data 367 + data['procuringEntity']['kind'] = 'general'
  368 + return data
427 369
428 370
429 -def test_tender_data_openeu(intervals):  
430 - accelerator = intervals['accelerator'] 371 +def test_tender_data_openeu(params):
  372 + accelerator = params['intervals']['accelerator']
431 # Since `accelerator` field is not really a list containing timings 373 # Since `accelerator` field is not really a list containing timings
432 # for a period called `acceleratorPeriod`, let's remove it :) 374 # for a period called `acceleratorPeriod`, let's remove it :)
433 - del intervals['accelerator'] 375 + del params['intervals']['accelerator']
434 # We should not provide any values for `enquiryPeriod` when creating 376 # We should not provide any values for `enquiryPeriod` when creating
435 # an openUA or openEU procedure. That field should not be present at all. 377 # an openUA or openEU procedure. That field should not be present at all.
436 # Therefore, we pass a nondefault list of periods to `test_tender_data()`. 378 # Therefore, we pass a nondefault list of periods to `test_tender_data()`.
437 - t_data = test_tender_data(intervals, periods=('tender',))  
438 - t_data['procurementMethodType'] = 'aboveThresholdEU'  
439 - t_data['procurementMethodDetails'] = 'quick, ' \ 379 + data = test_tender_data(params, ('tender',))
  380 + data['procurementMethodType'] = 'aboveThresholdEU'
  381 + data['procurementMethodDetails'] = 'quick, ' \
440 'accelerator={}'.format(accelerator) 382 'accelerator={}'.format(accelerator)
441 - t_data['title_en'] = "[TESTING]"  
442 - for item_number, item in enumerate(t_data['items']): 383 + data['title_en'] = "[TESTING]"
  384 + for item_number, item in enumerate(data['items']):
443 item['description_en'] = "Test item #{}".format(item_number) 385 item['description_en'] = "Test item #{}".format(item_number)
444 - t_data['procuringEntity']['contactPoint']['name_en'] = fake_en.name()  
445 - t_data['procuringEntity']['contactPoint']['availableLanguage'] = "en"  
446 - t_data['procuringEntity']['identifier']['legalName_en'] = "Institution \"Vinnytsia City Council primary and secondary general school № 10\""  
447 - t_data['procuringEntity']['kind'] = 'general'  
448 - return t_data 386 + data['procuringEntity']['name_en'] = fake_en.name()
  387 + data['procuringEntity']['contactPoint']['name_en'] = fake_en.name()
  388 + data['procuringEntity']['contactPoint']['availableLanguage'] = "en"
  389 + data['procuringEntity']['identifier']['legalName_en'] = "Institution \"Vinnytsia City Council primary and secondary general school № 10\""
  390 + data['procuringEntity']['kind'] = 'general'
  391 + return data
@@ -169,8 +169,11 @@ Get Broker Property By Username @@ -169,8 +169,11 @@ Get Broker Property By Username
169 ... tender_owner=${USERS.users['${tender_owner}'].broker} 169 ... tender_owner=${USERS.users['${tender_owner}'].broker}
170 ... access_token=${USERS.users['${tender_owner}'].access_token} 170 ... access_token=${USERS.users['${tender_owner}'].access_token}
171 ... tender_id=${USERS.users['${tender_owner}'].tender_data.data.id} 171 ... tender_id=${USERS.users['${tender_owner}'].tender_data.data.id}
  172 + Run Keyword And Ignore Error Set To Dictionary ${artifact} tender_owner_access_token=${USERS.users['${tender_owner}'].access_token}
  173 + Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_access_token=${USERS.users['${provider}'].access_token}
  174 + Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_access_token=${USERS.users['${provider1}'].access_token}
172 ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots 175 ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots
173 - Run Keyword If ${status}'=='PASS' 176 + Run Keyword If '${status}'=='PASS'
174 ... Set To Dictionary ${artifact} lots=${lots_ids} 177 ... Set To Dictionary ${artifact} lots=${lots_ids}
175 Log ${artifact} 178 Log ${artifact}
176 log_object_data ${artifact} artifact update=${True} 179 log_object_data ${artifact} artifact update=${True}
@@ -184,64 +187,71 @@ Get Broker Property By Username @@ -184,64 +187,71 @@ Get Broker Property By Username
184 ${lot_index}= Get Variable Value ${lot_index} 0 187 ${lot_index}= Get Variable Value ${lot_index} 0
185 Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]} 188 Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]}
186 ${mode}= Get Variable Value ${mode} ${ARTIFACT.mode} 189 ${mode}= Get Variable Value ${mode} ${ARTIFACT.mode}
  190 + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.tender_owner_access_token}
  191 + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider}']} access_token=${ARTIFACT.provider_access_token}
  192 + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider1}']} access_token=${ARTIFACT.provider1_access_token}
187 Set Suite Variable ${mode} 193 Set Suite Variable ${mode}
188 Set Suite Variable ${lot_index} 194 Set Suite Variable ${lot_index}
189 Set Suite Variable ${TENDER} 195 Set Suite Variable ${TENDER}
190 log_object_data ${ARTIFACT} artifact 196 log_object_data ${ARTIFACT} artifact
191 197
192 198
193 -Підготовка даних для створення тендера 199 +Підготувати дані для створення тендера
  200 + [Arguments] ${tender_parameters}
194 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} 201 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers}
195 - ${tender_data}= prepare_test_tender_data ${period_intervals} ${mode} 202 + ${tender_data}= prepare_test_tender_data ${period_intervals} ${tender_parameters}
196 ${TENDER}= Create Dictionary 203 ${TENDER}= Create Dictionary
197 Set Global Variable ${TENDER} 204 Set Global Variable ${TENDER}
198 - Log ${TENDER}  
199 Log ${tender_data} 205 Log ${tender_data}
200 [return] ${tender_data} 206 [return] ${tender_data}
201 207
202 208
203 -Підготовка даних для створення предмету закупівлі  
204 - ${item}= test_item_data 209 +Підготувати дані для створення предмету закупівлі
  210 + [Arguments] ${cpv}
  211 + ${item}= test_item_data ${cpv[0:3]}
205 [Return] ${item} 212 [Return] ${item}
206 213
207 214
208 -Підготовка даних для створення лоту 215 +Підготувати дані для створення лоту
209 [Arguments] ${max_lot_value_amount} 216 [Arguments] ${max_lot_value_amount}
210 ${lot}= test_lot_data ${max_lot_value_amount} 217 ${lot}= test_lot_data ${max_lot_value_amount}
211 ${reply}= Create Dictionary data=${lot} 218 ${reply}= Create Dictionary data=${lot}
212 [Return] ${reply} 219 [Return] ${reply}
213 220
  221 +Підготувати дані для створення нецінового показника
  222 + ${reply}= test_feature_data
  223 + [Return] ${reply}
214 224
215 -Підготовка даних для подання вимоги 225 +Підготувати дані для подання вимоги
216 ${claim}= test_claim_data 226 ${claim}= test_claim_data
217 [Return] ${claim} 227 [Return] ${claim}
218 228
219 229
220 -Підготовка даних для подання скарги 230 +Підготувати дані для подання скарги
221 [Arguments] ${lot}=${False} 231 [Arguments] ${lot}=${False}
222 ${complaint}= test_complaint_data ${lot} 232 ${complaint}= test_complaint_data ${lot}
223 [Return] ${complaint} 233 [Return] ${complaint}
224 234
225 235
226 -Підготовка даних для відповіді на скаргу 236 +Підготувати дані для відповіді на скаргу
227 ${reply}= test_complaint_reply_data 237 ${reply}= test_complaint_reply_data
228 [Return] ${reply} 238 [Return] ${reply}
229 239
230 240
231 -Підготовка даних для запитання 241 +Підготувати дані для запитання
232 ${question}= test_question_data 242 ${question}= test_question_data
233 [Return] ${question} 243 [Return] ${question}
234 244
235 245
236 -Підготовка даних для відповіді на запитання 246 +Підготувати дані для відповіді на запитання
237 ${answer}= test_question_answer_data 247 ${answer}= test_question_answer_data
238 [Return] ${answer} 248 [Return] ${answer}
239 249
240 250
241 Підготувати дані для подання пропозиції 251 Підготувати дані для подання пропозиції
242 - [Arguments] ${max_value_amount}  
243 - ${bid_data}= test_bid_data ${mode} ${max_value_amount}  
244 - [Return] ${bid_data} 252 + [Arguments] ${username}
  253 + ${bid}= generate_test_bid_data ${USERS.users['${username}'].tender_data.data}
  254 + [Return] ${bid}
245 255
246 256
247 Підготувати дані про постачальника 257 Підготувати дані про постачальника
@@ -266,7 +276,7 @@ Get Broker Property By Username @@ -266,7 +276,7 @@ Get Broker Property By Username
266 [Arguments] ${username} ${tender_data} 276 [Arguments] ${username} ${tender_data}
267 # munchify is used to make deep copy of ${tender_data} 277 # munchify is used to make deep copy of ${tender_data}
268 ${tender_data_copy}= munchify ${tender_data} 278 ${tender_data_copy}= munchify ${tender_data}
269 - ${status} ${adapted_data}= Run Keyword And Ignore Error Викликати для учасника ${username} Підготувати дані для оголошення тендера ${tender_data_copy} 279 + ${status} ${adapted_data}= Run Keyword And Ignore Error Run As ${username} Підготувати дані для оголошення тендера ${tender_data_copy}
270 ${adapted_data}= Set variable if '${status}' == 'FAIL' ${tender_data_copy} ${adapted_data} 280 ${adapted_data}= Set variable if '${status}' == 'FAIL' ${tender_data_copy} ${adapted_data}
271 # munchify is used to make nice log output 281 # munchify is used to make nice log output
272 ${adapted_data}= munchify ${adapted_data} 282 ${adapted_data}= munchify ${adapted_data}
@@ -356,19 +366,19 @@ Get Broker Property By Username @@ -356,19 +366,19 @@ Get Broker Property By Username
356 ... ${USERS.users['${username}']['LAST_REFRESH_DATE']} 366 ... ${USERS.users['${username}']['LAST_REFRESH_DATE']}
357 ${LAST_REFRESH_DATE}= Get Current TZdate 367 ${LAST_REFRESH_DATE}= Get Current TZdate
358 Run Keyword If ${time_diff} > 0 Run keywords 368 Run Keyword If ${time_diff} > 0 Run keywords
359 - ... Викликати для учасника ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} 369 + ... Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
360 ... AND 370 ... AND
361 ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE} 371 ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE}
362 372
363 373
364 Звірити поле тендера 374 Звірити поле тендера
365 [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} 375 [Arguments] ${username} ${tender_uaid} ${tender_data} ${field}
366 - ${left}= Get_From_Object ${tender_data.data} ${field} 376 + ${left}= get_from_object ${tender_data.data} ${field}
367 Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field} 377 Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field}
368 378
369 379
370 Звірити поле тендера із значенням 380 Звірити поле тендера із значенням
371 - [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${None} 381 + [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty}
372 ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} 382 ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id}
373 Порівняти об'єкти ${left} ${right} 383 Порівняти об'єкти ${left} ${right}
374 384
@@ -384,12 +394,12 @@ Get Broker Property By Username @@ -384,12 +394,12 @@ Get Broker Property By Username
384 394
385 Звірити дату тендера 395 Звірити дату тендера
386 [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False} 396 [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False}
387 - ${left}= Get_From_Object ${tender_data.data} ${field} 397 + ${left}= get_from_object ${tender_data.data} ${field}
388 Звірити дату тендера із значенням ${username} ${tender_uaid} ${left} ${field} accuracy=${accuracy} absolute_delta=${absolute_delta} 398 Звірити дату тендера із значенням ${username} ${tender_uaid} ${left} ${field} accuracy=${accuracy} absolute_delta=${absolute_delta}
389 399
390 400
391 Звірити дату тендера із значенням 401 Звірити дату тендера із значенням
392 - [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${None} ${accuracy}=60 ${absolute_delta}=${False} 402 + [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} ${accuracy}=60 ${absolute_delta}=${False}
393 ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} 403 ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id}
394 Порівняти дати ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta} 404 Порівняти дати ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta}
395 405
@@ -412,9 +422,9 @@ Get Broker Property By Username @@ -412,9 +422,9 @@ Get Broker Property By Username
412 422
413 423
414 Звірити координати доставки тендера 424 Звірити координати доставки тендера
415 - [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${object_id}=${None}  
416 - ${left_lat}= Get_From_Object ${tender_data.data} ${field}.deliveryLocation.latitude  
417 - ${left_lon}= Get_From_Object ${tender_data.data} ${field}.deliveryLocation.longitude 425 + [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${object_id}=${Empty}
  426 + ${left_lat}= get_from_object ${tender_data.data} ${field}.deliveryLocation.latitude
  427 + ${left_lon}= get_from_object ${tender_data.data} ${field}.deliveryLocation.longitude
418 ${right_lat}= Отримати дані із тендера ${username} ${tender_uaid} ${field}.deliveryLocation.latitude ${object_id} 428 ${right_lat}= Отримати дані із тендера ${username} ${tender_uaid} ${field}.deliveryLocation.latitude ${object_id}
419 ${right_lon}= Отримати дані із тендера ${username} ${tender_uaid} ${field}.deliveryLocation.longitude ${object_id} 429 ${right_lon}= Отримати дані із тендера ${username} ${tender_uaid} ${field}.deliveryLocation.longitude ${object_id}
420 Порівняти координати ${left_lat} ${left_lon} ${right_lat} ${right_lon} 430 Порівняти координати ${left_lat} ${left_lon} ${right_lat} ${right_lon}
@@ -439,53 +449,51 @@ Get Broker Property By Username @@ -439,53 +449,51 @@ Get Broker Property By Username
439 449
440 Звірити поля предметів закупівлі багатопредметного тендера 450 Звірити поля предметів закупівлі багатопредметного тендера
441 [Arguments] ${username} ${tender_data} ${field} 451 [Arguments] ${username} ${tender_data} ${field}
442 - @{items}= Get_From_Object ${tender_data.data} items 452 + @{items}= get_from_object ${tender_data.data} items
443 ${len_of_items}= Get Length ${items} 453 ${len_of_items}= Get Length ${items}
444 :FOR ${index} IN RANGE ${len_of_items} 454 :FOR ${index} IN RANGE ${len_of_items}
445 - \ Log ${index}  
446 \ Звірити поле тендера ${viewer} ${tender_data} items[${index}].${field} 455 \ Звірити поле тендера ${viewer} ${tender_data} items[${index}].${field}
447 456
448 457
449 Звірити дату предметів закупівлі багатопредметного тендера 458 Звірити дату предметів закупівлі багатопредметного тендера
450 [Arguments] ${username} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False} 459 [Arguments] ${username} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False}
451 - @{items}= Get_From_Object ${tender_data.data} items 460 + @{items}= get_from_object ${tender_data.data} items
452 :FOR ${index} ${_} IN ENUMERATE @{items} 461 :FOR ${index} ${_} IN ENUMERATE @{items}
453 - \ Log ${index}  
454 - \ Звірити дату тендера ${viewer} ${tender_data} items[${index}].${field} accuracy=${accuracy} absolute_delta=${absolute_delta} 462 + \ Звірити дату тендера ${viewer} ${TENDER['TENDER_UAID']} ${tender_data} items[${index}].${field} accuracy=${accuracy} absolute_delta=${absolute_delta}
455 463
456 464
457 Звірити координати доставки предметів закупівлі багатопредметного тендера 465 Звірити координати доставки предметів закупівлі багатопредметного тендера
458 [Arguments] ${username} ${tender_data} 466 [Arguments] ${username} ${tender_data}
459 - @{items}= Get_From_Object ${tender_data.data} items 467 + @{items}= get_from_object ${tender_data.data} items
460 :FOR ${index} ${_} IN ENUMERATE @{items} 468 :FOR ${index} ${_} IN ENUMERATE @{items}
461 - \ Log ${index}  
462 \ Звірити координати тендера ${viewer} ${tender_data} items[${index}] 469 \ Звірити координати тендера ${viewer} ${tender_data} items[${index}]
463 470
464 471
465 Отримати дані із тендера 472 Отримати дані із тендера
466 - [Arguments] ${username} ${tender_uaid} ${field_name} ${object_id}=${None}  
467 - Log ${username}  
468 - Log ${field_name}  
469 - ${field}= Run Keyword If '${object_id}'=='${None}' Set Variable ${field_name}  
470 - ... ELSE Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} 473 + [Arguments] ${username} ${tender_uaid} ${field_name} ${object_id}=${Empty}
  474 + ${field}= Run Keyword If '${object_id}' Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}
  475 + ... ELSE Set Variable ${field_name}
471 ${status} ${field_value}= Run keyword and ignore error 476 ${status} ${field_value}= Run keyword and ignore error
472 - ... Get from object 477 + ... get_from_object
473 ... ${USERS.users['${username}'].tender_data.data} 478 ... ${USERS.users['${username}'].tender_data.data}
474 ... ${field} 479 ... ${field}
475 # If field in cache, return its value 480 # If field in cache, return its value
476 Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} 481 Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value}
477 # Else call broker to find field 482 # Else call broker to find field
478 - ${field_value}= Run Keyword IF '${object_id}'=='${None}' Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field}  
479 - ... ELSE Отримати дані із об’єкта тендера ${username} ${tender_uaid} ${object_id} ${field_name} 483 + ${field_value}= Run Keyword IF '${object_id}' Отримати дані із об’єкта тендера ${username} ${tender_uaid} ${object_id} ${field_name}
  484 + ... ELSE Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field}
480 # And caching its value before return 485 # And caching its value before return
481 Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value} 486 Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value}
  487 + ${data}= munch_dict arg=${USERS.users['${username}'].tender_data.data}
  488 + Set To Dictionary ${USERS.users['${username}'].tender_data} data=${data}
  489 + Log ${USERS.users['${username}'].tender_data.data}
482 [return] ${field_value} 490 [return] ${field_value}
483 491
484 492
485 Отримати шлях до поля об’єкта 493 Отримати шлях до поля об’єкта
486 [Arguments] ${username} ${field_name} ${object_id} 494 [Arguments] ${username} ${field_name} ${object_id}
487 ${object_type}= get_object_type_by_id ${object_id} 495 ${object_type}= get_object_type_by_id ${object_id}
488 - ${objects}= Get Variable Value ${USERS.users['${username}'].tender_data.data['${object_type}']} ${empty} 496 + ${objects}= Get Variable Value ${USERS.users['${username}'].tender_data.data['${object_type}']} ${None}
489 ${object_index}= get_object_index_by_id ${objects} ${object_id} 497 ${object_index}= get_object_index_by_id ${objects} ${object_id}
490 [return] ${object_type}[${object_index}].${field_name} 498 [return] ${object_type}[${object_index}].${field_name}
491 499
@@ -497,6 +505,10 @@ Get Broker Property By Username @@ -497,6 +505,10 @@ Get Broker Property By Username
497 ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${tender_uaid} ${object_id} ${field_name} 505 ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${tender_uaid} ${object_id} ${field_name}
498 ... ELSE IF '${object_type}'=='lots' 506 ... ELSE IF '${object_type}'=='lots'
499 ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із лоту ${tender_uaid} ${object_id} ${field_name} 507 ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із лоту ${tender_uaid} ${object_id} ${field_name}
  508 + ... ELSE IF '${object_type}'=='items'
  509 + ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із предмету ${tender_uaid} ${object_id} ${field_name}
  510 + ... ELSE IF '${object_type}'=='features'
  511 + ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із нецінового показника ${tender_uaid} ${object_id} ${field_name}
500 ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} 512 ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}
501 ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value} 513 ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value}
502 ... ELSE Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field} 514 ... ELSE Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field}
@@ -567,12 +579,7 @@ Run As @@ -567,12 +579,7 @@ Run As
567 Log ${command} 579 Log ${command}
568 Log Many @{arguments} 580 Log Many @{arguments}
569 ${keywords_file}= Get Broker Property By Username ${username} keywords_file 581 ${keywords_file}= Get Broker Property By Username ${username} keywords_file
570 - ${status} ${value}= Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments}  
571 - ${unexpected_args}= Get Regexp Matches '${value}' expected [0-9] arguments, got [0-9]  
572 - ${status} ${value}= Run Keyword If "${unexpected_args}"=="[]" Set Variable ${status} ${value}  
573 - ... ELSE Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments[:-1]}  
574 - Run Keyword If '${status}' == 'FAIL' Fail ${value}  
575 - [return] ${value} 582 + Run Keyword And Return ${keywords_file}.${command} ${username} @{arguments}
576 583
577 584
578 Require Failure 585 Require Failure
@@ -584,7 +591,7 @@ Require Failure @@ -584,7 +591,7 @@ Require Failure
584 ... if ``command`` with ``arguments`` fails and vice versa. 591 ... if ``command`` with ``arguments`` fails and vice versa.
585 Log ${username} 592 Log ${username}
586 Log ${command} 593 Log ${command}
587 - Log Many ${command} @{arguments} 594 + Log Many @{arguments}
588 ${keywords_file}= Get Broker Property By Username ${username} keywords_file 595 ${keywords_file}= Get Broker Property By Username ${username} keywords_file
589 ${status} ${value}= Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments} 596 ${status} ${value}= Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments}
590 Run keyword if '${status}' == 'PASS' Fail Користувач ${username} зміг виконати "${command}" 597 Run keyword if '${status}' == 'PASS' Fail Користувач ${username} зміг виконати "${command}"
@@ -599,7 +606,6 @@ Require Failure @@ -599,7 +606,6 @@ Require Failure
599 606
600 Дочекатись дати початку періоду уточнень 607 Дочекатись дати початку періоду уточнень
601 [Arguments] ${username} ${tender_uaid} 608 [Arguments] ${username} ${tender_uaid}
602 - Log ${username}  
603 # XXX: HACK: Same as below 609 # XXX: HACK: Same as below
604 ${status} ${date}= Run Keyword And Ignore Error 610 ${status} ${date}= Run Keyword And Ignore Error
605 ... Set Variable 611 ... Set Variable
@@ -611,13 +617,14 @@ Require Failure @@ -611,13 +617,14 @@ Require Failure
611 Дочекатись дати ${date} 617 Дочекатись дати ${date}
612 Оновити LAST_MODIFICATION_DATE 618 Оновити LAST_MODIFICATION_DATE
613 Дочекатись синхронізації з майданчиком ${username} 619 Дочекатись синхронізації з майданчиком ${username}
  620 + ${next_status}= Set variable if 'open' in '${mode}' active.tendering active.enquiries
614 Wait until keyword succeeds 621 Wait until keyword succeeds
615 ... 5 min 15 sec 622 ... 5 min 15 sec
616 ... 15 sec 623 ... 15 sec
617 ... Звірити статус тендера 624 ... Звірити статус тендера
618 ... ${username} 625 ... ${username}
619 ... ${tender_uaid} 626 ... ${tender_uaid}
620 - ... active.enquiries 627 + ... ${next_status}
621 628
622 629
623 Звірити статус тендера 630 Звірити статус тендера
@@ -681,33 +688,8 @@ Require Failure @@ -681,33 +688,8 @@ Require Failure
681 Run keyword if '${next_status}' == 'active.auction' Sleep 120 # Auction sync 688 Run keyword if '${next_status}' == 'active.auction' Sleep 120 # Auction sync
682 689
683 690
684 -Дочекатись дати початку аукціону  
685 - [Arguments] ${username}  
686 - # Can't use that dirty hack here since we don't know  
687 - # the date of auction when creating the procurement :)  
688 - ${auctionStart}= Отримати дані із тендера ${username} ${tender_uaid} auctionPeriod.startDate ${TENDER['LOT_ID']}  
689 - Дочекатись дати ${auctionStart}  
690 - Оновити LAST_MODIFICATION_DATE  
691 - Дочекатись синхронізації з майданчиком ${username}  
692 -  
693 -  
694 -Відкрити сторінку аукціону для глядача  
695 - ${url}= Run as ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']}  
696 - Open browser ${url} ${USERS.users['${viewer}'].browser}  
697 -  
698 -  
699 -Дочекатись дати закінчення аукціону  
700 - [Arguments] ${username}  
701 - Log ${username}  
702 - ${auctionEnd}= Отримати дані із тендера ${username} ${tender_uaid} auctionPeriod.endDate ${TENDER['LOT_ID']}  
703 - Дочекатись дати ${auctionEnd}  
704 - Оновити LAST_MODIFICATION_DATE  
705 - Дочекатись синхронізації з майданчиком ${username}  
706 -  
707 -  
708 Дочекатись дати закінчення періоду подання скарг 691 Дочекатись дати закінчення періоду подання скарг
709 [Arguments] ${username} 692 [Arguments] ${username}
710 - log ${username}  
711 Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate} 693 Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate}
712 Оновити LAST_MODIFICATION_DATE 694 Оновити LAST_MODIFICATION_DATE
713 Дочекатись синхронізації з майданчиком ${username} 695 Дочекатись синхронізації з майданчиком ${username}
@@ -54,7 +54,7 @@ Resource resource.robot @@ -54,7 +54,7 @@ Resource resource.robot
54 ############################################################################################## 54 ##############################################################################################
55 55
56 Можливість створити закупівлю 56 Можливість створити закупівлю
57 - ${tender_data}= Підготовка даних для створення тендера 57 + ${tender_data}= Підготувати дані для створення тендера
58 ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} 58 ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}
59 ${TENDER_UAID}= Викликати для учасника ${tender_owner} 59 ${TENDER_UAID}= Викликати для учасника ${tender_owner}
60 ... Створити тендер 60 ... Створити тендер
1 -*** Settings ***  
2 -Library op_robot_tests.tests_files.service_keywords  
3 -Library String  
4 -Library Collections  
5 -Library Selenium2Library  
6 -Library DebugLibrary  
7 -Resource keywords.robot  
8 -Resource resource.robot  
9 -Suite Setup Test Suite Setup  
10 -Suite Teardown Test Suite Teardown  
11 -  
12 -*** Variables ***  
13 -${mode} meat  
14 -@{used_roles} tender_owner provider provider1 viewer  
15 -  
16 -  
17 -*** Test Cases ***  
18 -Можливість оголосити однопредметний тендер з неціновим показником  
19 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер з неціновим показником  
20 - ... tender_owner  
21 - ... ${USERS.users['${tender_owner}'].broker}  
22 - ... minimal  
23 - [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),  
24 - [Teardown] Оновити LAST_MODIFICATION_DATE  
25 - ${tender_data}= Підготовка даних для створення тендера  
26 - ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}  
27 - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data}  
28 - Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}  
29 - Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}  
30 - Log ${TENDER}  
31 -  
32 -  
33 -Можливість знайти однопредметний тендер по ідентифікатору  
34 - [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти тендер  
35 - ... viewer tender_owner provider provider1  
36 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
37 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
38 - ... minimal  
39 - :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}  
40 - \ Дочекатись синхронізації з майданчиком ${username}  
41 - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
42 -  
43 -  
44 -Неможливість перевищити ліміт для нецінових критеріїв  
45 - [Documentation]  
46 - ... `Внести зміни в тендер` should not pass in this test case.  
47 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
48 - ... tender_owner  
49 - ... ${USERS.users['${tender_owner}'].broker}  
50 - [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}  
51 - [Teardown] Оновити LAST_MODIFICATION_DATE  
52 - ${invalid_features}= test_invalid_features_data  
53 - ${fail}= Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} features ${invalid_features}  
54 - Log ${fail}  
55 -  
56 -######  
57 -#Подання пропозицій  
58 -  
59 -Відображення початку періоду прийому пропозицій оголошеного тендера  
60 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера  
61 - ... viewer provider provider1  
62 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker}  
63 - ... ${USERS.users['${provider1}'].broker}  
64 - ... minimal  
65 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
66 - \ Дочекатись синхронізації з майданчиком ${username}  
67 - \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate  
68 -  
69 -Відображення закінчення періоду прийому пропозицій оголошеного тендера  
70 - [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору  
71 - ... viewer provider provider1  
72 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${provider}'].broker}  
73 - ... ${USERS.users['${provider1}'].broker}  
74 - ... minimal  
75 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
76 - \ Дочекатись синхронізації з майданчиком ${username}  
77 - \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate  
78 -  
79 -  
80 -Неможливість подати цінову пропозицію без нецінового показника  
81 - [Documentation]  
82 - ... `Подати цінову пропозицію` should not pass in this test case.  
83 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
84 - ... provider  
85 - ... ${USERS.users['${provider}'].broker}  
86 - [Setup] Дочекатись дати початку прийому пропозицій ${provider}  
87 - ${bid}= test bid data single  
88 - Log ${bid}  
89 - ${failbid}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
90 - log ${failbid}  
91 -  
92 -  
93 -Можливість подати цінову пропозицію з неціновим показником  
94 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
95 - ... provider  
96 - ... ${USERS.users['${provider}'].broker}  
97 - [Teardown] Оновити LAST_MODIFICATION_DATE  
98 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
99 - ${bidresponses}= Create Dictionary bid=${bid}  
100 - Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}  
101 - ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
102 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp}  
103 - log ${resp}  
104 -  
105 -  
106 -Можливість змінити неціновий показник повторної цінової пропозиції до 0  
107 - [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію  
108 - ... provider  
109 - ... ${USERS.users['${provider}'].broker}  
110 - [Teardown] Оновити LAST_MODIFICATION_DATE  
111 - ${fixbidparamsto0resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} parameters.0.value 0  
112 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidparamsto0resp ${fixbidparamsto0resp}  
113 - log ${fixbidparamsto0resp}  
114 -  
115 -  
116 -Можливість змінити неціновий показник повторної цінової пропозиції до 0.15  
117 - [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію  
118 - ... provider  
119 - ... ${USERS.users['${provider}'].broker}  
120 - [Teardown] Оновити LAST_MODIFICATION_DATE  
121 - ${fixbidparamsto015resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} parameters.0.value 0.15  
122 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidparamsto015resp ${fixbidparamsto015resp}  
123 - log ${fixbidparamsto015resp}  
124 -  
125 -  
126 -Можливість подати цінову пропозицію з неціновим показником другим учасником  
127 - [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію  
128 - ... provider1  
129 - ... ${USERS.users['${provider1}'].broker}  
130 - [Setup] Дочекатись дати початку прийому пропозицій ${provider1}  
131 - [Teardown] Оновити LAST_MODIFICATION_DATE  
132 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
133 - Log ${bid}  
134 - ${bidresponses}= Create Dictionary  
135 - Set To Dictionary ${bidresponses} bid ${bid}  
136 - Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses}  
137 - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
138 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp ${resp}  
139 - log ${resp}  
140 - log ${USERS.users['${provider1}'].bidresponses}  
141 -  
142 -######  
143 -#Аукціон  
144 -  
145 -Відображення дати початку аукціону  
146 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
147 - ... viewer  
148 - ... ${USERS.users['${viewer}'].broker}  
149 - ... minimal  
150 - [Setup] Дочекатись дати закінчення прийому пропозицій ${viewer}  
151 - Отримати дані із тендера ${viewer} auctionPeriod.startDate  
152 -  
153 -Можливість дочекатися початку аукціону  
154 - [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися початку аукціону  
155 - ... viewer  
156 - ... ${USERS.users['${viewer}'].broker}  
157 - Дочекатись дати початку аукціону ${viewer}  
158 -  
159 -Можливість дочекатися завершення аукціону  
160 - [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону  
161 - ... viewer  
162 - ... ${USERS.users['${viewer}'].broker}  
163 - [Teardown] Оновити LAST_MODIFICATION_DATE  
164 - Відкрити сторінку аукціону для глядача  
165 - Wait Until Keyword Succeeds 61 times 30 s Page should contain Аукціон завершився  
166 - Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників  
167 - Close browser  
168 -  
169 -Відображення дати завершення аукціону  
170 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
171 - ... viewer  
172 - ... ${USERS.users['${viewer}'].broker}  
173 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
174 - Отримати дані із тендера ${viewer} auctionPeriod.endDate  
175 -  
176 -Відображення значення ставки першої пропозиції  
177 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
178 - ... viewer  
179 - ... ${USERS.users['${viewer}'].broker}  
180 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
181 - Отримати дані із тендера ${viewer} bids[0].value.amount  
182 -  
183 -Відображення значення нецінового критерію першої пропозиції  
184 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
185 - ... viewer  
186 - ... ${USERS.users['${viewer}'].broker}  
187 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
188 - Отримати дані із тендера ${viewer} bids[0].parameters  
189 -  
190 -Відображення дати першої пропозиції  
191 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
192 - ... viewer  
193 - ... ${USERS.users['${viewer}'].broker}  
194 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
195 - Отримати дані із тендера ${viewer} bids[0].date  
196 -  
197 -Відображення назви учасника першої пропозиції  
198 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
199 - ... viewer  
200 - ... ${USERS.users['${viewer}'].broker}  
201 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
202 - Отримати дані із тендера ${viewer} bids[0].tenderers[0].name  
203 -  
204 -Відображення значення ставки другої пропозиції  
205 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
206 - ... viewer  
207 - ... ${USERS.users['${viewer}'].broker}  
208 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
209 - Отримати дані із тендера ${viewer} bids[1].value.amount  
210 -  
211 -Відображення значення нецінового критерію другої пропозиції  
212 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
213 - ... viewer  
214 - ... ${USERS.users['${viewer}'].broker}  
215 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
216 - Отримати дані із тендера ${viewer} bids[1].parameters  
217 -  
218 -Відображення дати другої пропозиції  
219 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
220 - ... viewer  
221 - ... ${USERS.users['${viewer}'].broker}  
222 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
223 - Отримати дані із тендера ${viewer} bids[1].date  
224 -  
225 -Відображення назви учасника другої пропозиції  
226 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення пропозицій  
227 - ... viewer  
228 - ... ${USERS.users['${viewer}'].broker}  
229 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
230 - Отримати дані із тендера ${viewer} bids[1].tenderers[0].name  
231 -  
232 -Відображення значення ставки пропозиції переможця  
233 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення даних про постачальника  
234 - ... viewer  
235 - ... ${USERS.users['${viewer}'].broker}  
236 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
237 - Отримати дані із тендера ${viewer} awards[0].value.amount  
238 -  
239 -Відображення назви переможця  
240 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення даних про постачальника  
241 - ... viewer  
242 - ... ${USERS.users['${viewer}'].broker}  
243 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
244 - Отримати дані із тендера ${viewer} awards[0].suppliers[0].name  
245 -  
246 -Можливість отримати результати аукціону  
247 - [Tags] ${USERS.users['${tender_owner}'].broker}: Результати аукціону  
248 - ... tender_owner  
249 - ... ${USERS.users['${tender_owner}'].broker}  
250 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
251 - ${result}= chef ${USERS.users['${viewer}'].tender_data.data.bids} ${USERS.users['${tender_owner}'].initial_data.data.features}  
252 - Log ${result}  
253 - Should Be Equal ${result[0].tenderers[0].name} ${USERS.users['${viewer}'].tender_data.data.awards[0].suppliers[0].name}  
254 - Should Be Equal ${result[0].value.amount} ${USERS.users['${viewer}'].tender_data.data.awards[0].value.amount}  
1 -*** Settings ***  
2 -Library op_robot_tests.tests_files.service_keywords  
3 -Library String  
4 -Library Collections  
5 -Library Selenium2Library  
6 -Library DebugLibrary  
7 -Resource keywords.robot  
8 -Resource resource.robot  
9 -Suite Setup Test Suite Setup  
10 -Suite Teardown Test Suite Teardown  
11 -  
12 -*** Variables ***  
13 -${mode} multiItem  
14 -@{used_roles} tender_owner provider provider1 viewer  
15 -  
16 -  
17 -*** Test Cases ***  
18 -Можливість оголосити багатопредметний тендер  
19 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
20 - ... tender_owner  
21 - ... ${USERS.users['${tender_owner}'].broker}  
22 - ... minimal  
23 - [Teardown] Оновити LAST_MODIFICATION_DATE  
24 - ${tender_data}= Підготовка даних для створення тендера  
25 - ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}  
26 - ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data}  
27 - Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}  
28 - Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}  
29 - log ${TENDER}  
30 -  
31 -Можливість знайти багатопредметний тендер по ідентифікатору  
32 - [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору  
33 - ... viewer tender_owner  
34 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
35 - ... minimal  
36 - :FOR ${username} IN ${viewer} ${tender_owner}  
37 - \ Дочекатись синхронізації з майданчиком ${username}  
38 - \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
39 -  
40 -Відображення опису позицій закупівлі багатопредметного тендера  
41 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
42 - ... viewer tender_owner  
43 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
44 - ... minimal  
45 - :FOR ${username} IN ${viewer} ${tender_owner}  
46 - \ Звірити поля предметів закупівлі багатопредметного тендера ${username} ${USERS.users['${tender_owner}'].initial_data} description  
47 -  
48 -Відображення дати доставки позицій закупівлі багатопредметного тендера  
49 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
50 - ... viewer  
51 - ... ${USERS.users['${viewer}'].broker}  
52 - ... level3  
53 - Звірити дату предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryDate.endDate day absolute_delta=${True}  
54 -  
55 -Відображення координат доставки позицій закупівлі багатопредметного тендера  
56 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
57 - ... viewer  
58 - ... ${USERS.users['${viewer}'].broker}  
59 - Звірити координати доставки предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data}  
60 -  
61 -Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера  
62 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
63 - ... viewer  
64 - ... ${USERS.users['${viewer}'].broker}  
65 - ... level3  
66 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.countryName  
67 -  
68 -Відображення пошт. коду доставки позицій закупівлі багатопредметного тендера  
69 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
70 - ... viewer  
71 - ... ${USERS.users['${viewer}'].broker}  
72 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.postalCode  
73 -  
74 -Відображення регіону доставки позицій закупівлі багатопредметного тендера  
75 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
76 - ... viewer  
77 - ... ${USERS.users['${viewer}'].broker}  
78 - ... level3  
79 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.region  
80 -  
81 -Відображення locality адреси доставки позицій закупівлі багатопредметного тендера  
82 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
83 - ... viewer  
84 - ... ${USERS.users['${viewer}'].broker}  
85 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.locality  
86 -  
87 -Відображення вулиці доставки позицій закупівлі багатопредметного тендера  
88 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
89 - ... viewer  
90 - ... ${USERS.users['${viewer}'].broker}  
91 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryAddress.streetAddress  
92 -  
93 -Відображення схеми класифікації позицій закупівлі багатопредметного тендера  
94 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
95 - ... viewer  
96 - ... ${USERS.users['${viewer}'].broker}  
97 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.scheme  
98 -  
99 -Відображення ідентифікатора класифікації позицій закупівлі багатопредметного тендера  
100 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
101 - ... viewer  
102 - ... ${USERS.users['${viewer}'].broker}  
103 - ... level3  
104 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.id  
105 -  
106 -Відображення опису класифікації позицій закупівлі багатопредметного тендера  
107 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
108 - ... viewer  
109 - ... ${USERS.users['${viewer}'].broker}  
110 - ... level3  
111 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} classification.description  
112 -  
113 -Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера  
114 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
115 - ... viewer  
116 - ... ${USERS.users['${viewer}'].broker}  
117 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].scheme  
118 -  
119 -Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера  
120 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
121 - ... viewer  
122 - ... ${USERS.users['${viewer}'].broker}  
123 - ... level3  
124 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].id  
125 -  
126 -Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера  
127 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
128 - ... viewer  
129 - ... ${USERS.users['${viewer}'].broker}  
130 - ... level3  
131 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} additionalClassifications[0].description  
132 -  
133 -Відображення назви одиниці позицій закупівлі багатопредметного тендера  
134 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
135 - ... viewer  
136 - ... ${USERS.users['${viewer}'].broker}  
137 - ... level3  
138 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} unit.name  
139 -  
140 -Відображення коду одиниці позицій закупівлі багатопредметного тендера  
141 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
142 - ... viewer  
143 - ... ${USERS.users['${viewer}'].broker}  
144 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} unit.code  
145 -  
146 -Відображення кількості позицій закупівлі багатопредметного тендера  
147 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
148 - ... viewer  
149 - ... ${USERS.users['${viewer}'].broker}  
150 - ... level3  
151 - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} quantity  
152 -  
153 -Можливість редагувати багатопредметний тендер  
154 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
155 - ... tender_owner  
156 - ... ${USERS.users['${tender_owner}'].broker}  
157 - ... level2  
158 - [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}  
159 - [Teardown] Оновити LAST_MODIFICATION_DATE  
160 - Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description  
161 -  
162 -Можливість додати шосту позицію закупівлі в тендер  
163 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
164 - ... tender_owner  
165 - ... ${USERS.users['${tender_owner}'].broker}  
166 - ... level2  
167 - [Teardown] Оновити LAST_MODIFICATION_DATE  
168 - ${item}= Підготовка даних для створення предмету закупівлі  
169 - Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item}  
170 - ${item_id}= get_id_from_object ${item}  
171 - ${item_data}= Create Dictionary item=${item} item_id=${item_id}  
172 - ${item_data}= munch_dict arg=${item_data}  
173 - Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data}  
174 -  
175 -Відображення опису нової шостої позиції закупівлі багатопредметного тендера  
176 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
177 - ... viewer tender_owner  
178 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
179 - ... level2  
180 - :FOR ${username} IN ${viewer} ${tender_owner}  
181 - \ Дочекатись синхронізації з майданчиком ${username}  
182 - \ Звірити поле тендера із значенням ${username} ${USERS.users['${tender_owner}'].item_data.item.description} description ${USERS.users['${tender_owner}'].item_data.item_id}  
183 -  
184 -Можливість додати сьому позицію закупівлі в тендер  
185 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
186 - ... tender_owner  
187 - ... ${USERS.users['${tender_owner}'].broker}  
188 - ... level2  
189 - [Teardown] Оновити LAST_MODIFICATION_DATE  
190 - ${item}= Підготовка даних для створення предмету закупівлі  
191 - Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item}  
192 - ${item_id}= get_id_from_object ${item}  
193 - ${item_data}= Create Dictionary item=${item} item_id=${item_id}  
194 - ${item_data}= munch_dict arg=${item_data}  
195 - Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data}  
196 -  
197 -Відображення опису нової сьомої позиції закупівлі багатопредметного тендера  
198 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера  
199 - ... viewer tender_owner  
200 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
201 - ... level2  
202 - :FOR ${username} IN ${viewer} ${tender_owner}  
203 - \ Дочекатись синхронізації з майданчиком ${username}  
204 - \ Звірити поле тендера із значенням ${username} ${USERS.users['${tender_owner}'].item_data.item.description} description ${USERS.users['${tender_owner}'].item_data.item_id}  
205 -  
206 -Можливість видалити п’яту позицію закупівлі тендера  
207 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
208 - ... tender_owner  
209 - ... ${USERS.users['${tender_owner}'].broker}  
210 - ... level2  
211 - [Teardown] Оновити LAST_MODIFICATION_DATE  
212 - ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][4]}  
213 - Run As ${tender_owner} Видалити предмет закупівлі ${TENDER['TENDER_UAID']} ${item_id}  
1 -*** Settings ***  
2 -Library op_robot_tests.tests_files.service_keywords  
3 -Library String  
4 -Library Collections  
5 -Library Selenium2Library  
6 -Library DebugLibrary  
7 -Resource keywords.robot  
8 -Resource resource.robot  
9 -Suite Setup Test Suite Setup  
10 -Suite Teardown Test Suite Teardown  
11 -  
12 -*** Variables ***  
13 -${mode} multiLot  
14 -@{used_roles} tender_owner provider provider1 viewer  
15 -${complaint_id} 1  
16 -  
17 -  
18 -*** Test Cases ***  
19 -Можливість оголосити мультилотовий тендер  
20 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер  
21 - ... tender_owner  
22 - ... ${USERS.users['${tender_owner}'].broker}  
23 - ... minimal  
24 - [Teardown] Оновити LAST_MODIFICATION_DATE  
25 - ${tender_data}= Підготовка даних для створення тендера  
26 - ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}  
27 - ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data}  
28 - Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}  
29 - Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}  
30 - Log ${TENDER}  
31 -  
32 -  
33 -Можливість знайти мультилотовий тендер по ідентифікатору  
34 - [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору  
35 - ... viewer tender_owner provider provider1  
36 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
37 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
38 - ... minimal  
39 - :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}  
40 - \ Дочекатись синхронізації з майданчиком ${username}  
41 - \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
42 -  
43 -Можливість додати тендерну документацію лоту  
44 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ  
45 - ... tender_owner  
46 - ... ${USERS.users['${tender_owner}'].broker}  
47 - [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі  
48 - [Teardown] Оновити LAST_MODIFICATION_DATE  
49 - ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[0]}  
50 - ${filepath}= create_fake_doc  
51 - Run As ${tender_owner} Завантажити документ в лот ${filepath} ${TENDER['TENDER_UAID']} ${lot_id}  
52 -  
53 -Відображення заголовку першого лоту  
54 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
55 - ... viewer tender_owner provider provider1  
56 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
57 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
58 - ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[0]}  
59 - :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}  
60 - \ Дочекатись синхронізації з майданчиком ${username}  
61 - \ Звірити поле тендера із значенням ${username}  
62 - \ ... ${USERS.users['${tender_owner}'].initial_data.data.lots[0].title} title  
63 - \ ... object_id=${lot_id}  
64 -  
65 -Відображення опису першого лоту  
66 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
67 - ... viewer  
68 - ... ${USERS.users['${viewer}'].broker}  
69 - ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[0]}  
70 - Звірити поле тендера із значенням ${viewer}  
71 - ... ${USERS.users['${tender_owner}'].initial_data.data.lots[0].description} description  
72 - ... object_id=${lot_id}  
73 -  
74 -#######  
75 -#Операції з лотом  
76 -  
77 -Можливість створення лоту  
78 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
79 - ... tender_owner  
80 - ... ${USERS.users['${tender_owner}'].broker}  
81 - [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}  
82 - [Teardown] Оновити LAST_MODIFICATION_DATE  
83 - ${lot}= Підготовка даних для створення лоту ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
84 - ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot}  
85 - ${lot_id}= get_id_from_object ${lot.data}  
86 - ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id}  
87 - ${lot_data}= munch_dict arg=${lot_data}  
88 - Set To Dictionary ${USERS.users['${tender_owner}']} lot_data=${lot_data}  
89 - log ${lot_resp}  
90 -  
91 -Можливість видалення лоту  
92 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
93 - ... tender_owner  
94 - ... ${USERS.users['${tender_owner}'].broker}  
95 - [Teardown] Оновити LAST_MODIFICATION_DATE  
96 - Run As ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id}  
97 -  
98 -Можливість повторого створення лоту  
99 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
100 - ... tender_owner  
101 - ... ${USERS.users['${tender_owner}'].broker}  
102 - [Teardown] Оновити LAST_MODIFICATION_DATE  
103 - ${lot}= Підготовка даних для створення лоту ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
104 - ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot}  
105 - ${lot_id}= get_id_from_object ${lot.data}  
106 - ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id}  
107 - ${lot_data}= munch_dict arg=${lot_data}  
108 - Set To Dictionary ${USERS.users['${tender_owner}']} lot_data=${lot_data}  
109 - log ${lot_resp}  
110 -  
111 -Відображення заголовку другого лоту  
112 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
113 - ... viewer tender_owner provider provider1  
114 - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}  
115 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
116 - :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}  
117 - \ Дочекатись синхронізації з майданчиком ${username}  
118 - \ Звірити поле тендера із значенням ${username}  
119 - \ ... ${USERS.users['${tender_owner}'].lot_data.lot.data.title} title  
120 - \ ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id}  
121 -  
122 -Відображення опису другого лоту  
123 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
124 - ... viewer  
125 - ... ${USERS.users['${viewer}'].broker}  
126 - Звірити поле тендера із значенням ${viewer}  
127 - ... ${USERS.users['${tender_owner}'].lot_data.lot.data.description} description  
128 - ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id}  
129 -  
130 -Відображення бюджету другого лоту  
131 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
132 - ... viewer  
133 - ... ${USERS.users['${viewer}'].broker}  
134 - Звірити поле тендера із значенням ${viewer}  
135 - ... ${USERS.users['${tender_owner}'].lot_data.lot.data.value.amount} value.amount  
136 - ... object_id=${USERS.users['${tender_owner}'].lot_data.lot_id}  
137 -  
138 -Можливість змінити бюджет другого лоту до 100  
139 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
140 - ... tender_owner  
141 - ... ${USERS.users['${tender_owner}'].broker}  
142 - [Teardown] Оновити LAST_MODIFICATION_DATE  
143 - Run As ${tender_owner} Змінити лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} value.amount 100  
144 -  
145 -  
146 -Можливість змінити бюджет другого лоту до 8000  
147 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
148 - ... tender_owner  
149 - ... ${USERS.users['${tender_owner}'].broker}  
150 - [Teardown] Оновити LAST_MODIFICATION_DATE  
151 - Run As ${tender_owner} Змінити лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} value.amount 8000  
152 -  
153 -#####  
154 -#Предмети закупівлі лоту  
155 -  
156 -Можливість добавити предмет закупівлі до другого лоту  
157 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
158 - ... tender_owner  
159 - ... ${USERS.users['${tender_owner}'].broker}  
160 - [Teardown] Оновити LAST_MODIFICATION_DATE  
161 - ${item}= Підготовка даних для створення предмету закупівлі  
162 - Run As ${tender_owner} Додати предмет закупівлі в лот ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].lot_data.lot_id} ${item}  
163 -  
164 -Неможливість видалення лоту з прив’язаними предметами закупівлі  
165 - [Documentation]  
166 - ... `Видалити лот` should not pass in this test case.  
167 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
168 - ... tender_owner  
169 - ... ${USERS.users['${tender_owner}'].broker}  
170 - ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lot_data.lot_id}  
171 - Require Failure ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${lot_id}  
172 -  
173 -  
174 -#######  
175 -#Запитання до лоту  
176 -  
177 -Можливість задати питання до лоту  
178 - [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання  
179 - ... provider  
180 - ... ${USERS.users['${provider}'].broker}  
181 - [Setup] Дочекатись синхронізації з майданчиком ${provider}  
182 - [Teardown] Оновити LAST_MODIFICATION_DATE  
183 - ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lot_data.lot_id}  
184 - ${question}= Підготовка даних для запитання  
185 - ${question_resp}= Run As ${provider} Задати питання до лоту ${TENDER['TENDER_UAID']} ${lot_id} ${question}  
186 - ${now}= Get Current TZdate  
187 - ${question.data.date}= Set variable ${now}  
188 - ${question_id}= get_id_from_object ${question.data}  
189 - ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}  
190 - ${question_data}= munch_dict arg=${question_data}  
191 - Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data}  
192 -  
193 -  
194 -Можливість відповісти на запитання до лоту  
195 - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання  
196 - ... tender_owner  
197 - ... ${USERS.users['${tender_owner}'].broker}  
198 - [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}  
199 - [Teardown] Оновити LAST_MODIFICATION_DATE  
200 - ${answer}= Підготовка даних для відповіді на запитання  
201 - ${answer_resp}= Run As ${tender_owner}  
202 - ... Відповісти на питання ${TENDER['TENDER_UAID']}  
203 - ... ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}  
204 - ... question_id=${USERS.users['${provider}'].question_data.question_id}  
205 - ${now}= Get Current TZdate  
206 - ${answer.data.date}= Set variable ${now}  
207 - ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp}  
208 - Set To Dictionary ${USERS.users['${provider}']} answer_data=${answer_data}  
209 -  
210 -######  
211 -#Подання пропозицій  
212 -  
213 -Відображення початку періоду прийому пропозицій оголошеного тендера  
214 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
215 - ... viewer provider provider1  
216 - ... ${USERS.users['${viewer}'].broker}  
217 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
218 - ... minimal  
219 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
220 - \ Дочекатись синхронізації з майданчиком ${username}  
221 - \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate  
222 -  
223 -Відображення закінчення періоду прийому пропозицій оголошеного тендера  
224 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
225 - ... viewer provider provider1  
226 - ... ${USERS.users['${viewer}'].broker}  
227 - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}  
228 - ... minimal  
229 - :FOR ${username} IN ${viewer} ${provider} ${provider1}  
230 - \ Дочекатись синхронізації з майданчиком ${username}  
231 - \ Звірити дату тендера ${username} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate  
232 -  
233 -Неможливість подати цінову пропозицію до початку періоду подачі пропозицій  
234 - [Documentation]  
235 - ... `Подати цінову пропозицію` should not pass in this test case.  
236 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
237 - ... provider  
238 - ... ${USERS.users['${provider}'].broker}  
239 - [Setup] Дочекатись синхронізації з майданчиком ${provider}  
240 - @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots  
241 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
242 - ${bid_before_bidperiod_resp}= Require Failure ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}  
243 - log ${bid_before_bidperiod_resp}  
244 -  
245 -Неможливість подати цінову пропозицію без прив’язки до лоту  
246 - [Documentation]  
247 - ... `Подати цінову пропозицію` should not pass in this test case.  
248 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
249 - ... provider  
250 - ... ${USERS.users['${provider}'].broker}  
251 - [Setup] Дочекатись дати початку прийому пропозицій ${provider}  
252 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
253 - ${no_lot_bid_resp}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}  
254 - log ${no_lot_bid_resp}  
255 -  
256 -Можливість подати цінову пропозицію першим учасником  
257 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
258 - ... provider  
259 - ... ${USERS.users['${provider}'].broker}  
260 - [Teardown] Оновити LAST_MODIFICATION_DATE  
261 - @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots  
262 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
263 - ${bidresponses}= Create Dictionary bid=${bid}  
264 - Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}  
265 - ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}  
266 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp=${resp}  
267 -  
268 -Можливість скасувати цінову пропозицію  
269 - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію  
270 - ... provider  
271 - ... ${USERS.users['${provider}'].broker}  
272 - [Teardown] Оновити LAST_MODIFICATION_DATE  
273 - ${canceledbidresp}= Run As ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']}  
274 - Log ${canceledbidresp}  
275 -  
276 -Можливість подати повторно цінову пропозицію першим учасником  
277 - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію  
278 - ... provider  
279 - ... ${USERS.users['${provider}'].broker}  
280 - [Setup] Дочекатись дати початку прийому пропозицій ${provider}  
281 - [Teardown] Оновити LAST_MODIFICATION_DATE  
282 - Дочекатись дати початку прийому пропозицій ${provider}  
283 - @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots  
284 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
285 - ${bidresponses}= Create Dictionary bid=${bid}  
286 - Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}  
287 - ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}  
288 - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp=${resp}  
289 -  
290 -Можливість змінити повторну цінову пропозицію до 2000  
291 - [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію  
292 - ... provider  
293 - ... ${USERS.users['${provider}'].broker}  
294 - [Teardown] Оновити LAST_MODIFICATION_DATE  
295 - ${fixbidto2000resp}= Run As ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000  
296 - log ${fixbidto2000resp}  
297 -  
298 -Можливість змінити повторну цінову пропозицію до 10  
299 - [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію  
300 - ... provider  
301 - ... ${USERS.users['${provider}'].broker}  
302 - [Teardown] Оновити LAST_MODIFICATION_DATE  
303 - ${fixbidto10resp}= Run As ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 10  
304 - log ${fixbidto10resp}  
305 -  
306 -Можливість подати цінову пропозицію другим учасником  
307 - [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію  
308 - ... provider1  
309 - ... ${USERS.users['${provider1}'].broker}  
310 - [Setup] Дочекатись дати початку прийому пропозицій ${provider1}  
311 - [Teardown] Оновити LAST_MODIFICATION_DATE  
312 - Дочекатись дати початку прийому пропозицій ${provider1}  
313 - @{lots_ids}= Отримати ідентифікатори об’єктів ${provider1} lots  
314 - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}  
315 - ${bidresponses}= Create Dictionary bid=${bid}  
316 - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}  
317 - ${resp}= Run As ${provider1} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}  
318 - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}  
319 -  
320 -Неможливість побачити цінові пропозиції учасників під час прийому пропозицій  
321 - [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію  
322 - ... viewer  
323 - ... ${USERS.users['${viewer}'].broker}  
324 - [Setup] Дочекатись синхронізації з майданчиком ${viewer}  
325 - Require Failure ${viewer} Отримати інформацію із тендера bids  
326 -  
327 -Неможливість змінити цінову пропозицію до 2000 після закінчення прийому пропозицій  
328 - [Documentation]  
329 - ... `Змінити цінову пропозицію` should not pass in this test case.  
330 - [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 2000 після закінчення прийому пропозицій  
331 - ... provider1  
332 - ... ${USERS.users['${provider1}'].broker}  
333 - [Setup] Дочекатись дати закінчення прийому пропозицій ${provider1}  
334 - ${failfixbidto2000resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 2000  
335 - log ${failfixbidto2000resp}  
336 -  
337 -Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій  
338 - [Documentation]  
339 - ... `Змінити цінову пропозицію` should not pass in this test case.  
340 - [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій  
341 - ... provider1  
342 - ... ${USERS.users['${provider1}'].broker}  
343 - ${failfixbidto1resp}= Require Failure ${provider1} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} lotValues.0.value.amount 1  
344 - log ${failfixbidto1resp}  
345 -  
346 -Неможливість скасувати цінову пропозицію  
347 - [Documentation]  
348 - ... `Скасувати цінову пропозицію` should not pass in this test case.  
349 - [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію  
350 - ... provider1  
351 - ... ${USERS.users['${provider1}'].broker}  
352 - ${biddingresponse}= Require Failure ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']}  
353 - log ${biddingresponse}  
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 from faker.providers import BaseProvider 2 from faker.providers import BaseProvider
  3 +from copy import deepcopy
3 from munch import Munch 4 from munch import Munch
4 from json import load 5 from json import load
5 import os 6 import os
@@ -85,7 +86,7 @@ class OP_Provider(BaseProvider): @@ -85,7 +86,7 @@ class OP_Provider(BaseProvider):
85 86
86 @classmethod 87 @classmethod
87 def procuringEntity(self): 88 def procuringEntity(self):
88 - return self.random_element(self.procuringEntities) 89 + return deepcopy(self.random_element(self.procuringEntities))
89 90
90 @classmethod 91 @classmethod
91 def cpv(self): 92 def cpv(self):
@@ -123,6 +124,8 @@ class OP_Provider(BaseProvider): @@ -123,6 +124,8 @@ class OP_Provider(BaseProvider):
123 address = self.random_element(self.addresses) 124 address = self.random_element(self.addresses)
124 item = { 125 item = {
125 "description": item_base_data["description"], 126 "description": item_base_data["description"],
  127 + "description_ru": item_base_data["description_ru"],
  128 + "description_en": item_base_data["description_en"],
126 "classification": classification["classification"], 129 "classification": classification["classification"],
127 "additionalClassifications": classification["additionalClassifications"], 130 "additionalClassifications": classification["additionalClassifications"],
128 "deliveryAddress": address["deliveryAddress"], 131 "deliveryAddress": address["deliveryAddress"],
@@ -130,4 +133,4 @@ class OP_Provider(BaseProvider): @@ -130,4 +133,4 @@ class OP_Provider(BaseProvider):
130 "unit": item_base_data["unit"], 133 "unit": item_base_data["unit"],
131 "quantity": self.randomize_nb_elements(number=item_base_data["quantity"], le=80, ge=120) 134 "quantity": self.randomize_nb_elements(number=item_base_data["quantity"], le=80, ge=120)
132 } 135 }
133 - return item 136 + return deepcopy(item)
@@ -7901,6 +7901,8 @@ @@ -7901,6 +7901,8 @@
7901 { 7901 {
7902 "cpv_id": "30199000-0", 7902 "cpv_id": "30199000-0",
7903 "description": "Папір для офісної техніки А4", 7903 "description": "Папір для офісної техніки А4",
  7904 + "description_ru": "Бумага для офисной техники формата А4",
  7905 + "description_en": "Paper for office equipment А4",
7904 "quantity": 15, 7906 "quantity": 15,
7905 "unit": { 7907 "unit": {
7906 "code": "PK", 7908 "code": "PK",
@@ -7910,6 +7912,8 @@ @@ -7910,6 +7912,8 @@
7910 { 7912 {
7911 "cpv_id": "24910000-6", 7913 "cpv_id": "24910000-6",
7912 "description": "Клей СМ-11", 7914 "description": "Клей СМ-11",
  7915 + "description_ru": "Клей СМ-11",
  7916 + "description_en": "Glue SM-11",
7913 "quantity": 50, 7917 "quantity": 50,
7914 "unit": { 7918 "unit": {
7915 "code": "KGM", 7919 "code": "KGM",
@@ -7919,6 +7923,8 @@ @@ -7919,6 +7923,8 @@
7919 { 7923 {
7920 "cpv_id": "22990000-6", 7924 "cpv_id": "22990000-6",
7921 "description": "Вироби канцелярські, паперові", 7925 "description": "Вироби канцелярські, паперові",
  7926 + "description_ru": "Изделия канцелярские, бумажные",
  7927 + "description_en": "Paper stationery",
7922 "quantity": 116, 7928 "quantity": 116,
7923 "unit": { 7929 "unit": {
7924 "code": "H87", 7930 "code": "H87",
@@ -7928,6 +7934,8 @@ @@ -7928,6 +7934,8 @@
7928 { 7934 {
7929 "cpv_id": "22800000-8", 7935 "cpv_id": "22800000-8",
7930 "description": "Бланки та журнали відповідної форми (наведені в додатку)", 7936 "description": "Бланки та журнали відповідної форми (наведені в додатку)",
  7937 + "description_ru": "Бланки и журналы соответствующей формы (приведены в приложении)",
  7938 + "description_en": "Form and journals in appropriate form (listed in Annex)",
7931 "quantity": 5, 7939 "quantity": 5,
7932 "unit": { 7940 "unit": {
7933 "code": "LO", 7941 "code": "LO",
@@ -7936,7 +7944,9 @@ @@ -7936,7 +7944,9 @@
7936 }, 7944 },
7937 { 7945 {
7938 "cpv_id": "30192121-5", 7946 "cpv_id": "30192121-5",
7939 - "description": "ручки кулькові", 7947 + "description": "Ручки кулькові",
  7948 + "description_ru": "Ручки шариковые",
  7949 + "description_en": "Ballpoint pens",
7940 "quantity": 10, 7950 "quantity": 10,
7941 "unit": { 7951 "unit": {
7942 "code": "PK", 7952 "code": "PK",
@@ -7945,7 +7955,9 @@ @@ -7945,7 +7955,9 @@
7945 }, 7955 },
7946 { 7956 {
7947 "cpv_id": "30192130-1", 7957 "cpv_id": "30192130-1",
7948 - "description": "олівці прості", 7958 + "description": "Олівці прості",
  7959 + "description_ru": "Карандаши простые",
  7960 + "description_en": "Plain pencils",
7949 "quantity": 3, 7961 "quantity": 3,
7950 "unit": { 7962 "unit": {
7951 "code": "PK", 7963 "code": "PK",
@@ -7955,6 +7967,8 @@ @@ -7955,6 +7967,8 @@
7955 { 7967 {
7956 "cpv_id": "30197600-2", 7968 "cpv_id": "30197600-2",
7957 "description": "Папір офісний призначений для друку та копіювання на лазерній, струменевій техніці, формат А4 - 210 х 297 мм, щільність 80г/м2.", 7969 "description": "Папір офісний призначений для друку та копіювання на лазерній, струменевій техніці, формат А4 - 210 х 297 мм, щільність 80г/м2.",
  7970 + "description_ru": "Бумага офисная предназначен для печати и копирования на лазерной, струйной технике, формат А4 - 210 х 297 мм, плотность 80г м2.",
  7971 + "description_en": "Paper for office equipment А4",
7958 "quantity": 20, 7972 "quantity": 20,
7959 "unit": { 7973 "unit": {
7960 "code": "NMP", 7974 "code": "NMP",
@@ -7964,6 +7978,8 @@ @@ -7964,6 +7978,8 @@
7964 { 7978 {
7965 "cpv_id": "22200000-2", 7979 "cpv_id": "22200000-2",
7966 "description": "Періодичні видання оригінальні на 2016 рік (газети України, журнали України, журнали Росії)", 7980 "description": "Періодичні видання оригінальні на 2016 рік (газети України, журнали України, журнали Росії)",
  7981 + "description_ru": "Периодические издания оригинала в 2016 году (газет Украина, журналов Украины, журналов России)",
  7982 + "description_en": "Periodicals original in 2016 (Ukrainian newspapers, Ukrainian magazines, Russian magazines)",
7967 "quantity": 126, 7983 "quantity": 126,
7968 "unit": { 7984 "unit": {
7969 "code": "H87", 7985 "code": "H87",
@@ -7973,6 +7989,8 @@ @@ -7973,6 +7989,8 @@
7973 { 7989 {
7974 "cpv_id": "22212000-9", 7990 "cpv_id": "22212000-9",
7975 "description": "Додаток № 1 до документації", 7991 "description": "Додаток № 1 до документації",
  7992 + "description_ru": "Приложение № 1 к документации",
  7993 + "description_en": "Supplement # 1 to documentation",
7976 "quantity": 12, 7994 "quantity": 12,
7977 "unit": { 7995 "unit": {
7978 "code": "SET", 7996 "code": "SET",
  1 +*** Settings ***
  2 +Resource base_keywords.robot
  3 +Resource aboveThreshold_keywords.robot
  4 +Suite Setup Test Suite Setup
  5 +Suite Teardown Test Suite Teardown
  6 +
  7 +
  8 +*** Variables ***
  9 +${mode} openeu
  10 +@{used_roles} tender_owner provider provider1 viewer
  11 +
  12 +${number_of_items} ${1}
  13 +${number_of_lots} ${1}
  14 +${tender_meat} ${True}
  15 +${lot_meat} ${True}
  16 +${item_meat} ${True}
  17 +
  18 +
  19 +*** Test Cases ***
  20 +Можливість оголосити тендер
  21 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  22 + ... tender_owner
  23 + ... ${USERS.users['${tender_owner}'].broker}
  24 + ... create_tender
  25 + [Teardown] Оновити LAST_MODIFICATION_DATE
  26 + Можливість оголосити тендер
  27 +
  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 + ... search_tender
  35 + Можливість знайти тендер по ідентифікатору для усіх користувачів
  36 +
  37 +##############################################################################################
  38 +# Відображення основних даних тендера
  39 +##############################################################################################
  40 +
  41 +Відображення заголовку тендера
  42 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  43 + ... viewer
  44 + ... ${USERS.users['${viewer}'].broker}
  45 + ... tender_view
  46 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  47 + Звірити відображення поля title тендера для користувача ${viewer}
  48 +
  49 +
  50 +Відображення опису тендера
  51 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  52 + ... viewer
  53 + ... ${USERS.users['${viewer}'].broker}
  54 + ... tender_view
  55 + Звірити відображення поля description тендера для користувача ${viewer}
  56 +
  57 +
  58 +Відображення бюджету тендера
  59 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  60 + ... viewer
  61 + ... ${USERS.users['${viewer}'].broker}
  62 + ... tender_view
  63 + Звірити відображення поля value.amount тендера для усіх користувачів
  64 +
  65 +
  66 +Відображення валюти тендера
  67 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  68 + ... viewer
  69 + ... ${USERS.users['${viewer}'].broker}
  70 + ... tender_view
  71 + Звірити відображення поля value.currency тендера для користувача ${viewer}
  72 +
  73 +
  74 +Відображення ПДВ в бюджеті тендера
  75 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  76 + ... viewer
  77 + ... ${USERS.users['${viewer}'].broker}
  78 + ... tender_view
  79 + Звірити відображення поля value.valueAddedTaxIncluded тендера для користувача ${viewer}
  80 +
  81 +
  82 +Відображення ідентифікатора тендера
  83 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  84 + ... viewer
  85 + ... ${USERS.users['${viewer}'].broker}
  86 + ... tender_view
  87 + Звірити відображення поля tenderID тендера із ${TENDER['TENDER_UAID']} для користувача ${viewer}
  88 +
  89 +
  90 +Відображення імені замовника тендера
  91 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  92 + ... viewer
  93 + ... ${USERS.users['${viewer}'].broker}
  94 + ... tender_view
  95 + Звірити відображення поля procuringEntity.name тендера для користувача ${viewer}
  96 +
  97 +
  98 +Відображення початку періоду уточнення тендера
  99 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  100 + ... viewer
  101 + ... ${USERS.users['${viewer}'].broker}
  102 + ... tender_view
  103 + Run Keyword IF 'open' in '${mode}'
  104 + ... Отримати дані із поля enquiryPeriod.startDate тендера для усіх користувачів
  105 + ... ELSE
  106 + ... Звірити відображення дати enquiryPeriod.startDate тендера для усіх користувачів
  107 +
  108 +
  109 +Відображення закінчення періоду уточнення тендера
  110 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  111 + ... viewer
  112 + ... ${USERS.users['${viewer}'].broker}
  113 + ... tender_view
  114 + Run Keyword IF 'open' in '${mode}'
  115 + ... Отримати дані із поля enquiryPeriod.endDate тендера для усіх користувачів
  116 + ... ELSE
  117 + ... Звірити відображення дати enquiryPeriod.endDate тендера для усіх користувачів
  118 +
  119 +
  120 +Відображення початку періоду прийому пропозицій тендера
  121 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  122 + ... viewer
  123 + ... ${USERS.users['${viewer}'].broker}
  124 + ... tender_view
  125 + Звірити відображення дати tenderPeriod.startDate тендера для усіх користувачів
  126 +
  127 +
  128 +Відображення закінчення періоду прийому пропозицій тендера
  129 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  130 + ... viewer
  131 + ... ${USERS.users['${viewer}'].broker}
  132 + ... tender_view
  133 + Звірити відображення дати tenderPeriod.endDate тендера для усіх користувачів
  134 +
  135 +
  136 +Відображення мінімального кроку тендера
  137 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  138 + ... viewer
  139 + ... ${USERS.users['${viewer}'].broker}
  140 + ... tender_view
  141 + Звірити відображення поля minimalStep.amount тендера для користувача ${viewer}
  142 +
  143 +
  144 +Відображення типу оголошеного тендера
  145 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  146 + ... viewer
  147 + ... ${USERS.users['${viewer}'].broker}
  148 + ... open_tender_view
  149 + Звірити відображення поля procurementMethodType тендера для усіх користувачів
  150 +
  151 +
  152 +Відображення закінчення періоду подання скарг на оголошений тендер
  153 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  154 + ... viewer
  155 + ... ${USERS.users['${viewer}'].broker}
  156 + ... open_tender_view
  157 + Отримати дані із поля complaintPeriod.endDate тендера для усіх користувачів
  158 +
  159 +##############################################################################################
  160 +# Відображення основних даних предмету
  161 +##############################################################################################
  162 +
  163 +Відображення опису номенклатур тендера
  164 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  165 + ... viewer
  166 + ... ${USERS.users['${viewer}'].broker}
  167 + ... item_view
  168 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  169 + Звірити відображення поля description усіх предметів для користувача ${viewer}
  170 +
  171 +
  172 +Відображення дати доставки номенклатур тендера
  173 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  174 + ... viewer
  175 + ... ${USERS.users['${viewer}'].broker}
  176 + ... item_view
  177 + Звірити відображення дати deliveryDate.endDate усіх предметів для користувача ${viewer}
  178 +
  179 +
  180 +Відображення координати доставки номенклатур тендера
  181 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  182 + ... viewer
  183 + ... ${USERS.users['${viewer}'].broker}
  184 + ... item_view
  185 + Звірити відображення координат усіх предметів для користувача ${viewer}
  186 +
  187 +
  188 +Відображення назви нас. пункту доставки номенклатур тендера
  189 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  190 + ... viewer
  191 + ... ${USERS.users['${viewer}'].broker}
  192 + ... item_view
  193 + Звірити відображення поля deliveryAddress.countryName усіх предметів для користувача ${viewer}
  194 +
  195 +
  196 +Відображення пошт. коду доставки номенклатур тендера
  197 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  198 + ... viewer
  199 + ... ${USERS.users['${viewer}'].broker}
  200 + ... item_view
  201 + Звірити відображення поля deliveryAddress.postalCode усіх предметів для користувача ${viewer}
  202 +
  203 +
  204 +Відображення регіону доставки номенклатур тендера
  205 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  206 + ... viewer
  207 + ... ${USERS.users['${viewer}'].broker}
  208 + ... item_view
  209 + Звірити відображення поля deliveryAddress.region усіх предметів для користувача ${viewer}
  210 +
  211 +
  212 +Відображення locality адреси доставки номенклатур тендера
  213 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  214 + ... viewer
  215 + ... ${USERS.users['${viewer}'].broker}
  216 + ... item_view
  217 + Звірити відображення поля deliveryAddress.locality усіх предметів для користувача ${viewer}
  218 +
  219 +
  220 +Відображення вулиці доставки номенклатур тендера
  221 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  222 + ... viewer
  223 + ... ${USERS.users['${viewer}'].broker}
  224 + ... item_view
  225 + Звірити відображення поля deliveryAddress.streetAddress усіх предметів для користувача ${viewer}
  226 +
  227 +
  228 +Відображення схеми класифікації номенклатур тендера
  229 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  230 + ... viewer
  231 + ... ${USERS.users['${viewer}'].broker}
  232 + ... item_view
  233 + Звірити відображення поля classification.scheme усіх предметів для користувача ${viewer}
  234 +
  235 +
  236 +Відображення ідентифікатора класифікації номенклатур тендера
  237 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  238 + ... viewer
  239 + ... ${USERS.users['${viewer}'].broker}
  240 + ... item_view
  241 + Звірити відображення поля classification.id усіх предметів для користувача ${viewer}
  242 +
  243 +
  244 +Відображення опису класифікації номенклатур тендера
  245 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  246 + ... viewer
  247 + ... ${USERS.users['${viewer}'].broker}
  248 + ... item_view
  249 + Звірити відображення поля classification.description усіх предметів для користувача ${viewer}
  250 +
  251 +
  252 +Відображення схеми додаткової класифікації номенклатур тендера
  253 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  254 + ... viewer
  255 + ... ${USERS.users['${viewer}'].broker}
  256 + ... item_view
  257 + Звірити відображення поля additionalClassifications[0].scheme усіх предметів для користувача ${viewer}
  258 +
  259 +
  260 +Відображення ідентифікатора додаткової класифікації номенклатур тендера
  261 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  262 + ... viewer
  263 + ... ${USERS.users['${viewer}'].broker}
  264 + ... item_view
  265 + Звірити відображення поля additionalClassifications[0].id усіх предметів для користувача ${viewer}
  266 +
  267 +
  268 +Відображення опису додаткової класифікації номенклатур тендера
  269 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  270 + ... viewer
  271 + ... ${USERS.users['${viewer}'].broker}
  272 + ... item_view
  273 + Звірити відображення поля additionalClassifications[0].description усіх предметів для користувача ${viewer}
  274 +
  275 +
  276 +Відображення назви одиниці номенклатур тендера
  277 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  278 + ... viewer
  279 + ... ${USERS.users['${viewer}'].broker}
  280 + ... item_view
  281 + Звірити відображення поля unit.name усіх предметів для користувача ${viewer}
  282 +
  283 +
  284 +Відображення коду одиниці номенклатур тендера
  285 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  286 + ... viewer
  287 + ... ${USERS.users['${viewer}'].broker}
  288 + ... item_view
  289 + Звірити відображення поля unit.code усіх предметів для користувача ${viewer}
  290 +
  291 +
  292 +Відображення кількості номенклатур тендера
  293 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  294 + ... viewer
  295 + ... ${USERS.users['${viewer}'].broker}
  296 + ... item_view
  297 + Звірити відображення поля quantity усіх предметів для користувача ${viewer}
  298 +
  299 +##############################################################################################
  300 +# Відображення основних даних лоту
  301 +##############################################################################################
  302 +
  303 +Відображення заголовку лотів
  304 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера
  305 + ... viewer tender_owner provider provider1
  306 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  307 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  308 + ... lot_view
  309 + Звірити відображення поля title усіх лотів для усіх користувачів
  310 +
  311 +
  312 +Відображення опису лотів
  313 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера
  314 + ... viewer
  315 + ... ${USERS.users['${viewer}'].broker}
  316 + ... lot_view
  317 + Звірити відображення поля description усіх лотів для користувача ${viewer}
  318 +
  319 +
  320 +Відображення бюджету лотів
  321 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера
  322 + ... viewer
  323 + ... ${USERS.users['${viewer}'].broker}
  324 + ... lot_view
  325 + Звірити відображення поля value.amount усіх лотів для усіх користувачів
  326 +
  327 +
  328 +Відображення валюти лотів
  329 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера
  330 + ... viewer
  331 + ... ${USERS.users['${viewer}'].broker}
  332 + ... lot_view
  333 + Звірити відображення поля value.currency усіх лотів для користувача ${viewer}
  334 +
  335 +
  336 +Відображення ПДВ в бюджеті лотів
  337 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера
  338 + ... viewer
  339 + ... ${USERS.users['${viewer}'].broker}
  340 + ... lot_view
  341 + Звірити відображення поля value.valueAddedTaxIncluded усіх лотів для користувача ${viewer}
  342 +
  343 +##############################################################################################
  344 +# Відображення основних даних предмету
  345 +##############################################################################################
  346 +
  347 +Відображення заголовку нецінових показників
  348 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  349 + ... viewer tender_owner provider provider1
  350 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  351 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  352 + ... meat_view
  353 + Звірити відображення поля title усіх нецінових показників для усіх користувачів
  354 +
  355 +
  356 +Відображення опису нецінових показників
  357 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  358 + ... viewer
  359 + ... ${USERS.users['${viewer}'].broker}
  360 + ... meat_view
  361 + Звірити відображення поля description усіх нецінових показників для користувача ${viewer}
  362 +
  363 +
  364 +Відображення відношення нецінових показників
  365 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  366 + ... viewer
  367 + ... ${USERS.users['${viewer}'].broker}
  368 + ... meat_view
  369 + Звірити відображення поля featureOf усіх нецінових показників для користувача ${viewer}
  370 +
  371 +##############################################################################################
  372 +# Редагування тендера
  373 +##############################################################################################
  374 +
  375 +Можливість додати документацію до тендера
  376 + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації
  377 + ... tender_owner
  378 + ... ${USERS.users['${tender_owner}'].broker}
  379 + ... add_tender_doc
  380 + [Teardown] Оновити LAST_MODIFICATION_DATE
  381 + Можливість додати документацію до тендера
  382 +
  383 +
  384 +Можливість додати документацію до першого лоту
  385 + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації
  386 + ... tender_owner
  387 + ... ${USERS.users['${tender_owner}'].broker}
  388 + ... add_lot_doc
  389 + [Teardown] Оновити LAST_MODIFICATION_DATE
  390 + Можливість додати документацію до 0 лоту
  391 +
  392 +
  393 +Можливість зменшити бюджет першого лоту
  394 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  395 + ... tender_owner
  396 + ... ${USERS.users['${tender_owner}'].broker}
  397 + ... lot_modify
  398 + [Teardown] Оновити LAST_MODIFICATION_DATE
  399 + Можливість змінити на 99 відсотки бюджет 0 лоту
  400 +
  401 +
  402 +Можливість збільшити бюджет першого лоту
  403 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  404 + ... tender_owner
  405 + ... ${USERS.users['${tender_owner}'].broker}
  406 + ... lot_modify
  407 + [Teardown] Оновити LAST_MODIFICATION_DATE
  408 + Можливість змінити на 101 відсотки бюджет 0 лоту
  409 +
  410 +
  411 +Можливість створення лоту
  412 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  413 + ... tender_owner
  414 + ... ${USERS.users['${tender_owner}'].broker}
  415 + ... add_lot
  416 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  417 + [Teardown] Оновити LAST_MODIFICATION_DATE
  418 + Можливість створення лоту
  419 +
  420 +
  421 +Відображення заголовку нового лоту
  422 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера
  423 + ... viewer tender_owner provider provider1
  424 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  425 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  426 + ... add_lot
  427 + Звірити відображення поля title у новоствореному лоті для усіх користувачів
  428 +
  429 +
  430 +Можливість додати предмет закупівлі
  431 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  432 + ... tender_owner
  433 + ... ${USERS.users['${tender_owner}'].broker}
  434 + ... add_item
  435 + [Teardown] Оновити LAST_MODIFICATION_DATE
  436 + Run Keyword IF ${number_of_lots} == 0
  437 + ... Можливість додати предмет закупівлі в тендер
  438 + ... ELSE
  439 + ... Можливість додати предмет закупівлі в -1 лот
  440 +
  441 +
  442 +Можливість видалити предмет закупівлі
  443 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  444 + ... tender_owner
  445 + ... ${USERS.users['${tender_owner}'].broker}
  446 + ... delete_item
  447 + [Teardown] Оновити LAST_MODIFICATION_DATE
  448 + Run Keyword IF ${number_of_lots} == 0
  449 + ... Можливість видалити предмет закупівлі з тендера
  450 + ... ELSE
  451 + ... Можливість видалити предмет закупівлі з -1 лоту
  452 +
  453 +
  454 +Можливість видалення лоту
  455 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  456 + ... tender_owner
  457 + ... ${USERS.users['${tender_owner}'].broker}
  458 + ... delete_lot
  459 + [Teardown] Оновити LAST_MODIFICATION_DATE
  460 + Можливість видалення -1 лоту
  461 +
  462 +
  463 +Можливість додати неціновий показник на тендер
  464 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  465 + ... tender_owner
  466 + ... ${USERS.users['${tender_owner}'].broker}
  467 + ... add_tender_meat
  468 + [Teardown] Оновити LAST_MODIFICATION_DATE
  469 + Можливість добавити неціновий показник на тендер
  470 +
  471 +
  472 +Відображення заголовку нецінового показника на тендер
  473 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  474 + ... viewer tender_owner provider provider1
  475 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  476 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  477 + ... add_tender_meat
  478 + Звірити відображення поля title у новоствореному неціновому показнику для усіх користувачів
  479 +
  480 +
  481 +Відображення опису нецінових показників на тендер
  482 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  483 + ... viewer
  484 + ... ${USERS.users['${viewer}'].broker}
  485 + ... add_tender_meat
  486 + Звірити відображення поля description у новоствореному неціновому показнику для користувача ${viewer}
  487 +
  488 +
  489 +Відображення відношення нецінових показників на тендер
  490 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  491 + ... viewer
  492 + ... ${USERS.users['${viewer}'].broker}
  493 + ... add_tender_meat
  494 + Звірити відображення поля featureOf у новоствореному неціновому показнику для користувача ${viewer}
  495 +
  496 +Можливість видалити неціновий показник на тендер
  497 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  498 + ... tender_owner
  499 + ... ${USERS.users['${tender_owner}'].broker}
  500 + ... delete_tender_meat
  501 + Можливість видалити -1 неціновий показник
  502 +
  503 +Можливість додати неціновий показник на перший лот
  504 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  505 + ... tender_owner
  506 + ... ${USERS.users['${tender_owner}'].broker}
  507 + ... add_lot_meat
  508 + [Teardown] Оновити LAST_MODIFICATION_DATE
  509 + Можливість добавити неціновий показник на 0 лот
  510 +
  511 +
  512 +Відображення заголовку нецінового показника на лот
  513 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  514 + ... viewer tender_owner provider provider1
  515 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  516 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  517 + ... add_lot_meat
  518 + Звірити відображення поля title у новоствореному неціновому показнику для усіх користувачів
  519 +
  520 +
  521 +Відображення опису нецінових показників на лот
  522 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  523 + ... viewer
  524 + ... ${USERS.users['${viewer}'].broker}
  525 + ... add_lot_meat
  526 + Звірити відображення поля description у новоствореному неціновому показнику для користувача ${viewer}
  527 +
  528 +
  529 +Відображення відношення нецінових показників на лот
  530 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  531 + ... viewer
  532 + ... ${USERS.users['${viewer}'].broker}
  533 + ... add_lot_meat
  534 + Звірити відображення поля featureOf у новоствореному неціновому показнику для користувача ${viewer}
  535 +
  536 +
  537 +Можливість видалити неціновий показник на лот
  538 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  539 + ... tender_owner
  540 + ... ${USERS.users['${tender_owner}'].broker}
  541 + ... delete_tender_meat
  542 + Можливість видалити -1 неціновий показник
  543 +
  544 +
  545 +Можливість додати неціновий показник на перший предмет
  546 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  547 + ... tender_owner
  548 + ... ${USERS.users['${tender_owner}'].broker}
  549 + ... add_item_meat
  550 + [Teardown] Оновити LAST_MODIFICATION_DATE
  551 + Можливість добавити неціновий показник на 0 предмет
  552 +
  553 +
  554 +Відображення заголовку нецінового показника на предмет
  555 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  556 + ... viewer tender_owner provider provider1
  557 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  558 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  559 + ... add_item_meat
  560 + Звірити відображення поля title у новоствореному неціновому показнику для усіх користувачів
  561 +
  562 +
  563 +Відображення опису нецінових показників на предмет
  564 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  565 + ... viewer
  566 + ... ${USERS.users['${viewer}'].broker}
  567 + ... add_item_meat
  568 + Звірити відображення поля description у новоствореному неціновому показнику для користувача ${viewer}
  569 +
  570 +
  571 +Відображення відношення нецінових показників на предмет
  572 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення нецінових показників
  573 + ... viewer
  574 + ... ${USERS.users['${viewer}'].broker}
  575 + ... add_item_meat
  576 + Звірити відображення поля featureOf у новоствореному неціновому показнику для користувача ${viewer}
  577 +
  578 +
  579 +Можливість видалити неціновий показник на предмет
  580 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  581 + ... tender_owner
  582 + ... ${USERS.users['${tender_owner}'].broker}
  583 + ... delete_tender_meat
  584 + Можливість видалити -1 неціновий показник
  585 +
  586 +##############################################################################################
  587 +# QUESTIONS
  588 +##############################################################################################
  589 +
  590 +Можливість задати запитання на тендер
  591 + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання
  592 + ... provider
  593 + ... ${USERS.users['${provider}'].broker}
  594 + ... question_to_tender
  595 + [Setup] Дочекатись дати початку періоду уточнень ${provider} ${TENDER['TENDER_UAID']}
  596 + [Teardown] Оновити LAST_MODIFICATION_DATE
  597 + Можливість задати запитання на тендер користувачем ${provider}
  598 +
  599 +
  600 +Відображення заголовку анонімного питання на тендер без відповіді
  601 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення запитання
  602 + ... viewer
  603 + ... ${USERS.users['${viewer}'].broker}
  604 + ... question_to_tender
  605 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  606 + Звірити відображення поля title запитання для усіх користувачів
  607 +
  608 +
  609 +Відображення опису анонімного питання на тендер без відповіді
  610 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення запитання
  611 + ... viewer
  612 + ... ${USERS.users['${viewer}'].broker}
  613 + ... question_to_tender
  614 + Звірити відображення поля description запитання для користувача ${viewer}
  615 +
  616 +
  617 +Можливість відповісти на запитання на тендер
  618 + [Tags] ${USERS.users['${tender_owner}'].broker}: Відповідь на запитання
  619 + ... tender_owner
  620 + ... ${USERS.users['${tender_owner}'].broker}
  621 + ... answer_question_to_tender
  622 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  623 + [Teardown] Оновити LAST_MODIFICATION_DATE
  624 + Можливість відповісти на запитання
  625 +
  626 +
  627 +Відображення відповіді на запитання на тендер
  628 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
  629 + ... viewer
  630 + ... ${USERS.users['${viewer}'].broker}
  631 + ... answer_question_to_tender
  632 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  633 + Звірити відображення поля answer запитання для користувача ${viewer}
  634 +
  635 +
  636 +Можливість задати запитання на перший предмет
  637 + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання
  638 + ... provider
  639 + ... ${USERS.users['${provider}'].broker}
  640 + ... question_to_item
  641 + [Setup] Дочекатись дати початку періоду уточнень ${provider} ${TENDER['TENDER_UAID']}
  642 + [Teardown] Оновити LAST_MODIFICATION_DATE
  643 + Можливість задати запитання на 0 предмет користувачем ${provider}
  644 +
  645 +
  646 +Відображення заголовку анонімного питання на перший предмет без відповіді
  647 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення запитання
  648 + ... viewer
  649 + ... ${USERS.users['${viewer}'].broker}
  650 + ... question_to_item
  651 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  652 + Звірити відображення поля title запитання для усіх користувачів
  653 +
  654 +
  655 +Відображення опису анонімного питання на перший предмет без відповіді
  656 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення запитання
  657 + ... viewer
  658 + ... ${USERS.users['${viewer}'].broker}
  659 + ... question_to_item
  660 + Звірити відображення поля description запитання для користувача ${viewer}
  661 +
  662 +
  663 +Можливість відповісти на запитання на перший предмет
  664 + [Tags] ${USERS.users['${tender_owner}'].broker}: Відповідь на запитання
  665 + ... tender_owner
  666 + ... ${USERS.users['${tender_owner}'].broker}
  667 + ... answer_question_to_item
  668 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  669 + [Teardown] Оновити LAST_MODIFICATION_DATE
  670 + Можливість відповісти на запитання
  671 +
  672 +
  673 +Відображення відповіді на запитання на перший предмет
  674 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
  675 + ... viewer
  676 + ... ${USERS.users['${viewer}'].broker}
  677 + ... answer_question_to_item
  678 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  679 + Звірити відображення поля answer запитання для користувача ${viewer}
  680 +
  681 +
  682 +Можливість задати запитання на перший лот
  683 + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання
  684 + ... provider
  685 + ... ${USERS.users['${provider}'].broker}
  686 + ... question_to_lot
  687 + [Setup] Дочекатись дати початку періоду уточнень ${provider} ${TENDER['TENDER_UAID']}
  688 + [Teardown] Оновити LAST_MODIFICATION_DATE
  689 + Можливість задати запитання на 0 лот користувачем ${provider}
  690 +
  691 +
  692 +Відображення заголовку анонімного питання на перший лот без відповіді
  693 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення запитання
  694 + ... viewer
  695 + ... ${USERS.users['${viewer}'].broker}
  696 + ... question_to_lot
  697 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  698 + Звірити відображення поля title запитання для усіх користувачів
  699 +
  700 +
  701 +Відображення опису анонімного питання на перший лот без відповіді
  702 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення запитання
  703 + ... viewer
  704 + ... ${USERS.users['${viewer}'].broker}
  705 + ... question_to_lot
  706 + Звірити відображення поля description запитання для користувача ${viewer}
  707 +
  708 +
  709 +Можливість відповісти на запитання на перший лот
  710 + [Tags] ${USERS.users['${tender_owner}'].broker}: Відповідь на запитання
  711 + ... tender_owner
  712 + ... ${USERS.users['${tender_owner}'].broker}
  713 + ... answer_question_to_lot
  714 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  715 + [Teardown] Оновити LAST_MODIFICATION_DATE
  716 + Можливість відповісти на запитання
  717 +
  718 +
  719 +Відображення відповіді на запитання на перший лот
  720 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
  721 + ... viewer
  722 + ... ${USERS.users['${viewer}'].broker}
  723 + ... answer_question_to_lot
  724 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  725 + Звірити відображення поля answer запитання для користувача ${viewer}
  726 +
  727 +##############################################################################################
  728 +# BIDDING
  729 +##############################################################################################
  730 +
  731 +Неможливість подати пропозицію до початку періоду подачі пропозицій першим учасником
  732 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  733 + ... provider
  734 + ... ${USERS.users['${provider}'].broker}
  735 + ... bid_before_bid_period
  736 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  737 + Run Keyword And Expect Error * Можливість подати цінову пропозицію користувачем ${provider}
  738 +
  739 +
  740 +Неможливість подати цінову пропозицію без прив’язки до лоту
  741 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  742 + ... provider
  743 + ... ${USERS.users['${provider}'].broker}
  744 + ... bid_without_related_lot
  745 + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  746 + Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${provider}
  747 +
  748 +
  749 +Неможливість подати цінову пропозицію без нецінових показників
  750 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  751 + ... provider
  752 + ... ${USERS.users['${provider}'].broker}
  753 + ... bid_without_parameters
  754 + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  755 + Неможливість подати цінову пропозицію без нецінових показників користувачем ${provider}
  756 +
  757 +
  758 +Можливість подати пропозицію першим учасником
  759 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  760 + ... provider
  761 + ... ${USERS.users['${provider}'].broker}
  762 + ... provider_bid
  763 + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  764 + [Teardown] Оновити LAST_MODIFICATION_DATE
  765 + Можливість подати цінову пропозицію користувачем ${provider}
  766 +
  767 +Можливість змінити пропозицію до 50000 першим учасником
  768 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  769 + ... provider
  770 + ... ${USERS.users['${provider}'].broker}
  771 + ... provider_bid_modify
  772 + [Teardown] Оновити LAST_MODIFICATION_DATE
  773 + Можливість змінити пропозицію до 50000 користувачем ${provider}
  774 +
  775 +
  776 +Можливість змінити пропозицію до 10 першим учасником
  777 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  778 + ... provider
  779 + ... ${USERS.users['${provider}'].broker}
  780 + ... provider_bid_modify
  781 + [Teardown] Оновити LAST_MODIFICATION_DATE
  782 + Можливість змінити пропозицію до 10 користувачем ${provider}
  783 +
  784 +
  785 +Можливість завантажити документ в пропозицію першим учасником
  786 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  787 + ... provider
  788 + ... ${USERS.users['${provider}'].broker}
  789 + ... provider_bid_modify
  790 + [Teardown] Оновити LAST_MODIFICATION_DATE
  791 + Можливість завантажити документ в пропозицію користувачем ${provider}
  792 +
  793 +
  794 +Можливість змінити документацію цінової пропозиції першим учасником
  795 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  796 + ... provider
  797 + ... ${USERS.users['${provider}'].broker}
  798 + ... add_bid_doc
  799 + [Teardown] Оновити LAST_MODIFICATION_DATE
  800 + Можливість змінити документацію цінової пропозиції користувачем ${provider}
  801 +
  802 +
  803 +Можливість подати пропозицію другим учасником
  804 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  805 + ... provider1
  806 + ... ${USERS.users['${provider1}'].broker}
  807 + ... provider1_bid
  808 + [Setup] Дочекатись дати початку прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']}
  809 + [Teardown] Оновити LAST_MODIFICATION_DATE
  810 + Можливість подати цінову пропозицію користувачем ${provider1}
  811 +
  812 +##############################################################################################
  813 +# ABOVETRHESHOLD BIDDING
  814 +##############################################################################################
  815 +
  816 +Можливість змінити документацію цінової пропозиції з публічної на приватну
  817 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  818 + ... provider
  819 + ... ${USERS.users['${provider}'].broker}
  820 + ... openeu_provider_bid_private_doc
  821 + [Teardown] Оновити LAST_MODIFICATION_DATE
  822 + Можливість змінити документацію цінової пропозиції з публічної на приватну учасником ${provider}
  823 +
  824 +
  825 +Можливість завантажити фінансовий документ до пропозиції першим учасником
  826 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  827 + ... provider
  828 + ... ${USERS.users['${provider}'].broker}
  829 + ... openeu_provider_bid_financial_doc
  830 + [Teardown] Оновити LAST_MODIFICATION_DATE
  831 + Можливість завантажити financial_documents документ до пропозиції учасником ${provider}
  832 +
  833 +
  834 +Можливість завантажити кваліфікаційний документ до пропозиції першим учасником
  835 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  836 + ... provider
  837 + ... ${USERS.users['${provider}'].broker}
  838 + ... openeu_provider_bid_qualification_doc
  839 + [Teardown] Оновити LAST_MODIFICATION_DATE
  840 + Можливість завантажити qualification_documents документ до пропозиції учасником ${provider}
  841 +
  842 +
  843 +Можливість завантажити документ для критеріїв прийнятності до пропозиції першим учасником
  844 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  845 + ... provider
  846 + ... ${USERS.users['${provider}'].broker}
  847 + ... openeu_provider_bid_eligibility_doc
  848 + [Teardown] Оновити LAST_MODIFICATION_DATE
  849 + Можливість завантажити eligibility_documents документ до пропозиції учасником ${provider}
  850 +
  851 +
  852 +Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій
  853 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  854 + ... tender_owner
  855 + ... ${USERS.users['${tender_owner}'].broker}
  856 + ... open_modify_tender_in_tendering_perion
  857 + [Teardown] Оновити LAST_MODIFICATION_DATE
  858 + Можливість змінити поле description тендера на description
  859 +
  860 +
  861 +Відображення зміни статусу першої пропозицій після редагування інформації про тендер
  862 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  863 + ... provider
  864 + ... ${USERS.users['${provider}'].broker}
  865 + ... open_confirm_first_bid
  866 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  867 + Відображення зміни статусу пропозицій на invalid для учасника ${provider}
  868 +
  869 +
  870 +Відображення зміни статусу другої пропозицій після редагування інформації про тендер
  871 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  872 + ... provider1
  873 + ... ${USERS.users['${provider1}'].broker}
  874 + ... open_confirm_second_bid
  875 + [Setup] Дочекатись синхронізації з майданчиком ${provider1}
  876 + Відображення зміни статусу пропозицій на invalid для учасника ${provider1}
  877 +
  878 +
  879 +Можливість оновити статус цінової пропозиції першим учасником
  880 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  881 + ... provider
  882 + ... ${USERS.users['${provider}'].broker}
  883 + ... open_confirm_first_bid
  884 + [Teardown] Оновити LAST_MODIFICATION_DATE
  885 + Можливість оновити статус цінової пропозиції учасником ${provider}
  886 +
  887 +
  888 +Можливість оновити статус цінової пропозиції другим учасником
  889 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  890 + ... provider1
  891 + ... ${USERS.users['${provider1}'].broker}
  892 + ... open_confirm_second_bid
  893 + [Teardown] Оновити LAST_MODIFICATION_DATE
  894 + Можливість оновити статус цінової пропозиції учасником ${provider1}
  895 +
  896 +##############################################################################################
  897 +
  898 +Можливість скасувати пропозицію
  899 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  900 + ... provider
  901 + ... ${USERS.users['${provider}'].broker}
  902 + ... provider_bid_canceled
  903 + [Teardown] Оновити LAST_MODIFICATION_DATE
  904 + Можливість скасувати цінову пропозицію користувачем ${provider}
  905 +
  906 +
  907 +Неможливість побачити цінові пропозиції учасників під час прийому пропозицій
  908 + [Tags] ${USERS.users['${viewer}'].broker}: Подання пропозиції
  909 + ... viewer
  910 + ... ${USERS.users['${viewer}'].broker}
  911 + ... provider_bid provider1_bid
  912 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  913 + Require Failure ${viewer} Отримати інформацію із тендера ${TENDER['TENDER_UAID']} bids
  914 +
  915 +##############################################################################################
  916 +# AUCTION PERIOD
  917 +##############################################################################################
  918 +
  919 +Неможливість завантажити документ першим учасником після закінчення прийому пропозицій
  920 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  921 + ... provider1
  922 + ... ${USERS.users['${provider1}'].broker}
  923 + ... provider1_bid
  924 + [Setup] Дочекатись дати закінчення прийому пропозицій ${viewer} ${TENDER['TENDER_UAID']}
  925 + Run Keyword And Expect Error * Можливість завантажити документ в пропозицію користувачем ${provider}
  926 +
  927 +Неможливість змінити існуючу документацію пропозиції першим учасником після закінчення прийому пропозицій
  928 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  929 + ... provider1
  930 + ... ${USERS.users['${provider1}'].broker}
  931 + ... provider1_bid
  932 + Run Keyword And Expect Error * Можливість змінити документацію цінової пропозиції користувачем ${provider}
  933 +
  934 +
  935 +Неможливість задати запитання на тендер після закінчення періоду уточнень
  936 + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання
  937 + ... provider
  938 + ... ${USERS.users['${provider}'].broker}
  939 + ... question_to_tender_after_bid_period
  940 + [Setup] Дочекатись дати закінчення прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  941 + Run Keyword And Expect Error * Можливість задати запитання на тендер користувачем ${provider}
  942 +
  943 +Неможливість задати запитання на перший предмет після закінчення періоду уточнень
  944 + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання
  945 + ... provider
  946 + ... ${USERS.users['${provider}'].broker}
  947 + ... question_to_item_after_bid_period
  948 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  949 + Run Keyword And Expect Error * Можливість задати запитання на 0 предмет користувачем ${provider}
  950 +
  951 +Неможливість задати запитання на перший лот після закінчення періоду уточнень
  952 + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання
  953 + ... provider
  954 + ... ${USERS.users['${provider}'].broker}
  955 + ... question_to_lot_after_bid_period
  956 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  957 + Run Keyword And Expect Error * Можливість задати запитання на 0 лот користувачем ${provider}
  958 +
  959 +
  960 +Неможливість змінити цінову пропозицію до 50000 другим учасником після закінчення прийому пропозицій
  961 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  962 + ... provider1
  963 + ... ${USERS.users['${provider1}'].broker}
  964 + ... provider1_bid
  965 + [Setup] Дочекатись дати закінчення прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']}
  966 + Run Keyword And Expect Error * Можливість змінити пропозицію до 50000 користувачем ${provider1}
  967 +
  968 +
  969 +Неможливість змінити цінову пропозицію до 1 другим учасником після закінчення прийому пропозицій
  970 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  971 + ... provider1
  972 + ... ${USERS.users['${provider1}'].broker}
  973 + ... provider1_bid
  974 + Run Keyword And Expect Error * Можливість змінити пропозицію до 1 користувачем ${provider1}
  975 +
  976 +Неможливість скасувати пропозицію другим учасником після закінчення прийому пропозицій
  977 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  978 + ... provider1
  979 + ... ${USERS.users['${provider1}'].broker}
  980 + ... provider1_bid
  981 + Run Keyword And Expect Error * Можливість скасувати цінову пропозицію користувачем ${provider1}
  982 +
  983 +
  984 +##############################################################################################
  985 +# OPENEU Pre-Qualification
  986 +##############################################################################################
  987 +
  988 +Неможливість додати документацію до тендера під час кваліфікації
  989 + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації
  990 + ... tender_owner
  991 + ... ${USERS.users['${tender_owner}'].broker}
  992 + ... pre-qualification_add_doc_to_tender
  993 + [Teardown] Оновити LAST_MODIFICATION_DATE
  994 + Run Keyword And Expect Error * Можливість додати документацію до тендера
  995 +
  996 +
  997 +Неможливість додати документацію до першого лоту під час кваліфікації
  998 + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації
  999 + ... tender_owner
  1000 + ... ${USERS.users['${tender_owner}'].broker}
  1001 + ... pre-qualification_add_doc_to_lot
  1002 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1003 + Run Keyword And Expect Error * Можливість додати документацію до 0 лоту
  1004 +
  1005 +
  1006 +Відображення статусу першої пропозиції кваліфікації
  1007 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1008 + ... tender_owner
  1009 + ... ${USERS.users['${tender_owner}'].broker}
  1010 + ... pre-qualification_view
  1011 + [Setup] Дочекатись дати закінчення прийому пропозицій ${tender_owner} ${TENDER['TENDER_UAID']}
  1012 + Звірити відображення поля qualifications[0].status тендера із pending для користувача ${tender_owner}
  1013 +
  1014 +
  1015 +Відображення статусу другої пропозиції кваліфікації
  1016 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1017 + ... tender_owner
  1018 + ... ${USERS.users['${tender_owner}'].broker}
  1019 + ... pre-qualification_view
  1020 + [Setup] Дочекатись дати закінчення прийому пропозицій ${tender_owner} ${TENDER['TENDER_UAID']}
  1021 + Звірити відображення поля qualifications[1].status тендера із pending для користувача ${tender_owner}
  1022 +
  1023 +
  1024 +Можливість завантажити документ у кваліфікацію пропозиції першого учасника
  1025 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1026 + ... tender_owner
  1027 + ... ${USERS.users['${tender_owner}'].broker}
  1028 + ... pre-qualification_fist_bid_doc
  1029 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1030 + Можливість завантажити документ у кваліфікацію 0 пропозиції
  1031 +
  1032 +
  1033 +Можливість підтвердити першу пропозицію кваліфікації
  1034 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1035 + ... tender_owner
  1036 + ... ${USERS.users['${tender_owner}'].broker}
  1037 + ... pre-qualification_approve_first_bid
  1038 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1039 + Можливість підтвердити 0 пропозицію кваліфікації
  1040 +
  1041 +
  1042 +Можливість завантажити документ у кваліфікацію пропозиції другого учасника
  1043 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1044 + ... tender_owner
  1045 + ... ${USERS.users['${tender_owner}'].broker}
  1046 + ... pre-qualification_second_bid_doc
  1047 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1048 + Можливість завантажити документ у кваліфікацію 1 пропозиції
  1049 +
  1050 +
  1051 +Можливість відхилити другу пропозицію кваліфікації
  1052 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1053 + ... tender_owner
  1054 + ... ${USERS.users['${tender_owner}'].broker}
  1055 + ... pre-qualification_reject_second_bid
  1056 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1057 + Можливість відхилити 1 пропозиції кваліфікації
  1058 +
  1059 +
  1060 +Можливість скасувати рішення кваліфікації для другої пропопозиції
  1061 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1062 + ... tender_owner
  1063 + ... ${USERS.users['${tender_owner}'].broker}
  1064 + ... pre-qualification_cancel_second_bid_qualification
  1065 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1066 + Можливість скасувати рішення кваліфікації для 1 пропопозиції
  1067 +
  1068 +
  1069 +Можливість підтвердити другу пропозицію кваліфікації
  1070 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1071 + ... tender_owner
  1072 + ... ${USERS.users['${tender_owner}'].broker}
  1073 + ... pre-qualification_approve_second_bid
  1074 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1075 + Можливість підтвердити 2 пропозицію кваліфікації
  1076 +
  1077 +
  1078 +Можливість затвердити остаточне рішення кваліфікації
  1079 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  1080 + ... tender_owner
  1081 + ... ${USERS.users['${tender_owner}'].broker}
  1082 + ... pre-qualification_approve_qualifications
  1083 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1084 + Можливість затвердити остаточне рішення кваліфікації
@@ -16,8 +16,7 @@ Suite Teardown Test Suite Teardown @@ -16,8 +16,7 @@ Suite Teardown Test Suite Teardown
16 ... minimal 16 ... minimal
17 Завантажити дані про тендер 17 Завантажити дані про тендер
18 :FOR ${username} IN ${viewer} ${tender_owner} 18 :FOR ${username} IN ${viewer} ${tender_owner}
19 - \ ${resp}= Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}  
20 - Log ${resp} 19 + \ ${resp}= Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
21 20
22 ############################################################################################## 21 ##############################################################################################
23 # AWARDS 22 # AWARDS
@@ -28,31 +27,33 @@ Suite Teardown Test Suite Teardown @@ -28,31 +27,33 @@ Suite Teardown Test Suite Teardown
28 ... tender_owner 27 ... tender_owner
29 ... ${USERS.users['${tender_owner}'].broker} 28 ... ${USERS.users['${tender_owner}'].broker}
30 :FOR ${username} IN ${viewer} ${tender_owner} 29 :FOR ${username} IN ${viewer} ${tender_owner}
31 - \ ${qualification_status}= Отримати дані із тендера ${tender_owner} status ${TENDER['LOT_ID']} 30 + \ ${qualification_status}= Отримати дані із тендера ${tender_owner} ${TENDER['TENDER_UAID']} status ${TENDER['LOT_ID']}
32 \ Run Keyword IF '${TENDER['LOT_ID']}' Should Be Equal ${qualification_status} active 31 \ Run Keyword IF '${TENDER['LOT_ID']}' Should Be Equal ${qualification_status} active
33 \ ... ELSE Should Be Equal ${qualification_status} active.qualification 32 \ ... ELSE Should Be Equal ${qualification_status} active.qualification
34 33
  34 +
35 Відображення вартості номенклатури постачальника 35 Відображення вартості номенклатури постачальника
36 [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера 36 [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера
37 ... tender_owner 37 ... tender_owner
38 ... ${USERS.users['${tender_owner}'].broker} 38 ... ${USERS.users['${tender_owner}'].broker}
39 :FOR ${username} IN ${viewer} ${tender_owner} 39 :FOR ${username} IN ${viewer} ${tender_owner}
40 - \ Отримати дані із тендера ${username} awards[0].value.amount 40 + \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[0].value.amount
  41 +
41 42
42 Відображення імені постачальника 43 Відображення імені постачальника
43 [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера 44 [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера
44 ... tender_owner 45 ... tender_owner
45 ... ${USERS.users['${tender_owner}'].broker} 46 ... ${USERS.users['${tender_owner}'].broker}
46 :FOR ${username} IN ${viewer} ${tender_owner} 47 :FOR ${username} IN ${viewer} ${tender_owner}
47 - \ Отримати дані із тендера ${username} awards[0].suppliers[0].name 48 + \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[0].suppliers[0].name
  49 +
48 50
49 Відображення ідентифікатора постачальника 51 Відображення ідентифікатора постачальника
50 [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера 52 [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера
51 ... tender_owner 53 ... tender_owner
52 ... ${USERS.users['${tender_owner}'].broker} 54 ... ${USERS.users['${tender_owner}'].broker}
53 :FOR ${username} IN ${viewer} ${tender_owner} 55 :FOR ${username} IN ${viewer} ${tender_owner}
54 - \ Отримати дані із тендера ${username} awards[0].suppliers[0].identifier.id  
55 - 56 + \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[0].suppliers[0].identifier.id
56 57
57 ############################################################################################## 58 ##############################################################################################
58 # QUALIFICATION 59 # QUALIFICATION
@@ -63,31 +64,36 @@ Suite Teardown Test Suite Teardown @@ -63,31 +64,36 @@ Suite Teardown Test Suite Teardown
63 ... tender_owner 64 ... tender_owner
64 ... ${USERS.users['${tender_owner}'].broker} 65 ... ${USERS.users['${tender_owner}'].broker}
65 ${filepath}= create_fake_doc 66 ${filepath}= create_fake_doc
66 - Викликати для учасника ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${filepath} ${TENDER['TENDER_UAID']} 0 ${TENDER['LOT_ID']} 67 + Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${filepath} ${TENDER['TENDER_UAID']} 0
  68 +
67 69
68 Можливість підтвердити постачальника 70 Можливість підтвердити постачальника
69 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі 71 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі
70 ... tender_owner 72 ... tender_owner
71 ... ${USERS.users['${tender_owner}'].broker} 73 ... ${USERS.users['${tender_owner}'].broker}
72 ... minimal 74 ... minimal
73 - Викликати для учасника ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0 75 + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0
  76 +
  77 +
74 Можливість скасувати рішення кваліфікації 78 Можливість скасувати рішення кваліфікації
75 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі 79 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі
76 ... tender_owner 80 ... tender_owner
77 ... ${USERS.users['${tender_owner}'].broker} 81 ... ${USERS.users['${tender_owner}'].broker}
78 ... minimal 82 ... minimal
79 - Викликати для учасника ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 0 83 + Run As ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 0
  84 +
80 85
81 Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження нового постачальника 86 Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження нового постачальника
82 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для прямої закупівлі 87 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для прямої закупівлі
83 ... tender_owner 88 ... tender_owner
84 ... ${USERS.users['${tender_owner}'].broker} 89 ... ${USERS.users['${tender_owner}'].broker}
85 ${filepath}= create_fake_doc 90 ${filepath}= create_fake_doc
86 - Викликати для учасника ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${filepath} ${TENDER['TENDER_UAID']} 1 ${TENDER['LOT_ID']} 91 + Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${filepath} ${TENDER['TENDER_UAID']} 1
  92 +
87 93
88 Можливість підтвердити нового постачальника 94 Можливість підтвердити нового постачальника
89 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі 95 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі
90 ... tender_owner 96 ... tender_owner
91 ... ${USERS.users['${tender_owner}'].broker} 97 ... ${USERS.users['${tender_owner}'].broker}
92 ... minimal 98 ... minimal
93 - Викликати для учасника ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1 99 + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1
@@ -19,28 +19,28 @@ from robot.output.loggerhelper import Message @@ -19,28 +19,28 @@ from robot.output.loggerhelper import Message
19 from .initial_data import ( 19 from .initial_data import (
20 create_fake_doc, 20 create_fake_doc,
21 create_fake_sentence, 21 create_fake_sentence,
  22 + fake,
22 test_bid_data, 23 test_bid_data,
  24 + test_bid_value,
23 test_claim_answer_data, 25 test_claim_answer_data,
24 test_claim_data, 26 test_claim_data,
25 test_complaint_data, 27 test_complaint_data,
26 test_complaint_reply_data, 28 test_complaint_reply_data,
27 test_confirm_data, 29 test_confirm_data,
  30 + test_feature_data,
28 test_invalid_features_data, 31 test_invalid_features_data,
29 test_item_data, 32 test_item_data,
30 test_lot_complaint_data, 33 test_lot_complaint_data,
31 test_lot_data, 34 test_lot_data,
32 test_lot_document_data, 35 test_lot_document_data,
33 - test_lot_question_data, 36 + test_related_question,
34 test_question_answer_data, 37 test_question_answer_data,
35 test_question_data, 38 test_question_data,
36 test_supplier_data, 39 test_supplier_data,
37 test_tender_data, 40 test_tender_data,
38 test_tender_data_limited, 41 test_tender_data_limited,
39 - test_tender_data_meat,  
40 - test_tender_data_multiple_items,  
41 - test_tender_data_multiple_lots,  
42 test_tender_data_openeu, 42 test_tender_data_openeu,
43 - test_tender_data_openua 43 + test_tender_data_openua,
44 ) 44 )
45 from barbecue import chef 45 from barbecue import chef
46 from restkit import request 46 from restkit import request
@@ -117,10 +117,7 @@ def compare_date(left, right, accuracy="minute", absolute_delta=True): @@ -117,10 +117,7 @@ def compare_date(left, right, accuracy="minute", absolute_delta=True):
117 117
118 118
119 def compare_coordinates(left_lat, left_lon, right_lat, right_lon, accuracy=0.1): 119 def compare_coordinates(left_lat, left_lon, right_lat, right_lon, accuracy=0.1):
120 - '''Compares dates with specified accuracy  
121 -  
122 - Before comparison dates are parsed into datetime.datetime format  
123 - and localized. 120 + '''Compares coordinates with specified accuracy
124 121
125 :param left_lat: First coordinate latitude 122 :param left_lat: First coordinate latitude
126 :param left_lon: First coordinate longitude 123 :param left_lon: First coordinate longitude
@@ -135,7 +132,6 @@ def compare_coordinates(left_lat, left_lon, right_lat, right_lon, accuracy=0.1): @@ -135,7 +132,6 @@ def compare_coordinates(left_lat, left_lon, right_lat, right_lon, accuracy=0.1):
135 :error: ValueError when there is problem with converting accuracy 132 :error: ValueError when there is problem with converting accuracy
136 into float value. When it will be catched warning will be 133 into float value. When it will be catched warning will be
137 given and accuracy will be set to 0.1. 134 given and accuracy will be set to 0.1.
138 -  
139 ''' 135 '''
140 for key, value in {'left_lat': left_lat, 'left_lon': left_lon, 'right_lat': right_lat, 'right_lon': right_lon}.iteritems(): 136 for key, value in {'left_lat': left_lat, 'left_lon': left_lon, 'right_lat': right_lat, 'right_lon': right_lon}.iteritems():
141 if not isinstance(value, NUM_TYPES): 137 if not isinstance(value, NUM_TYPES):
@@ -263,13 +259,15 @@ def compute_intrs(brokers_data, used_brokers): @@ -263,13 +259,15 @@ def compute_intrs(brokers_data, used_brokers):
263 return result 259 return result
264 260
265 261
266 -def prepare_test_tender_data(procedure_intervals, mode): 262 +def prepare_test_tender_data(procedure_intervals, tender_parameters):
267 # Get actual intervals by mode name 263 # Get actual intervals by mode name
  264 + mode = tender_parameters['mode']
268 if mode in procedure_intervals: 265 if mode in procedure_intervals:
269 intervals = procedure_intervals[mode] 266 intervals = procedure_intervals[mode]
270 else: 267 else:
271 intervals = procedure_intervals['default'] 268 intervals = procedure_intervals['default']
272 LOGGER.log_message(Message(intervals)) 269 LOGGER.log_message(Message(intervals))
  270 + tender_parameters['intervals'] = intervals
273 271
274 # Set acceleration value for certain modes 272 # Set acceleration value for certain modes
275 if mode in ['openua', 'openeu']: 273 if mode in ['openua', 'openeu']:
@@ -282,24 +280,18 @@ def prepare_test_tender_data(procedure_intervals, mode): @@ -282,24 +280,18 @@ def prepare_test_tender_data(procedure_intervals, mode):
282 assert 'accelerator' not in intervals.keys(), \ 280 assert 'accelerator' not in intervals.keys(), \
283 "Accelerator is not available for mode '{0}'".format(mode) 281 "Accelerator is not available for mode '{0}'".format(mode)
284 282
285 - if mode == 'meat':  
286 - return munchify({'data': test_tender_data_meat(intervals)})  
287 - elif mode == 'multiItem':  
288 - return munchify({'data': test_tender_data_multiple_items(intervals)})  
289 - elif mode == 'multiLot':  
290 - return munchify({'data': test_tender_data_multiple_lots(intervals)})  
291 - elif mode == 'negotiation':  
292 - return munchify({'data': test_tender_data_limited(intervals, 'negotiation')}) 283 + if mode == 'negotiation':
  284 + return munchify({'data': test_tender_data_limited(tender_parameters)})
293 elif mode == 'negotiation.quick': 285 elif mode == 'negotiation.quick':
294 - return munchify({'data': test_tender_data_limited(intervals, 'negotiation.quick')}) 286 + return munchify({'data': test_tender_data_limited(tender_parameters)})
295 elif mode == 'openeu': 287 elif mode == 'openeu':
296 - return munchify({'data': test_tender_data_openeu(intervals)}) 288 + return munchify({'data': test_tender_data_openeu(tender_parameters)})
297 elif mode == 'openua': 289 elif mode == 'openua':
298 - return munchify({'data': test_tender_data_openua(intervals)}) 290 + return munchify({'data': test_tender_data_openua(tender_parameters)})
299 elif mode == 'reporting': 291 elif mode == 'reporting':
300 - return munchify({'data': test_tender_data_limited(intervals, 'reporting')})  
301 - elif mode == 'single':  
302 - return munchify({'data': test_tender_data(intervals)}) 292 + return munchify({'data': test_tender_data_limited(tender_parameters)})
  293 + elif mode == 'belowThreshold':
  294 + return munchify({'data': test_tender_data(tender_parameters)})
303 raise ValueError("Invalid mode for prepare_test_tender_data") 295 raise ValueError("Invalid mode for prepare_test_tender_data")
304 296
305 297
@@ -327,11 +319,6 @@ def set_access_key(tender, access_token): @@ -327,11 +319,6 @@ def set_access_key(tender, access_token):
327 return tender 319 return tender
328 320
329 321
330 -def set_to_object(obj, attribute, value):  
331 - xpathnew(obj, attribute, value, separator='.')  
332 - return obj  
333 -  
334 -  
335 def get_from_object(obj, attribute): 322 def get_from_object(obj, attribute):
336 """Gets data from a dictionary using a dotted accessor-string""" 323 """Gets data from a dictionary using a dotted accessor-string"""
337 jsonpath_expr = parse_path(attribute) 324 jsonpath_expr = parse_path(attribute)
@@ -342,6 +329,31 @@ def get_from_object(obj, attribute): @@ -342,6 +329,31 @@ def get_from_object(obj, attribute):
342 raise AttributeError('Attribute not found: {0}'.format(attribute)) 329 raise AttributeError('Attribute not found: {0}'.format(attribute))
343 330
344 331
  332 +def set_to_object(obj, attribute, value):
  333 + # Search the list index in path to value
  334 + list_index = re.search('\d+', attribute)
  335 + if list_index:
  336 + list_index = list_index.group(0)
  337 + parent, child = attribute.split('[' + list_index + '].')[:2]
  338 + # Split attribute to path to lits (parent) and path to value in list element (child)
  339 + try:
  340 + # Get list from parent
  341 + listing = get_from_object(obj, parent)
  342 + # Create object with list_index if he don`t exist
  343 + if len(listing) < int(list_index) + 1:
  344 + listing.append({})
  345 + except AttributeError:
  346 + # Create list if he don`t exist
  347 + listing = [{}]
  348 + # Update list in parent
  349 + xpathnew(obj, parent, listing, separator='.')
  350 + # Set value in obj
  351 + xpathnew(obj, '.'.join([parent, list_index, child]), value, separator='.')
  352 + else:
  353 + xpathnew(obj, attribute, value, separator='.')
  354 + return munchify(obj)
  355 +
  356 +
345 def wait_to_date(date_stamp): 357 def wait_to_date(date_stamp):
346 date = parse(date_stamp) 358 date = parse(date_stamp)
347 LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO")) 359 LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO"))
@@ -432,6 +444,26 @@ def get_document_index_by_id(data, document_id): @@ -432,6 +444,26 @@ def get_document_index_by_id(data, document_id):
432 raise IndexError 444 raise IndexError
433 445
434 446
  447 +def generate_test_bid_data(tender_data):
  448 + bid = test_bid_data()
  449 + if 'aboveThreshold' in tender_data['procurementMethodType']:
  450 + bid.data.selfEligible = True
  451 + bid.data.selfQualified = True
  452 + if 'lots' in tender_data:
  453 + bid.data.lotValues = []
  454 + for lot in tender_data['lots']:
  455 + value = test_bid_value(lot['value']['amount'])
  456 + value['relatedLot'] = lot.get('id', '')
  457 + bid.data.lotValues.append(value)
  458 + else:
  459 + bid.data.update(test_bid_value(tender_data['value']['amount']))
  460 + if 'features' in tender_data:
  461 + bid.data.parameters = []
  462 + for feature in tender_data['features']:
  463 + parameter = {"value": fake.random_element(elements=(0.05, 0.01, 0)), "code": feature.get('code', '')}
  464 + bid.data.parameters.append(parameter)
  465 + return bid
  466 +
435 467
436 # GUI Frontends common 468 # GUI Frontends common
437 def add_data_for_gui_frontends(tender_data): 469 def add_data_for_gui_frontends(tender_data):
Please register or login to post a comment