Showing
13 changed files
with
974 additions
and
373 deletions
... | ... | @@ -5,15 +5,6 @@ Library DateTime |
5 | 5 | |
6 | 6 | *** Variables *** |
7 | 7 | ${locator.tenderId} jquery=h3 |
8 | -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | |
9 | -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | |
10 | -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)> | |
11 | -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | |
12 | -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)> | |
13 | -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)> | |
14 | -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)> | |
15 | -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)> | |
16 | -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)> | |
17 | 8 | ##Використовую такий шлях у кожного буде мінятись /yboi/. Міняйте на сві шлях до файлу |
18 | 9 | ${file_path} /home/yboi/openprocurement.robottests.buildout/Document.docx |
19 | 10 | |
... | ... | @@ -25,7 +16,6 @@ ${file_path} /home/yboi/openprocurement.robottests.buildout/Document.docx |
25 | 16 | Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} |
26 | 17 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
27 | 18 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} |
28 | - | |
29 | 19 | # login |
30 | 20 | Wait Until Page Contains Element id=inputUsername 100 |
31 | 21 | Input text id=inputUsername ${USERS.users['${username}'].login} |
... | ... | @@ -38,31 +28,30 @@ ${file_path} /home/yboi/openprocurement.robottests.buildout/Document.docx |
38 | 28 | [Documentation] |
39 | 29 | ... ${ARGUMENTS[0]} == username |
40 | 30 | ... ${ARGUMENTS[1]} == tender_data |
41 | - | |
42 | - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
43 | - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
44 | - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
45 | - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
46 | - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
47 | - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
31 | + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
32 | + ${items}= Get From Dictionary ${tender_data.data} items | |
33 | + ${title}= Get From Dictionary ${tender_data.data} title | |
34 | + ${description}= Get From Dictionary ${tender_data.data} description | |
35 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
36 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
37 | + ${items_description}= Get From Dictionary ${tender_data.data} description | |
48 | 38 | ${quantity}= Get From Dictionary ${items[0]} quantity |
49 | 39 | ${cpv}= Get From Dictionary ${items[0].classification} id |
50 | 40 | ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description |
51 | 41 | ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id |
52 | 42 | ${unit}= Get From Dictionary ${items[0].unit} name |
53 | - ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | |
43 | + ${start_date}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate | |
54 | 44 | ${start_date}= convert_date_to_etender_format ${start_date} |
55 | - ${start_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | |
45 | + ${start_time}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate | |
56 | 46 | ${start_time}= convert_time_to_etender_format ${start_time} |
57 | - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
47 | + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
58 | 48 | ${end_date}= convert_date_to_etender_format ${end_date} |
59 | - ${end_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
49 | + ${end_time}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
60 | 50 | ${end_time}= convert_time_to_etender_format ${end_time} |
61 | - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
51 | + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
62 | 52 | ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date} |
63 | - ${enquiry_end_time}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
53 | + ${enquiry_end_time}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
64 | 54 | ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time} |
65 | - | |
66 | 55 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
67 | 56 | Wait Until Page Contains Мої закупівлі 100 |
68 | 57 | Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі'] |
... | ... | @@ -102,29 +91,34 @@ ${file_path} /home/yboi/openprocurement.robottests.buildout/Document.docx |
102 | 91 | Wait Until Page Contains [ТЕСТУВАННЯ] 100 |
103 | 92 | Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a |
104 | 93 | ${tender_UAid}= Wait Until Keyword Succeeds 240sec 2sec get tender UAid |
105 | -## harcode Idis bacause issues on the E-tender side, to remove, 1 line: | |
94 | +### harcode Idis bacause issues on the E-tender side, to remove, 1 line: | |
106 | 95 | ${tender_UAid}= Convert To String UA-2015-08-03-000025 |
107 | - ${id}= Oтримати internal id по UAid ${ARGUMENTS[0]} ${tender_UAid} | |
108 | - ${Ids} Create List ${tender_UAid} ${id} | |
96 | + ${Ids}= Convert To String ${tender_UAid} | |
97 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid} | |
109 | 98 | [return] ${Ids} |
110 | 99 | |
100 | +Set Multi Ids | |
101 | + [Arguments] @{ARGUMENTS} | |
102 | + [Documentation] | |
103 | + ... ${ARGUMENTS[0]} == username | |
104 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
105 | + ${id}= Oтримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
106 | + ${Ids}= Create List ${tender_UAid} ${id} | |
111 | 107 | |
112 | 108 | get tender UAid |
113 | 109 | ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")] |
114 | 110 | ${tender_UAid}= Get Substring ${tender_UAid} 7 27 |
115 | 111 | |
116 | - | |
117 | 112 | Oтримати internal id по UAid |
118 | 113 | [Arguments] @{ARGUMENTS} |
119 | 114 | [Documentation] |
120 | 115 | ... ${ARGUMENTS[0]} == username |
121 | - ... ${ARGUMENTS[1]} == tenderid | |
116 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
122 | 117 | etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
123 | 118 | ${current_location}= Get Location |
124 | 119 | ${tender_id}= Fetch From Right ${current_location} / |
125 | 120 | ## harcode Idis bacause issues on the E-tender side, to remove, 1 line: |
126 | 121 | ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2 |
127 | - log ${tender_id} | |
128 | 122 | [return] ${tender_id} |
129 | 123 | |
130 | 124 | Додати предмет |
... | ... | @@ -170,8 +164,7 @@ Oтримати internal id по UAid |
170 | 164 | [Arguments] @{ARGUMENTS} |
171 | 165 | [Documentation] |
172 | 166 | ... ${ARGUMENTS[0]} == username |
173 | - ... ${ARGUMENTS[1]} == tenderId | |
174 | - | |
167 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
175 | 168 | Switch browser ${ARGUMENTS[0]} |
176 | 169 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
177 | 170 | Wait Until Page Contains Список закупівель 10 |
... | ... | @@ -184,6 +177,57 @@ Oтримати internal id по UAid |
184 | 177 | sleep 1 |
185 | 178 | Capture Page Screenshot |
186 | 179 | |
180 | +Подати цінову пропозицію | |
181 | + [Arguments] @{ARGUMENTS} | |
182 | + [Documentation] | |
183 | + ... ${ARGUMENTS[0]} == username | |
184 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
185 | + ... ${ARGUMENTS[2]} == test_bid_data | |
186 | + | |
187 | + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
188 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
189 | + Wait Until Page Contains Інформація про процедуру закупівлі 100 | |
190 | + Wait Until Page Contains Element id=amount 10 | |
191 | + Input text id=amount ${bid} | |
192 | + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
193 | + | |
194 | +Задати питання | |
195 | + [Arguments] @{ARGUMENTS} | |
196 | + [Documentation] | |
197 | + ... ${ARGUMENTS[0]} = username | |
198 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
199 | + ... ${ARGUMENTS[2]} = question_data | |
200 | + | |
201 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
202 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
203 | + | |
204 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
205 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
206 | + | |
207 | + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | |
208 | + Click Element jquery=a[href^="#/addQuestion/"] | |
209 | + Wait Until Page Contains Element id=title | |
210 | + Input text id=title ${title} | |
211 | + Input text id=description ${description} | |
212 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
213 | + | |
214 | +Відповісти на питання | |
215 | + [Arguments] @{ARGUMENTS} | |
216 | + [Documentation] | |
217 | + ... ${ARGUMENTS[0]} = username | |
218 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
219 | + ... ${ARGUMENTS[2]} = 0 | |
220 | + ... ${ARGUMENTS[3]} = answer_data | |
221 | + | |
222 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
223 | + | |
224 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
225 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
226 | + | |
227 | + Click Element xpath=//div[div/pre[1]]/div[1] | |
228 | + Input text xpath=//div[textarea]/textarea ${answer} | |
229 | + Click Element xpath=//div[textarea]/span/button[1] | |
230 | + | |
187 | 231 | обновити сторінку з тендером |
188 | 232 | [Arguments] @{ARGUMENTS} |
189 | 233 | [Documentation] |
... | ... | @@ -319,56 +363,6 @@ Oтримати internal id по UAid |
319 | 363 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> |
320 | 364 | [return] ${return_value} |
321 | 365 | |
322 | -Подати цінову пропозицію | |
323 | - [Arguments] @{ARGUMENTS} | |
324 | - [Documentation] | |
325 | - ... ${ARGUMENTS[0]} == username | |
326 | - ... ${ARGUMENTS[1]} == ${INTERNAL_TENDER_ID} | |
327 | - ... ${ARGUMENTS[2]} == test_bid_data | |
328 | - | |
329 | - ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
330 | - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
331 | - Wait Until Page Contains Інформація про процедуру закупівлі 100 | |
332 | - Wait Until Page Contains Element id=amount 10 | |
333 | - Input text id=amount ${bid} | |
334 | - Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
335 | - | |
336 | -Задати питання | |
337 | - [Arguments] @{ARGUMENTS} | |
338 | - [Documentation] | |
339 | - ... ${ARGUMENTS[0]} = username | |
340 | - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
341 | - ... ${ARGUMENTS[2]} = question_data | |
342 | - | |
343 | - ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
344 | - ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
345 | - | |
346 | - Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
347 | - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
348 | - | |
349 | - Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | |
350 | - Click Element jquery=a[href^="#/addQuestion/"] | |
351 | - Wait Until Page Contains Element id=title | |
352 | - Input text id=title ${title} | |
353 | - Input text id=description ${description} | |
354 | - Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
355 | - | |
356 | -Відповісти на питання | |
357 | - [Arguments] @{ARGUMENTS} | |
358 | - [Documentation] | |
359 | - ... ${ARGUMENTS[0]} = username | |
360 | - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
361 | - ... ${ARGUMENTS[2]} = 0 | |
362 | - ... ${ARGUMENTS[3]} = answer_data | |
363 | - | |
364 | - ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
365 | - | |
366 | - Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
367 | - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
368 | - | |
369 | - Click Element xpath=//div[div/pre[1]]/div[1] | |
370 | - Input text xpath=//div[textarea]/textarea ${answer} | |
371 | - Click Element xpath=//div[textarea]/span/button[1] | |
372 | 366 | |
373 | 367 | Завантажити документ |
374 | 368 | [Arguments] @{ARGUMENTS} | ... | ... |
... | ... | @@ -5,16 +5,6 @@ Library DateTime |
5 | 5 | |
6 | 6 | *** Variables *** |
7 | 7 | ${locator.tenderId} jquery=h3 |
8 | -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | |
9 | -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | |
10 | -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)> | |
11 | -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | |
12 | -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)> | |
13 | -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)> | |
14 | -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)> | |
15 | -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)> | |
16 | -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)> | |
17 | - | |
18 | 8 | |
19 | 9 | *** Keywords *** |
20 | 10 | Підготувати клієнт для користувача |
... | ... | @@ -24,16 +14,11 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
24 | 14 | Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]} |
25 | 15 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
26 | 16 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} |
27 | - | |
28 | -# login | |
29 | - Wait Until Page Contains Element name=siteLogin 100 | |
30 | - Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login} | |
31 | - Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password} | |
32 | - Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input | |
17 | + Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]} | |
33 | 18 | |
34 | 19 | Wait Until Page Contains Element jquery=a[href="/cabinet"] |
35 | 20 | Click Element jquery=a[href="/cabinet"] |
36 | - Wait Until Page Contains Element name=email 100 | |
21 | + Wait Until Page Contains Element name=email 10 | |
37 | 22 | Input text name=email mail |
38 | 23 | Sleep 1 |
39 | 24 | Input text name=email ${USERS.users['${username}'].login} |
... | ... | @@ -42,20 +27,29 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
42 | 27 | Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 100 |
43 | 28 | Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] |
44 | 29 | |
30 | +Pre Login | |
31 | + [Arguments] @{ARGUMENTS} | |
32 | + [Documentation] | |
33 | + ... ${ARGUMENTS[0]} == username | |
34 | + Wait Until Page Contains Element name=siteLogin 10 | |
35 | + Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login} | |
36 | + Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password} | |
37 | + Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input | |
38 | + | |
45 | 39 | Створити тендер |
46 | 40 | [Arguments] @{ARGUMENTS} |
47 | 41 | [Documentation] |
48 | 42 | ... ${ARGUMENTS[0]} == username |
49 | 43 | ... ${ARGUMENTS[1]} == tender_data |
50 | - | |
51 | - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
52 | - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
53 | - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
54 | - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
55 | - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
56 | - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
44 | + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
45 | + ${items}= Get From Dictionary ${tender_data.data} items | |
46 | + ${title}= Get From Dictionary ${tender_data.data} title | |
47 | + ${description}= Get From Dictionary ${tender_data.data} description | |
48 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
49 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
50 | + ${items_description}= Get From Dictionary ${tender_data.data} description | |
57 | 51 | ${quantity}= Get From Dictionary ${items[0]} quantity |
58 | - ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName | |
52 | + ${countryName}= Get From Dictionary ${tender_data.data.procuringEntity.address} countryName | |
59 | 53 | ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate |
60 | 54 | ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date} |
61 | 55 | ${cpv}= Get From Dictionary ${items[0].classification} description_ua |
... | ... | @@ -64,9 +58,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
64 | 58 | ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description |
65 | 59 | ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id |
66 | 60 | ${dkpp_id1}= Replace String ${dkpp_id} - _ |
67 | - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
61 | + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
68 | 62 | ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date} |
69 | - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
63 | + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
70 | 64 | ${end_date}= convert_date_to_slash_format ${end_date} |
71 | 65 | |
72 | 66 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
... | ... | @@ -103,11 +97,18 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
103 | 97 | Wait Until Page Contains Element xpath=//a[contains(@class, 'button pubBtn')] 100 |
104 | 98 | Click Element xpath=//a[contains(@class, 'button pubBtn')] |
105 | 99 | Wait Until Page Contains Тендер опубліковано 100 |
106 | - ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2] | |
107 | - ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2] | |
108 | - ${Ids} Create List ${tender_UAid} ${id} | |
100 | + ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2] | |
101 | + ${Ids}= Convert To String ${tender_UAid} | |
102 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
109 | 103 | [return] ${Ids} |
110 | 104 | |
105 | +Set Multi Ids | |
106 | + [Arguments] @{ARGUMENTS} | |
107 | + [Documentation] | |
108 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
109 | + ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2] | |
110 | + ${Ids}= Create List ${tender_UAid} ${id} | |
111 | + | |
111 | 112 | Додати предмет |
112 | 113 | [Arguments] @{ARGUMENTS} |
113 | 114 | [Documentation] | ... | ... |
1 | +*** Setting *** | |
2 | +Library Selenium2Screenshots | |
3 | +Library String | |
4 | +Library DateTime | |
5 | + | |
6 | +*** Variables *** | |
7 | +${locator.tenderId} jquery=h3 | |
8 | + | |
9 | +*** Keywords *** | |
10 | +Підготувати дані для оголошення тендера | |
11 | + ${INITIAL_TENDER_DATA}= prepare_test_tender_data | |
12 | + [return] ${INITIAL_TENDER_DATA} | |
13 | + | |
14 | +Підготувати клієнт для користувача | |
15 | + [Arguments] @{ARGUMENTS} | |
16 | + [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | |
17 | + ... ${ARGUMENTS[0]} == username | |
18 | + | |
19 | + Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
20 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
21 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
22 | + Wait Until Page Contains Element id=indexpage_login 100 | |
23 | + Click Element id=indexpage_login | |
24 | + Wait Until Page Contains Element id=password 100 | |
25 | + Input text id=login-email ${USERS.users['${username}'].login} | |
26 | + Input text id=password ${USERS.users['${username}'].password} | |
27 | + Click Element id=submit-login-button | |
28 | + Wait Until Page Contains Element xpath=//div[@class="introjs-overlay"] 100 | |
29 | + | |
30 | +Створити тендер | |
31 | + [Arguments] @{ARGUMENTS} | |
32 | + [Documentation] | |
33 | + ... ${ARGUMENTS[0]} == username | |
34 | + ... ${ARGUMENTS[1]} == tender_data | |
35 | + | |
36 | +## Inicialisation | |
37 | + ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
38 | + ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
39 | + ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
40 | + ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
41 | + ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
42 | + ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | |
43 | + ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
44 | + ${enquiry_start_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} startDate | |
45 | + ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
46 | + | |
47 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
48 | + Go To ${USERS.users['${username}'].homepage} | |
49 | + Wait Until Page Contains Element xpath=//a[@href="#/create-tender"] 100 | |
50 | + Click Link xpath=//a[@href="#/create-tender"] | |
51 | + Wait Until Page Contains Новый тендер 100 | |
52 | +# Input fields tender | |
53 | + Input text name=tenderName ${title} | |
54 | + Input text name=tenderDescription ${description} | |
55 | + Input text id=budget ${budget} | |
56 | + Click Element id=with-nds | |
57 | + Input text id=step ${step_rate} | |
58 | +# Add Item(s) | |
59 | + Додати придмет ${items[0]} 0 | |
60 | + Run Keyword If '${mode}' == 'multi' Додати багато придметів items | |
61 | +# Set tender datatimes | |
62 | + Set datetime start-date-registration ${start_date} | |
63 | + Set datetime end-date-registration ${end_date} | |
64 | + Set datetime end-date-qualification ${enquiry_end_date} | |
65 | + Set datetime start-date-qualification ${enquiry_start_date} | |
66 | +# Save | |
67 | + Click Element xpath=//button[@class="btn btn-lg btn-default cancel pull-right ng-binding"] | |
68 | + Wait Until Page Contains Element xpath=//div[@ng-click="goHome()"] 30 | |
69 | + Click Element xpath=//div[@ng-click="goHome()"] | |
70 | +# Get Ids | |
71 | + Wait Until Page Contains Element xpath=//div[@class="title"] 30 | |
72 | + ${tender_UAid}= Get Text xpath=//div[@class="title"] | |
73 | + ${Ids}= Convert To String ${tender_UAid} | |
74 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
75 | + [return] ${Ids} | |
76 | + | |
77 | +Set Multi Ids | |
78 | + [Arguments] @{ARGUMENTS} | |
79 | + [Documentation] | |
80 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
81 | + ${current_location}= Get Location | |
82 | + ${id}= Get Substring ${current_location} -41 -9 | |
83 | + ${Ids}= Create List ${tender_UAid} ${id} | |
84 | + | |
85 | +Set datetime | |
86 | + [Arguments] @{ARGUMENTS} | |
87 | + [Documentation] | |
88 | + ... ${ARGUMENTS[0]} == control_id | |
89 | + ... ${ARGUMENTS[1]} == date | |
90 | +#Pick Date | |
91 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/../span[@class="calendar-btn"] | |
92 | + Wait Until Page Contains Element xpath=//td[@class="text-center ng-scope"] 30 | |
93 | + ${datapicker_id}= Get Element Attribute xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@class="text-center ng-scope"]@id | |
94 | + ${datapicker_id}= Get Substring ${datapicker_id} 0 -1 | |
95 | + ${date_index}= newtend_date_picker_index ${ARGUMENTS[1]} | |
96 | + ${datapicker_id}= Convert To String ${datapicker_id}${date_index} | |
97 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@id="${datapicker_id}"]/button | |
98 | +#Set time | |
99 | + ${hous}= Get Substring ${ARGUMENTS[1]} 11 13 | |
100 | + ${minutes}= Get Substring ${ARGUMENTS[1]} 14 16 | |
101 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="hours"] ${hous} | |
102 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="minutes"] ${minutes} | |
103 | + | |
104 | +Додати придмет | |
105 | + [Arguments] @{ARGUMENTS} | |
106 | + [Documentation] | |
107 | + ... ${ARGUMENTS[0]} == items_n | |
108 | + ... ${ARGUMENTS[1]} == index | |
109 | +## Get values for item | |
110 | + ${items_description}= Get From Dictionary ${ARGUMENTS[0]} description | |
111 | + ${quantity}= Get From Dictionary ${ARGUMENTS[0]} quantity | |
112 | + ${cpv}= Get From Dictionary ${ARGUMENTS[0].classification} description_ua | |
113 | + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | |
114 | + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | |
115 | + ${unit}= Get From Dictionary ${ARGUMENTS[0].unit} name | |
116 | + ${deliverydate_end_date}= Get From Dictionary ${ARGUMENTS[0].deliveryDate} endDate | |
117 | + ${countryName}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} countryName | |
118 | + ${ZIP}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} postalCode | |
119 | + ${region}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} region | |
120 | + ${locality}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} locality | |
121 | + ${streetAddress}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} streetAddress | |
122 | +# Add item | |
123 | + Input text id=itemDescription${ARGUMENTS[1]} ${items_description} | |
124 | + Input text id=quantity${ARGUMENTS[1]} ${quantity} | |
125 | + Click Element xpath=//a[contains(text(), "единицы измерения")] | |
126 | + Click Element xpath=//a[contains(text(), "единицы измерения")]/..//a[contains(text(), '${unit}')] | |
127 | +# Set CPV | |
128 | + Click Element id=classifier1${ARGUMENTS[1]} | |
129 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | |
130 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${cpv} | |
131 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${cpv}')] 20 | |
132 | + Click Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] | |
133 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | |
134 | +# Set ДКПП | |
135 | + Click Element id=classifier2${ARGUMENTS[1]} | |
136 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | |
137 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${dkpp_desc} | |
138 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${dkpp_id}')] 100 | |
139 | + Click Element xpath=//span[contains(text(),'${dkpp_id}')]/../..//input[@class="ng-pristine ng-untouched ng-valid"] | |
140 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | |
141 | +# Set Delivery Address | |
142 | + Click Element id=deliveryAddress${ARGUMENTS[1]} | |
143 | + Wait Until Page Contains Element xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] 100 | |
144 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${countryName} | |
145 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${ZIP} | |
146 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${region} | |
147 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${locality} | |
148 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${streetAddress} | |
149 | + Click Element xpath=//button[@class="btn btn-lg single-btn ng-binding"] | |
150 | +# Set Item Datetime | |
151 | + Set datetime end-date-delivery${ARGUMENTS[1]} ${deliverydate_end_date} | |
152 | + | |
153 | +Додати багато придметів | |
154 | + [Arguments] @{ARGUMENTS} | |
155 | + [Documentation] | |
156 | + ... ${ARGUMENTS[0]} == items | |
157 | + ${Items_length}= Get Length ${items} | |
158 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | |
159 | + \ Click Element xpath=//a[@class="icon-black plus-black remove-field ng-scope"] | |
160 | + \ Додати придмет ${items[${INDEX}]} ${INDEX} | |
161 | + | |
162 | + | |
163 | + | |
164 | + | |
165 | + | |
166 | + | |
167 | + | |
168 | +#### Not reworked for Newtend #### | |
169 | + | |
170 | +Oтримати internal id по UAid | |
171 | + [Arguments] @{ARGUMENTS} | |
172 | + [Documentation] | |
173 | + ... ${ARGUMENTS[0]} == username | |
174 | + ... ${ARGUMENTS[1]} == tenderid | |
175 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
176 | + ${current_location}= Get Location | |
177 | + ${tender_id}= Fetch From Right ${current_location} / | |
178 | +### harcode Idis bacause issues on the E-tender side, to remove, 1 line: | |
179 | + ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2 | |
180 | + log ${internal_id} | |
181 | + [return] ${internal_id} | |
182 | + | |
183 | +Пошук тендера по ідентифікатору | |
184 | + [Arguments] @{ARGUMENTS} | |
185 | + [Documentation] | |
186 | + ... ${ARGUMENTS[0]} == username | |
187 | + ... ${ARGUMENTS[1]} == tenderId | |
188 | + | |
189 | + Switch browser ${ARGUMENTS[0]} | |
190 | + Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} | |
191 | + Wait Until Page Contains Список закупівель 10 | |
192 | + sleep 1 | |
193 | + Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} | |
194 | + Click Link jquery=a[ng-click='search()'] | |
195 | + sleep 2 | |
196 | + Click Link jquery=a[href^="#/tenderDetailes"] | |
197 | + Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
198 | + sleep 1 | |
199 | + Capture Page Screenshot | |
200 | + | |
201 | +обновити сторінку з тендером | |
202 | + [Arguments] @{ARGUMENTS} | |
203 | + [Documentation] | |
204 | + ... ${ARGUMENTS[0]} == username | |
205 | + ... ${ARGUMENTS[1]} == tenderId | |
206 | + ... ${ARGUMENTS[2]} == id | |
207 | + ${current_location}= Get Location | |
208 | + Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | |
209 | + Run keyword unless '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Пошук тендера по ідентифікатору @{ARGUMENTS} | |
210 | + Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
211 | + sleep 1 | |
212 | + | |
213 | +отримати інформацію із тендера | |
214 | + [Arguments] @{ARGUMENTS} | |
215 | + [Documentation] | |
216 | + ... ${ARGUMENTS[0]} == username | |
217 | + ... ${ARGUMENTS[1]} == fieldname | |
218 | + Switch browser ${ARGUMENTS[0]} | |
219 | + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} | |
220 | + [return] ${return_value} | |
221 | + | |
222 | +Відмітити на сторінці поле з тендера | |
223 | + [Arguments] ${fieldname} ${locator} | |
224 | + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom | |
225 | + Align elements horizontally ${locator} ${last_note_id} | |
226 | + sleep 1 | |
227 | + Remove element ${last_note_id} | |
228 | + | |
229 | +Отримати тест із поля і показати на сторінці | |
230 | + [Arguments] ${fieldname} | |
231 | + sleep 3 | |
232 | +# відмітити на сторінці поле з тендера ${fieldname} ${locator.${fieldname}} | |
233 | + ${return_value}= Get Text ${locator.${fieldname}} | |
234 | + [return] ${return_value} | |
235 | + | |
236 | +отримати інформацію про tenderId | |
237 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderId | |
238 | + [return] ${return_value.split(' ')[1]} | |
239 | + | |
240 | +отримати інформацію про title | |
241 | + ${return_value}= Отримати тест із поля і показати на сторінці title | |
242 | + [return] ${return_value} | |
243 | + | |
244 | +отримати інформацію про description | |
245 | + ${return_value}= Отримати тест із поля і показати на сторінці description | |
246 | + [return] ${return_value} | |
247 | + | |
248 | +отримати інформацію про minimalStep.amount | |
249 | + ${return_value}= Отримати тест із поля і показати на сторінці minimalStep.amount | |
250 | + ${return_value}= Convert To Number ${return_value.split(' ')[0]} | |
251 | + [return] ${return_value} | |
252 | + | |
253 | +отримати інформацію про procuringEntity.name | |
254 | + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | |
255 | + [return] ${return_value} | |
256 | + | |
257 | + | |
258 | +отримати інформацію про value.amount | |
259 | + ${return_value}= Отримати тест із поля і показати на сторінці value.amount | |
260 | + ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) | |
261 | + ${return_value}= Convert To Number ${return_value} | |
262 | + [return] ${return_value} | |
263 | + | |
264 | +отримати інформацію про tenderPeriod.startDate | |
265 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate | |
266 | + [return] ${return_value} | |
267 | + | |
268 | +отримати інформацію про tenderPeriod.endDate | |
269 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate | |
270 | + [return] ${return_value} | |
271 | + | |
272 | +отримати інформацію про enquiryPeriod.startDate | |
273 | + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate | |
274 | + [return] ${return_value} | |
275 | + | |
276 | +отримати інформацію про enquiryPeriod.endDate | |
277 | + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate | |
278 | + [return] ${return_value} | |
279 | + | |
280 | + | |
281 | +отримати інформацію про items[${item_id}].description | |
282 | + відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | |
283 | + ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | |
284 | + [return] ${return_value} | |
285 | + | |
286 | +отримати інформацію про items[${item_id}].quantity | |
287 | + відмітити на сторінці поле з тендера items[${item_id}].quantity jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)> | |
288 | + ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)> | |
289 | + ${return_value}= Convert To Number ${return_value} | |
290 | + [return] ${return_value} | |
291 | + | |
292 | +отримати інформацію про items[${item_id}].classification.id | |
293 | + відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
294 | + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
295 | + [return] ${return_value.split(' ')[0]} | |
296 | + | |
297 | +отримати інформацію про items[${item_id}].classification.scheme | |
298 | + відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)> | |
299 | + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)> | |
300 | + [return] ${return_value.split(' ')[0]} | |
301 | + | |
302 | +отримати інформацію про items[${item_id}].classification.description | |
303 | + відмітити на сторінці поле з тендера classification.description jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
304 | + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
305 | + ${return_value}= catenate @{return_value.split(' ')[1:]} | |
306 | + [return] ${return_value} | |
307 | + | |
308 | +отримати інформацію про items[${item_id}].deliveryAddress | |
309 | + ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryAddress | |
310 | + [return] ${return_value} | |
311 | + | |
312 | +отримати інформацію про items[${item_id}].deliveryDate | |
313 | + ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryDate | |
314 | + [return] ${return_value} | |
315 | + | |
316 | +отримати інформацію про questions[${question_id}].title | |
317 | + відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)> | |
318 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)> | |
319 | + [return] ${return_value} | |
320 | + | |
321 | +отримати інформацію про questions[${question_id}].description | |
322 | + відмітити на сторінці поле з тендера questions description jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | |
323 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | |
324 | + [return] ${return_value} | |
325 | + | |
326 | +отримати інформацію про questions[${question_id}].date | |
327 | + відмітити на сторінці поле з тендера question date jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | |
328 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | |
329 | + [return] ${return_value} | |
330 | + | |
331 | +отримати інформацію про questions[${question_id}].answer | |
332 | + відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> | |
333 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> | |
334 | + [return] ${return_value} | |
335 | + | |
336 | +Подати цінову пропозицію | |
337 | + [Arguments] @{ARGUMENTS} | |
338 | + [Documentation] | |
339 | + ... ${ARGUMENTS[0]} == username | |
340 | + ... ${ARGUMENTS[1]} == ${INTERNAL_TENDER_ID} | |
341 | + ... ${ARGUMENTS[2]} == test_bid_data | |
342 | + | |
343 | + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
344 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
345 | + Wait Until Page Contains Інформація про процедуру закупівлі 100 | |
346 | + Wait Until Page Contains Element id=amount 10 | |
347 | + Input text id=amount ${bid} | |
348 | + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
349 | + | |
350 | +Задати питання | |
351 | + [Arguments] @{ARGUMENTS} | |
352 | + [Documentation] | |
353 | + ... ${ARGUMENTS[0]} = username | |
354 | + ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
355 | + ... ${ARGUMENTS[2]} = question_data | |
356 | + | |
357 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
358 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
359 | + | |
360 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
361 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
362 | + | |
363 | + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | |
364 | + Click Element jquery=a[href^="#/addQuestion/"] | |
365 | + Wait Until Page Contains Element id=title | |
366 | + Input text id=title ${title} | |
367 | + Input text id=description ${description} | |
368 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
369 | + | |
370 | +Відповісти на питання | |
371 | + [Arguments] @{ARGUMENTS} | |
372 | + [Documentation] | |
373 | + ... ${ARGUMENTS[0]} = username | |
374 | + ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
375 | + ... ${ARGUMENTS[2]} = 0 | |
376 | + ... ${ARGUMENTS[3]} = answer_data | |
377 | + | |
378 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
379 | + | |
380 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
381 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
382 | + | |
383 | + Click Element xpath=//div[div/pre[1]]/div[1] | |
384 | + Input text xpath=//div[textarea]/textarea ${answer} | |
385 | + Click Element xpath=//div[textarea]/span/button[1] | ... | ... |
... | ... | @@ -9,7 +9,7 @@ ${question_id} 0 |
9 | 9 | *** Keywords *** |
10 | 10 | отримати internal id по UAid |
11 | 11 | [Arguments] @{ARGUMENTS} |
12 | - [Documentation] | |
12 | + [Documentation] | |
13 | 13 | ... ${ARGUMENTS[0]} == username |
14 | 14 | ... ${ARGUMENTS[1]} == tenderid |
15 | 15 | log many @{ARGUMENTS} |
... | ... | @@ -42,10 +42,11 @@ ${question_id} 0 |
42 | 42 | Log object data ${TENDER_DATA} cteated_tender |
43 | 43 | ${access_token}= Get Variable Value ${TENDER_DATA.access.token} |
44 | 44 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} access_token ${access_token} |
45 | - Log access_token: ${access_token} | |
46 | - Log tender_id: ${TENDER_DATA.data.id} | |
47 | - Set Global Variable ${TENDER_DATA} | |
48 | - [return] ${TENDER_DATA.data.tenderID} ${TENDER_DATA.data.id} | |
45 | + Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} TENDER_DATA ${TENDER_DATA} | |
46 | + Log ${access_token} | |
47 | + Log ${TENDER_DATA.data.id} | |
48 | + Log ${USERS.users['${ARGUMENTS[0]}'].TENDER_DATA} | |
49 | + [return] ${TENDER_DATA.data.tenderID} | |
49 | 50 | |
50 | 51 | Створити багатопредметний тендер |
51 | 52 | [Arguments] @{ARGUMENTS} |
... | ... | @@ -66,19 +67,16 @@ ${question_id} 0 |
66 | 67 | [Documentation] |
67 | 68 | ... ${ARGUMENTS[0]} == username |
68 | 69 | ... ${ARGUMENTS[1]} == tenderId |
69 | - ... ${ARGUMENTS[2]} == id | |
70 | 70 | ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
71 | 71 | ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} |
72 | 72 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data} |
73 | 73 | [return] ${tender_data} |
74 | 74 | |
75 | - | |
76 | 75 | Обновити сторінку з тендером |
77 | 76 | [Arguments] @{ARGUMENTS} |
78 | 77 | [Documentation] |
79 | 78 | ... ${ARGUMENTS[0]} == username |
80 | 79 | ... ${ARGUMENTS[1]} == tenderId |
81 | - ... ${ARGUMENTS[2]} == id | |
82 | 80 | openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS} |
83 | 81 | |
84 | 82 | отримати інформацію із тендера |
... | ... | @@ -281,48 +279,49 @@ ${question_id} 0 |
281 | 279 | Завантажити документ в ставку |
282 | 280 | [Documentation] |
283 | 281 | ... ${ARGUMENTS[0]} == username |
284 | - ... ${ARGUMENTS[1]} == token | |
285 | - ... ${ARGUMENTS[2]} == bid_id | |
282 | + ... ${ARGUMENTS[1]} == path | |
283 | + ... ${ARGUMENTS[2]} == tenderid | |
286 | 284 | [Arguments] @{ARGUMENTS} |
287 | 285 | log ${ARGUMENTS[0]} |
288 | 286 | log ${ARGUMENTS[1]} |
289 | - | |
290 | - # Built-in variables related to the operating system ease making the test data operating-system-agnostic. | |
291 | - log ${TEMPDIR} # An absolute path to the directory where the test data file is located. This variable is case-sensitive. | |
292 | - log ${CURDIR} # An absolute path to the system temporary directory. In UNIX-like systems this is typically /tmp, and in Windows c:\Documents and Settings\<user>\Local Settings\Temp. | |
293 | - | |
294 | - ${filecontent} = Set Variable somestring | |
295 | - ${created_file_path}= create_file ${filecontent} | |
296 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | |
297 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | |
298 | - ${responce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${created_file_path} ${tender} ${ARGUMENTS[2]} | |
299 | - ${uploaded_file} = Create Dictionary filepath ${created_file_path} filecontent ${filecontent} upload_responce ${responce} | |
287 | + log ${ARGUMENTS[2]} | |
288 | + ${bid_id}= Get Variable Value ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].data.id} | |
289 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} | |
290 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | |
291 | + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].access.token} | |
292 | + ${responce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${ARGUMENTS[1]} ${tender} ${bid_id} | |
293 | + ${uploaded_file} = Create Dictionary filepath ${ARGUMENTS[1]} upload_responce ${responce} | |
294 | + log ${responce} | |
300 | 295 | Log object data ${uploaded_file} |
301 | 296 | [return] ${uploaded_file} |
302 | 297 | |
303 | 298 | Змінити документ в ставці |
304 | 299 | [Documentation] |
305 | 300 | ... ${ARGUMENTS[0]} == username |
306 | - ... ${ARGUMENTS[1]} == token | |
307 | - ... ${ARGUMENTS[2]} == bid_id | |
308 | - ... ${ARGUMENTS[3]} == file_id | |
301 | + ... ${ARGUMENTS[1]} == path | |
302 | + ... ${ARGUMENTS[2]} == bidid | |
303 | + ... ${ARGUMENTS[3]} == docid | |
309 | 304 | [Arguments] @{ARGUMENTS} |
310 | 305 | log ${ARGUMENTS[0]} |
311 | 306 | log ${ARGUMENTS[1]} |
312 | 307 | log ${ARGUMENTS[2]} |
313 | - log ${ARGUMENTS[3]} | |
314 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | |
315 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | |
316 | - ${filename}= Set Variable newfile.txt | |
317 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | |
318 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${filename} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | |
319 | - Log object data ${reply} reply | |
308 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${TENDER['TENDER_UAID']} | |
309 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | |
310 | + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].access.token} | |
311 | + ${responce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${ARGUMENTS[1]} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | |
312 | + ${uploaded_file} = Create Dictionary filepath ${ARGUMENTS[1]} upload_responce ${responce} | |
313 | + log ${responce} | |
314 | + Log object data ${uploaded_file} | |
315 | + [return] ${uploaded_file} | |
320 | 316 | |
321 | -Завантажити документ | |
317 | + | |
318 | + | |
319 | + | |
320 | +Завантажити документ | |
322 | 321 | [Documentation] |
323 | 322 | ... ${ARGUMENTS[0]} == username |
324 | - ... ${ARGUMENTS[1]} == filename | |
325 | - ... ${ARGUMENTS[2]} == tenderID | |
323 | + ... ${ARGUMENTS[1]} == filepath | |
324 | + ... ${ARGUMENTS[2]} == tenderUAID | |
326 | 325 | [Arguments] @{ARGUMENTS} |
327 | 326 | log ${ARGUMENTS[0]} |
328 | 327 | log ${ARGUMENTS[1]} |
... | ... | @@ -330,10 +329,10 @@ ${question_id} 0 |
330 | 329 | ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} |
331 | 330 | ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} |
332 | 331 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
333 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | |
334 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_tender_document ${filename} ${tender} | |
332 | + ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_document ${tender} ${ARGUMENTS[1]} | |
335 | 333 | Log object data ${reply} reply |
336 | - | |
334 | + [return] ${reply} | |
335 | + | |
337 | 336 | Отримати пропозиції |
338 | 337 | [Documentation] |
339 | 338 | ... ${ARGUMENTS[0]} == username |
... | ... | @@ -352,13 +351,13 @@ ${question_id} 0 |
352 | 351 | ... ${ARGUMENTS[0]} == username |
353 | 352 | ... ${ARGUMENTS[1]} == tenderUaID |
354 | 353 | ... ${ARGUMENTS[2]} == url |
355 | - ... ${ARGUMENTS[3]} == token | |
356 | 354 | [Arguments] @{ARGUMENTS} |
357 | 355 | log ${ARGUMENTS[0]} |
358 | 356 | log ${ARGUMENTS[1]} |
359 | 357 | log ${ARGUMENTS[2]} |
360 | 358 | ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
361 | 359 | ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} |
360 | + ${token}= Get Variable Value ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].access.token} | |
362 | 361 | ${contents} ${filename}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_file ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} |
363 | 362 | log ${contents} |
364 | 363 | log ${filename} | ... | ... |
... | ... | @@ -3,14 +3,153 @@ Library Selenium2Screenshots |
3 | 3 | Library String |
4 | 4 | Library DateTime |
5 | 5 | |
6 | +*** Variables *** | |
7 | +##Використовую такий шлях у кожного буде мінятись /yboi/. Міняйте на сві шлях до файлу | |
8 | +#${file_path} /home/yboi/openprocurement.robottests.buildout/Document.docx | |
9 | +${file_path} /home/vbilos/openprocurement.robottests.buildout/Document.docx | |
10 | +${mail} test@mail.com | |
11 | +${telephone} +380976535447 | |
12 | + | |
6 | 13 | *** Keywords *** |
7 | 14 | Підготувати клієнт для користувача |
8 | - [Arguments] ${username} | |
15 | + [Arguments] @{ARGUMENTS} | |
9 | 16 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
10 | - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username} | |
11 | - Set Window Position @{USERS.users['${username}'].position} | |
12 | - Set Window Size @{USERS.users['${username}'].size} | |
13 | - Log Variables | |
17 | + ... ${ARGUMENTS[0]} == username | |
18 | + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
19 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
20 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
21 | + | |
22 | +# login | |
23 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:j_idt54 10 | |
24 | + Click Element id=mForm:j_idt54 | |
25 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:email 10 | |
26 | + Input text id=mForm:email ${USERS.users['${username}'].login} | |
27 | + Input text id=mForm:pwd ${USERS.users['${username}'].password} | |
28 | + Click Button id=mForm:login | |
29 | + | |
30 | +Створити тендер | |
31 | + [Arguments] @{ARGUMENTS} | |
32 | + [Documentation] | |
33 | + ... ${ARGUMENTS[0]} == username | |
34 | + ... ${ARGUMENTS[1]} == tender_data | |
35 | + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
36 | + ${items}= Get From Dictionary ${tender_data.data} items | |
37 | + ${title}= Get From Dictionary ${tender_data.data} title | |
38 | + ${description}= Get From Dictionary ${tender_data.data} description | |
39 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
40 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
41 | + ${countryName}= Get From Dictionary ${tender_data.data.procuringEntity.address} countryName | |
42 | + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | |
43 | + ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date} | |
44 | + ${cpv}= Get From Dictionary ${items[0].classification} description_ua | |
45 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | |
46 | + ${cpv_id_1}= Get Substring ${cpv_id} 0 3 | |
47 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | |
48 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | |
49 | + ${code}= Get From Dictionary ${items[0].unit} code | |
50 | + ${quantity}= Get From Dictionary ${items[0]} quantity | |
51 | + ${name}= Get From Dictionary ${tender_data.data.procuringEntity.contactPoint} name | |
52 | + | |
53 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
54 | + Wait Until Page Contains Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] 10 | |
55 | + Click Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] | |
56 | + Wait Until Page Contains Element id=mForm:data:name | |
57 | + Input text id=mForm:data:name ${title} | |
58 | + Input text id=mForm:data:desc ${description} | |
59 | + Input text id=mForm:data:budget ${budget} | |
60 | + Input text id=mForm:data:step ${step_rate} | |
61 | + Click Element xpath=//*[@id='mForm:data:vat']/tbody/tr/td[1]//span | |
62 | + Input text id=mForm:data:dEPr_input ${delivery_end_date} | |
63 | + Click Element id=mForm:data:cKind_label | |
64 | + Click Element xpath=//div[@id='mForm:data:cKind_panel']//li[3] | |
65 | + Input text id=mForm:data:cCpvGr_input ${cpv_id_1} | |
66 | + Wait Until Page Contains Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span 10 | |
67 | + Click Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span | |
68 | + Input text id=mForm:data:subject0 ${dkpp_desc} | |
69 | + Input text id=mForm:data:cCpv0_input ${cpv_id} | |
70 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span 10 | |
71 | + Click Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span | |
72 | + Input text id=mForm:data:unit0_input ${code} | |
73 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] 10 | |
74 | + Click Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] | |
75 | + Input text id=mForm:data:amount0 ${quantity} | |
76 | + Input text id=mForm:data:cDkpp0_input ${dkpp_id} | |
77 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span 10 | |
78 | + Click Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span | |
79 | + Input text id=mForm:data:rName ${name} | |
80 | + Input text id=mForm:data:rPhone ${telephone} | |
81 | + Input text id=mForm:data:rMail ${mail} | |
82 | + Choose File id=mForm:data:docFile_input ${file_path} | |
83 | + Run Keyword if '${mode}' == 'multi' Додати предмет items | |
84 | + Click Element id=mForm:bSave | |
85 | + Sleep 5 | |
86 | + ${tender_UAid}= Get Text id=mForm:nBid | |
87 | + ${tender_UAid}= Get Substring ${tender_UAid} 19 | |
88 | + ${Ids} Convert To String ${tender_UAid} | |
89 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
90 | + [return] ${Ids} | |
91 | + | |
92 | +Set Multi Ids | |
93 | + [Arguments] @{ARGUMENTS} | |
94 | + [Documentation] | |
95 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
96 | + ${id}= Get Text id=mForm:nBid | |
97 | + ${Ids} Create List ${tender_UAid} ${id} | |
98 | + | |
99 | +Додати предмет | |
100 | + [Arguments] @{ARGUMENTS} | |
101 | + [Documentation] | |
102 | + ... ${ARGUMENTS[0]} == items | |
103 | + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description | |
104 | + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id | |
105 | + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description | |
106 | + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id | |
107 | + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description | |
108 | + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id | |
109 | + | |
110 | + Wait Until Page Contains Element xpath=//button[@class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"] 10 | |
111 | + Wait Until Page Contains Element xpath=//button[contains(@class, 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only')] 10 | |
112 | + Wait Until Page Contains Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] 10 | |
113 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
114 | + Wait Until Page Contains Element id=mForm:data:subject1 10 | |
115 | + Input text id=mForm:data:subject1 ${dkpp_desc1} | |
116 | + Input text id=mForm:data:cCpv1_input ${cpv_id} | |
117 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span 10 | |
118 | + Click Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span | |
119 | + Input text id=mForm:data:unit1_input ${code} | |
120 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] 10 | |
121 | + Click Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] | |
122 | + Input text id=mForm:data:amount1 ${quantity} | |
123 | + Input text id=mForm:data:cDkpp1_input ${dkpp_id11} | |
124 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span 10 | |
125 | + Click Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span | |
126 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
127 | + Wait Until Page Contains Element id=mForm:data:subject2 10 | |
128 | + Input text id=mForm:data:subject2 ${dkpp_desc2} | |
129 | + Input text id=mForm:data:cCpv2_input ${cpv_id} | |
130 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span 10 | |
131 | + Click Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span | |
132 | + Input text id=mForm:data:unit2_input ${code} | |
133 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] 10 | |
134 | + Click Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] | |
135 | + Input text id=mForm:data:amount2 ${quantity} | |
136 | + Input text id=mForm:data:cDkpp2_input ${dkpp_id2} | |
137 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span 10 | |
138 | + Click Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span | |
139 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
140 | + Wait Until Page Contains Element id=mForm:data:subject3 10 | |
141 | + Input text id=mForm:data:subject3 ${dkpp_desc3} | |
142 | + Input text id=mForm:data:cCpv3_input ${cpv_id} | |
143 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span 10 | |
144 | + Click Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span | |
145 | + Input text id=mForm:data:unit3_input ${code} | |
146 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] 10 | |
147 | + Click Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] | |
148 | + Input text id=mForm:data:amount3 ${quantity} | |
149 | + Input text id=mForm:data:cDkpp3_input ${dkpp_id3} | |
150 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span 10 | |
151 | + Click Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span | |
152 | + | |
14 | 153 | |
15 | 154 | Пошук тендера по ідентифікатору |
16 | 155 | [Arguments] @{ARGUMENTS} | ... | ... |
... | ... | @@ -24,7 +24,9 @@ Publicbid: |
24 | 24 | period_interval: 2 |
25 | 25 | Netcast: |
26 | 26 | keywords_file: netcast |
27 | - url: http://dz2.byustudio.in.ua | |
27 | + url: "http://dz2.byustudio.in.ua" | |
28 | + login: admin | |
29 | + password: uStudio | |
28 | 30 | timout_on_wait: 15 |
29 | 31 | period_interval: 2 |
30 | 32 | Netcast: |
... | ... | @@ -34,3 +36,8 @@ Netcast: |
34 | 36 | password: uStudio |
35 | 37 | timout_on_wait: 15 |
36 | 38 | period_interval: 2 |
39 | +Newtend: | |
40 | + keywords_file: newtend | |
41 | + url: http://openprocurement:test@dev23.newtend.com | |
42 | + timout_on_wait: 15 | |
43 | + period_interval: 2 | |
\ No newline at end of file | ... | ... |
... | ... | @@ -27,7 +27,7 @@ users: |
27 | 27 | login: st_org |
28 | 28 | password: 12345678 |
29 | 29 | browser: firefox |
30 | - position: [0, 0] | |
30 | + position: [700, 0] | |
31 | 31 | size: [640, 450] |
32 | 32 | E-tender_Provider2: |
33 | 33 | broker: E-tender |
... | ... | @@ -41,7 +41,7 @@ users: |
41 | 41 | E-tender_Viewer: |
42 | 42 | broker: E-tender |
43 | 43 | username: E-tendertest |
44 | - browser: chrome | |
44 | + browser: firefox | |
45 | 45 | position: [0, 0] |
46 | 46 | size: [640, 450] |
47 | 47 | Prom_Owner: |
... | ... | @@ -74,6 +74,15 @@ users: |
74 | 74 | browser: chrome |
75 | 75 | position: [0, 450] |
76 | 76 | size: [640, 450] |
77 | + Newtend_Owner: | |
78 | + broker: Newtend | |
79 | + username: Newtendtest | |
80 | + homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1" | |
81 | + login: openprocurement@mailinator.com | |
82 | + password: 123123 | |
83 | + browser: firefox | |
84 | + position: [0, 0] | |
85 | + size: [640, 450] | |
77 | 86 | Netcast_Owner: |
78 | 87 | broker: Netcast |
79 | 88 | username: Netcasttest |
... | ... | @@ -83,6 +92,15 @@ users: |
83 | 92 | browser: firefox |
84 | 93 | position: [0, 450] |
85 | 94 | size: [640, 450] |
95 | + Newtend_Provider1: | |
96 | + broker: Newtend | |
97 | + username: Newtendtest | |
98 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | |
99 | + login: qtest@mailinator.com | |
100 | + password: 123123 | |
101 | + browser: firefox | |
102 | + position: [0, 450] | |
103 | + size: [640, 450] | |
86 | 104 | Publicbid_Owner: |
87 | 105 | broker: Publicbid |
88 | 106 | username: Publicbid |
... | ... | @@ -91,4 +109,19 @@ users: |
91 | 109 | password: Password1 |
92 | 110 | browser: firefox |
93 | 111 | position: [0, 0] |
94 | - size: [740, 550] | |
\ No newline at end of file | ||
112 | + size: [740, 550] | |
113 | + Newtend_Provider2: | |
114 | + broker: Newtend | |
115 | + username: Newtendtest | |
116 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | |
117 | + login: openprocboss@mailinator.com | |
118 | + password: 123123 | |
119 | + browser: firefox | |
120 | + position: [700, 0] | |
121 | + size: [640, 450] | |
122 | + Newtend_Viewer: | |
123 | + broker: Newtend | |
124 | + username: Newtendtest | |
125 | + browser: firefox | |
126 | + position: [0, 0] | |
127 | + size: [640, 450] | |
\ No newline at end of file | ... | ... |
1 | +from iso8601 import parse_date | |
2 | +from robot.output import LOGGER | |
3 | +from robot.output.loggerhelper import Message | |
4 | +from robot.libraries.BuiltIn import BuiltIn | |
5 | +from robot.errors import HandlerExecutionFailed | |
6 | +from datetime import datetime, timedelta, date | |
7 | +from dateutil.parser import parse | |
8 | +from dateutil.tz import tzlocal | |
9 | +from pytz import timezone | |
10 | +from jsonpath_rw import parse as parse_path | |
11 | +import time | |
12 | +from op_robot_tests.tests_files.initial_data import ( | |
13 | + test_tender_data | |
14 | +) | |
15 | + | |
16 | +TIMEZONE = timezone('Europe/Kiev') | |
17 | + | |
18 | +def convert_date_to_etender_format(isodate): | |
19 | + iso_dt=parse_date(isodate) | |
20 | + date_string = iso_dt.strftime("%d-%m-%Y") | |
21 | + return date_string | |
22 | + | |
23 | +def convert_time_to_etender_format(isodate): | |
24 | + iso_dt=parse_date(isodate) | |
25 | + time_string = iso_dt.strftime("%H:%M") | |
26 | + return time_string | |
\ No newline at end of file | ... | ... |
... | ... | @@ -6,6 +6,14 @@ from faker import Factory |
6 | 6 | fake = Factory.create('uk_UA') |
7 | 7 | fake_ru = Factory.create('ru') |
8 | 8 | fake_en = Factory.create() |
9 | +from tempfile import NamedTemporaryFile | |
10 | + | |
11 | +def create_fake_doc(): | |
12 | + content = fake.text() | |
13 | + tf = NamedTemporaryFile(delete=False) | |
14 | + tf.write(content) | |
15 | + tf.close() | |
16 | + return tf.name | |
9 | 17 | |
10 | 18 | def test_tender_data(period_interval=2): |
11 | 19 | now = datetime.now() |
... | ... | @@ -35,7 +43,6 @@ def test_tender_data(period_interval=2): |
35 | 43 | "contactPoint": { |
36 | 44 | "name": fake.name(), |
37 | 45 | "telephone": fake.phone_number() |
38 | - | |
39 | 46 | } |
40 | 47 | }, |
41 | 48 | "value": { |
... | ... | @@ -84,8 +91,8 @@ def test_tender_data(period_interval=2): |
84 | 91 | } |
85 | 92 | ], |
86 | 93 | "enquiryPeriod": { |
87 | - "startDate": (now + timedelta(minutes=2)).isoformat(), | |
88 | - "endDate": (now + timedelta(minutes=3)).isoformat() | |
94 | + "startDate": (now).isoformat(), | |
95 | + "endDate": (now + timedelta(minutes=1)).isoformat() | |
89 | 96 | }, |
90 | 97 | "tenderPeriod": { |
91 | 98 | "startDate": (now + timedelta(minutes=2)).isoformat(), |
... | ... | @@ -152,7 +159,7 @@ def prom_test_tender_data(): |
152 | 159 | "classification": { |
153 | 160 | "scheme": u"CPV", |
154 | 161 | "id": u"44617100-9", |
155 | - "description": u"Cartons" | |
162 | + "description": u"Cartons", | |
156 | 163 | }, |
157 | 164 | "additionalClassifications": [ |
158 | 165 | { |
... | ... | @@ -181,38 +188,38 @@ def prom_test_tender_data(): |
181 | 188 | def test_tender_data_multiple_lots(period_interval=2): |
182 | 189 | now = datetime.now() |
183 | 190 | return { |
184 | - "title": fake.catch_phrase(), | |
185 | - "mode": "test", | |
186 | - "submissionMethodDetails": "quick", | |
187 | - "description": u"Тестовий тендер", | |
188 | - "description_en": "Test tender", | |
189 | - "description_ru": "Тестовый тендер", | |
190 | - "procuringEntity": { | |
191 | - "name": fake.company(), | |
192 | - "name_ru": fake_ru.company(), | |
193 | - "name_en": fake_en.company(), | |
194 | - "identifier": { | |
195 | - "scheme": u"UA-EDR", | |
196 | - "id": u"0000{}".format(fake.pyint()), | |
197 | - "uri": fake.image_url(width=None, height=None) | |
198 | - }, | |
199 | - "address": { | |
200 | - "countryName": u"Україна", | |
201 | - "postalCode": fake.postalcode(), | |
202 | - "region": u"м. Київ", | |
203 | - "locality": u"м. Київ", | |
204 | - "streetAddress": fake.street_address() | |
205 | - }, | |
206 | - "contactPoint": { | |
207 | - "name": fake.name(), | |
208 | - "telephone": fake.phone_number() | |
209 | - } | |
191 | + "title": fake.catch_phrase(), | |
192 | + "mode": "test", | |
193 | + "submissionMethodDetails": "quick", | |
194 | + "description": u"Тестовий тендер", | |
195 | + "description_en": "Test tender", | |
196 | + "description_ru": "Тестовый тендер", | |
197 | + "procuringEntity": { | |
198 | + "name": fake.company(), | |
199 | + "name_ru": fake_ru.company(), | |
200 | + "name_en": fake_en.company(), | |
201 | + "identifier": { | |
202 | + "scheme": u"UA-EDR", | |
203 | + "id": u"0000{}".format(fake.pyint()), | |
204 | + "uri": fake.image_url(width=None, height=None) | |
205 | + }, | |
206 | + "address": { | |
207 | + "countryName": u"Україна", | |
208 | + "postalCode": fake.postalcode(), | |
209 | + "region": u"м. Київ", | |
210 | + "locality": u"м. Київ", | |
211 | + "streetAddress": fake.street_address() | |
212 | + }, | |
213 | + "contactPoint": { | |
214 | + "name": fake.name(), | |
215 | + "telephone": fake.phone_number() | |
216 | + } | |
210 | 217 | }, |
211 | 218 | "value": { |
212 | - "amount": 50000, | |
213 | - "currency": u"UAH" | |
214 | - }, | |
215 | - "minimalStep": { | |
219 | + "amount": 50000, | |
220 | + "currency": u"UAH" | |
221 | + }, | |
222 | + "minimalStep": { | |
216 | 223 | "amount": 100, |
217 | 224 | "currency": u"UAH" |
218 | 225 | }, |
... | ... | @@ -252,7 +259,7 @@ def test_tender_data_multiple_lots(period_interval=2): |
252 | 259 | }, |
253 | 260 | "quantity": fake.pyint() |
254 | 261 | }, |
255 | - { | |
262 | + { | |
256 | 263 | "description": fake.catch_phrase(), |
257 | 264 | "deliveryDate": { |
258 | 265 | "endDate": (now + timedelta(days=5)).isoformat() |
... | ... | @@ -271,7 +278,8 @@ def test_tender_data_multiple_lots(period_interval=2): |
271 | 278 | "classification": { |
272 | 279 | "scheme": u"CPV", |
273 | 280 | "id": u"44617100-9", |
274 | - "description": u"Cartons" | |
281 | + "description": u"Cartons", | |
282 | + "description_ua": u"Картонки" | |
275 | 283 | }, |
276 | 284 | "additionalClassifications": [ |
277 | 285 | { |
... | ... | @@ -286,7 +294,7 @@ def test_tender_data_multiple_lots(period_interval=2): |
286 | 294 | }, |
287 | 295 | "quantity": fake.pyint() |
288 | 296 | }, |
289 | - { | |
297 | + { | |
290 | 298 | "description": fake.catch_phrase(), |
291 | 299 | "deliveryDate": { |
292 | 300 | "endDate": (now + timedelta(days=5)).isoformat() |
... | ... | @@ -305,7 +313,8 @@ def test_tender_data_multiple_lots(period_interval=2): |
305 | 313 | "classification": { |
306 | 314 | "scheme": u"CPV", |
307 | 315 | "id": u"44617100-9", |
308 | - "description": u"Cartons" | |
316 | + "description": u"Cartons", | |
317 | + "description_ua": u"Картонки" | |
309 | 318 | }, |
310 | 319 | "additionalClassifications": [ |
311 | 320 | { |
... | ... | @@ -320,7 +329,7 @@ def test_tender_data_multiple_lots(period_interval=2): |
320 | 329 | }, |
321 | 330 | "quantity": fake.pyint() |
322 | 331 | }, |
323 | - { | |
332 | + { | |
324 | 333 | "description": fake.catch_phrase(), |
325 | 334 | "deliveryDate": { |
326 | 335 | "endDate": (now + timedelta(days=5)).isoformat() |
... | ... | @@ -339,7 +348,8 @@ def test_tender_data_multiple_lots(period_interval=2): |
339 | 348 | "classification": { |
340 | 349 | "scheme": u"CPV", |
341 | 350 | "id": u"44617100-9", |
342 | - "description": u"Cartons" | |
351 | + "description": u"Cartons", | |
352 | + "description_ua": u"Картонки" | |
343 | 353 | }, |
344 | 354 | "additionalClassifications": [ |
345 | 355 | { |
... | ... | @@ -356,12 +366,12 @@ def test_tender_data_multiple_lots(period_interval=2): |
356 | 366 | } |
357 | 367 | ], |
358 | 368 | "enquiryPeriod": { |
359 | - "startDate": (now + timedelta(minutes=3)).isoformat(), | |
360 | - "endDate": (now + timedelta(minutes=4)).isoformat() | |
369 | + "startDate": (now).isoformat(), | |
370 | + "endDate": (now + timedelta(minutes=1)).isoformat() | |
361 | 371 | }, |
362 | 372 | "tenderPeriod": { |
363 | - "startDate": (now + timedelta(minutes=4)).isoformat(), | |
364 | - "endDate": (now + timedelta(minutes=(5+period_interval))).isoformat() | |
373 | + "startDate": (now + timedelta(minutes=2)).isoformat(), | |
374 | + "endDate": (now + timedelta(minutes=(2+period_interval))).isoformat() | |
365 | 375 | } |
366 | 376 | } |
367 | 377 | ... | ... |
... | ... | @@ -56,6 +56,9 @@ TestSuiteSetup |
56 | 56 | Set Global Variable ${REPLIES} |
57 | 57 | ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode} |
58 | 58 | Set Global Variable ${INITIAL_TENDER_DATA} |
59 | + ${TENDER}= Create Dictionary | |
60 | + Set Global Variable ${TENDER} | |
61 | + Log ${TENDER} | |
59 | 62 | Log ${INITIAL_TENDER_DATA} |
60 | 63 | |
61 | 64 | Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки |
... | ... | @@ -71,7 +74,7 @@ TestSuiteSetup |
71 | 74 | ... ${ARGUMENTS[2]} == id |
72 | 75 | |
73 | 76 | ${now}= Get Current Date |
74 | - ${delta}= Subtract Date From Date ${now} ${LAST_MODIFICATION_DATE} | |
77 | + ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} | |
75 | 78 | ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta} |
76 | 79 | Run Keyword If ${wait_timout}>0 Sleep ${wait_timout} |
77 | 80 | |
... | ... | @@ -83,23 +86,29 @@ TestSuiteSetup |
83 | 86 | Звірити поле |
84 | 87 | [Arguments] ${username} ${field} ${subject} |
85 | 88 | ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field} |
89 | + Should Not Be Equal ${field_response} ${None} | |
86 | 90 | Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker} |
87 | 91 | |
88 | 92 | Звірити поле створеного тендера |
89 | 93 | [Arguments] ${initial} ${tender_data} ${field} |
90 | 94 | ${field_value}= Get_From_Object ${initial} ${field} |
91 | 95 | ${field_response}= Get_From_Object ${tender_data} ${field} |
96 | + Should Not Be Equal ${field_response} ${None} | |
97 | + Should Not Be Equal ${field_value} ${None} | |
92 | 98 | Should Be Equal ${field_value} ${field_response} |
93 | 99 | |
94 | 100 | Звірити дату тендера |
95 | 101 | [Arguments] ${username} ${field} |
96 | 102 | ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} |
103 | + Should Not Be Equal ${isodate} ${None} | |
97 | 104 | Звірити дату ${username} ${field} ${isodate} |
98 | 105 | |
99 | 106 | Звірити дату |
100 | 107 | [Arguments] ${username} ${field} ${subject} |
101 | 108 | ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field} |
102 | 109 | ${returned}= compare_date ${subject} ${field_date} |
110 | + Should Not Be Equal ${field_date} ${None} | |
111 | + Should Not Be Equal ${returned} ${None} | |
103 | 112 | Should Be True '${returned}' == 'True' |
104 | 113 | |
105 | 114 | Звірити поля предметів закупівлі багатопредметного тендера | ... | ... |
... | ... | @@ -25,9 +25,9 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] |
25 | 25 | |
26 | 26 | Можливість оголосити багатопредметний тендер |
27 | 27 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
28 | - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | |
29 | - ${TENDER_ID}= Get From List ${ids} 0 | |
30 | - ${INTERNAL_TENDER_ID}= Get From List ${ids} 1 | |
28 | + ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | |
29 | + ${TENDER_ID}= Get From List ${ids} 0 | |
30 | + ${INTERNAL_TENDER_ID}= Get From List ${ids} 1 | |
31 | 31 | Set Global Variable ${INTERNAL_TENDER_ID} |
32 | 32 | Set Global Variable ${TENDER_ID} |
33 | 33 | ${LAST_MODIFICATION_DATE}= Get Current Date |
... | ... | @@ -36,12 +36,12 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] |
36 | 36 | Отримати багатопредметний тендер по ідентифікатору |
37 | 37 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
38 | 38 | Дочекатись синхронізації з майданчиком ${viewer} |
39 | - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID} | |
40 | - | |
39 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID} | |
40 | + | |
41 | 41 | Відображення опису позицій закупівлі багатопредметного тендера |
42 | 42 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
43 | 43 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} description |
44 | - | |
44 | + | |
45 | 45 | Відображення дати доставки позицій закупівлі багатопредметного тендера |
46 | 46 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
47 | 47 | Звірити дату предметів закупівлі багатопредметного тендера ${viewer} deliveryDate.endDate |
... | ... | @@ -49,11 +49,11 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] |
49 | 49 | Відображення координат широти доставки позицій закупівлі багатопредметного тендера |
50 | 50 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
51 | 51 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.latitude |
52 | - | |
52 | + | |
53 | 53 | Відображення координат довготи доставки позицій закупівлі багатопредметного тендера |
54 | 54 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
55 | 55 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.longitude |
56 | - | |
56 | + | |
57 | 57 | Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера |
58 | 58 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
59 | 59 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.countryName |
... | ... | @@ -61,53 +61,53 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] |
61 | 61 | Відображення пошт коду доставки позицій закупівлі багатопредметного тендера |
62 | 62 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
63 | 63 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.postalCode |
64 | - | |
64 | + | |
65 | 65 | Відображення регіону доставки позицій закупівлі багатопредметного тендера |
66 | 66 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
67 | 67 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.region |
68 | - | |
68 | + | |
69 | 69 | Відображення locality адреси доставки позицій закупівлі багатопредметного тендера |
70 | 70 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
71 | 71 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.locality |
72 | - | |
72 | + | |
73 | 73 | Відображення вулиці доставки позицій закупівлі багатопредметного тендера |
74 | 74 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
75 | 75 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.streetAddress |
76 | - | |
76 | + | |
77 | 77 | Відображення схеми класифікації позицій закупівлі багатопредметного тендера |
78 | 78 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
79 | 79 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.scheme |
80 | - | |
80 | + | |
81 | 81 | Відображення ідентифйікатора класифікації позицій закупівлі багатопредметного тендера |
82 | 82 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
83 | 83 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.id |
84 | - | |
84 | + | |
85 | 85 | Відображення опису класифікації позицій закупівлі багатопредметного тендера |
86 | 86 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
87 | 87 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.description |
88 | - | |
88 | + | |
89 | 89 | Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера |
90 | 90 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
91 | 91 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.scheme |
92 | - | |
92 | + | |
93 | 93 | Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера |
94 | 94 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
95 | 95 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.id |
96 | - | |
96 | + | |
97 | 97 | Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера |
98 | 98 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
99 | 99 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.description |
100 | - | |
100 | + | |
101 | 101 | Відображення назви одиниці позицій закупівлі багатопредметного тендера |
102 | 102 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
103 | 103 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.name |
104 | - | |
104 | + | |
105 | 105 | Відображення коду одиниці позицій закупівлі багатопредметного тендера |
106 | 106 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
107 | 107 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.code |
108 | - | |
108 | + | |
109 | 109 | Відображення кількості позицій закупівлі багатопредметного тендера |
110 | 110 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
111 | 111 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} quantity |
112 | - | |
113 | - | |
112 | + | |
113 | + | ... | ... |
... | ... | @@ -18,8 +18,9 @@ import time |
18 | 18 | from .initial_data import ( |
19 | 19 | test_tender_data, test_question_data, test_question_answer_data, |
20 | 20 | test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, |
21 | - auction_bid, prom_test_tender_data | |
21 | + auction_bid, prom_test_tender_data, create_fake_doc | |
22 | 22 | ) |
23 | +import calendar | |
23 | 24 | |
24 | 25 | TIMEZONE = timezone('Europe/Kiev') |
25 | 26 | |
... | ... | @@ -162,4 +163,24 @@ def wait_to_date(date_stamp): |
162 | 163 | wait_seconds += 2 |
163 | 164 | if wait_seconds < 0: |
164 | 165 | return 0 |
165 | - return wait_seconds | |
\ No newline at end of file | ||
166 | + return wait_seconds | |
167 | + | |
168 | +def newtend_date_picker_index(isodate): | |
169 | + now = datetime.today() | |
170 | + date_str = '01' + str(now.month) + str(now.year) | |
171 | + first_day_of_month = datetime.strptime(date_str, "%d%m%Y") | |
172 | + mod = first_day_of_month.isoweekday() - 2 | |
173 | + iso_dt=parse_date(isodate) | |
174 | + last_day_of_month = calendar.monthrange(now.year, now.month)[1] | |
175 | + #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO")) | |
176 | + if now.day>iso_dt.day: | |
177 | + mod = calendar.monthrange(now.year, now.month)[1] + mod | |
178 | + return mod + iso_dt.day | |
179 | + | |
180 | +def Add_time_for_GUI_FrontEnds(INITIAL_TENDER_DATA): | |
181 | + now = datetime.now() | |
182 | + INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | |
183 | + INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=3)).isoformat() | |
184 | + INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=4)).isoformat() | |
185 | + INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=5)).isoformat() | |
186 | + return INITIAL_TENDER_DATA | |
\ No newline at end of file | ... | ... |
... | ... | @@ -26,41 +26,47 @@ ${question_id} 0 |
26 | 26 | *** Test Cases *** |
27 | 27 | Можливість оголосити однопредметний тендер |
28 | 28 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
29 | - log ${TEMPDIR} | |
30 | - log ${CURDIR} | |
31 | - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | |
32 | - ${TENDER_ID}= Get From List ${ids} 0 | |
33 | - Set Global Variable ${TENDER_ID} | |
29 | + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), | |
30 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | |
34 | 31 | ${LAST_MODIFICATION_DATE}= Get Current Date |
35 | - Set Global Variable ${LAST_MODIFICATION_DATE} | |
32 | + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | |
33 | + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | |
34 | + log ${TENDER} | |
36 | 35 | |
37 | 36 | Можливасть додати тендерну документацію |
38 | 37 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ |
39 | - ${filename}= Set Variable file.txt | |
40 | - Викликати для учасника ${tender_owner} Завантажити документ ${filename} ${TENDER_ID} | |
38 | + [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі | |
39 | + ${filepath}= create_fake_doc | |
40 | + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']} | |
41 | + ${file_upload_process_data} = Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply} | |
42 | + log ${file_upload_process_data} | |
43 | + Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data} | |
44 | + Log ${USERS.users['${tender_owner}']} | |
45 | + | |
41 | 46 | |
42 | 47 | Можливість подати скаргу на умови |
43 | 48 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови |
44 | - Викликати для учасника ${provider} Подати скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
49 | + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі | |
50 | + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
45 | 51 | ${LAST_MODIFICATION_DATE}= Get Current Date |
46 | - Set Global Variable ${LAST_MODIFICATION_DATE} | |
52 | + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | |
47 | 53 | |
48 | 54 | Можливість побачити скаргу користувачем |
49 | 55 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
50 | - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
56 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
51 | 57 | |
52 | 58 | можливість побачити скаргу анонімом |
53 | 59 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
54 | - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
60 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
55 | 61 | |
56 | 62 | Пошук однопредметного тендера по ідентифікатору |
57 | 63 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
58 | 64 | Дочекатись синхронізації з майданчиком ${viewer} |
59 | - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} | |
60 | - | |
65 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
66 | + | |
61 | 67 | ###### |
62 | 68 | #Відображення основних даних оголошеного тендера: |
63 | -#заголовок, опис, бюджет, тендерна документація, | |
69 | +#заголовок, опис, бюджет, тендерна документація, | |
64 | 70 | #procuringEntity, періоди уточнень/прийому-пропозицій, мінімального кроку |
65 | 71 | |
66 | 72 | Відображення заголовоку оголошеного тендера |
... | ... | @@ -78,7 +84,7 @@ ${question_id} 0 |
78 | 84 | Відображення tenderID оголошеного тендера |
79 | 85 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
80 | 86 | ${field_response}= Викликати для учасника ${viewer} отримати інформацію із тендера tenderID |
81 | - Should Be Equal ${TENDER_ID} ${field_response} Майданчик ${USERS.users['${viewer}'].broker} | |
87 | + Should Be Equal ${TENDER['TENDER_UAID']} ${field_response} Майданчик ${USERS.users['${viewer}'].broker} | |
82 | 88 | |
83 | 89 | Відображення procuringEntity.name оголошеного тендера |
84 | 90 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
... | ... | @@ -104,26 +110,18 @@ ${question_id} 0 |
104 | 110 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
105 | 111 | Звірити поле тендера ${viewer} minimalStep.amount |
106 | 112 | |
107 | -Відображення тендерної документації оголошеного тендера | |
108 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | |
109 | - Звірити поле тендера ${viewer} documents.title | |
110 | - #documents.format | |
111 | - #documents.url | |
112 | - #documents.datePublished | |
113 | - #documents.dateModified | |
114 | - #documents.id | |
115 | - | |
116 | 113 | Можливість редагувати однопредметний тендер |
117 | 114 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
118 | - Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER_ID} description description | |
115 | + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description | |
116 | + | |
117 | +Можливість додати позицію закупівлі в тендер | |
118 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
119 | + Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER['TENDER_UAID']} 3 | |
120 | + | |
121 | +Можливість видалити позиції закупівлі тендера | |
122 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
123 | + Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER['TENDER_UAID']} 2 | |
119 | 124 | |
120 | -#Можливість додати позицію закупівлі в тендер | |
121 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
122 | -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER_ID} 3 | |
123 | -# | |
124 | -#Можливість видалити позиції закупівлі тендера | |
125 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
126 | -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER_ID} 2 | |
127 | 125 | |
128 | 126 | ####### |
129 | 127 | #Відображення однопредметного тендера |
... | ... | @@ -179,15 +177,15 @@ ${question_id} 0 |
179 | 177 | |
180 | 178 | Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера |
181 | 179 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
182 | - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.scheme | |
180 | + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].scheme | |
183 | 181 | |
184 | 182 | Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера |
185 | 183 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
186 | - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.id | |
184 | + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].id | |
187 | 185 | |
188 | 186 | Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера |
189 | 187 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
190 | - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.description | |
188 | + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].description | |
191 | 189 | |
192 | 190 | Відображення назви одиниці позицій закупівлі однопредметного тендера |
193 | 191 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
... | ... | @@ -206,14 +204,14 @@ ${question_id} 0 |
206 | 204 | |
207 | 205 | Задати питання |
208 | 206 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
209 | - Викликати для учасника ${provider} Задати питання ${TENDER_ID} ${QUESTIONS[${question_id}]} | |
207 | + Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} | |
210 | 208 | ${now}= Get Current Date |
211 | 209 | Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} |
212 | 210 | |
213 | 211 | Відображення заголовоку анонімного питання без відповіді |
214 | 212 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
215 | 213 | Дочекатись синхронізації з майданчиком ${viewer} |
216 | - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} | |
214 | + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
217 | 215 | Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title} |
218 | 216 | |
219 | 217 | Відображення опис анонімного питання без відповіді |
... | ... | @@ -222,208 +220,187 @@ ${question_id} 0 |
222 | 220 | |
223 | 221 | Відображення дати анонімного питання без відповіді |
224 | 222 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
225 | - Звірити дату ${viewer} questions[${question_id}].date ${QUESTIONS[${question_id}].data.date} | |
223 | + Звірити дату ${viewer} questions[${question_id}].date ${QUESTIONS[${question_id}].data.date} | |
226 | 224 | |
227 | 225 | Неможливість подати цінову пропозицію до початку періоду подачі пропозицій bidder1 |
228 | 226 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
229 | 227 | ${bid}= test bid data |
230 | 228 | Log ${bid} |
231 | - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER_ID} ${bid} | |
229 | + ${bidresponces}= Create Dictionary | |
230 | + ${bid_before_biddperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid} | |
231 | + Set To Dictionary ${bidresponces} bid_before_biddperiod_resp ${bid_before_biddperiod_resp} | |
232 | + Set To Dictionary ${USERS.users['${provider}']} bidresponces ${bidresponces} | |
233 | + log ${USERS.users['${provider}']} | |
232 | 234 | |
233 | 235 | ####### |
234 | 236 | #Відображення відповіді на запитання |
235 | 237 | # |
236 | 238 | Відповісти на запитання |
237 | 239 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання |
238 | - Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER_ID} 0 ${ANSWERS[0]} | |
240 | + Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} | |
239 | 241 | ${now}= Get Current Date |
240 | 242 | Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} |
241 | 243 | |
242 | 244 | Відображення відповіді на запитання |
243 | 245 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання |
244 | 246 | Дочекатись синхронізації з майданчиком ${viewer} |
245 | - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} | |
247 | + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
246 | 248 | Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer} |
247 | 249 | |
248 | 250 | Можливість побачити скаргу користувачем під час періоду уточнень |
249 | 251 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
250 | - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
252 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
251 | 253 | |
252 | 254 | можливість побачити скаргу анонімом під час періоду уточнень |
253 | 255 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
254 | - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
256 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
255 | 257 | |
256 | 258 | Подати цінову пропозицію bidder |
257 | 259 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
258 | 260 | Дочекатись дати початоку прийому пропозицій |
259 | 261 | ${bid}= test bid data |
260 | 262 | Log ${bid} |
261 | - ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_ID} ${bid} | |
263 | + ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
262 | 264 | Set Global Variable ${biddingresponce0} |
263 | 265 | log ${biddingresponce0} |
264 | 266 | |
265 | 267 | Можливість скасувати цінову пропозицію |
266 | 268 | [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію |
267 | - ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER_ID} ${biddingresponce0} | |
269 | + ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponce0} | |
268 | 270 | |
269 | 271 | Подати повторно цінову пропозицію першим учасником |
270 | 272 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
271 | 273 | Дочекатись дати початоку прийому пропозицій |
272 | 274 | ${bid}= test bid data |
273 | 275 | Log ${bid} |
274 | - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_ID} ${bid} | |
275 | - Set Global Variable ${biddingresponce1} | |
276 | - log ${biddingresponce1} | |
276 | + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
277 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} resp ${resp} | |
278 | + log ${resp} | |
279 | + log ${USERS.users['${provider}'].bidresponces} | |
277 | 280 | |
278 | 281 | Можливість змінити повторну цінову пропозицію до 50000 |
279 | 282 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
280 | - Set To Dictionary ${biddingresponce1.data.value} amount 50000 | |
281 | - Log ${biddingresponce1.data.value} | |
282 | - ${biddingresponce2}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER_ID} ${biddingresponce1} | |
283 | - Set Global Variable ${biddingresponce2} | |
284 | - log ${biddingresponce2} | |
283 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces['resp'].data.value} amount 50000 | |
284 | + Log ${USERS.users['${provider}'].bidresponces['resp'].data.value} | |
285 | + ${fixbidto50000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponces['resp']} | |
286 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} fixbidto50000resp ${fixbidto50000resp} | |
287 | + log ${fixbidto50000resp} | |
285 | 288 | |
286 | -Можливість змінити повторну цінову пропозицію до 400 | |
289 | +Можливість змінити повторну цінову пропозицію до 10 | |
287 | 290 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
288 | - Set To Dictionary ${biddingresponce1.data.value} amount 400 | |
289 | - Log ${biddingresponce1.data.value} | |
290 | - ${biddingresponce3}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER_ID} ${biddingresponce1} | |
291 | - Set Global Variable ${biddingresponce3} | |
292 | - log ${biddingresponce3} | |
291 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces['resp'].data.value} amount 10 | |
292 | + Log ${USERS.users['${provider}'].bidresponces['fixbidto50000resp'].data.value} | |
293 | + ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponces['resp']} | |
294 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} fixbidto10resp ${fixbidto10resp} | |
295 | + log ${fixbidto10resp} | |
293 | 296 | |
294 | 297 | Завантажити документ першим учасником в повторну пропозицію |
295 | 298 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця |
296 | 299 | log ${USERS.users['${provider}'].broker} |
297 | - log ${biddingresponce1} | |
298 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | |
299 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
300 | - log ${token1} | |
301 | - ${uploaded_file_data}= Викликати для учасника ${provider} Завантажити документ в ставку ${token1} ${bid_id} | |
302 | - log ${uploaded_file_data} | |
303 | - Set Global Variable ${uploaded_file_data} | |
304 | - | |
300 | + ${filepath}= create_fake_doc | |
301 | + ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} | |
302 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_upload ${bid_doc_upload} | |
305 | 303 | |
306 | 304 | порівняти документ |
307 | 305 | [Tags] ${USERS.users['${provider}'].broker}: вичитати документ |
308 | - ${flcntnt}= Get From Dictionary ${uploaded_file_data} filecontent | |
309 | - ${resp}= Get From Dictionary ${uploaded_file_data} upload_responce | |
310 | - ${flpth}= Get From Dictionary ${uploaded_file_data} filepath | |
311 | - ${url} = Get Variable Value ${resp.data.url} | |
312 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
313 | - ${doc} ${flnnm}= Викликати для учасника ${provider} отримати документ ${TENDER_ID} ${url} ${token1} | |
306 | + ${url}= Get Variable Value ${USERS.users['${provider}'].bidresponces['bid_doc_upload']['upload_responce'].data.url} | |
307 | + ${doc} ${flnnm}= Викликати для учасника ${provider} отримати документ ${TENDER['TENDER_UAID']} ${url} | |
308 | + | |
309 | + FIXME: finish the keyword | |
310 | + | |
314 | 311 | Should Be Equal ${flcntnt} ${doc} |
315 | 312 | Should Be Equal ${flpth} ${flnnm} |
316 | 313 | |
317 | - | |
318 | 314 | Можливість змінити документацію цінової пропозиції |
319 | 315 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця |
320 | 316 | log ${USERS.users['${provider}'].broker} |
321 | - log ${biddingresponce1} | |
322 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | |
323 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
324 | - ${resp}= Get From Dictionary ${uploaded_file_data} upload_responce | |
325 | - ${upload_doc_responce_id}= get variable value ${resp.data.id} | |
326 | - log ${token1} | |
327 | - Викликати для учасника ${provider} Змінити документ в ставці ${token1} ${bid_id} ${upload_doc_responce_id} | |
317 | + ${filepath}= create_fake_doc | |
318 | + ${bidid}= Get Variable Value ${USERS.users['${provider}'].bidresponces['resp'].data.id} | |
319 | + ${docid}= Get Variable Value ${USERS.users['${provider}'].bidresponces['bid_doc_upload']['upload_responce'].data.id} | |
320 | + ${bid_doc_modified}= Викликати для учасника ${provider} Змінити документ в ставці ${filepath} ${bidid} ${docid} | |
321 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_modified ${bid_doc_modified} | |
328 | 322 | |
329 | 323 | Неможливість задати запитання після закінчення періоду уточнень |
330 | 324 | [Documentation] |
331 | 325 | ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" |
332 | 326 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
333 | - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER_ID} ${questions[${question_id}]} | |
327 | + ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${questions[${question_id}]} | |
334 | 328 | |
335 | 329 | Подати цінову пропозицію другим учасником |
336 | 330 | [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію |
337 | 331 | Дочекатись дати початоку прийому пропозицій |
338 | 332 | ${bid}= test bid data |
339 | 333 | Log ${bid} |
340 | - ${biddingresponce5}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER_ID} ${bid} | |
341 | - Set Global Variable ${biddingresponce5} | |
342 | - log ${biddingresponce5} | |
334 | + ${bidresponces}= Create Dictionary | |
335 | + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
336 | + Set To Dictionary ${bidresponces} resp ${resp} | |
337 | + Set To Dictionary ${USERS.users['${provider1}']} bidresponces ${bidresponces} | |
338 | + log ${resp} | |
339 | + log ${USERS.users['${provider1}'].bidresponces} | |
343 | 340 | |
344 | 341 | Неможливість побачити цінові пропозиції учасників під час прийому пропозицій |
345 | 342 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію |
346 | - ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера B | |
343 | + | |
344 | + FIXME: finish the keyword | |
345 | + | |
346 | + ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера | |
347 | 347 | |
348 | 348 | Завантажити документ другим учасником |
349 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | |
349 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця | |
350 | 350 | log ${USERS.users['${provider1}'].broker} |
351 | - ${bid_id2}= get variable value ${biddingresponce5.data.id} | |
352 | - ${token2}= Get Variable Value ${biddingresponce5.access.token} | |
353 | - log ${token2} | |
354 | - Викликати для учасника ${provider1} Завантажити документ в ставку ${token2} ${bid_id2} | |
351 | + ${filepath}= create_fake_doc | |
352 | + ${bid_doc_upload}= Викликати для учасника ${provider1} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} | |
353 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} bid_doc_upload ${bid_doc_upload} | |
355 | 354 | |
356 | 355 | Можливість побачити скаргу користувачем під час подачі пропозицій |
357 | 356 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
358 | - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
357 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
359 | 358 | |
360 | 359 | можливість побачити скаргу анонімом під час подачі пропозицій |
361 | 360 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
362 | - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
361 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
363 | 362 | |
364 | 363 | Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій |
365 | 364 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій |
366 | 365 | Дочекатись дати закінчення прийому пропозицій |
367 | - Set To Dictionary ${biddingresponce1.data.value} amount 50000 | |
368 | - Log ${biddingresponce5.data.value} | |
369 | - ${biddingresponce6}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
370 | - Set Global Variable ${biddingresponce6} | |
371 | - log ${biddingresponce6} | |
366 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces['resp'].data.value} amount 50000 | |
367 | + Log ${USERS.users['${provider1}'].bidresponces['resp'].data.value} | |
368 | + ${failfixbidto50000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | |
369 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} failfixbidto50000resp ${failfixbidto50000resp} | |
370 | + log ${failfixbidto50000resp} | |
372 | 371 | |
373 | 372 | Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
374 | 373 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
375 | - Set To Dictionary ${biddingresponce5.data.value} amount 1 | |
376 | - Log ${biddingresponce1.data.value} | |
377 | - ${biddingresponce7}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
378 | - Set Global Variable ${biddingresponce7} | |
379 | - log ${biddingresponce3} | |
374 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces['resp'].data.value} amount 1 | |
375 | + Log ${USERS.users['${provider1}'].bidresponces['resp'].data.value} | |
376 | + ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | |
377 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} failfixbidto1resp ${failfixbidto1resp} | |
378 | + log ${failfixbidto1resp} | |
380 | 379 | |
381 | 380 | Неможливість скасувати цінову пропозицію |
382 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | |
383 | - ${biddingresponce8}= Викликати для учасника ${provider} скасувати цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
381 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію | |
382 | + ${biddingresponce}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | |
384 | 383 | |
385 | 384 | Неможливість завантажити документ другим учасником після закінчення прийому пропозицій |
386 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій | |
387 | - log ${USERS.users['${provider1}'].broker} | |
388 | - log ${biddingresponce5} | |
389 | - ${bid_id}= get variable value ${biddingresponce5.data.id} | |
390 | - ${token1}= Get Variable Value ${biddingresponce5.access.token} | |
391 | - log ${token1} | |
392 | - ${upload_doc_responce2}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${token1} ${bid_id} | |
393 | - log ${upload_doc_responce_2} | |
394 | - Set Global Variable ${upload_doc_responce2} | |
395 | - | |
396 | -Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій | |
397 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій | |
398 | - log ${USERS.users['${provider}'].broker} | |
399 | - log ${biddingresponce5} | |
400 | - ${bid_id}= get variable value ${biddingresponce5.data.id} | |
401 | - ${token1}= Get Variable Value ${biddingresponce5.access.token} | |
402 | - ${upload_doc_responce_id2}= get variable value ${upload_doc_responce2[0].data.id} | |
403 | - log ${upload_doc_responce_id2} | |
404 | - log ${token1} | |
405 | - Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id2} | |
385 | + [Tags] ${USERS.users['${provider1}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій | |
386 | + ${filepath}= create_fake_doc | |
387 | + ${bid_doc_upload_fail}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${filepath} ${TENDER['TENDER_UAID']} | |
388 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} bid_doc_upload_fail ${bid_doc_upload_fail} | |
389 | + | |
406 | 390 | |
407 | 391 | Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій |
408 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | |
409 | - log ${USERS.users['${provider}'].broker} | |
410 | - log ${biddingresponce1} | |
411 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | |
412 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
413 | - ${upload_doc_responce_id}= get variable value ${upload_doc_responce[0].data.id} | |
414 | - log ${token1} | |
415 | - Викликати для учасника ${provider} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id} | |
416 | - | |
417 | -Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій | |
418 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій | |
419 | - ${biddingresponce8}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
420 | - Set Global Variable ${biddingresponce8} | |
421 | - log ${biddingresponce8} | |
392 | + [Tags] ${USERS.users['${provider1}'].broker}: | |
393 | + ${filepath}= create_fake_doc | |
394 | + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id} | |
395 | + ${docid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['bid_doc_upload']['upload_responce'].data.id} | |
396 | + ${bid_doc_modified_failed}= Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${filepath} ${bidid} ${docid} | |
397 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_modified_failed ${bid_doc_modified_failed} | |
398 | + | |
422 | 399 | |
423 | 400 | Вичитати цінову пропозицію |
424 | - sleep 120 | |
425 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
426 | - ${bid_id} = get variable value ${biddingresponce1.data.id} | |
427 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
428 | - ${bids}= Викликати для учасника ${provider} Отримати пропозиції ${TENDER_ID} ${bid_id} ${token1} | |
401 | +# sleep 120 | |
402 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | |
403 | + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id} | |
404 | + ${token}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].access.token} | |
405 | + ${bids}= Викликати для учасника ${provider1} Отримати пропозиції ${TENDER['TENDER_UAID']} ${bidid} ${token} | |
429 | 406 | log ${bids} |
\ No newline at end of file | ... | ... |
Please
register
or
login
to post a comment