Commit e3bdc96c4cd5a3bb5d0faa9ab434f51cd81a418b

Authored by Andrew Leitsius
2 parents 78309981 9fe91b7f

Merge pull request #214 from openprocurement/devel

Merge devel in master

Too many changes to show.

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

1   -*** Settings ***
2   -Resource keywords.robot
3   -Resource resource.robot
4   -Suite Setup Test Suite Setup
5   -Suite Teardown Test Suite Teardown
6   -
7   -
8   -*** Variables ***
9   -${mode} openeu
10   -@{used_roles} tender_owner provider provider1 viewer
11   -
12   -
13   -*** Test Cases ***
14   -Можливість оголосити понадпороговий однопредметний тендер
15   - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
16   - ... tender_owner
17   - ... ${USERS.users['${tender_owner}'].broker}
18   - ... minimal
19   - [Teardown] Оновити LAST_MODIFICATION_DATE
20   - ${tender_data}= Підготовка даних для створення тендера
21   - ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_owner} ${tender_data}
22   - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${adapted_data}
23   - Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}
24   - Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}
25   - Log ${TENDER}
26   -
27   -
28   -Можливість знайти понадпороговий однопредметний тендер по ідентифікатору
29   - [Tags] ${USERS.users['${viewer}'].broker}: Можливість знайти тендер
30   - ... viewer tender_owner provider provider1
31   - ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
32   - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
33   - ... minimal
34   - :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
35   - \ Дочекатись синхронізації з майданчиком ${username}
36   - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
37   -
38   -
39   -Відображення типу оголошеного тендера
40   - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
41   - ... viewer
42   - ... ${USERS.users['${viewer}'].broker}
43   - Звірити поле тендера ${viewer} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} procurementMethodType
44   -
45   -
46   -Відображення початку періоду прийому пропозицій понадпорогового тендера
47   - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
48   - ... viewer
49   - ... ${USERS.users['${viewer}'].broker}
50   - ... minimal
51   - :FOR ${username} IN ${viewer} ${provider} ${provider1}
52   - \ Звірити дату тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.startDate
53   -
54   -
55   -Відображення закінчення періоду прийому пропозицій понадпорогового тендера
56   - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
57   - ... viewer
58   - ... ${USERS.users['${viewer}'].broker}
59   - ... minimal
60   - :FOR ${username} IN ${viewer} ${provider} ${provider1}
61   - \ Звірити дату тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} tenderPeriod.endDate
62   -
63   -
64   -Відображення закінчення періоду подання скарг на оголошений тендер
65   - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
66   - ... viewer
67   - ... ${USERS.users['${viewer}'].broker}
68   - ... minimal
69   - :FOR ${username} IN ${viewer} ${provider} ${provider1}
70   - \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} complaintPeriod.endDate
71   -
72   -
73   -Можливість подати вимогу на умови більше ніж за 10 днів до завершення періоду подання пропозицій
74   - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги
75   - ... provider
76   - ... ${USERS.users['${provider}'].broker}
77   - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера
78   - [Teardown] Оновити LAST_MODIFICATION_DATE
79   - Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
80   - ${claim}= Підготовка даних для подання вимоги
81   - ${complaintID}= Викликати для учасника ${provider}
82   - ... Створити вимогу
83   - ... ${TENDER['TENDER_UAID']}
84   - ... ${claim}
85   - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID}
86   - Set To Dictionary ${USERS.users['${provider}']} claim_data=${claim_data}
87   -
88   -
89   -Можливість скасувати вимогу на умови
90   - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги
91   - ... provider
92   - ... ${USERS.users['${provider}'].broker}
93   - [Teardown] Оновити LAST_MODIFICATION_DATE
94   - ${cancellation_reason}= create_fake_sentence
95   - ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason}
96   - ${cancellation_data}= Create Dictionary data=${data}
97   - Викликати для учасника ${provider}
98   - ... Скасувати вимогу
99   - ... ${TENDER['TENDER_UAID']}
100   - ... ${USERS.users['${provider}']['claim_data']['complaintID']}
101   - ... ${cancellation_data}
102   - Set To Dictionary ${USERS.users['${provider}'].claim_data} cancellation=${cancellation_data}
103   -
104   -
105   -Можливість подати цінову пропозицію першим учасником
106   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
107   - ... provider
108   - ... ${USERS.users['${provider}'].broker}
109   - [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
110   - [Teardown] Оновити LAST_MODIFICATION_DATE
111   - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
112   - Log ${bid}
113   - ${bidresponses}= Create Dictionary
114   - Set To Dictionary ${bidresponses} bid=${bid}
115   - Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
116   - ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
117   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp=${resp}
118   - log ${resp}
119   -
120   -
121   -Можливість завантажити публічний документ до пропозиції першим учасником
122   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
123   - ... provider
124   - ... ${USERS.users['${provider}'].broker}
125   - [Teardown] Оновити LAST_MODIFICATION_DATE
126   - log ${USERS.users['${provider}'].broker}
127   - ${filepath}= create_fake_doc
128   - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']}
129   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload ${bid_doc_upload}
130   -
131   -##############################################################################################
132   -# openEU: Операції із документацію пропозиції
133   -
134   -Можливість змінити документацію цінової пропозиції з публічної на приватну
135   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
136   - ... provider
137   - ... ${USERS.users['${provider}'].broker}
138   - ... openeu
139   - [Teardown] Оновити LAST_MODIFICATION_DATE
140   - log ${USERS.users['${provider}'].broker}
141   - ${privat_doc}= create_data_dict data.confidentialityRationale "Only our company sells badgers with pink hair."
142   - Set To Dictionary ${privat_doc.data} confidentiality=buyerOnly
143   - ${bidid}= Get Variable Value ${USERS.users['${provider}'].bidresponses['resp'].data.id}
144   - ${docid}= Get Variable Value ${USERS.users['${provider}'].bidresponses['bid_doc_upload']['upload_response'].data.id}
145   - ${bid_doc_modified}= Викликати для учасника ${provider} Змінити документацію в ставці ${privat_doc} ${bidid} ${docid}
146   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_modified=${bid_doc_modified}
147   -
148   -
149   -Можливість завантажити фінансовий документ до пропозиції першим учасником
150   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
151   - ... provider
152   - ... ${USERS.users['${provider}'].broker}
153   - ... openeu
154   - [Teardown] Оновити LAST_MODIFICATION_DATE
155   - log ${USERS.users['${provider}'].broker}
156   - ${filepath}= create_fake_doc
157   - ${doc_type}= Set variable financial_documents
158   - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
159   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload=${bid_doc_upload}
160   -
161   -
162   -Можливість завантажити кваліфікаційний документ до пропозиції першим учасником
163   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
164   - ... provider
165   - ... ${USERS.users['${provider}'].broker}
166   - ... openeu
167   - [Teardown] Оновити LAST_MODIFICATION_DATE
168   - log ${USERS.users['${provider}'].broker}
169   - ${filepath}= create_fake_doc
170   - ${doc_type}= Set variable eligibility_documents
171   - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
172   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload=${bid_doc_upload}
173   -
174   -
175   -Можливість завантажити документ для критеріїв прийнятності до пропозиції першим учасником
176   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
177   - ... provider
178   - ... ${USERS.users['${provider}'].broker}
179   - ... openeu
180   - [Teardown] Оновити LAST_MODIFICATION_DATE
181   - log ${USERS.users['${provider}'].broker}
182   - ${filepath}= create_fake_doc
183   - ${doc_type}= Set variable qualification_documents
184   - ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
185   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} bid_doc_upload=${bid_doc_upload}
186   -
187   -##############################################################################################
188   -
189   -Можливість подати цінову пропозицію другим учасником
190   - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
191   - ... provider1
192   - ... ${USERS.users['${provider1}'].broker}
193   - [Setup] Дочекатись дати початку прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']}
194   - [Teardown] Оновити LAST_MODIFICATION_DATE
195   - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
196   - Log ${bid}
197   - ${bidresponses}= Create Dictionary
198   - Set To Dictionary ${bidresponses} bid=${bid}
199   - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}
200   - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
201   - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}
202   - log ${resp}
203   -
204   -
205   -Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій
206   - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
207   - ... tender_owner
208   - ... ${USERS.users['${tender_owner}'].broker}
209   - [Teardown] Оновити LAST_MODIFICATION_DATE
210   - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
211   -
212   -
213   -Відображення зміни статусу пропозицій після редагування інформації про тендер
214   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
215   - ... provider provider1
216   - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
217   - :FOR ${username} IN ${provider} ${provider1}
218   - \ Дочекатись синхронізації з майданчиком ${username}
219   - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
220   - \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}
221   - \ Should Be Equal ${bid.data.status} invalid
222   - \ Log ${bid}
223   -
224   -
225   -Можливість оновити статус цінової пропозиції першого учасника
226   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
227   - ... provider
228   - ... ${USERS.users['${provider}'].broker}
229   - [Teardown] Оновити LAST_MODIFICATION_DATE
230   - ${status}= Run Keyword IF '${mode}'=='openeu' Set Variable pending
231   - ... ELSE IF '${mode}'=='openua' Set Variable active
232   - ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status}
233   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp=${activestatusresp}
234   - log ${activestatusresp}
235   -
236   -
237   -Можливість скасувати цінову пропозицію другого учасника
238   - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
239   - ... provider1
240   - ... ${USERS.users['${provider1}'].broker}
241   - [Teardown] Оновити LAST_MODIFICATION_DATE
242   - ${bid}= Get Variable Value ${USERS.users['${provider1}'].bidresponses['resp']}
243   - ${bidresponses}= Викликати для учасника ${provider1} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
244   -
245   -
246   -Можливість повторно подати цінову пропозицію другим учасником після першої зміни
247   - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
248   - ... provider1
249   - ... ${USERS.users['${provider1}'].broker}
250   - [Teardown] Оновити LAST_MODIFICATION_DATE
251   - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
252   - Log ${bid}
253   - ${bidresponses}= Create Dictionary
254   - Set To Dictionary ${bidresponses} bid=${bid}
255   - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}
256   - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
257   - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}
258   - log ${resp}
259   -
260   -
261   -Неможливість редагувати однопредметний тендер менше ніж за 7 днів до завершення періоду подання пропозицій
262   - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
263   - ... tender_owner
264   - ... ${USERS.users['${tender_owner}'].broker}
265   - ${no_edit_time}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} -6
266   - Дочекатись дати ${no_edit_time}
267   - Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
268   -
269   -
270   -Неможливість подати вимогу на умови менше ніж за 10 днів до завершення періоду подання пропозицій
271   - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги
272   - ... provider
273   - ... ${USERS.users['${provider}'].broker}
274   - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера
275   - ${claim}= Підготовка даних для подання вимоги
276   - ${complaintID}= Require failure ${provider}
277   - ... Створити вимогу
278   - ... ${TENDER['TENDER_UAID']}
279   - ... ${claim}
280   - ${claim_data2}= Create Dictionary claim=${claim} complaintID=${complaintID}
281   - Set To Dictionary ${USERS.users['${provider}']} claim_data2=${claim_data2}
282   -
283   -
284   -
285   -Можливість продовжити період подання пропозиції на 7 днів
286   - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
287   - ... tender_owner
288   - ... ${USERS.users['${tender_owner}'].broker}
289   - [Teardown] Оновити LAST_MODIFICATION_DATE
290   - ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7
291   - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} tenderPeriod.endDate ${endDate}
292   -
293   -
294   -Можливість подати скаргу на умови більше ніж за 4 дні до завершення періоду подання пропозицій
295   - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги
296   - ... provider
297   - ... ${USERS.users['${provider}'].broker}
298   - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера
299   - [Setup] Дочекатись синхронізації з майданчиком ${provider}
300   - [Teardown] Оновити LAST_MODIFICATION_DATE
301   - ${claim}= Підготовка даних для подання вимоги
302   - ${complaintID}= Викликати для учасника ${provider}
303   - ... Створити вимогу
304   - ... ${TENDER['TENDER_UAID']}
305   - ... ${claim}
306   - ${claim_data3}= Create Dictionary claim=${claim} complaintID=${complaintID}
307   - Set To Dictionary ${USERS.users['${provider}']} claim_data3=${claim_data3}
308   -
309   - ${data}= Create Dictionary status=pending satisfied=${False}
310   - ${escalation_data}= Create Dictionary data=${data}
311   - Викликати для учасника ${provider}
312   - ... Перетворити вимогу в скаргу
313   - ... ${TENDER['TENDER_UAID']}
314   - ... ${USERS.users['${provider}']['claim_data3']['complaintID']}
315   - ... ${escalation_data}
316   - Set To Dictionary ${USERS.users['${provider}'].claim_data3} escalation=${escalation_data}
317   -
318   -
319   -Можливість скасувати скаргу на умови
320   - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги
321   - ... provider
322   - ... ${USERS.users['${provider}'].broker}
323   - [Teardown] Оновити LAST_MODIFICATION_DATE
324   - ${cancellation_reason}= create_fake_sentence
325   - ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason}
326   - ${cancellation_data}= Create Dictionary data=${data}
327   - Викликати для учасника ${provider}
328   - ... Скасувати вимогу
329   - ... ${TENDER['TENDER_UAID']}
330   - ... ${USERS.users['${provider}']['claim_data3']['complaintID']}
331   - ... ${cancellation_data}
332   - Set To Dictionary ${USERS.users['${provider}'].claim_data3} cancellation=${cancellation_data}
333   -
334   -
335   -Можливість редагувати однопредметний тендер після продовження періоду подання пропозицій
336   - [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
337   - ... tender_owner
338   - ... ${USERS.users['${tender_owner}'].broker}
339   - [Teardown] Оновити LAST_MODIFICATION_DATE
340   - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
341   -
342   -
343   -Відображення зміни статусу пропозицій після другої зміни
344   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
345   - ... provider provider1
346   - ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
347   - :FOR ${username} IN ${provider} ${provider1}
348   - \ Дочекатись синхронізації з майданчиком ${username}
349   - \ Викликати для учасника ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
350   - \ ${bid}= Викликати для учасника ${username} Отримати пропозицію ${TENDER['TENDER_UAID']}
351   - \ Should Be Equal ${bid.data.status} invalid
352   - \ Log ${bid}
353   -
354   -
355   -Можливість оновити статус цінової пропозиції першого учасника після другої зміни
356   - [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
357   - ... provider
358   - ... ${USERS.users['${provider}'].broker}
359   - [Teardown] Оновити LAST_MODIFICATION_DATE
360   - ${status}= Run Keyword IF '${mode}'=='openeu' Set Variable pending
361   - ... ELSE IF '${mode}'=='openua' Set Variable active
362   - ${activestatusresp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status}
363   - Set To Dictionary ${USERS.users['${provider}'].bidresponses} activestatusresp=${activestatusresp}
364   - log ${activestatusresp}
365   -
366   -
367   -Можливість повторно подати цінову пропозицію другим учасником після другої зміни
368   - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
369   - ... provider1
370   - ... ${USERS.users['${provider1}'].broker}
371   - [Teardown] Оновити LAST_MODIFICATION_DATE
372   - ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
373   - Log ${bid}
374   - ${bidresponses}= Create Dictionary
375   - Set To Dictionary ${bidresponses} bid=${bid}
376   - Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}
377   - ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
378   - Set To Dictionary ${USERS.users['${provider1}'].bidresponses} resp=${resp}
379   - log ${resp}
380   -
381   -
382   -Неможливість подати скаргу на умови менше ніж за 4 дні до завершення періоду подання пропозицій
383   - [Tags] ${USERS.users['${provider}'].broker}: Подання скарги
384   - ... provider
385   - ... ${USERS.users['${provider}'].broker}
386   - [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеного тендера
387   - [Setup] Дочекатись дати закінчення періоду подання скарг ${provider}
388   - ${claim}= Підготовка даних для подання вимоги
389   - ${complaintID}= Викликати для учасника ${provider}
390   - ... Створити вимогу
391   - ... ${TENDER['TENDER_UAID']}
392   - ... ${claim}
393   - ${claim_data4}= Create Dictionary claim=${claim} complaintID=${complaintID}
394   - Set To Dictionary ${USERS.users['${provider}']} claim_data4=${claim_data4}
395   -
396   -
397   - ${data}= Create Dictionary status=pending satisfied=${False}
398   - ${escalation_data}= Create Dictionary data=${data}
399   - Викликати для учасника ${provider}
400   - ... Перетворити вимогу в скаргу
401   - ... ${TENDER['TENDER_UAID']}
402   - ... ${USERS.users['${provider}']['claim_data4']['complaintID']}
403   - ... ${escalation_data}
404   - Set To Dictionary ${USERS.users['${provider}'].claim_data4} escalation=${escalation_data}
405   -
406   -##############################################################################################
407   -# OPENEU Pre-Qualification
408   -##############################################################################################
409   -
410   -Відображення статусу першої пропозиції кваліфікації
411   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
412   - ... tender_owner
413   - ... ${USERS.users['${tender_owner}'].broker}
414   - ... openeu
415   - [Setup] Дочекатись дати закінчення прийому пропозицій ${tender_owner} ${TENDER['TENDER_UAID']}
416   - Звірити поле тендера із значенням ${tender_owner} ${TENDER['TENDER_UAID']} pending qualifications[0].status
417   -
418   -
419   -Відображення статусу другої пропозиції кваліфікації
420   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
421   - ... tender_owner
422   - ... ${USERS.users['${tender_owner}'].broker}
423   - ... openeu
424   - [Setup] Дочекатись дати закінчення прийому пропозицій ${tender_owner} ${TENDER['TENDER_UAID']}
425   - Звірити поле тендера із значенням ${tender_owner} ${TENDER['TENDER_UAID']} pending qualifications[1].status
426   -
427   -
428   -Можливість завантажити документ у кваліфікацію пропозиції першого учасника
429   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
430   - ... tender_owner
431   - ... ${USERS.users['${tender_owner}'].broker}
432   - ... openeu
433   - [Teardown] Оновити LAST_MODIFICATION_DATE
434   - ${filepath}= create_fake_doc
435   - Викликати для учасника ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} 0
436   -
437   -
438   -Можливість підтвердити першу пропозицію кваліфікації
439   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
440   - ... tender_owner
441   - ... ${USERS.users['${tender_owner}'].broker}
442   - ... openeu
443   - [Teardown] Оновити LAST_MODIFICATION_DATE
444   - Викликати для учасника ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} 0
445   -
446   -
447   -Можливість завантажити документ у кваліфікацію пропозиції другого учасника
448   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
449   - ... tender_owner
450   - ... ${USERS.users['${tender_owner}'].broker}
451   - ... openeu
452   - [Teardown] Оновити LAST_MODIFICATION_DATE
453   - ${filepath}= create_fake_doc
454   - Викликати для учасника ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} 1
455   -
456   -
457   -Можливість відхилити другу пропозицію кваліфікації
458   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
459   - ... tender_owner
460   - ... ${USERS.users['${tender_owner}'].broker}
461   - ... openeu
462   - [Teardown] Оновити LAST_MODIFICATION_DATE
463   - Викликати для учасника ${tender_owner} Відхилити кваліфікацію ${TENDER['TENDER_UAID']} 1
464   -
465   -
466   -Можливість скасувати рішення кваліфікації для другої пропопозиції
467   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
468   - ... tender_owner
469   - ... ${USERS.users['${tender_owner}'].broker}
470   - ... openeu
471   - [Teardown] Оновити LAST_MODIFICATION_DATE
472   - Викликати для учасника ${tender_owner} Скасувати кваліфікацію ${TENDER['TENDER_UAID']} 1
473   -
474   -
475   -Можливість підтвердити другу пропозицію кваліфікації
476   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
477   - ... tender_owner
478   - ... ${USERS.users['${tender_owner}'].broker}
479   - ... openeu
480   - [Teardown] Оновити LAST_MODIFICATION_DATE
481   - Викликати для учасника ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} 2
482   -
483   -
484   -Можливість затвердити остаточне рішення кваліфікації
485   - [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
486   - ... tender_owner
487   - ... ${USERS.users['${tender_owner}'].broker}
488   - ... openeu
489   - [Teardown] Оновити LAST_MODIFICATION_DATE
490   - Викликати для учасника ${tender_owner} Затвердити остаточне рішення кваліфікації ${TENDER['TENDER_UAID']}
  1 +*** Settings ***
  2 +Library op_robot_tests.tests_files.service_keywords
  3 +Library Collections
  4 +Resource keywords.robot
  5 +Resource resource.robot
  6 +Resource base_keywords.robot
  7 +
  8 +
  9 +*** Keywords ***
  10 +
  11 +Неможливість редагувати однопредметний тендер менше ніж за 7 днів до завершення періоду подання пропозицій
  12 + ${no_edit_time}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} -6
  13 + Дочекатись дати ${no_edit_time}
  14 + Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description
  15 +
  16 +
  17 +Можливість продовжити період подання пропозиції на 7 днів
  18 + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7
  19 + Можливість змінити поле tenderPeriod.endDate тендера на ${endDate}
  20 +
  21 +##############################################################################################
  22 +# BIDDING
  23 +##############################################################################################
  24 +
  25 +Відображення зміни статусу пропозицій на ${status} для учасника ${username}
  26 + Дочекатись синхронізації з майданчиком ${username}
  27 + Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  28 + ${bid_status}= Run As ${username} Отримати інформацію із пропозиції ${TENDER['TENDER_UAID']} status
  29 + Should Be Equal ${bid_status} ${status}
  30 +
  31 +
  32 +Можливість оновити статус цінової пропозиції учасником ${username}
  33 + ${status}= Run Keyword IF '${mode}'=='openeu' Set Variable pending
  34 + ... ELSE IF '${mode}'=='openua' Set Variable active
  35 + ${activestatusresp}= Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status}
  36 + Set To Dictionary ${USERS.users['${username}'].bidresponses} activestatusresp=${activestatusresp}
  37 + log ${activestatusresp}
  38 +
  39 +##############################################################################################
  40 +# OPENEU Bid documentation
  41 +##############################################################################################
  42 +
  43 +Можливість змінити документацію цінової пропозиції з публічної на приватну учасником ${username}
  44 + ${confidentialityRationale}= create_fake_sentence
  45 + ${privat_doc}= create_data_dict data.confidentialityRationale ${confidentialityRationale}
  46 + Set To Dictionary ${privat_doc.data} confidentiality=buyerOnly
  47 + ${docid}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid_doc_upload']['upload_response'].data.id}
  48 + ${bid_doc_modified}= Run As ${username} Змінити документацію в ставці ${privat_doc} ${docid}
  49 + Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_modified=${bid_doc_modified}
  50 +
  51 +
  52 +Можливість завантажити ${doc_type} документ до пропозиції учасником ${username}
  53 + ${filepath}= create_fake_doc
  54 + ${bid_doc_upload}= Run As ${username} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} ${doc_type}
  55 + Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_upload=${bid_doc_upload}
  56 +
  57 +##############################################################################################
  58 +# OPENEU Pre-Qualification
  59 +##############################################################################################
  60 +
  61 +Можливість завантажити документ у кваліфікацію ${bid_index} пропозиції
  62 + ${filepath}= create_fake_doc
  63 + Run As ${tender_owner} Завантажити документ у кваліфікацію ${filepath} ${TENDER['TENDER_UAID']} ${bid_index}
  64 +
  65 +
  66 +Можливість відхилити ${bid_index} пропозиції кваліфікації
  67 + Run As ${tender_owner} Відхилити кваліфікацію ${TENDER['TENDER_UAID']} ${bid_index}
  68 +
  69 +
  70 +Можливість скасувати рішення кваліфікації для ${bid_index} пропопозиції
  71 + Run As ${tender_owner} Скасувати кваліфікацію ${TENDER['TENDER_UAID']} ${bid_index}
  72 +
  73 +
  74 +Можливість підтвердити ${bid_index} пропозицію кваліфікації
  75 + Run As ${tender_owner} Підтвердити кваліфікацію ${TENDER['TENDER_UAID']} ${bid_index}
  76 +
  77 +
  78 +Можливість затвердити остаточне рішення кваліфікації
  79 + Run As ${tender_owner} Затвердити остаточне рішення кваліфікації ${TENDER['TENDER_UAID']}
... ...
... ... @@ -8,12 +8,13 @@ Suite Teardown Test Suite Teardown
8 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}
... ...
  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