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 | 8 | *** Variables *** |
9 | 9 | @{used_roles} viewer |
10 | 10 | |
11 | + | |
11 | 12 | *** Test Cases *** |
12 | 13 | Можливість знайти закупівлю по ідентифікатору |
13 | 14 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
14 | 15 | ... ${USERS.users['${viewer}'].broker} |
15 | 16 | Завантажити дані про тендер |
16 | - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
17 | + Run As ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
17 | 18 | |
18 | 19 | ############################################################################################## |
19 | 20 | # AUCTION |
... | ... | @@ -24,7 +25,7 @@ Suite Teardown Test Suite Teardown |
24 | 25 | ... viewer |
25 | 26 | ... ${USERS.users['${viewer}'].broker} |
26 | 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 | 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 | 46 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість дочекатися завершення аукціону |
39 | 47 | ... viewer |
40 | 48 | ... ${USERS.users['${viewer}'].broker} |
41 | 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 | 55 | ... viewer |
51 | 56 | ... ${USERS.users['${viewer}'].broker} |
52 | 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']} | |
\ No newline at end of file | ... | ... |
... | ... | @@ -10,7 +10,8 @@ Library openprocurement_client_helper.py |
10 | 10 | Log Many ${USERS.users['${username}'].id_map} |
11 | 11 | ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].id_map} ${tender_uaid} |
12 | 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 | 15 | Set To Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} ${tender_id} |
15 | 16 | [return] ${tender_id} |
16 | 17 | |
... | ... | @@ -28,6 +29,37 @@ Library openprocurement_client_helper.py |
28 | 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 | 64 | [Documentation] Це слово використовується в майданчиків, тому потрібно, щоб воно було і тут |
33 | 65 | [Arguments] ${username} ${tender_data} |
... | ... | @@ -41,8 +73,6 @@ Library openprocurement_client_helper.py |
41 | 73 | ${access_token}= Get Variable Value ${tender.access.token} |
42 | 74 | Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} |
43 | 75 | Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} |
44 | - Log ${access_token} | |
45 | - Log ${tender.data.id} | |
46 | 76 | Log ${USERS.users['${username}'].tender_data} |
47 | 77 | [return] ${tender.data.tenderID} |
48 | 78 | |
... | ... | @@ -50,14 +80,17 @@ Library openprocurement_client_helper.py |
50 | 80 | Пошук тендера по ідентифікатору |
51 | 81 | [Arguments] ${username} ${tender_uaid} |
52 | 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 | 88 | [return] ${tender} |
55 | 89 | |
56 | 90 | |
57 | 91 | Оновити сторінку з тендером |
58 | 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 | 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 | 112 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} |
86 | 113 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
... | ... | @@ -92,17 +119,9 @@ Library openprocurement_client_helper.py |
92 | 119 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
93 | 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 | 127 | [Arguments] ${username} ${tender_uaid} ${item} |
... | ... | @@ -111,163 +130,19 @@ Library openprocurement_client_helper.py |
111 | 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 | 141 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
117 | 142 | ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id} |
118 | 143 | Remove From List ${tender.data['items']} ${item_index} |
119 | 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 | 147 | # Lot operations |
273 | 148 | ############################################################################## |
... | ... | @@ -305,16 +180,6 @@ Library openprocurement_client_helper.py |
305 | 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 | 184 | [Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id} |
320 | 185 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
... | ... | @@ -335,14 +200,111 @@ Library openprocurement_client_helper.py |
335 | 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 | 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 | 308 | [return] ${reply} |
347 | 309 | |
348 | 310 | ############################################################################## |
... | ... | @@ -465,6 +427,92 @@ Library openprocurement_client_helper.py |
465 | 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 | 516 | # Qualification operations |
469 | 517 | ############################################################################## |
470 | 518 | |
... | ... | @@ -473,14 +521,9 @@ Library openprocurement_client_helper.py |
473 | 521 | ... [Arguments] Username, tender uaid, qualification number and document to upload |
474 | 522 | ... [Description] Find tender using uaid, and call upload_qualification_document |
475 | 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 | 525 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
478 | 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 | 527 | Log ${doc} |
485 | 528 | [Return] ${doc} |
486 | 529 | |
... | ... | @@ -494,6 +537,10 @@ Library openprocurement_client_helper.py |
494 | 537 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
495 | 538 | ${award}= create_data_dict data.status active |
496 | 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 | 544 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} |
498 | 545 | Log ${reply} |
499 | 546 | |
... | ... | @@ -503,8 +550,8 @@ Library openprocurement_client_helper.py |
503 | 550 | ... [Arguments] Username, tender uaid and award number |
504 | 551 | ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_award |
505 | 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 | 555 | ${award}= create_data_dict data.status unsuccessful |
509 | 556 | Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} |
510 | 557 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} |
... | ... | @@ -517,8 +564,8 @@ Library openprocurement_client_helper.py |
517 | 564 | ... [Arguments] Username, tender uaid and award number |
518 | 565 | ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_award |
519 | 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 | 569 | ${award}= create_data_dict data.status cancelled |
523 | 570 | Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} |
524 | 571 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} |
... | ... | @@ -640,8 +687,8 @@ Library openprocurement_client_helper.py |
640 | 687 | ... [Arguments] Username, tender uaid and qualification number |
641 | 688 | ... [Description] Find tender using uaid, create data dict with active status and call patch_qualification |
642 | 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 | 692 | ${qualification}= create_data_dict data.status active |
646 | 693 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} eligible=${True} qualified=${True} |
647 | 694 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} |
... | ... | @@ -654,8 +701,8 @@ Library openprocurement_client_helper.py |
654 | 701 | ... [Arguments] Username, tender uaid and qualification number |
655 | 702 | ... [Description] Find tender using uaid, create data dict with unsuccessful status and call patch_qualification |
656 | 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 | 706 | ${qualification}= create_data_dict data.status unsuccessful |
660 | 707 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} |
661 | 708 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} |
... | ... | @@ -680,8 +727,8 @@ Library openprocurement_client_helper.py |
680 | 727 | ... [Arguments] Username, tender uaid and qualification number |
681 | 728 | ... [Description] Find tender using uaid, create data dict with cancelled status and call patch_qualification |
682 | 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 | 732 | ${qualification}= create_data_dict data.status cancelled |
686 | 733 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} |
687 | 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 | 16 | ... minimal |
17 | 17 | Завантажити дані про тендер |
18 | 18 | :FOR ${username} IN ${viewer} ${tender_owner} |
19 | - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
19 | + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
20 | 20 | |
21 | 21 | ############################################################################################## |
22 | 22 | # CONTRACT |
... | ... | @@ -27,23 +27,26 @@ Suite Teardown Test Suite Teardown |
27 | 27 | ... tender_owner |
28 | 28 | ... ${USERS.users['${tender_owner}'].broker} |
29 | 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 | 33 | Дочекатися закічення stand still періоду |
33 | 34 | ${standstillEnd}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data.awards[1].complaintPeriod.endDate} |
34 | 35 | Дочекатись дати ${standstillEnd} |
35 | 36 | |
37 | + | |
36 | 38 | Можливість укласти угоду для закупівлі |
37 | 39 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для прямої закупівлі |
38 | 40 | ... tender_owner |
39 | 41 | ... ${USERS.users['${tender_owner}'].broker} |
40 | 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 | 47 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення статусу підписаної угоди з постачальником прямої закупівлі |
45 | 48 | ... viewer |
46 | 49 | ... ${USERS.users['${viewer}'].broker} |
47 | 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 | 2 | from datetime import timedelta |
3 | 3 | from faker import Factory |
4 | 4 | from munch import munchify |
5 | +from uuid import uuid4 | |
5 | 6 | from tempfile import NamedTemporaryFile |
6 | 7 | from .local_time import get_now |
7 | 8 | from op_faker import OP_Provider |
... | ... | @@ -46,7 +47,7 @@ def create_fake_doc(): |
46 | 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 | 51 | now = get_now() |
51 | 52 | value_amount = round(random.uniform(3000, 99999999999.99), 2) # max value equals to budget of Ukraine in hryvnias |
52 | 53 | data = { |
... | ... | @@ -68,11 +69,10 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): |
68 | 69 | "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), |
69 | 70 | "currency": u"UAH" |
70 | 71 | }, |
71 | - "items": [] | |
72 | + "items": [], | |
73 | + "features": [] | |
72 | 74 | } |
73 | 75 | data["procuringEntity"]["kind"] = "other" |
74 | - new_item = test_item_data() | |
75 | - data["items"].append(new_item) | |
76 | 76 | if data.get("mode") == "test": |
77 | 77 | data["title"] = u"[ТЕСТУВАННЯ] {}".format(data["title"]) |
78 | 78 | data["title_en"] = u"[TESTING] {}".format(data["title_en"]) |
... | ... | @@ -82,21 +82,57 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): |
82 | 82 | for period_name in periods: |
83 | 83 | period_dict[period_name + "Period"] = {} |
84 | 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 | 86 | period_dict[period_name + "Period"][j + "Date"] = inc_dt.isoformat() |
87 | 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 | 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 | 129 | del data["submissionMethodDetails"] |
94 | 130 | del data["minimalStep"] |
95 | 131 | del data["enquiryPeriod"] |
96 | 132 | del data["tenderPeriod"] |
97 | 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 | 136 | cause_variants = ( |
101 | 137 | "artContestIP", |
102 | 138 | "noCompetition", |
... | ... | @@ -107,11 +143,11 @@ def test_tender_data_limited(intervals, procurement_method_type): |
107 | 143 | ) |
108 | 144 | cause = fake.random_element(cause_variants) |
109 | 145 | data.update({"cause": cause}) |
110 | - if procurement_method_type == "negotiation.quick": | |
146 | + if params['mode'] == "negotiation.quick": | |
111 | 147 | cause_variants = ('quick',) |
112 | 148 | cause = fake.random_element(cause_variants) |
113 | 149 | data.update({"cause": cause}) |
114 | - if procurement_method_type in ("negotiation", "negotiation.quick"): | |
150 | + if params['mode'] in ("negotiation", "negotiation.quick"): | |
115 | 151 | data.update({ |
116 | 152 | "procurementMethodDetails": "quick, accelerator=1440", |
117 | 153 | "causeDescription": fake.description() |
... | ... | @@ -119,77 +155,26 @@ def test_tender_data_limited(intervals, procurement_method_type): |
119 | 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 | 180 | 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 | 195 | def test_question_answer_data(): |
206 | 196 | return munchify({ |
207 | 197 | "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 | 257 | bid = munchify({ |
268 | 258 | "data": { |
269 | 259 | "tenderers": [ |
... | ... | @@ -273,35 +263,9 @@ def test_bid_data(mode, max_value_amount): |
273 | 263 | }) |
274 | 264 | bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName) |
275 | 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 | 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 | 269 | def test_bid_value(max_value_amount): |
306 | 270 | return munchify({ |
307 | 271 | "value": { |
... | ... | @@ -354,23 +318,6 @@ def test_invalid_features_data(): |
354 | 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 | 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 | 350 | def test_lot_complaint_data(complaint, lot_id): |
409 | 351 | complaint.data.update({"complaintOf": "lot", "relatedItem": lot_id}) |
410 | 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 | 357 | # Since `accelerator` field is not really a list containing timings |
416 | 358 | # for a period called `acceleratorPeriod`, let's remove it :) |
417 | - del intervals['accelerator'] | |
359 | + del params['intervals']['accelerator'] | |
418 | 360 | # We should not provide any values for `enquiryPeriod` when creating |
419 | 361 | # an openUA or openEU procedure. That field should not be present at all. |
420 | 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 | 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 | 373 | # Since `accelerator` field is not really a list containing timings |
432 | 374 | # for a period called `acceleratorPeriod`, let's remove it :) |
433 | - del intervals['accelerator'] | |
375 | + del params['intervals']['accelerator'] | |
434 | 376 | # We should not provide any values for `enquiryPeriod` when creating |
435 | 377 | # an openUA or openEU procedure. That field should not be present at all. |
436 | 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 | 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 | 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 | 169 | ... tender_owner=${USERS.users['${tender_owner}'].broker} |
170 | 170 | ... access_token=${USERS.users['${tender_owner}'].access_token} |
171 | 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 | 175 | ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots |
173 | - Run Keyword If ${status}'=='PASS' | |
176 | + Run Keyword If '${status}'=='PASS' | |
174 | 177 | ... Set To Dictionary ${artifact} lots=${lots_ids} |
175 | 178 | Log ${artifact} |
176 | 179 | log_object_data ${artifact} artifact update=${True} |
... | ... | @@ -184,64 +187,71 @@ Get Broker Property By Username |
184 | 187 | ${lot_index}= Get Variable Value ${lot_index} 0 |
185 | 188 | Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]} |
186 | 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 | 193 | Set Suite Variable ${mode} |
188 | 194 | Set Suite Variable ${lot_index} |
189 | 195 | Set Suite Variable ${TENDER} |
190 | 196 | log_object_data ${ARTIFACT} artifact |
191 | 197 | |
192 | 198 | |
193 | -Підготовка даних для створення тендера | |
199 | +Підготувати дані для створення тендера | |
200 | + [Arguments] ${tender_parameters} | |
194 | 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 | 203 | ${TENDER}= Create Dictionary |
197 | 204 | Set Global Variable ${TENDER} |
198 | - Log ${TENDER} | |
199 | 205 | Log ${tender_data} |
200 | 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 | 212 | [Return] ${item} |
206 | 213 | |
207 | 214 | |
208 | -Підготовка даних для створення лоту | |
215 | +Підготувати дані для створення лоту | |
209 | 216 | [Arguments] ${max_lot_value_amount} |
210 | 217 | ${lot}= test_lot_data ${max_lot_value_amount} |
211 | 218 | ${reply}= Create Dictionary data=${lot} |
212 | 219 | [Return] ${reply} |
213 | 220 | |
221 | +Підготувати дані для створення нецінового показника | |
222 | + ${reply}= test_feature_data | |
223 | + [Return] ${reply} | |
214 | 224 | |
215 | -Підготовка даних для подання вимоги | |
225 | +Підготувати дані для подання вимоги | |
216 | 226 | ${claim}= test_claim_data |
217 | 227 | [Return] ${claim} |
218 | 228 | |
219 | 229 | |
220 | -Підготовка даних для подання скарги | |
230 | +Підготувати дані для подання скарги | |
221 | 231 | [Arguments] ${lot}=${False} |
222 | 232 | ${complaint}= test_complaint_data ${lot} |
223 | 233 | [Return] ${complaint} |
224 | 234 | |
225 | 235 | |
226 | -Підготовка даних для відповіді на скаргу | |
236 | +Підготувати дані для відповіді на скаргу | |
227 | 237 | ${reply}= test_complaint_reply_data |
228 | 238 | [Return] ${reply} |
229 | 239 | |
230 | 240 | |
231 | -Підготовка даних для запитання | |
241 | +Підготувати дані для запитання | |
232 | 242 | ${question}= test_question_data |
233 | 243 | [Return] ${question} |
234 | 244 | |
235 | 245 | |
236 | -Підготовка даних для відповіді на запитання | |
246 | +Підготувати дані для відповіді на запитання | |
237 | 247 | ${answer}= test_question_answer_data |
238 | 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 | 276 | [Arguments] ${username} ${tender_data} |
267 | 277 | # munchify is used to make deep copy of ${tender_data} |
268 | 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 | 280 | ${adapted_data}= Set variable if '${status}' == 'FAIL' ${tender_data_copy} ${adapted_data} |
271 | 281 | # munchify is used to make nice log output |
272 | 282 | ${adapted_data}= munchify ${adapted_data} |
... | ... | @@ -356,19 +366,19 @@ Get Broker Property By Username |
356 | 366 | ... ${USERS.users['${username}']['LAST_REFRESH_DATE']} |
357 | 367 | ${LAST_REFRESH_DATE}= Get Current TZdate |
358 | 368 | Run Keyword If ${time_diff} > 0 Run keywords |
359 | - ... Викликати для учасника ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
369 | + ... Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
360 | 370 | ... AND |
361 | 371 | ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE} |
362 | 372 | |
363 | 373 | |
364 | 374 | Звірити поле тендера |
365 | 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 | 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 | 382 | ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} |
373 | 383 | Порівняти об'єкти ${left} ${right} |
374 | 384 | |
... | ... | @@ -384,12 +394,12 @@ Get Broker Property By Username |
384 | 394 | |
385 | 395 | Звірити дату тендера |
386 | 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 | 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 | 403 | ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} |
394 | 404 | Порівняти дати ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta} |
395 | 405 | |
... | ... | @@ -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 | 428 | ${right_lat}= Отримати дані із тендера ${username} ${tender_uaid} ${field}.deliveryLocation.latitude ${object_id} |
419 | 429 | ${right_lon}= Отримати дані із тендера ${username} ${tender_uaid} ${field}.deliveryLocation.longitude ${object_id} |
420 | 430 | Порівняти координати ${left_lat} ${left_lon} ${right_lat} ${right_lon} |
... | ... | @@ -439,53 +449,51 @@ Get Broker Property By Username |
439 | 449 | |
440 | 450 | Звірити поля предметів закупівлі багатопредметного тендера |
441 | 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 | 453 | ${len_of_items}= Get Length ${items} |
444 | 454 | :FOR ${index} IN RANGE ${len_of_items} |
445 | - \ Log ${index} | |
446 | 455 | \ Звірити поле тендера ${viewer} ${tender_data} items[${index}].${field} |
447 | 456 | |
448 | 457 | |
449 | 458 | Звірити дату предметів закупівлі багатопредметного тендера |
450 | 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 | 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 | 466 | [Arguments] ${username} ${tender_data} |
459 | - @{items}= Get_From_Object ${tender_data.data} items | |
467 | + @{items}= get_from_object ${tender_data.data} items | |
460 | 468 | :FOR ${index} ${_} IN ENUMERATE @{items} |
461 | - \ Log ${index} | |
462 | 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 | 476 | ${status} ${field_value}= Run keyword and ignore error |
472 | - ... Get from object | |
477 | + ... get_from_object | |
473 | 478 | ... ${USERS.users['${username}'].tender_data.data} |
474 | 479 | ... ${field} |
475 | 480 | # If field in cache, return its value |
476 | 481 | Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} |
477 | 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 | 485 | # And caching its value before return |
481 | 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 | 490 | [return] ${field_value} |
483 | 491 | |
484 | 492 | |
485 | 493 | Отримати шлях до поля об’єкта |
486 | 494 | [Arguments] ${username} ${field_name} ${object_id} |
487 | 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 | 497 | ${object_index}= get_object_index_by_id ${objects} ${object_id} |
490 | 498 | [return] ${object_type}[${object_index}].${field_name} |
491 | 499 | |
... | ... | @@ -497,6 +505,10 @@ Get Broker Property By Username |
497 | 505 | ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${tender_uaid} ${object_id} ${field_name} |
498 | 506 | ... ELSE IF '${object_type}'=='lots' |
499 | 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 | 512 | ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} |
501 | 513 | ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value} |
502 | 514 | ... ELSE Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field} |
... | ... | @@ -567,12 +579,7 @@ Run As |
567 | 579 | Log ${command} |
568 | 580 | Log Many @{arguments} |
569 | 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 | 585 | Require Failure |
... | ... | @@ -584,7 +591,7 @@ Require Failure |
584 | 591 | ... if ``command`` with ``arguments`` fails and vice versa. |
585 | 592 | Log ${username} |
586 | 593 | Log ${command} |
587 | - Log Many ${command} @{arguments} | |
594 | + Log Many @{arguments} | |
588 | 595 | ${keywords_file}= Get Broker Property By Username ${username} keywords_file |
589 | 596 | ${status} ${value}= Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments} |
590 | 597 | Run keyword if '${status}' == 'PASS' Fail Користувач ${username} зміг виконати "${command}" |
... | ... | @@ -599,7 +606,6 @@ Require Failure |
599 | 606 | |
600 | 607 | Дочекатись дати початку періоду уточнень |
601 | 608 | [Arguments] ${username} ${tender_uaid} |
602 | - Log ${username} | |
603 | 609 | # XXX: HACK: Same as below |
604 | 610 | ${status} ${date}= Run Keyword And Ignore Error |
605 | 611 | ... Set Variable |
... | ... | @@ -611,13 +617,14 @@ Require Failure |
611 | 617 | Дочекатись дати ${date} |
612 | 618 | Оновити LAST_MODIFICATION_DATE |
613 | 619 | Дочекатись синхронізації з майданчиком ${username} |
620 | + ${next_status}= Set variable if 'open' in '${mode}' active.tendering active.enquiries | |
614 | 621 | Wait until keyword succeeds |
615 | 622 | ... 5 min 15 sec |
616 | 623 | ... 15 sec |
617 | 624 | ... Звірити статус тендера |
618 | 625 | ... ${username} |
619 | 626 | ... ${tender_uaid} |
620 | - ... active.enquiries | |
627 | + ... ${next_status} | |
621 | 628 | |
622 | 629 | |
623 | 630 | Звірити статус тендера |
... | ... | @@ -681,33 +688,8 @@ Require Failure |
681 | 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 | 692 | [Arguments] ${username} |
710 | - log ${username} | |
711 | 693 | Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate} |
712 | 694 | Оновити LAST_MODIFICATION_DATE |
713 | 695 | Дочекатись синхронізації з майданчиком ${username} | ... | ... |
... | ... | @@ -54,7 +54,7 @@ Resource resource.robot |
54 | 54 | ############################################################################################## |
55 | 55 | |
56 | 56 | Можливість створити закупівлю |
57 | - ${tender_data}= Підготовка даних для створення тендера | |
57 | + ${tender_data}= Підготувати дані для створення тендера | |
58 | 58 | ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data} |
59 | 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 | 1 | # -*- coding: utf-8 -*- |
2 | 2 | from faker.providers import BaseProvider |
3 | +from copy import deepcopy | |
3 | 4 | from munch import Munch |
4 | 5 | from json import load |
5 | 6 | import os |
... | ... | @@ -85,7 +86,7 @@ class OP_Provider(BaseProvider): |
85 | 86 | |
86 | 87 | @classmethod |
87 | 88 | def procuringEntity(self): |
88 | - return self.random_element(self.procuringEntities) | |
89 | + return deepcopy(self.random_element(self.procuringEntities)) | |
89 | 90 | |
90 | 91 | @classmethod |
91 | 92 | def cpv(self): |
... | ... | @@ -123,6 +124,8 @@ class OP_Provider(BaseProvider): |
123 | 124 | address = self.random_element(self.addresses) |
124 | 125 | item = { |
125 | 126 | "description": item_base_data["description"], |
127 | + "description_ru": item_base_data["description_ru"], | |
128 | + "description_en": item_base_data["description_en"], | |
126 | 129 | "classification": classification["classification"], |
127 | 130 | "additionalClassifications": classification["additionalClassifications"], |
128 | 131 | "deliveryAddress": address["deliveryAddress"], |
... | ... | @@ -130,4 +133,4 @@ class OP_Provider(BaseProvider): |
130 | 133 | "unit": item_base_data["unit"], |
131 | 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 | 7901 | { |
7902 | 7902 | "cpv_id": "30199000-0", |
7903 | 7903 | "description": "Папір для офісної техніки А4", |
7904 | + "description_ru": "Бумага для офисной техники формата А4", | |
7905 | + "description_en": "Paper for office equipment А4", | |
7904 | 7906 | "quantity": 15, |
7905 | 7907 | "unit": { |
7906 | 7908 | "code": "PK", |
... | ... | @@ -7910,6 +7912,8 @@ |
7910 | 7912 | { |
7911 | 7913 | "cpv_id": "24910000-6", |
7912 | 7914 | "description": "Клей СМ-11", |
7915 | + "description_ru": "Клей СМ-11", | |
7916 | + "description_en": "Glue SM-11", | |
7913 | 7917 | "quantity": 50, |
7914 | 7918 | "unit": { |
7915 | 7919 | "code": "KGM", |
... | ... | @@ -7919,6 +7923,8 @@ |
7919 | 7923 | { |
7920 | 7924 | "cpv_id": "22990000-6", |
7921 | 7925 | "description": "Вироби канцелярські, паперові", |
7926 | + "description_ru": "Изделия канцелярские, бумажные", | |
7927 | + "description_en": "Paper stationery", | |
7922 | 7928 | "quantity": 116, |
7923 | 7929 | "unit": { |
7924 | 7930 | "code": "H87", |
... | ... | @@ -7928,6 +7934,8 @@ |
7928 | 7934 | { |
7929 | 7935 | "cpv_id": "22800000-8", |
7930 | 7936 | "description": "Бланки та журнали відповідної форми (наведені в додатку)", |
7937 | + "description_ru": "Бланки и журналы соответствующей формы (приведены в приложении)", | |
7938 | + "description_en": "Form and journals in appropriate form (listed in Annex)", | |
7931 | 7939 | "quantity": 5, |
7932 | 7940 | "unit": { |
7933 | 7941 | "code": "LO", |
... | ... | @@ -7936,7 +7944,9 @@ |
7936 | 7944 | }, |
7937 | 7945 | { |
7938 | 7946 | "cpv_id": "30192121-5", |
7939 | - "description": "ручки кулькові", | |
7947 | + "description": "Ручки кулькові", | |
7948 | + "description_ru": "Ручки шариковые", | |
7949 | + "description_en": "Ballpoint pens", | |
7940 | 7950 | "quantity": 10, |
7941 | 7951 | "unit": { |
7942 | 7952 | "code": "PK", |
... | ... | @@ -7945,7 +7955,9 @@ |
7945 | 7955 | }, |
7946 | 7956 | { |
7947 | 7957 | "cpv_id": "30192130-1", |
7948 | - "description": "олівці прості", | |
7958 | + "description": "Олівці прості", | |
7959 | + "description_ru": "Карандаши простые", | |
7960 | + "description_en": "Plain pencils", | |
7949 | 7961 | "quantity": 3, |
7950 | 7962 | "unit": { |
7951 | 7963 | "code": "PK", |
... | ... | @@ -7955,6 +7967,8 @@ |
7955 | 7967 | { |
7956 | 7968 | "cpv_id": "30197600-2", |
7957 | 7969 | "description": "Папір офісний призначений для друку та копіювання на лазерній, струменевій техніці, формат А4 - 210 х 297 мм, щільність 80г/м2.", |
7970 | + "description_ru": "Бумага офисная предназначен для печати и копирования на лазерной, струйной технике, формат А4 - 210 х 297 мм, плотность 80г м2.", | |
7971 | + "description_en": "Paper for office equipment А4", | |
7958 | 7972 | "quantity": 20, |
7959 | 7973 | "unit": { |
7960 | 7974 | "code": "NMP", |
... | ... | @@ -7964,6 +7978,8 @@ |
7964 | 7978 | { |
7965 | 7979 | "cpv_id": "22200000-2", |
7966 | 7980 | "description": "Періодичні видання оригінальні на 2016 рік (газети України, журнали України, журнали Росії)", |
7981 | + "description_ru": "Периодические издания оригинала в 2016 году (газет Украина, журналов Украины, журналов России)", | |
7982 | + "description_en": "Periodicals original in 2016 (Ukrainian newspapers, Ukrainian magazines, Russian magazines)", | |
7967 | 7983 | "quantity": 126, |
7968 | 7984 | "unit": { |
7969 | 7985 | "code": "H87", |
... | ... | @@ -7973,6 +7989,8 @@ |
7973 | 7989 | { |
7974 | 7990 | "cpv_id": "22212000-9", |
7975 | 7991 | "description": "Додаток № 1 до документації", |
7992 | + "description_ru": "Приложение № 1 к документации", | |
7993 | + "description_en": "Supplement # 1 to documentation", | |
7976 | 7994 | "quantity": 12, |
7977 | 7995 | "unit": { |
7978 | 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 | + Можливість затвердити остаточне рішення кваліфікації | |
\ No newline at end of file | ... | ... |
... | ... | @@ -16,8 +16,7 @@ Suite Teardown Test Suite Teardown |
16 | 16 | ... minimal |
17 | 17 | Завантажити дані про тендер |
18 | 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 | 22 | # AWARDS |
... | ... | @@ -28,31 +27,33 @@ Suite Teardown Test Suite Teardown |
28 | 27 | ... tender_owner |
29 | 28 | ... ${USERS.users['${tender_owner}'].broker} |
30 | 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 | 31 | \ Run Keyword IF '${TENDER['LOT_ID']}' Should Be Equal ${qualification_status} active |
33 | 32 | \ ... ELSE Should Be Equal ${qualification_status} active.qualification |
34 | 33 | |
34 | + | |
35 | 35 | Відображення вартості номенклатури постачальника |
36 | 36 | [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера |
37 | 37 | ... tender_owner |
38 | 38 | ... ${USERS.users['${tender_owner}'].broker} |
39 | 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 | 44 | [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера |
44 | 45 | ... tender_owner |
45 | 46 | ... ${USERS.users['${tender_owner}'].broker} |
46 | 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 | 52 | [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних оголошеного тендера |
51 | 53 | ... tender_owner |
52 | 54 | ... ${USERS.users['${tender_owner}'].broker} |
53 | 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 | 59 | # QUALIFICATION |
... | ... | @@ -63,31 +64,36 @@ Suite Teardown Test Suite Teardown |
63 | 64 | ... tender_owner |
64 | 65 | ... ${USERS.users['${tender_owner}'].broker} |
65 | 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 | 71 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі |
70 | 72 | ... tender_owner |
71 | 73 | ... ${USERS.users['${tender_owner}'].broker} |
72 | 74 | ... minimal |
73 | - Викликати для учасника ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0 | |
75 | + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0 | |
76 | + | |
77 | + | |
74 | 78 | Можливість скасувати рішення кваліфікації |
75 | 79 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі |
76 | 80 | ... tender_owner |
77 | 81 | ... ${USERS.users['${tender_owner}'].broker} |
78 | 82 | ... minimal |
79 | - Викликати для учасника ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 0 | |
83 | + Run As ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 0 | |
84 | + | |
80 | 85 | |
81 | 86 | Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження нового постачальника |
82 | 87 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для прямої закупівлі |
83 | 88 | ... tender_owner |
84 | 89 | ... ${USERS.users['${tender_owner}'].broker} |
85 | 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 | 95 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість зареєструвати і підтвердити постачальника до прямої закупівлі |
90 | 96 | ... tender_owner |
91 | 97 | ... ${USERS.users['${tender_owner}'].broker} |
92 | 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 | 19 | from .initial_data import ( |
20 | 20 | create_fake_doc, |
21 | 21 | create_fake_sentence, |
22 | + fake, | |
22 | 23 | test_bid_data, |
24 | + test_bid_value, | |
23 | 25 | test_claim_answer_data, |
24 | 26 | test_claim_data, |
25 | 27 | test_complaint_data, |
26 | 28 | test_complaint_reply_data, |
27 | 29 | test_confirm_data, |
30 | + test_feature_data, | |
28 | 31 | test_invalid_features_data, |
29 | 32 | test_item_data, |
30 | 33 | test_lot_complaint_data, |
31 | 34 | test_lot_data, |
32 | 35 | test_lot_document_data, |
33 | - test_lot_question_data, | |
36 | + test_related_question, | |
34 | 37 | test_question_answer_data, |
35 | 38 | test_question_data, |
36 | 39 | test_supplier_data, |
37 | 40 | test_tender_data, |
38 | 41 | test_tender_data_limited, |
39 | - test_tender_data_meat, | |
40 | - test_tender_data_multiple_items, | |
41 | - test_tender_data_multiple_lots, | |
42 | 42 | test_tender_data_openeu, |
43 | - test_tender_data_openua | |
43 | + test_tender_data_openua, | |
44 | 44 | ) |
45 | 45 | from barbecue import chef |
46 | 46 | from restkit import request |
... | ... | @@ -117,10 +117,7 @@ def compare_date(left, right, accuracy="minute", absolute_delta=True): |
117 | 117 | |
118 | 118 | |
119 | 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 | 122 | :param left_lat: First coordinate latitude |
126 | 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 | 132 | :error: ValueError when there is problem with converting accuracy |
136 | 133 | into float value. When it will be catched warning will be |
137 | 134 | given and accuracy will be set to 0.1. |
138 | - | |
139 | 135 | ''' |
140 | 136 | for key, value in {'left_lat': left_lat, 'left_lon': left_lon, 'right_lat': right_lat, 'right_lon': right_lon}.iteritems(): |
141 | 137 | if not isinstance(value, NUM_TYPES): |
... | ... | @@ -263,13 +259,15 @@ def compute_intrs(brokers_data, used_brokers): |
263 | 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 | 263 | # Get actual intervals by mode name |
264 | + mode = tender_parameters['mode'] | |
268 | 265 | if mode in procedure_intervals: |
269 | 266 | intervals = procedure_intervals[mode] |
270 | 267 | else: |
271 | 268 | intervals = procedure_intervals['default'] |
272 | 269 | LOGGER.log_message(Message(intervals)) |
270 | + tender_parameters['intervals'] = intervals | |
273 | 271 | |
274 | 272 | # Set acceleration value for certain modes |
275 | 273 | if mode in ['openua', 'openeu']: |
... | ... | @@ -282,24 +280,18 @@ def prepare_test_tender_data(procedure_intervals, mode): |
282 | 280 | assert 'accelerator' not in intervals.keys(), \ |
283 | 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 | 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 | 287 | elif mode == 'openeu': |
296 | - return munchify({'data': test_tender_data_openeu(intervals)}) | |
288 | + return munchify({'data': test_tender_data_openeu(tender_parameters)}) | |
297 | 289 | elif mode == 'openua': |
298 | - return munchify({'data': test_tender_data_openua(intervals)}) | |
290 | + return munchify({'data': test_tender_data_openua(tender_parameters)}) | |
299 | 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 | 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 | 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 | 322 | def get_from_object(obj, attribute): |
336 | 323 | """Gets data from a dictionary using a dotted accessor-string""" |
337 | 324 | jsonpath_expr = parse_path(attribute) |
... | ... | @@ -342,6 +329,31 @@ def get_from_object(obj, attribute): |
342 | 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 | 357 | def wait_to_date(date_stamp): |
346 | 358 | date = parse(date_stamp) |
347 | 359 | LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO")) |
... | ... | @@ -432,6 +444,26 @@ def get_document_index_by_id(data, document_id): |
432 | 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 | 468 | # GUI Frontends common |
437 | 469 | def add_data_for_gui_frontends(tender_data): | ... | ... |
Please
register
or
login
to post a comment