Commit e3bdc96c4cd5a3bb5d0faa9ab434f51cd81a418b
Merge pull request #214 from openprocurement/devel
Merge devel in master
Showing
18 changed files
with
2347 additions
and
1802 deletions
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} |
op_robot_tests/tests_files/cancelation.robot
0 → 100644
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