Commit 669074eade19d7ad4edaaa6b829a5f41e8cffd54

Authored by Taras Kozlovskyi
1 parent e374d2cb

Update tests

... ... @@ -4,15 +4,15 @@ Library String
4 4 LIbrary Collections
5 5 LIbrary Selenium2Library
6 6 Library DebugLibrary
7   -
  7 +Resource keywords.robot
8 8 Suite Setup TestCaseSetup
9 9 Suite Teardown Close all browsers
10 10
11   -
12 11 *** Variables ***
13   -${viewer} E-tender User
14   -${provider} Andrew
15   -@{item_fields} description quantity classification.id classification.description deliveryAddress deliveryDate
  12 +${viewer} Tender User
  13 +# Tender Viewer
  14 +${provider} Tender User
  15 +
16 16
17 17 *** Test Cases ***
18 18 Можливість оголосити тендер
... ... @@ -66,9 +66,6 @@ ${provider} Andrew
66 66 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
67 67 Звірити поле тендера ${viewer} procuringEntity.name
68 68
69   -
70   -
71   -
72 69 Відображення предмету закупівлі однопредметного тендера
73 70 [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера
74 71 Звірити поле тендера ${viewer} items[0].description
... ... @@ -84,7 +81,11 @@ ${provider} Andrew
84 81
85 82 Відображення місце поставки закупівлі однопредметного тендера
86 83 [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера
87   - Звірити поле тендера ${viewer} items[0].deliveryAddress
  84 + Звірити поле тендера ${viewer} items[0].deliveryAddress.countryName
  85 + Звірити поле тендера ${viewer} items[0].deliveryAddress.locality
  86 + Звірити поле тендера ${viewer} items[0].deliveryAddress.postalCode
  87 + Звірити поле тендера ${viewer} items[0].deliveryAddress.region
  88 + Звірити поле тендера ${viewer} items[0].deliveryAddress.streetAddress
88 89
89 90 Відображення строки поставки закупівлі однопредметного тендера
90 91 [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера
... ... @@ -97,7 +98,6 @@ ${provider} Andrew
97 98 Set Global Variable ${LAST_MODIFICATION_DATE}
98 99 отримати останні зміни в тендері
99 100
100   -
101 101 Відображення заголовоку анонімного питання без відповіді
102 102 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
103 103 Дочекатись синхронізації з майданчиком ${viewer}
... ... @@ -108,96 +108,27 @@ ${provider} Andrew
108 108 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
109 109 Звірити поле тендера ${viewer} questions[0].description
110 110
111   -
112   -Відображення дата анонімного питання без відповіді
  111 +Відображення дати анонімного питання без відповіді
113 112 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
114 113 Звірити поле тендера ${viewer} questions[0].date
115 114
116   - # ${users_list}= Get Dictionary Items ${USERS.users}
117   - # :FOR ${username} ${User_Data} IN @{users_list}
118   - # \ Run Keyword If '${User_Name}' != '${USERS.tender_owner}' Відображення основних даних оголошеного тендера ${username}
119   -#
120   -# Відображення однопредметного тендера
121   - # ${users_list}= Get Dictionary Items ${USERS.users}
122   - # :FOR ${username} ${User_Data} IN @{users_list}
123   - # \ Run Keyword If '${User_Name}' != '${USERS.tender_owner}' Відображення однопредметного тендера ${username}
124   -#
125   -#
126   -# Можливість змінити основні властивості тендера
127   - # [tags] all_stages
128   - # Власник змінив основні властивості тендера
129   - # Інші учасники побачили створений тендер
130   -#
131   -# Питання і відповідь
132   - # Учасник Andrew задав 1-ше питання
133   - # Інші учасники побачили 1-ше питання
134   - # Власник відповів на 1-ше питання
135   - # Інші учасники побачили відповідь на 1-ше питання
136   -#
137   -
138   -
139   -*** Keywords ***
140   -TestCaseSetup
141   - Завантажуємо дані про корисувачів і площадки
142   - Підготовка початкових даних
143   -
144   -
145   -Завантажуємо дані про корисувачів і площадки
146   - # Init Brokers
147   - ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml
148   - ${BROKERS}= load_initial_data_from ${file_path}
149   - Set Global Variable ${BROKERS}
150   - ${brokers_list}= Get Dictionary Items ${BROKERS}
151   - :FOR ${Broker_Name} ${Broker_Data} IN @{brokers_list}
152   - \ Завантажуємо бібліотеку з реалізацією ${Broker_Data.keywords_file} площадки
153   - # Init Users
154   - ${file_path}= Get Variable Value ${USERS_FILE} users.yaml
155   - ${USERS}= load_initial_data_from ${file_path}
156   - Set Global Variable ${USERS}
157   - ${users_list}= Get Dictionary Items ${USERS.users}
158   - :FOR ${username} ${user_data} IN @{users_list}
159   - \ Викликати для учасника ${username} Підготувати клієнт для користувача
160   -
161   -Підготовка початкових даних
162   - @{QUESTIONS} = Create list
163   - ${question}= test question data
164   - Append to list ${QUESTIONS} ${question}
165   - Set Global Variable ${QUESTIONS}
166   - ${INITIAL_TENDER_DATA}= prepare_test_tender_data
167   - Set Global Variable ${INITIAL_TENDER_DATA}
168   -
169   -Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки
170   - Import Resource ${CURDIR}/brokers/${keywords_file}.robot
171   -
172   -
173   -##################################################################################
174   -Дочекатись синхронізації з майданчиком
175   - [Arguments] ${username}
176   - [Documentation]
177   - ... ${ARGUMENTS[0]} == username
178   - ... ${ARGUMENTS[1]} == tenderId
179   - ... ${ARGUMENTS[2]} == id
180   -
181   - ${now}= Get Current Date
182   - ${delta}= Subtract Date From Date ${now} ${LAST_MODIFICATION_DATE}
183   - ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta}
184   - Run Keyword If ${wait_timout}>0 Sleep ${wait_timout}
185   -
186   -отримати останні зміни в тендері
187   - ${TENDER_DATA}= Викликати для учасника ${USERS.tender_owner} Пошук тендера по ідентифікатору ${TENDER_DATA.data.tenderID} ${TENDER_DATA.data.id}
188   - Set To Dictionary ${TENDER_DATA} access_token ${access_token}
189   - Set Global Variable ${TENDER_DATA}
190   - Log object data ${TENDER_DATA} tender_with_question
191   -
192   -Звірити поле тендера
193   - [Arguments] ${username} ${field}
194   - ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field}
195   - ${field_value}= Get_From_Object ${TENDER_DATA.data} ${field}
196   - Should Be Equal ${field_value} ${field_response} Майданчик ${USERS.users['${username}'].broker}
197   -
198   -
199   -Викликати для учасника
200   - [Arguments] ${username} ${command} @{arguments}
201   - ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments}
202   - Run keyword if '${status}' == 'FAIL' Log Учасник ${username} не зміг виконати "${command}" WARN
203   - [return] ${value}
  115 +Відповісти на запитання
  116 + [Tags] ${USERS.users['${USERS.tender_owner}'].broker}: Можливість відповісти на запитання
  117 + Викликати для учасника ${USERS.tender_owner} Відповісти на питання ${TENDER_DATA.data.id} 0 ${ANSWERS[0]}
  118 + ${LAST_MODIFICATION_DATE}= Get Current Date
  119 + Set Global Variable ${LAST_MODIFICATION_DATE}
  120 + отримати останні зміни в тендері
  121 +
  122 +Відображення відповіді на запитання
  123 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
  124 + Дочекатись синхронізації з майданчиком ${viewer}
  125 + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_DATA.data.tenderID} ${TENDER_DATA.data.id}
  126 + Звірити поле тендера ${viewer} questions[0].answer
  127 +
  128 +
  129 +Подати цінову пропозицію
  130 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  131 + Дочекатись дати початоку прийому пропозицій
  132 + ${bid}= test bid data
  133 + Log object data ${bid}
  134 + Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_DATA.data.id} ${bid}
\ No newline at end of file
... ...
... ... @@ -157,12 +157,16 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
157 157 [return] ${return_value}
158 158
159 159 отримати інформацію про questions[${question_id}].description
160   - відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
  160 + відмітити на сторінці поле з тендера questions description jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
161 161 ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
162 162 [return] ${return_value}
163 163
164 164 отримати інформацію про questions[${question_id}].date
165   - відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
  165 + відмітити на сторінці поле з тендера question date jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
166 166 ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
167 167 [return] ${return_value}
168 168
  169 +отримати інформацію про questions[${question_id}].answer
  170 + відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last>
  171 + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last>
  172 + [return] ${return_value}
\ No newline at end of file
... ...
... ... @@ -34,53 +34,23 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper
34 34 [return] ${tender_data}
35 35
36 36
37   -отримати інформацію із тендера
38   - [Arguments] @{ARGUMENTS}
39   - [Documentation]
40   - ... ${ARGUMENTS[0]} == username
41   - ... ${ARGUMENTS[1]} == fieldname
42   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data.${ARGUMENTS[1]}}
43   -
44   -
45   -
46   -отримати інформацію про description для предмету закупівлі в однопредметному тендері
47   - [Arguments] @{ARGUMENTS}
48   - [Documentation]
49   - ... ${ARGUMENTS[0]} == username
50   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data['items'][0].description}
51   -
52   -отримати інформацію про quantity для предмету закупівлі в однопредметному тендері
53   - [Arguments] @{ARGUMENTS}
54   - [Documentation]
55   - ... ${ARGUMENTS[0]} == username
56   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data['items'][0].quantity}
57   -
58   -
59   -отримати інформацію про classification.id для предмету закупівлі в однопредметному тендері
60   - [Arguments] @{ARGUMENTS}
61   - [Documentation]
62   - ... ${ARGUMENTS[0]} == username
63   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data['items'][0].classification.id}
64   -
65   -
66   -отримати інформацію про classification.description для предмету закупівлі в однопредметному тендері
  37 +обновити сторінку з тендером
67 38 [Arguments] @{ARGUMENTS}
68 39 [Documentation]
69 40 ... ${ARGUMENTS[0]} == username
70   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data['items'][0].classification.description}
  41 + ... ${ARGUMENTS[1]} == tenderId
  42 + ... ${ARGUMENTS[2]} == id
  43 + openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS}
71 44
72 45
73   -отримати інформацію про deliveryAddress для предмету закупівлі в однопредметному тендері
  46 +отримати інформацію із тендера
74 47 [Arguments] @{ARGUMENTS}
75 48 [Documentation]
76 49 ... ${ARGUMENTS[0]} == username
77   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data['items'][0].deliveryAddress}
  50 + ... ${ARGUMENTS[1]} == fieldname
  51 + ${field_value}= Get_From_Object ${USERS.users['${ARGUMENTS[0]}'].tender_data.data} ${ARGUMENTS[1]}
  52 + [return] ${field_value}
78 53
79   -отримати інформацію про deliveryDate для предмету закупівлі в однопредметному тендері
80   - [Arguments] @{ARGUMENTS}
81   - [Documentation]
82   - ... ${ARGUMENTS[0]} == username
83   - [return] ${USERS.users['${ARGUMENTS[0]}'].tender_data.data['items'][0].deliveryDate}
84 54
85 55 Внести зміни в тендер
86 56 [Arguments] @{ARGUMENTS}
... ... @@ -91,7 +61,6 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper
91 61 ... ${ARGUMENTS[3]} == fieldvalue
92 62 отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]}
93 63 Set_To_Object ${TENDER_DATA.data} ${ARGUMENTS[2]} ${ARGUMENTS[3]}
94   -
95 64 ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA}
96 65 ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token}
97 66 Set Global Variable ${TENDER_DATA}
... ... @@ -107,13 +76,39 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper
107 76 Set Global Variable ${TENDER_DATA}
108 77
109 78
110   -
111 79 Задати питання
112 80 [Documentation]
113 81 ... ${ARGUMENTS[0]} == username
114 82 ... ${ARGUMENTS[1]} == tender_uid
115 83 ... ${ARGUMENTS[2]} == question
116 84 [Arguments] @{ARGUMENTS}
  85 + log many @{ARGUMENTS}
117 86 ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
118 87 ${question}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]}
119   - Log object data ${question} question
\ No newline at end of file
  88 + Log object data ${question} question
  89 +
  90 +Відповісти на питання
  91 + [Documentation]
  92 + ... ${ARGUMENTS[0]} == username
  93 + ... ${ARGUMENTS[1]} == tender_uid
  94 + ... ${ARGUMENTS[2]} == question_id
  95 + ... ${ARGUMENTS[3]} == answer_data
  96 + [Arguments] @{ARGUMENTS}
  97 + log many @{ARGUMENTS}
  98 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  99 + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token}
  100 + ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.questions[${ARGUMENTS[2]}].id}
  101 + ${quvestion_with_answer}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_question ${tender} ${ARGUMENTS[3]}
  102 + Log object data ${quvestion_with_answer} quvestion_with_answer
  103 +
  104 +
  105 +Подати цінову пропозицію
  106 + [Documentation]
  107 + ... ${ARGUMENTS[0]} == username
  108 + ... ${ARGUMENTS[1]} == tender_uid
  109 + ... ${ARGUMENTS[2]} == bid
  110 + [Arguments] @{ARGUMENTS}
  111 + log many @{ARGUMENTS}
  112 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  113 + ${bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]}
  114 + Log object data ${question} bid
... ...
... ... @@ -2,11 +2,11 @@ tender_owner: Tender Owner
2 2 users:
3 3 Tender Owner:
4 4 broker: Quinta
5   - E-tender User:
  5 + Tender Viewer:
6 6 broker: E-tender
7 7 username: test
8 8 browser: chrome
9 9 position: [960, 0]
10 10 size: [960, 1000]
11   - Andrew:
  11 + Tender User:
12 12 broker: Quinta
\ No newline at end of file
... ...
... ... @@ -80,16 +80,16 @@ test_tender_data = {
80 80 }
81 81 ],
82 82 "enquiryPeriod": {
83   - "endDate": (now + timedelta(days=1)).isoformat()
  83 + "endDate": (now + timedelta(minutes=2)).isoformat()
84 84 },
85 85 "tenderPeriod": {
86   - "endDate": (now + timedelta(days=2)).isoformat()
  86 + "endDate": (now + timedelta(minutes=5)).isoformat()
87 87 }
88 88 }
89 89
90 90
91 91 def test_question_data():
92   - return {
  92 + return munchify({
93 93 "data": {
94 94 "author": {
95 95 "address": {
... ... @@ -113,15 +113,15 @@ def test_question_data():
113 113 "description": fake.sentence(nb_words=10, variable_nb_words=True),
114 114 "title": fake.sentence(nb_words=6, variable_nb_words=True)
115 115 }
116   - }
  116 + })
117 117
118 118
119 119 def test_question_answer_data():
120   - return {
  120 + return munchify({
121 121 "data": {
122 122 "answer": fake.sentence(nb_words=40, variable_nb_words=True)
123 123 }
124   - }
  124 + })
125 125
126 126
127 127 def test_bid_data():
... ...
... ... @@ -71,4 +71,14 @@ TestCaseSetup
71 71 [Arguments] ${username} ${command} @{arguments}
72 72 ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments}
73 73 Run keyword if '${status}' == 'FAIL' Log Учасник ${username} не зміг виконати "${command}" WARN
74   - [return] ${value}
\ No newline at end of file
  74 + [return] ${value}
  75 +
  76 +
  77 +Дочекатись дати
  78 + [Arguments] ${date}
  79 + ${wait_timout}= wait_to_date ${date}
  80 + Run Keyword If ${wait_timout}>0 Sleep ${wait_timout}
  81 +
  82 +
  83 +Дочекатись дати початоку прийому пропозицій
  84 + Дочекатись дати ${TENDER_DATA.data.tenderPeriod.startDate}
\ No newline at end of file
... ...
... ... @@ -7,8 +7,10 @@ from robot.output.loggerhelper import Message
7 7 from robot.libraries.BuiltIn import BuiltIn
8 8 from robot.errors import HandlerExecutionFailed
9 9 from datetime import datetime, timedelta
  10 +from dateutil.parser import parse
  11 +from dateutil.tz import tzlocal
10 12 from dpath.util import set as xpathset
11   -from jsonpath_rw import parse
  13 +from jsonpath_rw import parse as parse_path
12 14 from .initial_data import (
13 15 test_tender_data, test_question_data, test_question_answer_data,
14 16 test_bid_data
... ... @@ -88,8 +90,20 @@ def set_to_object(obj, attribute, value):
88 90
89 91 def get_from_object(obj, attribute):
90 92 """Gets data from a dictionary using a dotted accessor-string"""
91   - jsonpath_expr = parse(attribute)
  93 + jsonpath_expr = parse_path(attribute)
92 94 return_list = [i.value for i in jsonpath_expr.find(obj)]
93 95 if return_list:
94 96 return return_list[0]
95 97 return None
  98 +
  99 +
  100 +def wait_to_date(date_stamp):
  101 + date = parse(date_stamp)
  102 + LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO"))
  103 + now = datetime.now(tzlocal())
  104 + LOGGER.log_message(Message("now: {}".format(now.isoformat()), "INFO"))
  105 + wait_seconds = (date - now).total_seconds()
  106 + wait_seconds += 2
  107 + if wait_seconds < 0:
  108 + return 0
  109 + return wait_seconds
... ...
... ... @@ -29,7 +29,8 @@ setup(name='op_robot_tests',
29 29 'munch',
30 30 'fake-factory',
31 31 'dpath',
32   - 'jsonpath-rw'
  32 + 'jsonpath-rw',
  33 + 'dateutils'
33 34 ],
34 35 entry_points={
35 36 'console_scripts': [
... ...
Please register or login to post a comment