Commit 7292a02c18938e1718b937e8fbcf0198d24823db

Authored by kosaniak
1 parent 8494c6f0

Edit openUAdefense_one_bid and single_item_tender scenarios

1 -*** Settings ***  
2 -Library op_robot_tests.tests_files.service_keywords  
3 -Library String  
4 -Library Collections  
5 -Library Selenium2Library  
6 -Library OperatingSystem  
7 -Library DateTime  
8 -Library DebugLibrary  
9 -  
10 -  
11 -Documentation  
12 -... This resource file contains keywords that are used directly by  
13 -... test suites or by brokers' keyword libraries (also known as drivers).  
14 -  
15 -  
16 -*** Keywords ***  
17 -Test Suite Setup  
18 - Set Suite Variable ${WARN_RUN_AS} ${False}  
19 - Set Selenium Implicit Wait 5 s  
20 - Set Selenium Timeout 10 s  
21 - Залогувати git-дані  
22 - Порівняти системний і серверний час  
23 - Завантажуємо дані про користувачів і майданчики  
24 -  
25 -  
26 -Test Suite Teardown  
27 - Close all browsers  
28 - Run Keyword And Ignore Error Створити артефакт  
29 -  
30 -  
31 -Set Suite Variable With Default Value  
32 - [Arguments] ${suite_var} ${def_value}  
33 - ${tmp}= Get Variable Value ${${suite_var}} ${def_value}  
34 - Set Suite Variable ${${suite_var}} ${tmp}  
35 -  
36 -  
37 -Порівняти системний і серверний час  
38 - ${server_time}= request ${API_HOST_URL} HEAD  
39 - ${local_time}= Get current TZdate  
40 - Log ${server_time.headers['date']}  
41 - Log ${local_time}  
42 - ${status}= compare_date ${server_time.headers['date']} ${local_time} 5  
43 - Run keyword if ${status} == ${False}  
44 - ... Log Час на сервері відрізняється від локального більше ніж на 5 секунд WARN  
45 -  
46 -  
47 -Залогувати git-дані  
48 - ${commit}= Run git log --graph --pretty --abbrev-commit --date=relative -n 30  
49 - ${repo}= Run git remote -v  
50 - ${branch}= Run git branch -vva  
51 - ${status}= Run git status  
52 - ${diff}= Run git diff  
53 - ${reflog}= Run git reflog  
54 - Log ${commit}  
55 - Log ${repo}  
56 - Log ${branch}  
57 - Log ${status}  
58 - Log ${diff}  
59 - Log ${reflog}  
60 -  
61 -  
62 -Завантажуємо дані про користувачів і майданчики  
63 - Log ${BROKER}  
64 - Log ${ROLE}  
65 - # Suite variable; should be present in every test suite  
66 - # in `*** Variables ***` section  
67 - Log Many @{USED_ROLES}  
68 -  
69 - # Load brokers data  
70 - ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml  
71 - ${BROKERS_PARAMS}= Get Variable Value ${BROKERS_PARAMS}  
72 - ${BROKERS}= load_data_from ${file_path} mode=brokers external_params_name=BROKERS_PARAMS  
73 - Log ${BROKERS}  
74 - Set Suite Variable ${BROKERS}  
75 - # List of currently used brokers  
76 - ${used_brokers}= Create List  
77 -  
78 - # Load users data  
79 - ${file_path}= Get Variable Value ${USERS_FILE} users.yaml  
80 - ${USERS_PARAMS}= Get Variable Value ${USERS_PARAMS}  
81 - ${USERS}= load_data_from ${file_path} users.yaml external_params_name=USERS_PARAMS  
82 - Log ${USERS.users}  
83 - Set Suite Variable ${USERS}  
84 - # List of currently used users  
85 - ${used_users}= Create List  
86 -  
87 - # Handle `-v role:something`  
88 - Run Keyword Unless '${ROLE}' in @{USED_ROLES}  
89 - ... Log  
90 - ... Role ${ROLE} is not used in this test suite.  
91 - ... WARN  
92 - Set Suite Variable With Default Value  
93 - ... ${ROLE}  
94 - ... ${BROKERS['${BROKER}'].roles.${ROLE}}  
95 -  
96 - # Set default value for each role if it is not set yet;  
97 - # fill `used_users`;  
98 - # fill `used_brokers`.  
99 - #  
100 - # Don't even ask how this works!  
101 - :FOR ${tmp_role} IN @{USED_ROLES}  
102 - \ Set Suite Variable With Default Value  
103 - \ ... ${tmp_role}  
104 - \ ... ${BROKERS['Quinta'].roles.${tmp_role}}  
105 - \ Append To List ${used_users} ${${tmp_role}}  
106 - \ Append To List ${used_brokers} ${USERS.users.${${tmp_role}}.broker}  
107 - # Since `@{USED_ROLES}` is already a suite variable,  
108 - # let's make `@{used_brokers}` alike.  
109 - ${used_brokers}= Remove Duplicates ${used_brokers}  
110 - Set Suite Variable ${used_brokers}  
111 - # We need to create two lists since Robot Framework doesn't support  
112 - # dicts in `:FOR` loops.  
113 - Log Many @{used_users}  
114 - Log Many @{used_brokers}  
115 -  
116 - # A list of all users in users file  
117 - ${known_users}= Get Dictionary Keys ${USERS.users}  
118 -  
119 - # Check whether users file contains an entry for each  
120 - # selected user before preparing any clients  
121 - :FOR ${username} IN @{used_users}  
122 - \ List Should Contain Value  
123 - \ ... ${known_users}  
124 - \ ... ${username}  
125 - \ ... msg=User ${username} not found in users file!  
126 -  
127 - # Prepare a client for each user  
128 - :FOR ${username} IN @{used_users}  
129 - \ ${munch_dict}= munch_dict data=${True}  
130 - \ ${keywords_file}= Get Broker Property ${USERS.users.${username}.broker} keywords_file  
131 - \ Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file}  
132 - \ Run As ${username} Підготувати клієнт для користувача  
133 - \ ${LAST_REFRESH_DATE}= Get Current TZdate  
134 - \ Set To Dictionary ${USERS} ${username}=${USERS.users.${username}}  
135 - \ Set To Dictionary ${USERS.${username}} tender_data=${munch_dict}  
136 - \ Set To Dictionary ${USERS.${username}} LAST_REFRESH_DATE ${LAST_REFRESH_DATE}  
137 -  
138 - # Drop all unused users  
139 - Keep In Dictionary ${USERS.users} @{used_users}  
140 - Log Many @{USERS}  
141 -  
142 -  
143 -Get Broker Property  
144 - [Arguments] ${broker_name} ${property}  
145 - [Documentation]  
146 - ... This keyword returns a property of specified broker  
147 - ... if that property exists, otherwise, it returns a  
148 - ... default value.  
149 - Run Keyword If '${broker_name}'=='${None}' Fail \${broker_name} is NoneType  
150 - Should Contain ${BROKERS['${broker_name}']} ${property}  
151 - Return From Keyword ${BROKERS['${broker_name}'].${property}}  
152 -  
153 -  
154 -Get Broker Property By Username  
155 - [Documentation]  
156 - ... This keyword gets the corresponding broker name  
157 - ... for a specified username and then calls  
158 - ... "Get Broker Property"  
159 - [Arguments] ${username} ${property}  
160 - ${broker_name}= Get Variable Value ${USERS.users['${username}'].broker}  
161 - Run Keyword And Return Get Broker Property ${broker_name} ${property}  
162 -  
163 -  
164 -Створити артефакт  
165 - ${artifact}= Create Dictionary  
166 - ... api_version=${API_VERSION}  
167 - ... tender_uaid=${TENDER['TENDER_UAID']}  
168 - ... last_modification_date=${TENDER['LAST_MODIFICATION_DATE']}  
169 - ... mode=${MODE}  
170 - Run Keyword And Ignore Error Set To Dictionary ${artifact}  
171 - ... tender_owner=${USERS.users['${tender_owner}'].broker}  
172 - ... access_token=${USERS.users['${tender_owner}'].access_token}  
173 - ... tender_id=${USERS.users['${tender_owner}'].tender_data.data.id}  
174 - Run Keyword And Ignore Error Set To Dictionary ${artifact} tender_owner_access_token=${USERS.users['${tender_owner}'].access_token}  
175 - Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_access_token=${USERS.users['${provider}'].access_token}  
176 - Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_access_token=${USERS.users['${provider1}'].access_token}  
177 - Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_bid_id=${USERS.users['${provider}'].bid_id}  
178 - Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_bid_id=${USERS.users['${provider1}'].bid_id}  
179 - Run Keyword And Ignore Error Set To Dictionary ${artifact}  
180 - ... tender_file_properties=${USERS.users['${tender_owner}'].tender_document.file_properties}  
181 - ... lot_file_properties=${USERS.users['${tender_owner}'].lots_documents[0].file_properties}  
182 - ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots  
183 - Run Keyword If '${status}'=='PASS'  
184 - ... Set To Dictionary ${artifact} lots=${lots_ids}  
185 - Log ${artifact}  
186 - log_object_data ${artifact} file_name=artifact update=${True} artifact=${True}  
187 -  
188 -  
189 -Завантажити дані про тендер  
190 - ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact.yaml  
191 - ${ARTIFACT}= load_data_from ${file_path}  
192 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token}  
193 - ${TENDER}= Create Dictionary  
194 - ... TENDER_UAID=${ARTIFACT.tender_uaid}  
195 - ... LAST_MODIFICATION_DATE=${ARTIFACT.last_modification_date}  
196 - ... LOT_ID=${Empty}  
197 - ${lot_index}= Get Variable Value ${lot_index} 0  
198 - Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]}  
199 - ${MODE}= Get Variable Value ${MODE} ${ARTIFACT.mode}  
200 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.tender_owner_access_token}  
201 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${viewer}']} tender_file_properties=${ARTIFACT.tender_file_properties}  
202 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${viewer}']} lot_file_properties=${ARTIFACT.lot_file_properties}  
203 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider}']} access_token=${ARTIFACT.provider_access_token}  
204 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider1}']} access_token=${ARTIFACT.provider1_access_token}  
205 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider}']} bid_id=${ARTIFACT.provider_bid_id}  
206 - Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider1}']} bid_id=${ARTIFACT.provider1_bid_id}  
207 - Set Suite Variable ${MODE}  
208 - Set Suite Variable ${lot_index}  
209 - Set Suite Variable ${TENDER}  
210 - log_object_data ${ARTIFACT} file_name=artifact update=${True} artifact=${True}  
211 -  
212 -  
213 -Підготувати дані для створення тендера  
214 - [Arguments] ${tender_parameters}  
215 - ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers}  
216 - ${submissionMethodDetails}= Get Variable Value ${submissionMethodDetails}  
217 - ${accelerator}= Get Variable Value ${accelerator}  
218 - ${funders}= Get Variable Value ${FUNDERS}  
219 - ${tender_data}= prepare_test_tender_data ${period_intervals} ${tender_parameters} ${submissionMethodDetails} ${accelerator} ${funders}  
220 - ${TENDER}= Create Dictionary  
221 - Set Global Variable ${TENDER}  
222 - Log ${tender_data}  
223 - [return] ${tender_data}  
224 -  
225 -  
226 -Підготувати дані для створення плану  
227 - [Arguments] ${tender_parameters}  
228 - ${data}= test_tender_data_planning ${tender_parameters}  
229 - ${tender_data}= Create Dictionary data=${data}  
230 - ${TENDER}= Create Dictionary  
231 - Set Global Variable ${TENDER}  
232 - Log ${tender_data}  
233 - [return] ${tender_data}  
234 -  
235 -  
236 -Підготувати дані для створення предмету закупівлі  
237 - [Arguments] ${cpv}  
238 - ${index}= Set variable if ${moz_integration} 3 4  
239 - ${item}= test_item_data ${cpv[:${index}]}  
240 - [Return] ${item}  
241 -  
242 -  
243 -Підготувати дані для створення предмету закупівлі плану  
244 - [Arguments] ${cpv}  
245 - ${item}= test_item_data ${cpv[0:4]}  
246 - Remove From Dictionary ${item} deliveryAddress  
247 - Remove From Dictionary ${item} deliveryLocation  
248 - Remove From Dictionary ${item} deliveryDate.startDate  
249 - [Return] ${item}  
250 -  
251 -  
252 -Підготувати дані для створення лоту  
253 - [Arguments] ${max_lot_value_amount}  
254 - ${lot}= test_lot_data ${max_lot_value_amount}  
255 - ${reply}= Create Dictionary data=${lot}  
256 - [Return] ${reply}  
257 -  
258 -Підготувати дані для створення нецінового показника  
259 - ${reply}= test_feature_data  
260 - [Return] ${reply}  
261 -  
262 -Підготувати дані для подання вимоги  
263 - ${claim}= test_claim_data  
264 - [Return] ${claim}  
265 -  
266 -  
267 -Підготувати дані для подання скарги  
268 - [Arguments] ${lot}=${False}  
269 - ${complaint}= test_complaint_data ${lot}  
270 - [Return] ${complaint}  
271 -  
272 -  
273 -Підготувати дані для відповіді на скаргу  
274 - ${reply}= test_complaint_reply_data  
275 - [Return] ${reply}  
276 -  
277 -  
278 -Підготувати дані для запитання  
279 - ${question}= test_question_data  
280 - [Return] ${question}  
281 -  
282 -  
283 -Підготувати дані для відповіді на запитання  
284 - ${answer}= test_question_answer_data  
285 - [Return] ${answer}  
286 -  
287 -  
288 -Підготувати дані для подання пропозиції  
289 - [Arguments]  
290 - ${bid}= generate_test_bid_data ${USERS.users['${tender_owner}'].initial_data.data}  
291 - [Return] ${bid}  
292 -  
293 -  
294 -Підготувати дані для подання пропозиції для другого етапу  
295 - [Arguments] ${index}=0  
296 - ${bid}= generate_test_bid_data_second_stage ${USERS.users['${tender_owner}'].tender_data.data} ${index}  
297 - [Return] ${bid}  
298 -  
299 -  
300 -Підготувати дані про постачальника  
301 - [Arguments] ${username} ${lotIndex}=${-1}  
302 - ${lotIndex}= Convert To Integer ${lotIndex}  
303 - ${supplier_data}= test_supplier_data  
304 - Run Keyword If ${lotIndex} > -1 Set To Dictionary ${supplier_data.data} lotID=${USERS.users['${tender_owner}'].initial_data.data['lots'][${lotIndex}]['id']}  
305 - Set To Dictionary ${USERS.users['${tender_owner}']} supplier_data=${supplier_data}  
306 - Log ${supplier_data}  
307 - [Return] ${supplier_data}  
308 -  
309 -  
310 -Підготувати дані про скасування  
311 - ${cancellation_reason}= create_fake_sentence  
312 - ${cancellation_reason}= field_with_id c ${cancellation_reason}  
313 - ${cancellation_id}= get_id_from_string ${cancellation_reason}  
314 - ${file_path} ${file_name} ${file_content}= create_fake_doc  
315 - ${doc_id}= get_id_from_string ${file_name}  
316 - ${document}= Create Dictionary  
317 - ... doc_path=${file_path}  
318 - ... doc_name=${file_name}  
319 - ... doc_content=${file_content}  
320 - ... doc_id=${doc_id}  
321 - ${new_description}= create_fake_sentence  
322 - ${cancellation_data}= Create Dictionary  
323 - ... cancellation_reason=${cancellation_reason}  
324 - ... cancellation_id=${cancellation_id}  
325 - ... document=${document}  
326 - ... description=${new_description}  
327 - ${cancellation_data}= munchify ${cancellation_data}  
328 - [Return] ${cancellation_data}  
329 -  
330 -  
331 -Підготувати дані про зміну до договору  
332 - [Arguments] ${username}  
333 - ${change_data}= test_change_data  
334 - Set To Dictionary ${USERS.users['${username}']} change_data=${change_data}  
335 - Log ${change_data}  
336 - [Return] ${change_data}  
337 -  
338 -  
339 -Адаптувати дані для оголошення тендера  
340 - [Arguments] ${tender_data}  
341 - # munchify is used to make deep copy of ${tender_data}  
342 - ${adapted_data}= munchify ${tender_data}  
343 - :FOR ${username} IN @{USED_ROLES}  
344 - # munchify is used to make deep copy of ${adapted_data}  
345 - \ ${adapted_data_copy}= munchify ${adapted_data}  
346 - \ ${status} ${adapted_data_from_broker}= Run keyword and ignore error Run As ${${username}} Підготувати дані для оголошення тендера ${adapted_data_copy} ${username}  
347 - \ Log ${adapted_data_from_broker}  
348 - # Need this in case ``${${username}}`` doesn't have `Підготувати дані для оголошення  
349 - # тендера користувачем` keyword, so after `Run keyword and ignore error` call  
350 - # ``${adapted_data_from_broker}`` will be ``${None}``. Else - nothing changes.  
351 - \ ${adapted_data_from_broker}= Set variable if '${status}' == 'FAIL' ${adapted_data} ${adapted_data_from_broker}  
352 - \ Log differences between dicts ${adapted_data.data} ${adapted_data_from_broker.data} ${username} has changed initial data!  
353 - # Update (or not, if nothing changed) ``${adapted_data}``.  
354 - \ ${adapted_data}= munchify ${adapted_data_from_broker}  
355 - \ Log ${adapted_data}  
356 - Log ${adapted_data}  
357 - Log ${tender_data}  
358 - [Return] ${adapted_data}  
359 -  
360 -  
361 -Log differences between dicts  
362 - [Arguments] ${left} ${right} ${begin} ${end}=${Empty}  
363 - ${diff_status} ${diff_message}= Run Keyword And Ignore Error Dictionaries Should Be Equal ${left} ${right}  
364 - Run keyword if '${diff_status}' == 'FAIL' Log \n${begin}\n${diff_message}\n${end} WARN  
365 - [Return] ${diff_status}  
366 -  
367 -  
368 -Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file}  
369 - [Documentation]  
370 - ... Load broker's driver (keyword library).  
371 - ...  
372 - ... `Import Resource` is called twice:  
373 - ...  
374 - ... 1) It tries to read from ``brokers/`` directory  
375 - ... (located next to ``keywords.robot``).  
376 - ... This is an old feature which will be removed in the future.  
377 - ...  
378 - ... 2) It looks for a given filename in ``sys.path``  
379 - ... (``PYTHONPATH`` environment variable).  
380 - ...  
381 - ... This keyword will fail if ``keywords_file`` was found  
382 - ... in both locations.  
383 - ${bundled_st}= Run Keyword And Return Status Import Resource ${CURDIR}${/}brokers${/}${keywords_file}.robot  
384 - ${external_st}= Run Keyword And Return Status Import Resource ${keywords_file}.robot  
385 - Run Keyword If ${bundled_st} == ${external_st} == ${False} Fail Resource file ${keywords_file}.robot not found  
386 - Run Keyword If ${bundled_st} == ${external_st} == ${True} Fail Resource file ${keywords_file}.robot found in both brokers${/} and src${/}  
387 -  
388 -  
389 -Дочекатись синхронізації з майданчиком  
390 - [Arguments] ${username}  
391 - [Documentation]  
392 - ... Synchronise with ``username`` and update cache  
393 - ... First section  
394 - ... Get `timeout_on_wait` for ``username``  
395 - ... Add `timeout_on_wait` to `last_modification_date` in order to have  
396 - ... correct time of data modification in CDB(every broker has different  
397 - ... data synchronisation time with CDB).  
398 - ... Find diff between `last_mofidication_date_corrected`  
399 - ... and `now`. If that value is positive, sleep for `sleep` seconds,  
400 - ... else go to next section.  
401 - ... Thus, when this keyword is executed several times in a row,  
402 - ... it will wait for as long as really needed.  
403 - ...  
404 - ... Example:  
405 - ...  
406 - ... The procurement is modified.  
407 - ... In 5 seconds, this keyword is called for `viewer`.  
408 - ... Immediately, this keyword is called for `provider`.  
409 - ... Timeout for `viewer` is 60.  
410 - ... Timeout for `provider` is 300.  
411 - ... First call (for `viewer`) will trigger `Sleep 55`.  
412 - ... Second call (for `provider`) will trigger `Sleep 235`.  
413 - ... As a result, the delay will end in 300 seconds  
414 - ... since last modification date.  
415 - ...  
416 - ... Another example (a variation of previous one):  
417 - ...  
418 - ... Timeout for `viewer` is 120.  
419 - ... Timeout for `provider` is 30.  
420 - ... First call will trigger `Sleep 115`.  
421 - ... Second call will trigger `Sleep 0`,  
422 - ... since we have already slept for 120 seconds  
423 - ... and there is no need to sleep anymore.  
424 - ...  
425 - ... Second section  
426 - ... Find how much time passed from ``username``'s `last_refresh_date`  
427 - ... to `last_modification_date_corrected`. If that value is positive, then  
428 - ... cahce for ``username`` is not up-to-date. So, it will be refreshed and  
429 - ... `last_refresh_date` will be updated.  
430 - ... Else do nothing.  
431 - ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait  
432 - ${last_modification_date_corrected}= Add Time To Date  
433 - ... ${TENDER['LAST_MODIFICATION_DATE']}  
434 - ... ${timeout_on_wait} s  
435 - ${now}= Get Current TZdate  
436 - ${sleep}= Subtract Date From Date  
437 - ... ${last_modification_date_corrected}  
438 - ... ${now}  
439 - Run Keyword If ${sleep} > 0 Sleep ${sleep}  
440 -  
441 -  
442 - ${time_diff}= Subtract Date From Date  
443 - ... ${last_modification_date_corrected}  
444 - ... ${USERS.users['${username}']['LAST_REFRESH_DATE']}  
445 - ${LAST_REFRESH_DATE}= Get Current TZdate  
446 - Run Keyword If ${time_diff} > 0 Run Keywords  
447 - ... Оновити сторінку ${username}  
448 - ... AND  
449 - ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE}  
450 -  
451 -  
452 -Оновити сторінку  
453 - [Arguments] ${username}  
454 - Run Keyword If '${RESOURCE}' == 'plans' Run As ${username} Оновити сторінку з планом ${TENDER['TENDER_UAID']}  
455 - ... ELSE Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}  
456 -  
457 -  
458 -Звірити поле тендера  
459 - [Arguments] ${username} ${tender_uaid} ${tender_data} ${field}  
460 - ${left}= get_from_object ${tender_data.data} ${field}  
461 - Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field}  
462 -  
463 -  
464 -Звірити поле плану  
465 - [Arguments] ${username} ${tender_uaid} ${tender_data} ${field}  
466 - ${left}= get_from_object ${tender_data.data} ${field}  
467 - Звірити поле плану із значенням ${username} ${tender_uaid} ${left} ${field}  
468 -  
469 -  
470 -Звірити поле плану із значенням  
471 - [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty}  
472 - ${right}= Отримати дані із плану ${username} ${tender_uaid} ${field} ${object_id}  
473 - Порівняти об'єкти ${left} ${right}  
474 -  
475 -  
476 -Звірити поле тендера із значенням  
477 - [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty}  
478 - ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id}  
479 - Порівняти об'єкти ${left} ${right}  
480 -  
481 -  
482 -Звірити поле договору  
483 - [Arguments] ${username} ${contract_uaid} ${cotract_data} ${field}  
484 - ${left}= get_from_object ${contract_data.data} ${field}  
485 - Звірити поле договору із значенням ${username} ${contract_uaid} ${left} ${field}  
486 -  
487 -  
488 -Звірити поле договору із значенням  
489 - [Arguments] ${username} ${contract_uaid} ${left} ${field}  
490 - ${right}= Отримати дані із договору ${username} ${contract_uaid} ${field}  
491 - Порівняти об'єкти ${left} ${right}  
492 -  
493 -  
494 -Звірити поле зміни до договору  
495 - [Arguments] ${username} ${contract_uaid} ${change_data} ${field}  
496 - ${left}= get_from_object ${change_data.data} ${field}  
497 - Звірити поле зміни до договору із значенням ${username} ${contract_uaid} ${left} ${field}  
498 -  
499 -  
500 -Звірити поле зміни до договору із значенням  
501 - [Arguments] ${username} ${contract_uaid} ${left} ${field}  
502 - ${field}= Evaluate "{}{}".format('changes[0].', '${field}')  
503 - ${right}= Отримати дані із договору ${username} ${contract_uaid} ${field}  
504 - Порівняти об'єкти ${left} ${right}  
505 -  
506 -  
507 -Звірити поле донора  
508 - [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${funders_index}  
509 - ${left}= get_from_object ${tender_data.data.funders[${funders_index}]} ${field}  
510 - Log ${left}  
511 - Звірити поле донора із значенням ${username} ${tender_uaid} ${left} ${field} ${funders_index}  
512 -  
513 -  
514 -Звірити поле донора із значенням  
515 - [Arguments] ${username} ${tender_uaid} ${left} ${field} ${funders_index} ${object_id}=${Empty}  
516 - ${right}= Отримати дані із тендера ${username} ${tender_uaid} funders[${funders_index}].${field} ${object_id}  
517 - Порівняти об'єкти ${left} ${right}  
518 -  
519 -  
520 -Звірити відображення типу запланованого тендера для ${username}  
521 - ${type}= Отримати дані із плану ${username} ${TENDER['TENDER_UAID']} tender.procurementMethodType  
522 - Звірити відображення поля tender.procurementMethodType плану для користувача ${username}  
523 - Run Keyword If '${type}' == '' Run As ${username} Перевірити наявність повідомлення "без застосування електронної системи"  
524 -  
525 -  
526 -Порівняти об'єкти  
527 - [Arguments] ${left} ${right}  
528 - Log ${left}  
529 - Log ${right}  
530 - Should Not Be Equal ${left} ${None}  
531 - Should Not Be Equal ${right} ${None}  
532 - Should Be Equal ${left} ${right} msg=Objects are not equal  
533 -  
534 -  
535 -Звірити дату тендера  
536 - [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False}  
537 - ${left}= get_from_object ${tender_data.data} ${field}  
538 - Звірити дату тендера із значенням ${username} ${tender_uaid} ${left} ${field} accuracy=${accuracy} absolute_delta=${absolute_delta}  
539 -  
540 -  
541 -Звірити дату тендера із значенням  
542 - [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} ${accuracy}=60 ${absolute_delta}=${False}  
543 - ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id}  
544 - Порівняти дати ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta}  
545 -  
546 -  
547 -Порівняти дати  
548 - [Documentation]  
549 - ... Compare dates with specified ``accuracy`` (in seconds).  
550 - ... Default is `60`.  
551 - ...  
552 - ... The keyword will fail if the difference between  
553 - ... ``left`` and ``right`` dates is more than ``accuracy``,  
554 - ... otherwise it will pass.  
555 - [Arguments] ${left} ${right} ${accuracy}=90 ${absolute_delta}=${False}  
556 - Log ${left}  
557 - Log ${right}  
558 - Should Not Be Equal ${left} ${None}  
559 - Should Not Be Equal ${right} ${None}  
560 - ${status}= compare_date ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta}  
561 - Should Be True ${status} msg=Dates differ: ${left} != ${right}  
562 -  
563 -  
564 -Звірити координати доставки тендера  
565 - [Arguments] ${username} ${tender_uaid} ${tender_data} ${item_id}  
566 - ${item_index}= get_object_index_by_id ${tender_data.data['items']} ${item_id}  
567 - ${left_lat}= get_from_object ${tender_data.data} items[${item_index}].deliveryLocation.latitude  
568 - ${left_lon}= get_from_object ${tender_data.data} items[${item_index}].deliveryLocation.longitude  
569 - ${right_lat}= Отримати дані із тендера ${username} ${tender_uaid} deliveryLocation.latitude ${item_id}  
570 - ${right_lat}= Convert To Number ${right_lat}  
571 - ${right_lon}= Отримати дані із тендера ${username} ${tender_uaid} deliveryLocation.longitude ${item_id}  
572 - ${right_lon}= Convert To Number ${right_lon}  
573 - Порівняти координати ${left_lat} ${left_lon} ${right_lat} ${right_lon}  
574 -  
575 -  
576 -Порівняти координати  
577 - [Documentation]  
578 - ... Compare coordinates with specified ``accuracy`` (in km).  
579 - ... Default is `0.1`.  
580 - ...  
581 - ... The keyword will fail if the difference between  
582 - ... ``left`` and ``right`` is more than ``accuracy``,  
583 - ... otherwise it will pass.  
584 - [Arguments] ${left_lat} ${left_lon} ${right_lat} ${right_lon} ${accuracy}=0.1  
585 - Should Not Be Equal ${left_lat} ${None}  
586 - Should Not Be Equal ${left_lon} ${None}  
587 - Should Not Be Equal ${right_lat} ${None}  
588 - Should Not Be Equal ${right_lon} ${None}  
589 - ${status}= compare_coordinates ${left_lat} ${left_lon} ${right_lat} ${right_lon} ${accuracy}  
590 - Should Be True ${status} msg=Coordinates differ: (${left_lat}, ${left_lon}) != (${right_lat}, ${right_lon})  
591 -  
592 -  
593 -Звірити поля предметів закупівлі багатопредметного тендера  
594 - [Arguments] ${username} ${tender_data} ${field}  
595 - @{items}= get_from_object ${tender_data.data} items  
596 - ${len_of_items}= Get Length ${items}  
597 - :FOR ${index} IN RANGE ${len_of_items}  
598 - \ Звірити поле тендера ${viewer} ${tender_data} items[${index}].${field}  
599 -  
600 -  
601 -Звірити дату предметів закупівлі багатопредметного тендера  
602 - [Arguments] ${username} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False}  
603 - @{items}= get_from_object ${tender_data.data} items  
604 - :FOR ${index} ${_} IN ENUMERATE @{items}  
605 - \ Звірити дату тендера ${viewer} ${TENDER['TENDER_UAID']} ${tender_data} items[${index}].${field} accuracy=${accuracy} absolute_delta=${absolute_delta}  
606 -  
607 -  
608 -Звірити координати доставки предметів закупівлі багатопредметного тендера  
609 - [Arguments] ${username} ${tender_data}  
610 - @{items}= get_from_object ${tender_data.data} items  
611 - :FOR ${index} ${_} IN ENUMERATE @{items}  
612 - \ Звірити координати тендера ${viewer} ${tender_data} items[${index}]  
613 -  
614 -  
615 -Отримати дані із тендера  
616 - [Arguments] ${username} ${tender_uaid} ${field_name} ${object_id}=${Empty}  
617 - ${field}= Run Keyword If '${object_id}' Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}  
618 - ... ELSE Set Variable ${field_name}  
619 - ${status} ${field_value}= Run keyword and ignore error  
620 - ... get_from_object  
621 - ... ${USERS.users['${username}'].tender_data.data}  
622 - ... ${field}  
623 - # If field in cache, return its value  
624 - Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value}  
625 - # Else call broker to find field  
626 - ${field_value}= Run Keyword IF '${object_id}' Отримати дані із об’єкта тендера ${username} ${tender_uaid} ${object_id} ${field_name}  
627 - ... ELSE Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field}  
628 - # And caching its value before return  
629 - Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value}  
630 - ${data}= munch_dict arg=${USERS.users['${username}'].tender_data.data}  
631 - Set To Dictionary ${USERS.users['${username}'].tender_data} data=${data}  
632 - Log ${USERS.users['${username}'].tender_data.data}  
633 - [return] ${field_value}  
634 -  
635 -  
636 -Отримати дані із плану  
637 - [Arguments] ${username} ${tender_uaid} ${field_name} ${object_id}=${Empty}  
638 - ${field}= Run Keyword If '${object_id}' Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}  
639 - ... ELSE Set Variable ${field_name}  
640 - ${status} ${field_value}= Run keyword and ignore error  
641 - ... get_from_object  
642 - ... ${USERS.users['${username}'].tender_data.data}  
643 - ... ${field}  
644 - # If field in cache, return its value  
645 - Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value}  
646 - # Else call broker to find field  
647 - ${field_value}= Run As ${username} Отримати інформацію із плану ${tender_uaid} ${field}  
648 - # And caching its value before return  
649 - Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value}  
650 - ${data}= munch_dict arg=${USERS.users['${username}'].tender_data.data}  
651 - Set To Dictionary ${USERS.users['${username}'].tender_data} data=${data}  
652 - Log ${USERS.users['${username}'].tender_data.data}  
653 - [return] ${field_value}  
654 -  
655 -  
656 -Отримати дані із договору  
657 - [Arguments] ${username} ${contract_uaid} ${field}  
658 - ${status} ${field_value}= Run keyword and ignore error  
659 - ... get_from_object  
660 - ... ${USERS.users['${username}'].contract_data.data}  
661 - ... ${field}  
662 - # If field in cache, return its value  
663 - Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value}  
664 - # Else call broker to find field  
665 - ${field_value}= Run As ${username} Отримати інформацію із договору ${contract_uaid} ${field}  
666 - # And caching its value before return  
667 - Set_To_Object ${USERS.users['${username}'].contract_data.data} ${field} ${field_value}  
668 - ${data}= munch_dict arg=${USERS.users['${username}'].contract_data.data}  
669 - Set To Dictionary ${USERS.users['${username}'].contract_data} data=${data}  
670 - Log ${USERS.users['${username}'].contract_data.data}  
671 - [return] ${field_value}  
672 -  
673 -  
674 -Отримати шлях до поля об’єкта  
675 - [Arguments] ${username} ${field_name} ${object_id}  
676 - ${object_type}= get_object_type_by_id ${object_id}  
677 - ${objects}= Get Variable Value ${USERS.users['${username}'].tender_data.data['${object_type}']} ${None}  
678 - ${object_index}= get_object_index_by_id ${objects} ${object_id}  
679 - [return] ${object_type}[${object_index}].${field_name}  
680 -  
681 -  
682 -Отримати дані із об’єкта тендера  
683 - [Arguments] ${username} ${tender_uaid} ${object_id} ${field_name}  
684 - ${object_type}= get_object_type_by_id ${object_id}  
685 - ${status} ${value}= Run Keyword If '${object_type}'=='questions'  
686 - ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${tender_uaid} ${object_id} ${field_name}  
687 - ... ELSE IF '${object_type}'=='lots'  
688 - ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із лоту ${tender_uaid} ${object_id} ${field_name}  
689 - ... ELSE IF '${object_type}'=='items'  
690 - ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із предмету ${tender_uaid} ${object_id} ${field_name}  
691 - ... ELSE IF '${object_type}'=='features'  
692 - ... Run Keyword And Ignore Error Run As ${username} Отримати інформацію із нецінового показника ${tender_uaid} ${object_id} ${field_name}  
693 - ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}  
694 - ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value}  
695 - ... ELSE Run As ${username} Отримати інформацію із тендера ${tender_uaid} ${field}  
696 - [return] ${field_value}  
697 -  
698 -  
699 -Отримати ідентифікатори об’єктів  
700 - [Arguments] ${username} ${objects_type}  
701 - @{objects_ids}= Create List  
702 - @{objects}= Get from object ${USERS.users['${username}'].tender_data.data} ${objects_type}  
703 - :FOR ${obj} IN @{objects}  
704 - \ ${obj_id}= get_id_from_object ${obj}  
705 - \ Append To List ${objects_ids} ${obj_id}  
706 - [return] ${objects_ids}  
707 -  
708 -  
709 -Звірити поле скарги із значенням  
710 - [Arguments] ${username} ${tender_uaid} ${given_value} ${field_name} ${complaintID} ${award_index}=${None}  
711 - ${received_value}= Run as ${username} Отримати інформацію із скарги ${tender_uaid} ${complaintID} ${field_name} ${award_index}  
712 - Порівняти об'єкти ${given_value} ${received_value}  
713 -  
714 -  
715 -Run As  
716 - [Arguments] ${username} ${command} @{arguments}  
717 - [Documentation]  
718 - ... Run the given keyword (``command``) with given ``arguments``  
719 - ... using driver (keyword library) of user ``username``.  
720 - Log ${username}  
721 - Log ${command}  
722 - Log Many @{arguments}  
723 - ${keywords_file}= Get Broker Property By Username ${username} keywords_file  
724 - Run Keyword And Return ${keywords_file}.${command} ${username} @{arguments}  
725 -  
726 -  
727 -Require Failure  
728 - [Arguments] ${username} ${command} @{arguments}  
729 - [Documentation]  
730 - ... Sometimes we need to make sure that the given keyword fails.  
731 - ...  
732 - ... This keyword works just like `Run As`, but it passes only  
733 - ... if ``command`` with ``arguments`` fails and vice versa.  
734 - Log ${username}  
735 - Log ${command}  
736 - Log Many @{arguments}  
737 - ${keywords_file}= Get Broker Property By Username ${username} keywords_file  
738 - ${status} ${value}= Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments}  
739 - Run keyword if '${status}' == 'PASS' Fail Користувач ${username} зміг виконати "${command}"  
740 - [return] ${value}  
741 -  
742 -  
743 -  
744 -Можливість отримати посилання на аукціон для глядача  
745 - ${timeout_on_wait}= Get Broker Property By Username ${viewer} timeout_on_wait  
746 - ${timeout_on_wait}= Set Variable If  
747 - ... ${timeout_on_wait} < ${120}  
748 - ... ${120}  
749 - ... ${timeout_on_wait}  
750 - ${url}= Wait Until Keyword Succeeds  
751 - ... ${timeout_on_wait}  
752 - ... 15 s  
753 - ... Run As ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']}  
754 - Should Be True '${url}'  
755 - Should Match Regexp ${url} ^https?:\/\/auction(?:-sandbox)?\.openprocurement\.org\/tenders\/([0-9A-Fa-f]{32})  
756 - Log URL аукціону для глядача: ${url}  
757 -  
758 -  
759 -Можливість отримати посилання на аукціон для учасника ${username}  
760 - ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait  
761 - ${timeout_on_wait}= Set Variable If  
762 - ... ${timeout_on_wait} < ${120}  
763 - ... ${120}  
764 - ... ${timeout_on_wait}  
765 - ${url}= Wait Until Keyword Succeeds  
766 - ... ${timeout_on_wait}  
767 - ... 15 s  
768 - ... Run As ${username} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']}  
769 - Should Be True '${url}'  
770 - Should Match Regexp ${url} ^https?:\/\/auction(?:-sandbox)?\.openprocurement\.org\/tenders\/([0-9A-Fa-f]{32})  
771 - Log URL аукціону для учасника: ${url}  
772 -  
773 -  
774 -Дочекатись дати  
775 - [Arguments] ${date}  
776 - ${sleep}= wait_to_date ${date}  
777 - Run Keyword If ${sleep} > 0 Sleep ${sleep}  
778 -  
779 -  
780 -Дочекатись дати початку періоду уточнень  
781 - [Arguments] ${username} ${tender_uaid}  
782 - # XXX: HACK: Same as below  
783 - ${status} ${date}= Run Keyword And Ignore Error  
784 - ... Set Variable  
785 - ... ${USERS.users['${username}'].tender_data.data.enquiryPeriod.startDate}  
786 - ${date}= Set Variable If  
787 - ... '${status}' == 'FAIL'  
788 - ... ${USERS.users['${tender_owner}'].initial_data.data.enquiryPeriod.startDate}  
789 - ... ${date}  
790 - Дочекатись дати ${date}  
791 - Оновити LAST_MODIFICATION_DATE  
792 - Дочекатись синхронізації з майданчиком ${username}  
793 - ${next_status}= Set variable if 'open' in '${MODE}' active.tendering active.enquiries  
794 - Wait until keyword succeeds  
795 - ... 5 min 15 sec  
796 - ... 15 sec  
797 - ... Звірити статус тендера  
798 - ... ${username}  
799 - ... ${tender_uaid}  
800 - ... ${next_status}  
801 -  
802 -  
803 -Дочекатись дати закінчення періоду уточнень  
804 - [Arguments] ${username} ${tender_uaid}  
805 - Дочекатись дати ${USERS.users['${username}'].tender_data.data.enquiryPeriod.endDate}  
806 - Оновити LAST_MODIFICATION_DATE  
807 - Дочекатись синхронізації з майданчиком ${username}  
808 - Wait until keyword succeeds  
809 - ... 10 min 15 sec  
810 - ... 15 sec  
811 - ... Звірити статус тендера  
812 - ... ${username}  
813 - ... ${tender_uaid}  
814 - ... active.tendering  
815 -  
816 -  
817 -Дочекатись дати закінчення періоду відповідей на запитання  
818 - [Arguments] ${username}  
819 - Дочекатись дати ${USERS.users['${username}'].tender_data.data.enquiryPeriod.clarificationsUntil}  
820 - Оновити LAST_MODIFICATION_DATE  
821 - Дочекатись синхронізації з майданчиком ${username}  
822 -  
823 -  
824 -Звірити статус тендера  
825 - [Arguments] ${username} ${tender_uaid} ${left}  
826 - ${right}= Run as ${username} Отримати інформацію із тендера ${tender_uaid} status  
827 - Порівняти об'єкти ${left} ${right}  
828 -  
829 -  
830 -Звірити статус вимоги/скарги  
831 - [Arguments] ${username} ${tender_uaid} ${complaintID} ${left} ${award_index}=${None}  
832 - ${right}= Run as ${username} Отримати інформацію із скарги ${tender_uaid} ${complaintID} status ${award_index}  
833 - Порівняти об'єкти ${left} ${right}  
834 -  
835 -  
836 -Дочекатись дати початку прийому пропозицій  
837 - [Arguments] ${username} ${tender_uaid}  
838 - # This tries to get the date from current user's procurement data cache.  
839 - # On failure, it reads from tender_owner's cached initial_data.  
840 - # XXX: This is a dirty hack!  
841 - # HACK: It was left here only for backward compatibiliy.  
842 - # HACK: Before caching was implemented, this keyword used to look into  
843 - # HACK: tender_owner's initial_data.  
844 - # HACK: This should be cleaned up as soon as each broker implements reading  
845 - # HACK: of the needed dates from tender's page.  
846 - ${status} ${date}= Run Keyword And Ignore Error  
847 - ... Set Variable  
848 - ... ${USERS.users['${username}'].tender_data.data.tenderPeriod.startDate}  
849 - # By default if condition is not satisfied, variable is set to None.  
850 - # The third argument sets the variable to itself instead of None.  
851 - ${date}= Set Variable If  
852 - ... '${status}' == 'FAIL'  
853 - ... ${USERS.users['${tender_owner}'].initial_data.data.tenderPeriod.startDate}  
854 - ... ${date}  
855 - Дочекатись дати ${date}  
856 - Оновити LAST_MODIFICATION_DATE  
857 - Дочекатись синхронізації з майданчиком ${username}  
858 - Wait until keyword succeeds  
859 - ... 30 min 15 sec  
860 - ... 15 sec  
861 - ... Звірити статус тендера  
862 - ... ${username}  
863 - ... ${tender_uaid}  
864 - ... active.tendering  
865 -  
866 -  
867 -Дочекатись дати закінчення прийому пропозицій  
868 - [Arguments] ${username} ${tender_uaid}  
869 - # XXX: HACK: Same as above  
870 - ${status} ${date}= Run Keyword And Ignore Error  
871 - ... Set Variable  
872 - ... ${USERS.users['${username}'].tender_data.data.tenderPeriod.endDate}  
873 - ${date}= Set Variable If  
874 - ... '${status}' == 'FAIL'  
875 - ... ${USERS.users['${tender_owner}'].initial_data.data.tenderPeriod.endDate}  
876 - ... ${date}  
877 - Дочекатись дати ${date}  
878 - Оновити LAST_MODIFICATION_DATE  
879 - Дочекатись синхронізації з майданчиком ${username}  
880 - Wait until keyword succeeds  
881 - ... 40 min 15 sec  
882 - ... 15 sec  
883 - ... Run Keyword And Expect Error *  
884 - ... Звірити статус тендера  
885 - ... ${username}  
886 - ... ${tender_uaid}  
887 - ... active.tendering  
888 -  
889 -  
890 -Дочекатись дати початку періоду прекваліфікації  
891 - [Arguments] ${username} ${tender_uaid}  
892 - # XXX: HACK: Same as above  
893 - ${status} ${date}= Run Keyword And Ignore Error  
894 - ... Set Variable  
895 - ... ${USERS.users['${username}'].tender_data.data.tenderPeriod.endDate}  
896 - ${date}= Set Variable If  
897 - ... '${status}' == 'FAIL'  
898 - ... ${USERS.users['${tender_owner}'].initial_data.data.tenderPeriod.endDate}  
899 - ... ${date}  
900 - Дочекатись дати ${date}  
901 - Оновити LAST_MODIFICATION_DATE  
902 - Дочекатись синхронізації з майданчиком ${username}  
903 - Wait until keyword succeeds  
904 - ... 20 min 15 sec  
905 - ... 15 sec  
906 - ... Звірити статус тендера  
907 - ... ${username}  
908 - ... ${tender_uaid}  
909 - ... active.pre-qualification  
910 -  
911 -  
912 -Дочекатись дати початку очікування  
913 - [Arguments] ${username} ${tender_uaid}  
914 - # XXX: HACK: Same as above  
915 - ${status} ${date}= Run Keyword And Ignore Error  
916 - ... Set Variable  
917 - ... ${USERS.users['${username}'].tender_data.data.tenderPeriod.endDate}  
918 - ${date}= Set Variable If  
919 - ... '${status}' == 'FAIL'  
920 - ... ${USERS.users['${tender_owner}'].initial_data.data.tenderPeriod.endDate}  
921 - ... ${date}  
922 - Дочекатись дати ${date}  
923 - Оновити LAST_MODIFICATION_DATE  
924 - Дочекатись синхронізації з майданчиком ${username}  
925 - Wait until keyword succeeds  
926 - ... 5 min 15 sec  
927 - ... 15 sec  
928 - ... Звірити статус тендера  
929 - ... ${username}  
930 - ... ${tender_uaid}  
931 - ... active.stage2.pending  
932 -  
933 -  
934 -Дочекатись дати закінчення періоду прекваліфікації  
935 - [Arguments] ${username} ${tender_uaid}  
936 - Дочекатись дати ${USERS.users['${username}'].tender_data.data.qualificationPeriod.endDate}  
937 - Оновити LAST_MODIFICATION_DATE  
938 - Дочекатись синхронізації з майданчиком ${username}  
939 - Wait until keyword succeeds  
940 - ... 5 min 15 sec  
941 - ... 15 sec  
942 - ... Run Keyword And Expect Error *  
943 - ... Звірити статус тендера  
944 - ... ${username}  
945 - ... ${tender_uaid}  
946 - ... active.pre-qualification.stand-still  
947 -  
948 -  
949 -Дочекатися створення нового етапу мостом  
950 - [Arguments] ${username} ${tender_uaid}  
951 - Оновити LAST_MODIFICATION_DATE  
952 - Дочекатись синхронізації з майданчиком ${username}  
953 - Wait until keyword succeeds  
954 - ... 10 min 15 sec  
955 - ... 15 sec  
956 - ... Звірити статус тендера  
957 - ... ${username}  
958 - ... ${tender_uaid}  
959 - ... complete  
960 -  
961 -  
962 -Дочекатись дати початку періоду аукціону  
963 - [Arguments] ${username} ${tender_uaid}  
964 - Оновити LAST_MODIFICATION_DATE  
965 - Дочекатись синхронізації з майданчиком ${username}  
966 - Wait until keyword succeeds  
967 - ... 40 min 15 sec  
968 - ... 15 sec  
969 - ... Звірити статус тендера  
970 - ... ${username}  
971 - ... ${tender_uaid}  
972 - ... active.auction  
973 - Sleep 120 # Auction sync  
974 -  
975 -  
976 -Дочекатись дати початку періоду кваліфікації  
977 - [Arguments] ${username} ${tender_uaid}  
978 - Оновити LAST_MODIFICATION_DATE  
979 - Дочекатись синхронізації з майданчиком ${username}  
980 - Wait until keyword succeeds  
981 - ... 40 min 15 sec  
982 - ... 15 sec  
983 - ... Звірити статус тендера  
984 - ... ${username}  
985 - ... ${tender_uaid}  
986 - ... active.qualification  
987 -  
988 -  
989 -Дочекатись дати закінчення періоду подання скарг  
990 - [Arguments] ${username}  
991 - Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate}  
992 - Оновити LAST_MODIFICATION_DATE  
993 - Дочекатись синхронізації з майданчиком ${username}  
994 -  
995 -  
996 -Дочекатись зміни статусу вимоги  
997 - [Arguments] ${username} ${status} ${complaintID} ${award_index}=${None}  
998 - Дочекатись синхронізації з майданчиком ${username}  
999 - Wait until keyword succeeds  
1000 - ... 40 min 15 sec  
1001 - ... 15 sec  
1002 - ... Звірити статус вимоги/скарги  
1003 - ... ${provider}  
1004 - ... ${TENDER['TENDER_UAID']}  
1005 - ... ${complaintID}  
1006 - ... ${status}  
1007 - ... ${award_index}  
1008 -  
1009 -  
1010 -Оновити LAST_MODIFICATION_DATE  
1011 - [Documentation]  
1012 - ... Variable ``${TEST_STATUS}`` is only available in test case teardown.  
1013 - ... When we call this keyword from elswere, we need to presume that  
1014 - ... test status is ``PASS`` (since previous keywords passed and this  
1015 - ... one was called).  
1016 - ${LAST_MODIFICATION_DATE}= Get Current TZdate  
1017 - ${status}= Get Variable Value ${TEST_STATUS} PASS  
1018 - Run Keyword If '${status}' == 'PASS' Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE}  
1019 -  
1020 -  
1021 -Отримати останній індекс  
1022 -<<<<<<< 757d74b2c6bfa0482907833dc95b64e414708a70  
1023 - [Arguments] ${object} ${username}  
1024 - ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].tender_data.data} ${object}  
1025 - Run Keyword If '${status}' == 'False' Fail ${object} not found in \${USERS.users['${username}'].tender_data.data}  
1026 - ${len_of_object}= Get Length ${USERS.users['${username}'].tender_data.data.${object}}  
1027 - ${index}= subtraction ${len_of_object} 1  
1028 - [Return] ${index}  
1029 -=======  
1030 - [Arguments] ${object} @{username}  
1031 - :FOR ${role} IN @{username}  
1032 - \ ${status} ${field_value}= Run Keyword And Ignore Error  
1033 - ... get_from_object  
1034 - ... ${USERS.users['${role}'].tender_data.data}  
1035 - ... ${object}  
1036 - \ Run Keyword If '${status}' == 'PASS' Exit For Loop  
1037 - ${len_of_object}= Run Keyword If '${status}' == 'PASS' Get Length ${USERS.users['${role}'].tender_data.data.${object}}  
1038 - ${index}= Run Keyword If '${status}' == 'PASS' subtraction ${len_of_object} 1  
1039 - [Return] ${index}  
1040 ->>>>>>> Modify Отримати останній індекс keyword  
@@ -46,13 +46,12 @@ @@ -46,13 +46,12 @@
46 -i modify_bid_by_provider 46 -i modify_bid_by_provider
47 -i add_doc_to_bid_by_provider 47 -i add_doc_to_bid_by_provider
48 -i ask_question_after_enquiry_period 48 -i ask_question_after_enquiry_period
49 --i create_tender_complaint_after_complaint_period  
50 -i answer_question_after_clarifications_period 49 -i answer_question_after_clarifications_period
51 -i modify_tender_in_tendering_period 50 -i modify_tender_in_tendering_period
52 -i open_confirm_first_bid 51 -i open_confirm_first_bid
53 -i bid_view_in_tendering_period 52 -i bid_view_in_tendering_period
54 53
55 --i add_bid_doc_after_tendering_period_by_provider 54 +-i ask_question_to_tender_after_tendering_period
56 55
57 -i qualification_add_doc_to_first_award 56 -i qualification_add_doc_to_first_award
58 -i qualification_approve_first_award 57 -i qualification_approve_first_award
@@ -34,3 +34,9 @@ @@ -34,3 +34,9 @@
34 -i document_service 34 -i document_service
35 35
36 -i auction_url 36 -i auction_url
  37 +
  38 +-i auction
  39 +
  40 +-i qualification_approve_first_award
  41 +
  42 +-i contract_sign
Please register or login to post a comment