Showing
8 changed files
with
110 additions
and
155 deletions
@@ -4,15 +4,15 @@ Library String | @@ -4,15 +4,15 @@ Library String | ||
4 | LIbrary Collections | 4 | LIbrary Collections |
5 | LIbrary Selenium2Library | 5 | LIbrary Selenium2Library |
6 | Library DebugLibrary | 6 | Library DebugLibrary |
7 | - | 7 | +Resource keywords.robot |
8 | Suite Setup TestCaseSetup | 8 | Suite Setup TestCaseSetup |
9 | Suite Teardown Close all browsers | 9 | Suite Teardown Close all browsers |
10 | 10 | ||
11 | - | ||
12 | *** Variables *** | 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 | *** Test Cases *** | 17 | *** Test Cases *** |
18 | Можливість оголосити тендер | 18 | Можливість оголосити тендер |
@@ -66,9 +66,6 @@ ${provider} Andrew | @@ -66,9 +66,6 @@ ${provider} Andrew | ||
66 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 66 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
67 | Звірити поле тендера ${viewer} procuringEntity.name | 67 | Звірити поле тендера ${viewer} procuringEntity.name |
68 | 68 | ||
69 | - | ||
70 | - | ||
71 | - | ||
72 | Відображення предмету закупівлі однопредметного тендера | 69 | Відображення предмету закупівлі однопредметного тендера |
73 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера | 70 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера |
74 | Звірити поле тендера ${viewer} items[0].description | 71 | Звірити поле тендера ${viewer} items[0].description |
@@ -84,7 +81,11 @@ ${provider} Andrew | @@ -84,7 +81,11 @@ ${provider} Andrew | ||
84 | 81 | ||
85 | Відображення місце поставки закупівлі однопредметного тендера | 82 | Відображення місце поставки закупівлі однопредметного тендера |
86 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера | 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 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера | 91 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення однопредметного тендера |
@@ -97,7 +98,6 @@ ${provider} Andrew | @@ -97,7 +98,6 @@ ${provider} Andrew | ||
97 | Set Global Variable ${LAST_MODIFICATION_DATE} | 98 | Set Global Variable ${LAST_MODIFICATION_DATE} |
98 | отримати останні зміни в тендері | 99 | отримати останні зміни в тендері |
99 | 100 | ||
100 | - | ||
101 | Відображення заголовоку анонімного питання без відповіді | 101 | Відображення заголовоку анонімного питання без відповіді |
102 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей | 102 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
103 | Дочекатись синхронізації з майданчиком ${viewer} | 103 | Дочекатись синхронізації з майданчиком ${viewer} |
@@ -108,96 +108,27 @@ ${provider} Andrew | @@ -108,96 +108,27 @@ ${provider} Andrew | ||
108 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей | 108 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
109 | Звірити поле тендера ${viewer} questions[0].description | 109 | Звірити поле тендера ${viewer} questions[0].description |
110 | 110 | ||
111 | - | ||
112 | -Відображення дата анонімного питання без відповіді | 111 | +Відображення дати анонімного питання без відповіді |
113 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей | 112 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
114 | Звірити поле тендера ${viewer} questions[0].date | 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} |
@@ -157,12 +157,16 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | @@ -157,12 +157,16 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | ||
157 | [return] ${return_value} | 157 | [return] ${return_value} |
158 | 158 | ||
159 | отримати інформацію про questions[${question_id}].description | 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 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | 161 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> |
162 | [return] ${return_value} | 162 | [return] ${return_value} |
163 | 163 | ||
164 | отримати інформацію про questions[${question_id}].date | 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 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | 166 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> |
167 | [return] ${return_value} | 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} |
@@ -34,53 +34,23 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | @@ -34,53 +34,23 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | ||
34 | [return] ${tender_data} | 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 | [Arguments] @{ARGUMENTS} | 38 | [Arguments] @{ARGUMENTS} |
68 | [Documentation] | 39 | [Documentation] |
69 | ... ${ARGUMENTS[0]} == username | 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 | [Arguments] @{ARGUMENTS} | 47 | [Arguments] @{ARGUMENTS} |
75 | [Documentation] | 48 | [Documentation] |
76 | ... ${ARGUMENTS[0]} == username | 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 | [Arguments] @{ARGUMENTS} | 56 | [Arguments] @{ARGUMENTS} |
@@ -91,7 +61,6 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | @@ -91,7 +61,6 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | ||
91 | ... ${ARGUMENTS[3]} == fieldvalue | 61 | ... ${ARGUMENTS[3]} == fieldvalue |
92 | отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]} | 62 | отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
93 | Set_To_Object ${TENDER_DATA.data} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | 63 | Set_To_Object ${TENDER_DATA.data} ${ARGUMENTS[2]} ${ARGUMENTS[3]} |
94 | - | ||
95 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} | 64 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} |
96 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 65 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
97 | Set Global Variable ${TENDER_DATA} | 66 | Set Global Variable ${TENDER_DATA} |
@@ -107,13 +76,39 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | @@ -107,13 +76,39 @@ Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | ||
107 | Set Global Variable ${TENDER_DATA} | 76 | Set Global Variable ${TENDER_DATA} |
108 | 77 | ||
109 | 78 | ||
110 | - | ||
111 | Задати питання | 79 | Задати питання |
112 | [Documentation] | 80 | [Documentation] |
113 | ... ${ARGUMENTS[0]} == username | 81 | ... ${ARGUMENTS[0]} == username |
114 | ... ${ARGUMENTS[1]} == tender_uid | 82 | ... ${ARGUMENTS[1]} == tender_uid |
115 | ... ${ARGUMENTS[2]} == question | 83 | ... ${ARGUMENTS[2]} == question |
116 | [Arguments] @{ARGUMENTS} | 84 | [Arguments] @{ARGUMENTS} |
85 | + log many @{ARGUMENTS} | ||
117 | ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 86 | ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} |
118 | ${question}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]} | 87 | ${question}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]} |
119 | - Log object data ${question} question | ||
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,11 +2,11 @@ tender_owner: Tender Owner | ||
2 | users: | 2 | users: |
3 | Tender Owner: | 3 | Tender Owner: |
4 | broker: Quinta | 4 | broker: Quinta |
5 | - E-tender User: | 5 | + Tender Viewer: |
6 | broker: E-tender | 6 | broker: E-tender |
7 | username: test | 7 | username: test |
8 | browser: chrome | 8 | browser: chrome |
9 | position: [960, 0] | 9 | position: [960, 0] |
10 | size: [960, 1000] | 10 | size: [960, 1000] |
11 | - Andrew: | 11 | + Tender User: |
12 | broker: Quinta | 12 | broker: Quinta |
@@ -80,16 +80,16 @@ test_tender_data = { | @@ -80,16 +80,16 @@ test_tender_data = { | ||
80 | } | 80 | } |
81 | ], | 81 | ], |
82 | "enquiryPeriod": { | 82 | "enquiryPeriod": { |
83 | - "endDate": (now + timedelta(days=1)).isoformat() | 83 | + "endDate": (now + timedelta(minutes=2)).isoformat() |
84 | }, | 84 | }, |
85 | "tenderPeriod": { | 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 | def test_question_data(): | 91 | def test_question_data(): |
92 | - return { | 92 | + return munchify({ |
93 | "data": { | 93 | "data": { |
94 | "author": { | 94 | "author": { |
95 | "address": { | 95 | "address": { |
@@ -113,15 +113,15 @@ def test_question_data(): | @@ -113,15 +113,15 @@ def test_question_data(): | ||
113 | "description": fake.sentence(nb_words=10, variable_nb_words=True), | 113 | "description": fake.sentence(nb_words=10, variable_nb_words=True), |
114 | "title": fake.sentence(nb_words=6, variable_nb_words=True) | 114 | "title": fake.sentence(nb_words=6, variable_nb_words=True) |
115 | } | 115 | } |
116 | - } | 116 | + }) |
117 | 117 | ||
118 | 118 | ||
119 | def test_question_answer_data(): | 119 | def test_question_answer_data(): |
120 | - return { | 120 | + return munchify({ |
121 | "data": { | 121 | "data": { |
122 | "answer": fake.sentence(nb_words=40, variable_nb_words=True) | 122 | "answer": fake.sentence(nb_words=40, variable_nb_words=True) |
123 | } | 123 | } |
124 | - } | 124 | + }) |
125 | 125 | ||
126 | 126 | ||
127 | def test_bid_data(): | 127 | def test_bid_data(): |
@@ -71,4 +71,14 @@ TestCaseSetup | @@ -71,4 +71,14 @@ TestCaseSetup | ||
71 | [Arguments] ${username} ${command} @{arguments} | 71 | [Arguments] ${username} ${command} @{arguments} |
72 | ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments} | 72 | ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments} |
73 | Run keyword if '${status}' == 'FAIL' Log Учасник ${username} не зміг виконати "${command}" WARN | 73 | Run keyword if '${status}' == 'FAIL' Log Учасник ${username} не зміг виконати "${command}" WARN |
74 | - [return] ${value} | ||
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} |
@@ -7,8 +7,10 @@ from robot.output.loggerhelper import Message | @@ -7,8 +7,10 @@ from robot.output.loggerhelper import Message | ||
7 | from robot.libraries.BuiltIn import BuiltIn | 7 | from robot.libraries.BuiltIn import BuiltIn |
8 | from robot.errors import HandlerExecutionFailed | 8 | from robot.errors import HandlerExecutionFailed |
9 | from datetime import datetime, timedelta | 9 | from datetime import datetime, timedelta |
10 | +from dateutil.parser import parse | ||
11 | +from dateutil.tz import tzlocal | ||
10 | from dpath.util import set as xpathset | 12 | from dpath.util import set as xpathset |
11 | -from jsonpath_rw import parse | 13 | +from jsonpath_rw import parse as parse_path |
12 | from .initial_data import ( | 14 | from .initial_data import ( |
13 | test_tender_data, test_question_data, test_question_answer_data, | 15 | test_tender_data, test_question_data, test_question_answer_data, |
14 | test_bid_data | 16 | test_bid_data |
@@ -88,8 +90,20 @@ def set_to_object(obj, attribute, value): | @@ -88,8 +90,20 @@ def set_to_object(obj, attribute, value): | ||
88 | 90 | ||
89 | def get_from_object(obj, attribute): | 91 | def get_from_object(obj, attribute): |
90 | """Gets data from a dictionary using a dotted accessor-string""" | 92 | """Gets data from a dictionary using a dotted accessor-string""" |
91 | - jsonpath_expr = parse(attribute) | 93 | + jsonpath_expr = parse_path(attribute) |
92 | return_list = [i.value for i in jsonpath_expr.find(obj)] | 94 | return_list = [i.value for i in jsonpath_expr.find(obj)] |
93 | if return_list: | 95 | if return_list: |
94 | return return_list[0] | 96 | return return_list[0] |
95 | return None | 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,7 +29,8 @@ setup(name='op_robot_tests', | ||
29 | 'munch', | 29 | 'munch', |
30 | 'fake-factory', | 30 | 'fake-factory', |
31 | 'dpath', | 31 | 'dpath', |
32 | - 'jsonpath-rw' | 32 | + 'jsonpath-rw', |
33 | + 'dateutils' | ||
33 | ], | 34 | ], |
34 | entry_points={ | 35 | entry_points={ |
35 | 'console_scripts': [ | 36 | 'console_scripts': [ |
Please
register
or
login
to post a comment