Commit 37b9eb5926b5f4fd633056d3359f42d32bb20df8

Authored by Myroslav Opyr
2 parents 8f5be473 11a58088

Merge pull request #40 from selurvedu/get_now

Use get_now where possible
1 # robot_tests 1 # robot_tests
2 2
  3 +## User acceptance tests for [OpenProcurement](https://github.com/openprocurement)
  4 +
3 [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/openprocurement/robot_tests?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 5 [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/openprocurement/robot_tests?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 6
5 -## Запуск тестів ##  
6 -Необхідно запустити:  
7 -```  
8 -bin/openprocurement_tests  
9 -```  
10 -  
11 -В тестах використовуються користувачі, які описані в https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/data/users.yaml. За замовчуванням тести використовують користувачів з реалізацією запитів в центральну базу за допомогою API клієнта (умовна назва Quinta). Скрипт ```bin/openprocurement_tests``` дає змогу змінити користувача для ролей.  
12 -Для прикладу для тесту 'CreateTenderTest' використовуються ролі *tender_owner* та *provider*. В тесті прописано, що роль [*tender_owner* буде виконувати *Tender_Owner*](https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/singleItemTender.robot#L16) з [відповідною реалізацією запитів](https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/data/users.yaml#L4) в центральну базу.  
13 -Для запуску тестів де роль *tender_owner* виконує [*Prom_Owner*](https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/data/users.yaml#L7) запускаємо  
14 -```  
15 -bin/openprocurement_tests -v tender_owner:Prom_Owner 7 +This repository contains tests which are aimed to verify performance of the central database and the brokers.
  8 +
  9 +Please visit the [Wiki](https://github.com/openprocurement/robot_tests/wiki) for more information.
@@ -54,8 +54,10 @@ ${locator.questions[0].answer} xpath=(//div[@tex @@ -54,8 +54,10 @@ ${locator.questions[0].answer} xpath=(//div[@tex
54 54
55 Login 55 Login
56 Wait Until Page Contains Element id=inputUsername 10 56 Wait Until Page Contains Element id=inputUsername 10
  57 + Sleep 1
57 Input text id=inputUsername ${USERS.users['${username}'].login} 58 Input text id=inputUsername ${USERS.users['${username}'].login}
58 Wait Until Page Contains Element id=inputPassword 10 59 Wait Until Page Contains Element id=inputPassword 10
  60 + Sleep 1
59 Input text id=inputPassword ${USERS.users['${username}'].password} 61 Input text id=inputPassword ${USERS.users['${username}'].password}
60 Click Button id=btn_submit 62 Click Button id=btn_submit
61 63
@@ -98,8 +100,8 @@ Login @@ -98,8 +100,8 @@ Login
98 Wait Until Page Contains Мої закупівлі 10 100 Wait Until Page Contains Мої закупівлі 10
99 Sleep 1 101 Sleep 1
100 Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі'] 102 Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі']
  103 + Sleep 5
101 Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')] 104 Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')]
102 - Sleep 1  
103 Click Element xpath=//a[contains(@class, 'btn btn-info')] 105 Click Element xpath=//a[contains(@class, 'btn btn-info')]
104 Wait Until Page Contains Element id=title 106 Wait Until Page Contains Element id=title
105 Input text id=title ${title} 107 Input text id=title ${title}
@@ -190,6 +192,10 @@ Set Multi Ids @@ -190,6 +192,10 @@ Set Multi Ids
190 192
191 Клацнути і дочекатися 193 Клацнути і дочекатися
192 [Arguments] ${click_locator} ${wanted_locator} ${timeout} 194 [Arguments] ${click_locator} ${wanted_locator} ${timeout}
  195 + [Documentation]
  196 + ... click_locator: Where to click
  197 + ... wanted_locator: What are we waiting for
  198 + ... timeout: Timeout
193 Click Link ${click_locator} 199 Click Link ${click_locator}
194 Wait Until Page Contains Element ${wanted_locator} ${timeout} 200 Wait Until Page Contains Element ${wanted_locator} ${timeout}
195 201
1 from datetime import datetime 1 from datetime import datetime
2 from iso8601 import parse_date 2 from iso8601 import parse_date
  3 +from op_robot_tests.tests_files.service_keywords import get_now
3 from calendar import monthrange 4 from calendar import monthrange
4 5
5 6
6 def newtend_date_picker_index(isodate): 7 def newtend_date_picker_index(isodate):
7 - now = datetime.today() 8 + now = get_now()
8 date_str = '01' + str(now.month) + str(now.year) 9 date_str = '01' + str(now.month) + str(now.year)
9 first_day_of_month = datetime.strptime(date_str, "%d%m%Y") 10 first_day_of_month = datetime.strptime(date_str, "%d%m%Y")
10 mod = first_day_of_month.isoweekday() - 2 11 mod = first_day_of_month.isoweekday() - 2
1 *** Settings *** 1 *** Settings ***
2 -Library op_robot_tests.tests_files.brokers.openprocurement_client_helper  
3 -Library Selenium2Screenshots 2 +Library openprocurement_client_helper.py
4 3
5 *** Keywords *** 4 *** Keywords ***
6 Отримати internal id по UAid 5 Отримати internal id по UAid
1 # -*- coding: utf-8 - 1 # -*- coding: utf-8 -
2 -from datetime import datetime, timedelta 2 +from datetime import timedelta
3 from faker import Factory 3 from faker import Factory
4 from munch import munchify 4 from munch import munchify
5 -from pytz import timezone  
6 from tempfile import NamedTemporaryFile 5 from tempfile import NamedTemporaryFile
7 -import os 6 +from .local_time import get_now
8 7
9 fake = Factory.create('uk_UA') 8 fake = Factory.create('uk_UA')
10 fake_ru = Factory.create('ru') 9 fake_ru = Factory.create('ru')
11 fake_en = Factory.create() 10 fake_en = Factory.create()
12 11
13 -TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev')  
14 -  
15 -  
16 -def get_now():  
17 - return datetime.now(TZ)  
18 -  
19 12
20 def create_fake_doc(): 13 def create_fake_doc():
21 content = fake.text() 14 content = fake.text()
@@ -5,12 +5,13 @@ Library String @@ -5,12 +5,13 @@ Library String
5 Library Collections 5 Library Collections
6 Library Selenium2Library 6 Library Selenium2Library
7 Library DateTime 7 Library DateTime
8 -Library Selenium2Screenshots  
9 Library DebugLibrary 8 Library DebugLibrary
10 9
11 *** Keywords *** 10 *** Keywords ***
12 TestSuiteSetup 11 TestSuiteSetup
13 - Завантажуємо дані про користувачів і майданчики 12 + Set Selenium Implicit Wait 5 s
  13 + Set Selenium Timeout 10 s
  14 + Завантажуємо дані про користувачів і майданчики
14 15
15 Set Suite Variable With Default Value 16 Set Suite Variable With Default Value
16 [Arguments] ${suite_var} ${def_value} 17 [Arguments] ${suite_var} ${def_value}
@@ -103,7 +104,7 @@ Get Broker Property By Username @@ -103,7 +104,7 @@ Get Broker Property By Username
103 [Documentation] 104 [Documentation]
104 ... Get ${wait_timeout} for specified user and wait 105 ... Get ${wait_timeout} for specified user and wait
105 ... until that timeout runs out. 106 ... until that timeout runs out.
106 - ${now}= Get Current Date 107 + ${now}= Get Current TZdate
107 ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} 108 ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']}
108 ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait 109 ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait
109 ${wait_timeout}= Subtract Time From Time ${timeout_on_wait} ${delta} 110 ${wait_timeout}= Subtract Time From Time ${timeout_on_wait} ${delta}
  1 +from datetime import datetime
  2 +from pytz import timezone
  3 +import os
  4 +TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev')
  5 +
  6 +
  7 +def get_now():
  8 + return datetime.now(TZ)
@@ -20,7 +20,7 @@ ${broker} Quinta @@ -20,7 +20,7 @@ ${broker} Quinta
20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
21 ${tender_data}= Підготовка початкових даних 21 ${tender_data}= Підготовка початкових даних
22 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 22 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
23 - ${LAST_MODIFICATION_DATE}= Get Current Date 23 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
24 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data} 24 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
25 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} 25 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} 26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
1 # -*- coding: utf-8 - 1 # -*- coding: utf-8 -
2 -from datetime import datetime, timedelta 2 +from datetime import timedelta
3 from dateutil.parser import parse 3 from dateutil.parser import parse
4 from dpath.util import set as xpathset 4 from dpath.util import set as xpathset
5 from iso8601 import parse_date 5 from iso8601 import parse_date
6 from json import load 6 from json import load
7 from jsonpath_rw import parse as parse_path 7 from jsonpath_rw import parse as parse_path
8 from munch import fromYAML, Munch, munchify 8 from munch import fromYAML, Munch, munchify
9 -from pytz import timezone  
10 from robot.errors import HandlerExecutionFailed 9 from robot.errors import HandlerExecutionFailed
11 from robot.libraries.BuiltIn import BuiltIn 10 from robot.libraries.BuiltIn import BuiltIn
12 from robot.output import LOGGER 11 from robot.output import LOGGER
@@ -20,18 +19,12 @@ from .initial_data import ( @@ -20,18 +19,12 @@ from .initial_data import (
20 test_complaint_reply_data, test_question_answer_data, 19 test_complaint_reply_data, test_question_answer_data,
21 test_question_data, test_tender_data, test_tender_data_multiple_lots 20 test_question_data, test_tender_data, test_tender_data_multiple_lots
22 ) 21 )
  22 +from .local_time import get_now, TZ
23 import os 23 import os
24 24
25 25
26 -TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev')  
27 -  
28 -  
29 -def get_now():  
30 - return datetime.now(TZ)  
31 -  
32 -  
33 -def get_date():  
34 - return get_now().isoformat() 26 +def get_current_tzdate():
  27 + return get_now().strftime('%Y-%m-%d %H:%M:%S.%f')
35 28
36 29
37 def get_file_contents(path): 30 def get_file_contents(path):
@@ -53,15 +46,15 @@ def prepare_prom_test_tender_data(period_intervals, mode): @@ -53,15 +46,15 @@ def prepare_prom_test_tender_data(period_intervals, mode):
53 return munchify({'data': t_data}) 46 return munchify({'data': t_data})
54 47
55 48
56 -def compare_date(data1, data2):  
57 - data1 = parse(data1)  
58 - data2 = parse(data2)  
59 - if data1.tzinfo is None:  
60 - data1 = TZ.localize(data1)  
61 - if data2.tzinfo is None:  
62 - data2 = TZ.localize(data2) 49 +def compare_date(date1, date2):
  50 + date1 = parse(date1)
  51 + date2 = parse(date2)
  52 + if date1.tzinfo is None:
  53 + date1 = TZ.localize(date1)
  54 + if date2.tzinfo is None:
  55 + date2 = TZ.localize(date2)
63 56
64 - delta = (data1 - data2).total_seconds() 57 + delta = (date1 - date2).total_seconds()
65 if abs(delta) > 60: 58 if abs(delta) > 60:
66 return False 59 return False
67 return True 60 return True
@@ -189,7 +182,7 @@ def merge_dicts(left, right): @@ -189,7 +182,7 @@ def merge_dicts(left, right):
189 182
190 # GUI Frontends common 183 # GUI Frontends common
191 def add_data_for_gui_frontends(tender_data): 184 def add_data_for_gui_frontends(tender_data):
192 - now = datetime.now() 185 + now = get_now()
193 # tender_data.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() 186 # tender_data.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat()
194 tender_data.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat() 187 tender_data.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat()
195 tender_data.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat() 188 tender_data.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat()
@@ -23,7 +23,7 @@ ${question_id} 0 @@ -23,7 +23,7 @@ ${question_id} 0
23 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), 23 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
24 ${tender_data}= Підготовка початкових даних 24 ${tender_data}= Підготовка початкових даних
25 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 25 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
26 - ${LAST_MODIFICATION_DATE}= Get Current Date 26 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
27 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data} 27 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
28 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} 28 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
29 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} 29 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
@@ -63,8 +63,7 @@ ${question_id} 0 @@ -63,8 +63,7 @@ ${question_id} 0
63 63
64 Відображення tenderID оголошеного тендера 64 Відображення tenderID оголошеного тендера
65 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 65 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
66 - ${field_response}= Викликати для учасника ${viewer} Отримати інформацію із тендера tenderID  
67 - Should Be Equal ${TENDER['TENDER_UAID']} ${field_response} Майданчик ${USERS.users['${viewer}'].broker} 66 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} tenderID
68 67
69 Відображення procuringEntity.name оголошеного тендера 68 Відображення procuringEntity.name оголошеного тендера
70 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 69 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
@@ -176,7 +175,7 @@ ${question_id} 0 @@ -176,7 +175,7 @@ ${question_id} 0
176 Задати питання 175 Задати питання
177 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання 176 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
178 Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} 177 Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]}
179 - ${now}= Get Current Date 178 + ${now}= Get Current TZdate
180 Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} 179 Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now}
181 180
182 Відображення заголовку анонімного питання без відповіді 181 Відображення заголовку анонімного питання без відповіді
@@ -209,7 +208,7 @@ ${question_id} 0 @@ -209,7 +208,7 @@ ${question_id} 0
209 Відповісти на запитання 208 Відповісти на запитання
210 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання 209 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
211 Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} 210 Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]}
212 - ${now}= Get Current Date 211 + ${now}= Get Current TZdate
213 Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} 212 Set To Dictionary ${ANSWERS[${question_id}].data} date ${now}
214 213
215 Відображення відповіді на запитання 214 Відображення відповіді на запитання
@@ -307,8 +306,9 @@ ${question_id} 0 @@ -307,8 +306,9 @@ ${question_id} 0
307 306
308 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій 307 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій
309 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію 308 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
310 - ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids  
311 - Should Be Equal ${bids} ${None} 309 + ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids
  310 + ${bool}= Convert To Boolean ${bids}
  311 + Should Be Equal ${bool} ${False}
312 312
313 Завантажити документ другим учасником 313 Завантажити документ другим учасником
314 [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця 314 [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця
@@ -21,7 +21,7 @@ ${broker} Quinta @@ -21,7 +21,7 @@ ${broker} Quinta
21 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), 21 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
22 ${tender_data}= Підготовка початкових даних 22 ${tender_data}= Підготовка початкових даних
23 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} 23 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
24 - ${LAST_MODIFICATION_DATE}= Get Current Date 24 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
25 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} 25 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} 26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
27 log ${TENDER} 27 log ${TENDER}
@@ -35,7 +35,7 @@ ${broker} Quinta @@ -35,7 +35,7 @@ ${broker} Quinta
35 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови 35 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
36 [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі 36 [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
37 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} 37 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
38 - ${LAST_MODIFICATION_DATE}= Get Current Date 38 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
39 Set Global Variable ${LAST_MODIFICATION_DATE} 39 Set Global Variable ${LAST_MODIFICATION_DATE}
40 40
41 Можливість побачити скаргу користувачем 41 Можливість побачити скаргу користувачем
@@ -56,24 +56,24 @@ ${broker} Quinta @@ -56,24 +56,24 @@ ${broker} Quinta
56 Можливість відкинути скаргу на умови 56 Можливість відкинути скаргу на умови
57 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відкинути скаргу на умови 57 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відкинути скаргу на умови
58 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} 58 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
59 - ${LAST_MODIFICATION_DATE}= Get Current Date 59 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
60 Set Global Variable ${LAST_MODIFICATION_DATE} 60 Set Global Variable ${LAST_MODIFICATION_DATE}
61 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} 61 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
62 Set To Dictionary ${COMPLAINTS[0].data} status invalid 62 Set To Dictionary ${COMPLAINTS[0].data} status invalid
63 Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${COMPLAINTS[0]} 63 Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${COMPLAINTS[0]}
64 log many ${COMPLAINTS[0]} 64 log many ${COMPLAINTS[0]}
65 - ${LAST_MODIFICATION_DATE}= Get Current Date 65 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
66 Set Global Variable ${LAST_MODIFICATION_DATE} 66 Set Global Variable ${LAST_MODIFICATION_DATE}
67 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} 67 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
68 68
69 Можливість задовільнити скаргу на умови 69 Можливість задовільнити скаргу на умови
70 [Tags] ${USERS.users['${provider}'].broker}: Можливість відповісти на запитання 70 [Tags] ${USERS.users['${provider}'].broker}: Можливість відповісти на запитання
71 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} 71 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
72 - ${LAST_MODIFICATION_DATE}= Get Current Date 72 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
73 Set Global Variable ${LAST_MODIFICATION_DATE} 73 Set Global Variable ${LAST_MODIFICATION_DATE}
74 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} 74 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
75 Set To Dictionary ${COMPLAINTS[0].data} status resolved 75 Set To Dictionary ${COMPLAINTS[0].data} status resolved
76 Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 2 ${COMPLAINTS[0]} 76 Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 2 ${COMPLAINTS[0]}
77 log many ${COMPLAINTS[0]} 77 log many ${COMPLAINTS[0]}
78 - ${LAST_MODIFICATION_DATE}= Get Current Date 78 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
79 Set Global Variable ${LAST_MODIFICATION_DATE} 79 Set Global Variable ${LAST_MODIFICATION_DATE}
Please register or login to post a comment