Commit f451e93abf997c640da029f63d718ab2f1ac491a

Authored by SavchukRoman
1 parent 601fbee2

Додано метод local_path_to_file у service_keyword.py, Переписано задати питання …

…і відповісти на питання
1 -*** Setting ***  
2 -Library op_robot_tests.tests_files.service_keywords  
3 -Library String  
4 -LIbrary Collections  
5 -LIbrary Selenium2Library  
6 -Library DebugLibrary  
7 -Resource keywords.robot  
8 -Resource resource.robot  
9 -Suite Setup TestCaseSetup  
10 -Suite Teardown Close all browsers  
11 -  
12 -*** Variables ***  
13 -${tender_dump_id} 0  
14 -${tender_owner} Tender_Owner  
15 -${provider} Tender_User  
16 -${viewer} Tender_Viewer  
17 -  
18 -${LOAD_USERS} ["${tender_owner}", "${provider}"]  
19 -  
20 -${item_id} 0  
21 -${question_id} 0  
22 -  
23 -  
24 -*** Test Cases ***  
25 -Можливість оголосити однопердметний тендер  
26 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Пошук тендера по ідентифікатору  
27 - ${TENDER_ID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}  
28 - Set Global Variable ${TENDER_ID}  
29 - ${LAST_MODIFICATION_DATE}= Get Current Date  
30 - ${TENDER_DATA}= Get Variable Value ${INITIAL_TENDER_DATA}  
31 - Set Global Variable ${TENDER_DATA}  
32 - Set Global Variable ${LAST_MODIFICATION_DATE}  
33 -  
34 -Пошук однопредметного тендера по ідентифікатору  
35 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Пошук тендера по ідентифікатору  
36 - Дочекатись синхронізації з майданчиком ${provider}  
37 - Викликати для учасника ${provider} Пошук тендера по ідентифікатору ${TENDER_ID} ${TENDER_ID}  
38 -  
39 -Відображення заголовоку оголошеного тендера  
40 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
41 - Звірити поле тендера ${provider} title  
42 -  
43 -Відображення опису оголошеного тендера  
44 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
45 - Звірити поле тендера ${provider} description  
46 -  
47 -Відображення бюджету оголошеного тендера  
48 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
49 - Звірити поле тендера ${provider} value.amount  
50 -  
51 -Відображення procuringEntity.name оголошеного тендера  
52 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
53 - Звірити поле тендера ${provider} procuringEntity.name  
54 -  
55 -#Відображення початоку періоду уточнення оголошеного тендера  
56 -# [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
57 -# Звірити поле тендера ${provider} enquiryPeriod.startDate  
58 -  
59 -Відображення закінчення періоду уточнення оголошеного тендера  
60 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
61 - Звірити дату ${provider} enquiryPeriod.endDate  
62 -  
63 -Відображення початоку періоду прийому пропозицій оголошеного тендера  
64 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
65 - Звірити дату ${provider} tenderPeriod.startDate  
66 -  
67 -Відображення закінчення періоду прийому пропозицій оголошеного тендера  
68 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
69 - Звірити дату ${provider} tenderPeriod.endDate  
70 -  
71 -Відображення мінімального кроку оголошеного тендера  
72 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера  
73 - Звірити поле тендера ${provider} minimalStep.amount  
74 -  
75 -Відображення опису позицій закупівлі однопредметного тендера  
76 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
77 - Звірити поле тендера ${provider} items[${item_id}].description  
78 -  
79 -Відображення дати доставки позицій закупівлі однопредметного тендера  
80 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
81 - Звірити дату ${provider} items[${item_id}].deliveryDate.endDate  
82 -  
83 -Відображення координат широти доставки позицій закупівлі однопредметного тендера  
84 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
85 - Звірити поле тендера ${provider} items[${item_id}].deliveryLocation.latitude  
86 -  
87 -Відображення координат довготи доставки позицій закупівлі однопредметного тендера  
88 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
89 - Звірити поле тендера ${provider} items[${item_id}].deliveryLocation.longitude  
90 -  
91 -Відображення назви нас. пункту доставки позицій закупівлі однопредметного тендера  
92 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
93 - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.countryName  
94 -  
95 -Відображення пошт коду доставки позицій закупівлі однопредметного тендера  
96 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
97 - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.postalCode  
98 -  
99 -Відображення регіону доставки позицій закупівлі однопредметного тендера  
100 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
101 - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.region  
102 -  
103 -Відображення locality адреси доставки позицій закупівлі однопредметного тендера  
104 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
105 - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.locality  
106 -  
107 -Відображення вулиці доставки позицій закупівлі однопредметного тендера  
108 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
109 - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.streetAddress  
110 -  
111 -Відображення схеми класифікації позицій закупівлі однопредметного тендера  
112 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
113 - Звірити поле тендера ${provider} items[${item_id}].classification.scheme  
114 -  
115 -Відображення ідентифйікатора класифікації позицій закупівлі однопредметного тендера  
116 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
117 - Звірити поле тендера ${provider} items[${item_id}].classification.id  
118 -  
119 -Відображення опису класифікації позицій закупівлі однопредметного тендера  
120 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
121 - Звірити поле тендера ${provider} items[${item_id}].classification.description  
122 -  
123 -Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера  
124 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
125 - Звірити поле тендера ${provider} items[${item_id}].additionalClassifications.scheme  
126 -  
127 -Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера  
128 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
129 - Звірити поле тендера ${provider} items[${item_id}].additionalClassifications.id  
130 -  
131 -Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера  
132 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
133 - Звірити поле тендера ${provider} items[${item_id}].additionalClassifications.description  
134 -  
135 -Відображення назви одиниці позицій закупівлі однопредметного тендера  
136 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
137 - Звірити поле тендера ${provider} items[${item_id}].unit.name  
138 -  
139 -Відображення коду одиниці позицій закупівлі однопредметного тендера  
140 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
141 - Звірити поле тендера ${provider} items[${item_id}].unit.code  
142 -  
143 -Відображення кількості позицій закупівлі однопредметного тендера  
144 - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера  
145 - Звірити поле тендера ${provider} items[${item_id}].quantity  
146 -  
147 -  
@@ -5,21 +5,8 @@ Library DateTime @@ -5,21 +5,8 @@ Library DateTime
5 5
6 *** Variables *** 6 *** Variables ***
7 ${locator.tenderId} jquery=h3 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
18 *** Keywords *** 9 *** Keywords ***
19 -Підготувати дані для оголошення тендера  
20 - ${INITIAL_TENDER_DATA}= prepare_test_tender_data  
21 - [return] ${INITIAL_TENDER_DATA}  
22 -  
23 Підготувати клієнт для користувача 10 Підготувати клієнт для користувача
24 [Arguments] @{ARGUMENTS} 11 [Arguments] @{ARGUMENTS}
25 [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо 12 [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо
@@ -27,7 +14,6 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -27,7 +14,6 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
27 Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} 14 Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]}
28 Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} 15 Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
29 Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} 16 Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
30 -  
31 # login 17 # login
32 Wait Until Page Contains Element id=inputUsername 100 18 Wait Until Page Contains Element id=inputUsername 100
33 Input text id=inputUsername ${USERS.users['${username}'].login} 19 Input text id=inputUsername ${USERS.users['${username}'].login}
@@ -40,32 +26,30 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -40,32 +26,30 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
40 [Documentation] 26 [Documentation]
41 ... ${ARGUMENTS[0]} == username 27 ... ${ARGUMENTS[0]} == username
42 ... ${ARGUMENTS[1]} == tender_data 28 ... ${ARGUMENTS[1]} == tender_data
43 -  
44 - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items  
45 - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title  
46 - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description  
47 - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount  
48 - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount  
49 - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description 29 + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]}
  30 + ${items}= Get From Dictionary ${tender_data.data} items
  31 + ${title}= Get From Dictionary ${tender_data.data} title
  32 + ${description}= Get From Dictionary ${tender_data.data} description
  33 + ${budget}= Get From Dictionary ${tender_data.data.value} amount
  34 + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount
  35 + ${items_description}= Get From Dictionary ${tender_data.data} description
50 ${quantity}= Get From Dictionary ${items[0]} quantity 36 ${quantity}= Get From Dictionary ${items[0]} quantity
51 ${cpv}= Get From Dictionary ${items[0].classification} id 37 ${cpv}= Get From Dictionary ${items[0].classification} id
52 - ${cpv_id}= Get From Dictionary ${items[0].classification} id  
53 ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description 38 ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description
54 ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id 39 ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id
55 ${unit}= Get From Dictionary ${items[0].unit} name 40 ${unit}= Get From Dictionary ${items[0].unit} name
56 - ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate 41 + ${start_date}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate
57 ${start_date}= convert_date_to_etender_format ${start_date} 42 ${start_date}= convert_date_to_etender_format ${start_date}
58 - ${start_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate 43 + ${start_time}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate
59 ${start_time}= convert_time_to_etender_format ${start_time} 44 ${start_time}= convert_time_to_etender_format ${start_time}
60 - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate 45 + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate
61 ${end_date}= convert_date_to_etender_format ${end_date} 46 ${end_date}= convert_date_to_etender_format ${end_date}
62 - ${end_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate 47 + ${end_time}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate
63 ${end_time}= convert_time_to_etender_format ${end_time} 48 ${end_time}= convert_time_to_etender_format ${end_time}
64 - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate 49 + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate
65 ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date} 50 ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date}
66 - ${enquiry_end_time}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate 51 + ${enquiry_end_time}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate
67 ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time} 52 ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time}
68 -  
69 Selenium2Library.Switch Browser ${ARGUMENTS[0]} 53 Selenium2Library.Switch Browser ${ARGUMENTS[0]}
70 Wait Until Page Contains Мої закупівлі 100 54 Wait Until Page Contains Мої закупівлі 100
71 Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі'] 55 Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі']
@@ -79,6 +63,7 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -79,6 +63,7 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
79 Input text id=minimalStep ${step_rate} 63 Input text id=minimalStep ${step_rate}
80 Input text id=itemsDescription ${items_description} 64 Input text id=itemsDescription ${items_description}
81 Input text id=itemsQuantity ${quantity} 65 Input text id=itemsQuantity ${quantity}
  66 + Wait Until Page Contains Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] 100
82 Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] 67 Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram']
83 Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date} 68 Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date}
84 Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.enquiryPeriod.endDate'] ${enquiry_end_time} 69 Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.enquiryPeriod.endDate'] ${enquiry_end_time}
@@ -105,27 +90,33 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -105,27 +90,33 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
105 Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a 90 Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a
106 ${tender_UAid}= Wait Until Keyword Succeeds 240sec 2sec get tender UAid 91 ${tender_UAid}= Wait Until Keyword Succeeds 240sec 2sec get tender UAid
107 ### harcode Idis bacause issues on the E-tender side, to remove, 1 line: 92 ### harcode Idis bacause issues on the E-tender side, to remove, 1 line:
108 - ${tender_UAid}= Convert To String UA-2015-06-30-000012  
109 - ${id}= Oтримати internal id по UAid ${ARGUMENTS[0]} ${tender_UAid}  
110 - ${Ids} Create List ${tender_UAid} ${id} 93 + ${tender_UAid}= Convert To String UA-2015-08-03-000025
  94 + ${Ids}= Convert To String ${tender_UAid}
  95 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid}
111 [return] ${Ids} 96 [return] ${Ids}
112 97
  98 +Set Multi Ids
  99 + [Arguments] @{ARGUMENTS}
  100 + [Documentation]
  101 + ... ${ARGUMENTS[0]} == username
  102 + ... ${ARGUMENTS[1]} == ${tender_UAid}
  103 + ${id}= Oтримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  104 + ${Ids}= Create List ${tender_UAid} ${id}
  105 +
113 get tender UAid 106 get tender UAid
114 ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")] 107 ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")]
115 ${tender_UAid}= Get Substring ${tender_UAid} 7 27 108 ${tender_UAid}= Get Substring ${tender_UAid} 7 27
116 109
117 -  
118 Oтримати internal id по UAid 110 Oтримати internal id по UAid
119 [Arguments] @{ARGUMENTS} 111 [Arguments] @{ARGUMENTS}
120 [Documentation] 112 [Documentation]
121 ... ${ARGUMENTS[0]} == username 113 ... ${ARGUMENTS[0]} == username
122 - ... ${ARGUMENTS[1]} == tenderid 114 + ... ${ARGUMENTS[1]} == ${tender_UAid}
123 etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} 115 etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
124 ${current_location}= Get Location 116 ${current_location}= Get Location
125 ${tender_id}= Fetch From Right ${current_location} / 117 ${tender_id}= Fetch From Right ${current_location} /
126 -### harcode Idis bacause issues on the E-tender side, to remove, 1 line: 118 +## harcode Idis bacause issues on the E-tender side, to remove, 1 line:
127 ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2 119 ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2
128 - log ${tender_id}  
129 [return] ${tender_id} 120 [return] ${tender_id}
130 121
131 Додати предмет 122 Додати предмет
@@ -142,31 +133,24 @@ Oтримати internal id по UAid @@ -142,31 +133,24 @@ Oтримати internal id по UAid
142 Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100 133 Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100
143 Click Element xpath=.//*[@id='myform']/tender-form/div/button 134 Click Element xpath=.//*[@id='myform']/tender-form/div/button
144 Sleep 2 135 Sleep 2
145 - Wait Until Page Contains Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[2] 100  
146 Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[2] 136 Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[2]
147 Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] 137 Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')]
148 Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc1} 138 Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc1}
149 Wait Until Page Contains ${dkpp_id1} 139 Wait Until Page Contains ${dkpp_id1}
150 Click Element xpath=//td[contains(., '${dkpp_id1}')] 140 Click Element xpath=//td[contains(., '${dkpp_id1}')]
151 Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] 141 Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()']
152 -  
153 Sleep 2 142 Sleep 2
154 - Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100  
155 Click Element xpath=.//*[@id='myform']/tender-form/div/button 143 Click Element xpath=.//*[@id='myform']/tender-form/div/button
156 Sleep 2 144 Sleep 2
157 - Wait Until Page Contains Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[3] 100  
158 Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[3] 145 Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[3]
159 Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] 146 Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')]
160 Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc2} 147 Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc2}
161 Wait Until Page Contains ${dkpp_id2} 148 Wait Until Page Contains ${dkpp_id2}
162 Click Element xpath=//td[contains(., '${dkpp_id2}')] 149 Click Element xpath=//td[contains(., '${dkpp_id2}')]
163 Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] 150 Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()']
164 -  
165 Sleep 2 151 Sleep 2
166 - Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100  
167 Click Element xpath=.//*[@id='myform']/tender-form/div/button 152 Click Element xpath=.//*[@id='myform']/tender-form/div/button
168 Sleep 2 153 Sleep 2
169 - Wait Until Page Contains Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[4] 100  
170 Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[4] 154 Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[4]
171 Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] 155 Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')]
172 Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc3} 156 Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc3}
@@ -174,13 +158,11 @@ Oтримати internal id по UAid @@ -174,13 +158,11 @@ Oтримати internal id по UAid
174 Click Element xpath=//td[contains(., '${dkpp_id3}')] 158 Click Element xpath=//td[contains(., '${dkpp_id3}')]
175 Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] 159 Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()']
176 160
177 -  
178 Пошук тендера по ідентифікатору 161 Пошук тендера по ідентифікатору
179 [Arguments] @{ARGUMENTS} 162 [Arguments] @{ARGUMENTS}
180 [Documentation] 163 [Documentation]
181 ... ${ARGUMENTS[0]} == username 164 ... ${ARGUMENTS[0]} == username
182 - ... ${ARGUMENTS[1]} == tenderId  
183 - 165 + ... ${ARGUMENTS[1]} == ${TENDER_UAID}
184 Switch browser ${ARGUMENTS[0]} 166 Switch browser ${ARGUMENTS[0]}
185 Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} 167 Go to ${BROKERS['${USERS.users['${username}'].broker}'].url}
186 Wait Until Page Contains Список закупівель 10 168 Wait Until Page Contains Список закупівель 10
@@ -193,6 +175,57 @@ Oтримати internal id по UAid @@ -193,6 +175,57 @@ Oтримати internal id по UAid
193 sleep 1 175 sleep 1
194 Capture Page Screenshot 176 Capture Page Screenshot
195 177
  178 +Подати цінову пропозицію
  179 + [Arguments] @{ARGUMENTS}
  180 + [Documentation]
  181 + ... ${ARGUMENTS[0]} == username
  182 + ... ${ARGUMENTS[1]} == ${TENDER_UAID}
  183 + ... ${ARGUMENTS[2]} == test_bid_data
  184 +
  185 + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount
  186 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  187 + Wait Until Page Contains Інформація про процедуру закупівлі 100
  188 + Wait Until Page Contains Element id=amount 10
  189 + Input text id=amount ${bid}
  190 + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції']
  191 +
  192 +Задати питання
  193 + [Arguments] @{ARGUMENTS}
  194 + [Documentation]
  195 + ... ${ARGUMENTS[0]} = username
  196 + ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  197 + ... ${ARGUMENTS[2]} = question_data
  198 +
  199 + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title
  200 + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  201 +
  202 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  203 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  204 +
  205 + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100
  206 + Click Element jquery=a[href^="#/addQuestion/"]
  207 + Wait Until Page Contains Element id=title
  208 + Input text id=title ${title}
  209 + Input text id=description ${description}
  210 + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  211 +
  212 +Відповісти на питання
  213 + [Arguments] @{ARGUMENTS}
  214 + [Documentation]
  215 + ... ${ARGUMENTS[0]} = username
  216 + ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  217 + ... ${ARGUMENTS[2]} = 0
  218 + ... ${ARGUMENTS[3]} = answer_data
  219 +
  220 + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer
  221 +
  222 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  223 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  224 +
  225 + Click Element xpath=//div[div/pre[1]]/div[1]
  226 + Input text xpath=//div[textarea]/textarea ${answer}
  227 + Click Element xpath=//div[textarea]/span/button[1]
  228 +
196 обновити сторінку з тендером 229 обновити сторінку з тендером
197 [Arguments] @{ARGUMENTS} 230 [Arguments] @{ARGUMENTS}
198 [Documentation] 231 [Documentation]
@@ -327,54 +360,3 @@ Oтримати internal id по UAid @@ -327,54 +360,3 @@ Oтримати internal id по UAid
327 відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> 360 відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last>
328 ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> 361 ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last>
329 [return] ${return_value} 362 [return] ${return_value}
330 -  
331 -Подати цінову пропозицію  
332 - [Arguments] @{ARGUMENTS}  
333 - [Documentation]  
334 - ... ${ARGUMENTS[0]} == username  
335 - ... ${ARGUMENTS[1]} == ${INTERNAL_TENDER_ID}  
336 - ... ${ARGUMENTS[2]} == test_bid_data  
337 -  
338 - ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount  
339 - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}  
340 - Wait Until Page Contains Інформація про процедуру закупівлі 100  
341 - Wait Until Page Contains Element id=amount 10  
342 - Input text id=amount ${bid}  
343 - Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції']  
344 -  
345 -Задати питання  
346 - [Arguments] @{ARGUMENTS}  
347 - [Documentation]  
348 - ... ${ARGUMENTS[0]} = username  
349 - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID}  
350 - ... ${ARGUMENTS[2]} = question_data  
351 -  
352 - ${title}= Get From Dictionary ${ARGUMENTS[2].data} title  
353 - ${description}= Get From Dictionary ${ARGUMENTS[2].data} description  
354 -  
355 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
356 - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID}  
357 -  
358 - Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100  
359 - Click Element jquery=a[href^="#/addQuestion/"]  
360 - Wait Until Page Contains Element id=title  
361 - Input text id=title ${title}  
362 - Input text id=description ${description}  
363 - Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']  
364 -  
365 -Відповісти на питання  
366 - [Arguments] @{ARGUMENTS}  
367 - [Documentation]  
368 - ... ${ARGUMENTS[0]} = username  
369 - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID}  
370 - ... ${ARGUMENTS[2]} = 0  
371 - ... ${ARGUMENTS[3]} = answer_data  
372 -  
373 - ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer  
374 -  
375 - Selenium2Library.Switch Browser ${ARGUMENTS[0]}  
376 - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID}  
377 -  
378 - Click Element xpath=//div[div/pre[1]]/div[1]  
379 - Input text xpath=//div[textarea]/textarea ${answer}  
380 - Click Element xpath=//div[textarea]/span/button[1]  
@@ -5,15 +5,7 @@ Library DateTime @@ -5,15 +5,7 @@ Library DateTime
5 5
6 *** Variables *** 6 *** Variables ***
7 ${locator.tenderId} jquery=h3 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)> 8 +${file_path} local_path_to_file("TestDocument.docx")
17 9
18 *** Keywords *** 10 *** Keywords ***
19 Підготувати клієнт для користувача 11 Підготувати клієнт для користувача
@@ -23,16 +15,11 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -23,16 +15,11 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
23 Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]} 15 Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]}
24 Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} 16 Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
25 Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} 17 Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
26 -  
27 -# login  
28 -# Wait Until Page Contains Element name=siteLogin 100  
29 -# Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login}  
30 -# Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password}  
31 -# Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input 18 + Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]}
32 19
33 Wait Until Page Contains Element jquery=a[href="/cabinet"] 20 Wait Until Page Contains Element jquery=a[href="/cabinet"]
34 Click Element jquery=a[href="/cabinet"] 21 Click Element jquery=a[href="/cabinet"]
35 - Wait Until Page Contains Element name=email 100 22 + Wait Until Page Contains Element name=email 10
36 # Input text name=email mail 23 # Input text name=email mail
37 Sleep 1 24 Sleep 1
38 Input text name=email ${USERS.users['${username}'].login} 25 Input text name=email ${USERS.users['${username}'].login}
@@ -41,20 +28,29 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -41,20 +28,29 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
41 Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 100 28 Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 100
42 Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 29 Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет']
43 30
  31 +Pre Login
  32 + [Arguments] @{ARGUMENTS}
  33 + [Documentation]
  34 + ... ${ARGUMENTS[0]} == username
  35 + Wait Until Page Contains Element name=siteLogin 10
  36 + Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login}
  37 + Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password}
  38 + Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input
  39 +
44 Створити тендер 40 Створити тендер
45 [Arguments] @{ARGUMENTS} 41 [Arguments] @{ARGUMENTS}
46 [Documentation] 42 [Documentation]
47 ... ${ARGUMENTS[0]} == username 43 ... ${ARGUMENTS[0]} == username
48 ... ${ARGUMENTS[1]} == tender_data 44 ... ${ARGUMENTS[1]} == tender_data
49 -  
50 - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items  
51 - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title  
52 - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description  
53 - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount  
54 - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount  
55 - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description 45 + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]}
  46 + ${items}= Get From Dictionary ${tender_data.data} items
  47 + ${title}= Get From Dictionary ${tender_data.data} title
  48 + ${description}= Get From Dictionary ${tender_data.data} description
  49 + ${budget}= Get From Dictionary ${tender_data.data.value} amount
  50 + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount
  51 + ${items_description}= Get From Dictionary ${tender_data.data} description
56 ${quantity}= Get From Dictionary ${items[0]} quantity 52 ${quantity}= Get From Dictionary ${items[0]} quantity
57 - ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName 53 + ${countryName}= Get From Dictionary ${tender_data.data.procuringEntity.address} countryName
58 ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate 54 ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate
59 ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date} 55 ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date}
60 ${cpv}= Get From Dictionary ${items[0].classification} description_ua 56 ${cpv}= Get From Dictionary ${items[0].classification} description_ua
@@ -63,9 +59,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -63,9 +59,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
63 ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description 59 ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description
64 ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id 60 ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id
65 ${dkpp_id1}= Replace String ${dkpp_id} - _ 61 ${dkpp_id1}= Replace String ${dkpp_id} - _
66 - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate 62 + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate
67 ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date} 63 ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date}
68 - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate 64 + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate
69 ${end_date}= convert_date_to_slash_format ${end_date} 65 ${end_date}= convert_date_to_slash_format ${end_date}
70 66
71 Selenium2Library.Switch Browser ${ARGUMENTS[0]} 67 Selenium2Library.Switch Browser ${ARGUMENTS[0]}
@@ -80,6 +76,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -80,6 +76,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
80 Input text name=items[0][item_quantity] ${quantity} 76 Input text name=items[0][item_quantity] ${quantity}
81 Input text name=items[0][item_deliveryAddress_countryName] ${countryName} 77 Input text name=items[0][item_deliveryAddress_countryName] ${countryName}
82 Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date} 78 Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date}
  79 + Click Element xpath=//a[@class ='uploadFile']
  80 + Choose File xpath=//a[@class ='uploadFile'] ${file_path}
  81 + Debug
83 Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'] 82 Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником']
84 Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] 83 Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]
85 Input text id=search ${cpv} 84 Input text id=search ${cpv}
@@ -102,11 +101,18 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -102,11 +101,18 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
102 Wait Until Page Contains Element xpath=//a[contains(@class, 'button pubBtn')] 100 101 Wait Until Page Contains Element xpath=//a[contains(@class, 'button pubBtn')] 100
103 Click Element xpath=//a[contains(@class, 'button pubBtn')] 102 Click Element xpath=//a[contains(@class, 'button pubBtn')]
104 Wait Until Page Contains Тендер опубліковано 100 103 Wait Until Page Contains Тендер опубліковано 100
105 - ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2]  
106 - ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2]  
107 - ${Ids} Create List ${tender_UAid} ${id} 104 + ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2]
  105 + ${Ids}= Convert To String ${tender_UAid}
  106 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid}
108 [return] ${Ids} 107 [return] ${Ids}
109 108
  109 +Set Multi Ids
  110 + [Arguments] @{ARGUMENTS}
  111 + [Documentation]
  112 + ... ${ARGUMENTS[1]} == ${tender_UAid}
  113 + ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2]
  114 + ${Ids}= Create List ${tender_UAid} ${id}
  115 +
110 Додати предмет 116 Додати предмет
111 [Arguments] @{ARGUMENTS} 117 [Arguments] @{ARGUMENTS}
112 [Documentation] 118 [Documentation]
@@ -179,17 +185,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -179,17 +185,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
179 Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date} 185 Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date}
180 Input text name=tender_tenderPeriod_endDate ${end_date} 186 Input text name=tender_tenderPeriod_endDate ${end_date}
181 187
182 -  
183 Пошук тендера по ідентифікатору 188 Пошук тендера по ідентифікатору
184 [Arguments] @{ARGUMENTS} 189 [Arguments] @{ARGUMENTS}
185 [Documentation] 190 [Documentation]
186 ... ${ARGUMENTS[0]} == username 191 ... ${ARGUMENTS[0]} == username
187 ... ${ARGUMENTS[1]} == tenderId 192 ... ${ARGUMENTS[1]} == tenderId
188 - ... ${ARGUMENTS[2]} == id  
189 Switch browser ${ARGUMENTS[0]} 193 Switch browser ${ARGUMENTS[0]}
190 194
191 - ${current_location}= Get Location  
192 - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page  
193 Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} 195 Go to ${BROKERS['${USERS.users['${username}'].broker}'].url}
194 Wait Until Page Contains Держзакупівлі.онлайн 10 196 Wait Until Page Contains Держзакупівлі.онлайн 10
195 # sleep 1 197 # sleep 1
@@ -205,13 +207,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -205,13 +207,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
205 [Arguments] @{ARGUMENTS} 207 [Arguments] @{ARGUMENTS}
206 [Documentation] 208 [Documentation]
207 ... ${ARGUMENTS[0]} == username 209 ... ${ARGUMENTS[0]} == username
208 - ... ${ARGUMENTS[1]} == tenderId  
209 - ... ${ARGUMENTS[2]} == id 210 + ... ${ARGUMENTS[1]} == tenderUaId
  211 + ... ${ARGUMENTS[2]} == questionId
210 ${title}= Get From Dictionary ${ARGUMENTS[2].data} title 212 ${title}= Get From Dictionary ${ARGUMENTS[2].data} title
211 ${description}= Get From Dictionary ${ARGUMENTS[2].data} description 213 ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
212 214
213 Selenium2Library.Switch Browser ${ARGUMENTS[0]} 215 Selenium2Library.Switch Browser ${ARGUMENTS[0]}
214 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} 216 + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
215 217
216 Click Element xpath=//a[@class='reverse tenderLink'] 218 Click Element xpath=//a[@class='reverse tenderLink']
217 Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20 219 Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20
@@ -227,13 +229,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -227,13 +229,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
227 [Arguments] @{ARGUMENTS} 229 [Arguments] @{ARGUMENTS}
228 [Documentation] 230 [Documentation]
229 ... ${ARGUMENTS[0]} = username 231 ... ${ARGUMENTS[0]} = username
230 - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} 232 + ... ${ARGUMENTS[1]} = tenderUaId
231 ... ${ARGUMENTS[2]} = 0 233 ... ${ARGUMENTS[2]} = 0
232 ... ${ARGUMENTS[3]} = answer_data 234 ... ${ARGUMENTS[3]} = answer_data
233 235
234 ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer 236 ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer
235 Selenium2Library.Switch Browser ${ARGUMENTS[0]} 237 Selenium2Library.Switch Browser ${ARGUMENTS[0]}
236 - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} 238 + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
237 239
238 Click Element xpath=//a[@class='reverse tenderLink'] 240 Click Element xpath=//a[@class='reverse tenderLink']
239 Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 241 Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]
  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,7 +9,7 @@ ${question_id} 0
9 *** Keywords *** 9 *** Keywords ***
10 отримати internal id по UAid 10 отримати internal id по UAid
11 [Arguments] @{ARGUMENTS} 11 [Arguments] @{ARGUMENTS}
12 - [Documentation] 12 + [Documentation]
13 ... ${ARGUMENTS[0]} == username 13 ... ${ARGUMENTS[0]} == username
14 ... ${ARGUMENTS[1]} == tenderid 14 ... ${ARGUMENTS[1]} == tenderid
15 log many @{ARGUMENTS} 15 log many @{ARGUMENTS}
@@ -42,10 +42,11 @@ ${question_id} 0 @@ -42,10 +42,11 @@ ${question_id} 0
42 Log object data ${TENDER_DATA} cteated_tender 42 Log object data ${TENDER_DATA} cteated_tender
43 ${access_token}= Get Variable Value ${TENDER_DATA.access.token} 43 ${access_token}= Get Variable Value ${TENDER_DATA.access.token}
44 Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} access_token ${access_token} 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 [Arguments] @{ARGUMENTS} 52 [Arguments] @{ARGUMENTS}
@@ -66,19 +67,16 @@ ${question_id} 0 @@ -66,19 +67,16 @@ ${question_id} 0
66 [Documentation] 67 [Documentation]
67 ... ${ARGUMENTS[0]} == username 68 ... ${ARGUMENTS[0]} == username
68 ... ${ARGUMENTS[1]} == tenderId 69 ... ${ARGUMENTS[1]} == tenderId
69 - ... ${ARGUMENTS[2]} == id  
70 ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} 70 ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
71 ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} 71 ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
72 Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data} 72 Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data}
73 [return] ${tender_data} 73 [return] ${tender_data}
74 74
75 -  
76 Обновити сторінку з тендером 75 Обновити сторінку з тендером
77 [Arguments] @{ARGUMENTS} 76 [Arguments] @{ARGUMENTS}
78 [Documentation] 77 [Documentation]
79 ... ${ARGUMENTS[0]} == username 78 ... ${ARGUMENTS[0]} == username
80 ... ${ARGUMENTS[1]} == tenderId 79 ... ${ARGUMENTS[1]} == tenderId
81 - ... ${ARGUMENTS[2]} == id  
82 openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS} 80 openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS}
83 81
84 отримати інформацію із тендера 82 отримати інформацію із тендера
@@ -149,13 +147,13 @@ ${question_id} 0 @@ -149,13 +147,13 @@ ${question_id} 0
149 Set_To_Object ${TENDER_DATA.data} items ${items} 147 Set_To_Object ${TENDER_DATA.data} items ${items}
150 ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} 148 ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token}
151 ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} 149 ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA}
152 - 150 +
153 151
154 Задати питання 152 Задати питання
155 [Documentation] 153 [Documentation]
156 ... ${ARGUMENTS[0]} == username 154 ... ${ARGUMENTS[0]} == username
157 ... ${ARGUMENTS[1]} == tender_uid 155 ... ${ARGUMENTS[1]} == tender_uid
158 - ... ${ARGUMENTS[2]} == bid 156 + ... ${ARGUMENTS[2]} == question
159 [Arguments] @{ARGUMENTS} 157 [Arguments] @{ARGUMENTS}
160 log many @{ARGUMENTS} 158 log many @{ARGUMENTS}
161 ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} 159 ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
@@ -163,7 +161,7 @@ ${question_id} 0 @@ -163,7 +161,7 @@ ${question_id} 0
163 log ${USERS.users['${ARGUMENTS[0]}']} 161 log ${USERS.users['${ARGUMENTS[0]}']}
164 ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]} 162 ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]}
165 [return] ${biddingresponce} 163 [return] ${biddingresponce}
166 - 164 +
167 Відповісти на питання 165 Відповісти на питання
168 [Documentation] 166 [Documentation]
169 ... ${ARGUMENTS[0]} == username 167 ... ${ARGUMENTS[0]} == username
@@ -192,7 +190,7 @@ ${question_id} 0 @@ -192,7 +190,7 @@ ${question_id} 0
192 ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} 190 ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
193 ${complaint}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _create_tender_resource_item ${tender} ${ARGUMENTS[2]} complaints 191 ${complaint}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _create_tender_resource_item ${tender} ${ARGUMENTS[2]} complaints
194 Log object data ${complaint} complaint 192 Log object data ${complaint} complaint
195 - 193 +
196 порівняти скаргу 194 порівняти скаргу
197 [Documentation] 195 [Documentation]
198 ... ${ARGUMENTS[0]} == username 196 ... ${ARGUMENTS[0]} == username
@@ -209,7 +207,7 @@ ${question_id} 0 @@ -209,7 +207,7 @@ ${question_id} 0
209 #:FOR ${element} IN ${ARGUMENTS[2].data} 207 #:FOR ${element} IN ${ARGUMENTS[2].data}
210 #\ log ${element} 208 #\ log ${element}
211 #\ Dictionary Should Contain Value ${complaint} ${element} 209 #\ Dictionary Should Contain Value ${complaint} ${element}
212 - 210 +
213 Обробити скаргу 211 Обробити скаргу
214 [Documentation] 212 [Documentation]
215 ... ${ARGUMENTS[0]} == username 213 ... ${ARGUMENTS[0]} == username
@@ -238,7 +236,7 @@ ${question_id} 0 @@ -238,7 +236,7 @@ ${question_id} 0
238 log ${tender}отримати 236 log ${tender}отримати
239 ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]} 237 ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]}
240 [return] ${biddingresponce} 238 [return] ${biddingresponce}
241 - 239 +
242 Змінити цінову пропозицію 240 Змінити цінову пропозицію
243 [Documentation] 241 [Documentation]
244 ... ${ARGUMENTS[0]} == username 242 ... ${ARGUMENTS[0]} == username
@@ -264,7 +262,7 @@ ${question_id} 0 @@ -264,7 +262,7 @@ ${question_id} 0
264 ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_bid ${tender} ${ARGUMENTS[2]} 262 ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_bid ${tender} ${ARGUMENTS[2]}
265 Log ${changed_bid} 263 Log ${changed_bid}
266 [return] ${changed_bid} 264 [return] ${changed_bid}
267 - 265 +
268 Прийняти цінову пропозицію 266 Прийняти цінову пропозицію
269 [Documentation] 267 [Documentation]
270 ... ${ARGUMENTS[0]} == username 268 ... ${ARGUMENTS[0]} == username
@@ -281,42 +279,49 @@ ${question_id} 0 @@ -281,42 +279,49 @@ ${question_id} 0
281 Завантажити документ в ставку 279 Завантажити документ в ставку
282 [Documentation] 280 [Documentation]
283 ... ${ARGUMENTS[0]} == username 281 ... ${ARGUMENTS[0]} == username
284 - ... ${ARGUMENTS[1]} == token  
285 - ... ${ARGUMENTS[2]} == bid_id 282 + ... ${ARGUMENTS[1]} == path
  283 + ... ${ARGUMENTS[2]} == tenderid
286 [Arguments] @{ARGUMENTS} 284 [Arguments] @{ARGUMENTS}
287 log ${ARGUMENTS[0]} 285 log ${ARGUMENTS[0]}
288 log ${ARGUMENTS[1]} 286 log ${ARGUMENTS[1]}
289 - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id}  
290 - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]}  
291 - ${filename}= Set Variable file.txt  
292 - Set_To_Object ${TENDER_DATA.data} documents.title ${filename}  
293 - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${filename} ${tender} ${ARGUMENTS[2]}  
294 - Log object data ${reply} reply  
295 - [return] ${reply}  
296 - 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}
  295 + Log object data ${uploaded_file}
  296 + [return] ${uploaded_file}
  297 +
297 Змінити документ в ставці 298 Змінити документ в ставці
298 [Documentation] 299 [Documentation]
299 ... ${ARGUMENTS[0]} == username 300 ... ${ARGUMENTS[0]} == username
300 - ... ${ARGUMENTS[1]} == token  
301 - ... ${ARGUMENTS[2]} == bid_id  
302 - ... ${ARGUMENTS[3]} == file_id 301 + ... ${ARGUMENTS[1]} == path
  302 + ... ${ARGUMENTS[2]} == bidid
  303 + ... ${ARGUMENTS[3]} == docid
303 [Arguments] @{ARGUMENTS} 304 [Arguments] @{ARGUMENTS}
304 log ${ARGUMENTS[0]} 305 log ${ARGUMENTS[0]}
305 log ${ARGUMENTS[1]} 306 log ${ARGUMENTS[1]}
306 log ${ARGUMENTS[2]} 307 log ${ARGUMENTS[2]}
307 - log ${ARGUMENTS[3]}  
308 - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id}  
309 - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]}  
310 - ${filename}= Set Variable newfile.txt  
311 - Set_To_Object ${TENDER_DATA.data} documents.title ${filename}  
312 - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${filename} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]}  
313 - 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}
  316 +
  317 +
  318 +
314 319
315 -Завантажити документ 320 +Завантажити документ
316 [Documentation] 321 [Documentation]
317 ... ${ARGUMENTS[0]} == username 322 ... ${ARGUMENTS[0]} == username
318 - ... ${ARGUMENTS[1]} == filename  
319 - ... ${ARGUMENTS[2]} == tenderID 323 + ... ${ARGUMENTS[1]} == filepath
  324 + ... ${ARGUMENTS[2]} == tenderUAID
320 [Arguments] @{ARGUMENTS} 325 [Arguments] @{ARGUMENTS}
321 log ${ARGUMENTS[0]} 326 log ${ARGUMENTS[0]}
322 log ${ARGUMENTS[1]} 327 log ${ARGUMENTS[1]}
@@ -324,7 +329,36 @@ ${question_id} 0 @@ -324,7 +329,36 @@ ${question_id} 0
324 ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} 329 ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]}
325 ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} 330 ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID}
326 ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} 331 ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token}
327 - Set_To_Object ${TENDER_DATA.data} documents.title ${filename}  
328 - ${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]}
329 Log object data ${reply} reply 333 Log object data ${reply} reply
330 -  
  334 + [return] ${reply}
  335 +
  336 +Отримати пропозиції
  337 + [Documentation]
  338 + ... ${ARGUMENTS[0]} == username
  339 + ... ${ARGUMENTS[1]} == tender_uid
  340 + ... ${ARGUMENTS[2]} == bid_id
  341 + ... ${ARGUMENTS[3]} == token
  342 + [Arguments] @{ARGUMENTS}
  343 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  344 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
  345 + ${bids}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_bid ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]}
  346 + Log ${bids}
  347 + [return] ${bids}
  348 +
  349 +отримати документ
  350 + [Documentation]
  351 + ... ${ARGUMENTS[0]} == username
  352 + ... ${ARGUMENTS[1]} == tenderUaID
  353 + ... ${ARGUMENTS[2]} == url
  354 + [Arguments] @{ARGUMENTS}
  355 + log ${ARGUMENTS[0]}
  356 + log ${ARGUMENTS[1]}
  357 + log ${ARGUMENTS[2]}
  358 + ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  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}
  361 + ${contents} ${filename}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_file ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]}
  362 + log ${contents}
  363 + log ${filename}
  364 + [return] ${contents} ${filename}
@@ -3,14 +3,152 @@ Library Selenium2Screenshots @@ -3,14 +3,152 @@ Library Selenium2Screenshots
3 Library String 3 Library String
4 Library DateTime 4 Library DateTime
5 5
  6 +*** Variables ***
  7 +${file_path} local_path_to_file("TestDocument.docx")
  8 +# ${file_path} /home/vbilos/openprocurement.robottests.buildout/Document.docx
  9 +${mail} test@mail.com
  10 +${telephone} +380976535447
  11 +
6 *** Keywords *** 12 *** Keywords ***
7 Підготувати клієнт для користувача 13 Підготувати клієнт для користувача
8 - [Arguments] ${username} 14 + [Arguments] @{ARGUMENTS}
9 [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо 15 [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 16 + ... ${ARGUMENTS[0]} == username
  17 + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]}
  18 + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  19 + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  20 +
  21 +# login
  22 + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:j_idt54 10
  23 + Click Element id=mForm:j_idt54
  24 + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:email 10
  25 + Input text id=mForm:email ${USERS.users['${username}'].login}
  26 + Input text id=mForm:pwd ${USERS.users['${username}'].password}
  27 + Click Button id=mForm:login
  28 +
  29 +Створити тендер
  30 + [Arguments] @{ARGUMENTS}
  31 + [Documentation]
  32 + ... ${ARGUMENTS[0]} == username
  33 + ... ${ARGUMENTS[1]} == tender_data
  34 + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]}
  35 + ${items}= Get From Dictionary ${tender_data.data} items
  36 + ${title}= Get From Dictionary ${tender_data.data} title
  37 + ${description}= Get From Dictionary ${tender_data.data} description
  38 + ${budget}= Get From Dictionary ${tender_data.data.value} amount
  39 + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount
  40 + ${countryName}= Get From Dictionary ${tender_data.data.procuringEntity.address} countryName
  41 + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate
  42 + ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date}
  43 + ${cpv}= Get From Dictionary ${items[0].classification} description_ua
  44 + ${cpv_id}= Get From Dictionary ${items[0].classification} id
  45 + ${cpv_id_1}= Get Substring ${cpv_id} 0 3
  46 + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description
  47 + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id
  48 + ${code}= Get From Dictionary ${items[0].unit} code
  49 + ${quantity}= Get From Dictionary ${items[0]} quantity
  50 + ${name}= Get From Dictionary ${tender_data.data.procuringEntity.contactPoint} name
  51 +
  52 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  53 + Wait Until Page Contains Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] 10
  54 + Click Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля']
  55 + Wait Until Page Contains Element id=mForm:data:name
  56 + Input text id=mForm:data:name ${title}
  57 + Input text id=mForm:data:desc ${description}
  58 + Input text id=mForm:data:budget ${budget}
  59 + Input text id=mForm:data:step ${step_rate}
  60 + Click Element xpath=//*[@id='mForm:data:vat']/tbody/tr/td[1]//span
  61 + Input text id=mForm:data:dEPr_input ${delivery_end_date}
  62 + Click Element id=mForm:data:cKind_label
  63 + Click Element xpath=//div[@id='mForm:data:cKind_panel']//li[3]
  64 + Input text id=mForm:data:cCpvGr_input ${cpv_id_1}
  65 + Wait Until Page Contains Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span 10
  66 + Click Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span
  67 + Input text id=mForm:data:subject0 ${dkpp_desc}
  68 + Input text id=mForm:data:cCpv0_input ${cpv_id}
  69 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span 10
  70 + Click Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span
  71 + Input text id=mForm:data:unit0_input ${code}
  72 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] 10
  73 + Click Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1]
  74 + Input text id=mForm:data:amount0 ${quantity}
  75 + Input text id=mForm:data:cDkpp0_input ${dkpp_id}
  76 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span 10
  77 + Click Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span
  78 + Input text id=mForm:data:rName ${name}
  79 + Input text id=mForm:data:rPhone ${telephone}
  80 + Input text id=mForm:data:rMail ${mail}
  81 + Choose File id=mForm:data:docFile_input ${file_path}
  82 + Run Keyword if '${mode}' == 'multi' Додати предмет items
  83 + Click Element id=mForm:bSave
  84 + Sleep 5
  85 + ${tender_UAid}= Get Text id=mForm:nBid
  86 + ${tender_UAid}= Get Substring ${tender_UAid} 19
  87 + ${Ids} Convert To String ${tender_UAid}
  88 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid}
  89 + [return] ${Ids}
  90 +
  91 +Set Multi Ids
  92 + [Arguments] @{ARGUMENTS}
  93 + [Documentation]
  94 + ... ${ARGUMENTS[0]} == ${tender_UAid}
  95 + ${id}= Get Text id=mForm:nBid
  96 + ${Ids} Create List ${tender_UAid} ${id}
  97 +
  98 +Додати предмет
  99 + [Arguments] @{ARGUMENTS}
  100 + [Documentation]
  101 + ... ${ARGUMENTS[0]} == items
  102 + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description
  103 + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id
  104 + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description
  105 + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id
  106 + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description
  107 + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id
  108 +
  109 + Wait Until Page Contains Element xpath=//button[@class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"] 10
  110 + Wait Until Page Contains Element xpath=//button[contains(@class, 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only')] 10
  111 + Wait Until Page Contains Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] 10
  112 + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"]
  113 + Wait Until Page Contains Element id=mForm:data:subject1 10
  114 + Input text id=mForm:data:subject1 ${dkpp_desc1}
  115 + Input text id=mForm:data:cCpv1_input ${cpv_id}
  116 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span 10
  117 + Click Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span
  118 + Input text id=mForm:data:unit1_input ${code}
  119 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] 10
  120 + Click Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1]
  121 + Input text id=mForm:data:amount1 ${quantity}
  122 + Input text id=mForm:data:cDkpp1_input ${dkpp_id11}
  123 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span 10
  124 + Click Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span
  125 + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"]
  126 + Wait Until Page Contains Element id=mForm:data:subject2 10
  127 + Input text id=mForm:data:subject2 ${dkpp_desc2}
  128 + Input text id=mForm:data:cCpv2_input ${cpv_id}
  129 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span 10
  130 + Click Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span
  131 + Input text id=mForm:data:unit2_input ${code}
  132 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] 10
  133 + Click Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1]
  134 + Input text id=mForm:data:amount2 ${quantity}
  135 + Input text id=mForm:data:cDkpp2_input ${dkpp_id2}
  136 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span 10
  137 + Click Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span
  138 + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"]
  139 + Wait Until Page Contains Element id=mForm:data:subject3 10
  140 + Input text id=mForm:data:subject3 ${dkpp_desc3}
  141 + Input text id=mForm:data:cCpv3_input ${cpv_id}
  142 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span 10
  143 + Click Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span
  144 + Input text id=mForm:data:unit3_input ${code}
  145 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] 10
  146 + Click Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1]
  147 + Input text id=mForm:data:amount3 ${quantity}
  148 + Input text id=mForm:data:cDkpp3_input ${dkpp_id3}
  149 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span 10
  150 + Click Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span
  151 +
14 152
15 Пошук тендера по ідентифікатору 153 Пошук тендера по ідентифікатору
16 [Arguments] @{ARGUMENTS} 154 [Arguments] @{ARGUMENTS}
@@ -29,3 +29,15 @@ Netcast: @@ -29,3 +29,15 @@ Netcast:
29 password: uStudio 29 password: uStudio
30 timout_on_wait: 15 30 timout_on_wait: 15
31 period_interval: 2 31 period_interval: 2
  32 +Netcast:
  33 + keywords_file: netcast
  34 + url: "http://dz2.byustudio.in.ua"
  35 + login: admin
  36 + password: uStudio
  37 + timout_on_wait: 15
  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
@@ -27,7 +27,7 @@ users: @@ -27,7 +27,7 @@ users:
27 login: st_org 27 login: st_org
28 password: 12345678 28 password: 12345678
29 browser: firefox 29 browser: firefox
30 - position: [0, 0] 30 + position: [700, 0]
31 size: [640, 450] 31 size: [640, 450]
32 E-tender_Provider2: 32 E-tender_Provider2:
33 broker: E-tender 33 broker: E-tender
@@ -41,7 +41,7 @@ users: @@ -41,7 +41,7 @@ users:
41 E-tender_Viewer: 41 E-tender_Viewer:
42 broker: E-tender 42 broker: E-tender
43 username: E-tendertest 43 username: E-tendertest
44 - browser: chrome 44 + browser: firefox
45 position: [0, 0] 45 position: [0, 0]
46 size: [640, 450] 46 size: [640, 450]
47 Prom_Owner: 47 Prom_Owner:
@@ -74,6 +74,15 @@ users: @@ -74,6 +74,15 @@ users:
74 browser: chrome 74 browser: chrome
75 position: [0, 450] 75 position: [0, 450]
76 size: [640, 450] 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 Netcast_Owner: 86 Netcast_Owner:
78 broker: Netcast 87 broker: Netcast
79 username: Netcasttest 88 username: Netcasttest
@@ -81,7 +90,7 @@ users: @@ -81,7 +90,7 @@ users:
81 login: ovramet.s@gmail.com 90 login: ovramet.s@gmail.com
82 password: Password1 91 password: Password1
83 browser: firefox 92 browser: firefox
84 - position: [0, 1080] 93 + position: [0, 0]
85 size: [1920, 1080] 94 size: [1920, 1080]
86 Netcast_Provider1: 95 Netcast_Provider1:
87 broker: Netcast 96 broker: Netcast
@@ -90,5 +99,29 @@ users: @@ -90,5 +99,29 @@ users:
90 login: halyna.khimka@gmail.com 99 login: halyna.khimka@gmail.com
91 password: JHO5VUp5n 100 password: JHO5VUp5n
92 browser: firefox 101 browser: firefox
93 - position: [0, 1080]  
94 - size: [1920, 1080]  
  102 + position: [0, 450]
  103 + size: [1920, 1080]
  104 + Publicbid_Owner:
  105 + broker: Publicbid
  106 + username: Publicbid
  107 + homepage: "https://public-bid.com.ua/test/"
  108 + login: yaroslav1boyko@gmail.com
  109 + password: Password1
  110 + browser: firefox
  111 + position: [0, 0]
  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]
@@ -6,6 +6,14 @@ from faker import Factory @@ -6,6 +6,14 @@ from faker import Factory
6 fake = Factory.create('uk_UA') 6 fake = Factory.create('uk_UA')
7 fake_ru = Factory.create('ru') 7 fake_ru = Factory.create('ru')
8 fake_en = Factory.create() 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 def test_tender_data(period_interval=2): 18 def test_tender_data(period_interval=2):
11 now = datetime.now() 19 now = datetime.now()
@@ -83,8 +91,8 @@ def test_tender_data(period_interval=2): @@ -83,8 +91,8 @@ def test_tender_data(period_interval=2):
83 } 91 }
84 ], 92 ],
85 "enquiryPeriod": { 93 "enquiryPeriod": {
86 - "startDate": (now + timedelta(minutes=2)).isoformat(),  
87 - "endDate": (now + timedelta(minutes=3)).isoformat() 94 + "startDate": (now).isoformat(),
  95 + "endDate": (now + timedelta(minutes=1)).isoformat()
88 }, 96 },
89 "tenderPeriod": { 97 "tenderPeriod": {
90 "startDate": (now + timedelta(minutes=2)).isoformat(), 98 "startDate": (now + timedelta(minutes=2)).isoformat(),
@@ -134,7 +142,7 @@ def prom_test_tender_data(): @@ -134,7 +142,7 @@ def prom_test_tender_data():
134 { 142 {
135 "description": fake.catch_phrase(), 143 "description": fake.catch_phrase(),
136 "deliveryDate": { 144 "deliveryDate": {
137 - "startDate": (now + timedelta(days=4)).isoformat(), 145 + "startDate": (now + timedelta(days=4)).isoformat(),
138 "endDate": (now + timedelta(days=5)).isoformat() 146 "endDate": (now + timedelta(days=5)).isoformat()
139 }, 147 },
140 "deliveryLocation": { 148 "deliveryLocation": {
@@ -151,7 +159,7 @@ def prom_test_tender_data(): @@ -151,7 +159,7 @@ def prom_test_tender_data():
151 "classification": { 159 "classification": {
152 "scheme": u"CPV", 160 "scheme": u"CPV",
153 "id": u"44617100-9", 161 "id": u"44617100-9",
154 - "description": u"Cartons" 162 + "description": u"Cartons",
155 }, 163 },
156 "additionalClassifications": [ 164 "additionalClassifications": [
157 { 165 {
@@ -180,40 +188,40 @@ def prom_test_tender_data(): @@ -180,40 +188,40 @@ def prom_test_tender_data():
180 def test_tender_data_multiple_lots(period_interval=2): 188 def test_tender_data_multiple_lots(period_interval=2):
181 now = datetime.now() 189 now = datetime.now()
182 return { 190 return {
183 - "title": fake.catch_phrase(),  
184 - "mode": "test",  
185 - "submissionMethodDetails": "quick",  
186 - "description": u"Тестовий тендер",  
187 - "description_en": "Test tender",  
188 - "description_ru": "Тестовый тендер",  
189 - "procuringEntity": {  
190 - "name": fake.company(),  
191 - "name_ru": fake_ru.company(),  
192 - "name_en": fake_en.company(),  
193 - "identifier": {  
194 - "scheme": u"UA-EDR",  
195 - "id": u"0000{}".format(fake.pyint()),  
196 - "uri": fake.image_url(width=None, height=None)  
197 - },  
198 - "address": {  
199 - "countryName": u"Україна",  
200 - "postalCode": fake.postalcode(),  
201 - "region": u"м. Київ",  
202 - "locality": u"м. Київ",  
203 - "streetAddress": fake.street_address()  
204 - },  
205 - "contactPoint": {  
206 - "name": fake.name(),  
207 - "telephone": fake.phone_number()  
208 - } 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 + }
209 }, 217 },
210 "value": { 218 "value": {
211 - "amount": 50000,  
212 - "currency": u"UAH"  
213 - },  
214 - "minimalStep": {  
215 - "amount": 100,  
216 - "currency": u"UAH" 219 + "amount": 50000,
  220 + "currency": u"UAH"
  221 + },
  222 + "minimalStep": {
  223 + "amount": 100,
  224 + "currency": u"UAH"
217 }, 225 },
218 "items": [ 226 "items": [
219 { 227 {
@@ -270,7 +278,8 @@ def test_tender_data_multiple_lots(period_interval=2): @@ -270,7 +278,8 @@ def test_tender_data_multiple_lots(period_interval=2):
270 "classification": { 278 "classification": {
271 "scheme": u"CPV", 279 "scheme": u"CPV",
272 "id": u"44617100-9", 280 "id": u"44617100-9",
273 - "description": u"Cartons" 281 + "description": u"Cartons",
  282 + "description_ua": u"Картонки"
274 }, 283 },
275 "additionalClassifications": [ 284 "additionalClassifications": [
276 { 285 {
@@ -304,7 +313,8 @@ def test_tender_data_multiple_lots(period_interval=2): @@ -304,7 +313,8 @@ def test_tender_data_multiple_lots(period_interval=2):
304 "classification": { 313 "classification": {
305 "scheme": u"CPV", 314 "scheme": u"CPV",
306 "id": u"44617100-9", 315 "id": u"44617100-9",
307 - "description": u"Cartons" 316 + "description": u"Cartons",
  317 + "description_ua": u"Картонки"
308 }, 318 },
309 "additionalClassifications": [ 319 "additionalClassifications": [
310 { 320 {
@@ -338,7 +348,8 @@ def test_tender_data_multiple_lots(period_interval=2): @@ -338,7 +348,8 @@ def test_tender_data_multiple_lots(period_interval=2):
338 "classification": { 348 "classification": {
339 "scheme": u"CPV", 349 "scheme": u"CPV",
340 "id": u"44617100-9", 350 "id": u"44617100-9",
341 - "description": u"Cartons" 351 + "description": u"Cartons",
  352 + "description_ua": u"Картонки"
342 }, 353 },
343 "additionalClassifications": [ 354 "additionalClassifications": [
344 { 355 {
@@ -355,12 +366,12 @@ def test_tender_data_multiple_lots(period_interval=2): @@ -355,12 +366,12 @@ def test_tender_data_multiple_lots(period_interval=2):
355 } 366 }
356 ], 367 ],
357 "enquiryPeriod": { 368 "enquiryPeriod": {
358 - "startDate": (now + timedelta(minutes=3)).isoformat(),  
359 - "endDate": (now + timedelta(minutes=4)).isoformat() 369 + "startDate": (now).isoformat(),
  370 + "endDate": (now + timedelta(minutes=1)).isoformat()
360 }, 371 },
361 "tenderPeriod": { 372 "tenderPeriod": {
362 - "startDate": (now + timedelta(minutes=4)).isoformat(),  
363 - "endDate": (now + timedelta(minutes=(5+period_interval))).isoformat() 373 + "startDate": (now + timedelta(minutes=2)).isoformat(),
  374 + "endDate": (now + timedelta(minutes=(2+period_interval))).isoformat()
364 } 375 }
365 } 376 }
366 377
@@ -462,7 +473,7 @@ def test_bid_data(): @@ -462,7 +473,7 @@ def test_bid_data():
462 } 473 }
463 } 474 }
464 }) 475 })
465 - 476 +
466 def auction_bid(): 477 def auction_bid():
467 return munchify({ 478 return munchify({
468 "data": {"value": { 479 "data": {"value": {
@@ -56,6 +56,9 @@ TestSuiteSetup @@ -56,6 +56,9 @@ TestSuiteSetup
56 Set Global Variable ${REPLIES} 56 Set Global Variable ${REPLIES}
57 ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode} 57 ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode}
58 Set Global Variable ${INITIAL_TENDER_DATA} 58 Set Global Variable ${INITIAL_TENDER_DATA}
  59 + ${TENDER}= Create Dictionary
  60 + Set Global Variable ${TENDER}
  61 + Log ${TENDER}
59 Log ${INITIAL_TENDER_DATA} 62 Log ${INITIAL_TENDER_DATA}
60 63
61 Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки 64 Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки
@@ -71,7 +74,7 @@ TestSuiteSetup @@ -71,7 +74,7 @@ TestSuiteSetup
71 ... ${ARGUMENTS[2]} == id 74 ... ${ARGUMENTS[2]} == id
72 75
73 ${now}= Get Current Date 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 ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta} 78 ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta}
76 Run Keyword If ${wait_timout}>0 Sleep ${wait_timout} 79 Run Keyword If ${wait_timout}>0 Sleep ${wait_timout}
77 80
@@ -83,23 +86,29 @@ TestSuiteSetup @@ -83,23 +86,29 @@ TestSuiteSetup
83 Звірити поле 86 Звірити поле
84 [Arguments] ${username} ${field} ${subject} 87 [Arguments] ${username} ${field} ${subject}
85 ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field} 88 ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field}
  89 + Should Not Be Equal ${field_response} ${None}
86 Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker} 90 Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker}
87 91
88 Звірити поле створеного тендера 92 Звірити поле створеного тендера
89 [Arguments] ${initial} ${tender_data} ${field} 93 [Arguments] ${initial} ${tender_data} ${field}
90 ${field_value}= Get_From_Object ${initial} ${field} 94 ${field_value}= Get_From_Object ${initial} ${field}
91 ${field_response}= Get_From_Object ${tender_data} ${field} 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 Should Be Equal ${field_value} ${field_response} 98 Should Be Equal ${field_value} ${field_response}
93 99
94 Звірити дату тендера 100 Звірити дату тендера
95 [Arguments] ${username} ${field} 101 [Arguments] ${username} ${field}
96 ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} 102 ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field}
  103 + Should Not Be Equal ${isodate} ${None}
97 Звірити дату ${username} ${field} ${isodate} 104 Звірити дату ${username} ${field} ${isodate}
98 105
99 Звірити дату 106 Звірити дату
100 [Arguments] ${username} ${field} ${subject} 107 [Arguments] ${username} ${field} ${subject}
101 ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field} 108 ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field}
102 ${returned}= compare_date ${subject} ${field_date} 109 ${returned}= compare_date ${subject} ${field_date}
  110 + Should Not Be Equal ${field_date} ${None}
  111 + Should Not Be Equal ${returned} ${None}
103 Should Be True '${returned}' == 'True' 112 Should Be True '${returned}' == 'True'
104 113
105 Звірити поля предметів закупівлі багатопредметного тендера 114 Звірити поля предметів закупівлі багатопредметного тендера
  1 +#!/usr/bin/env python
1 # -*- coding: utf-8 - 2 # -*- coding: utf-8 -
2 import os 3 import os
3 from munch import munchify, Munch, fromYAML 4 from munch import munchify, Munch, fromYAML
@@ -17,8 +18,9 @@ import time @@ -17,8 +18,9 @@ import time
17 from .initial_data import ( 18 from .initial_data import (
18 test_tender_data, test_question_data, test_question_answer_data, 19 test_tender_data, test_question_data, test_question_answer_data,
19 test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, 20 test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots,
20 - auction_bid, prom_test_tender_data 21 + auction_bid, prom_test_tender_data, create_fake_doc
21 ) 22 )
  23 +import calendar
22 24
23 TIMEZONE = timezone('Europe/Kiev') 25 TIMEZONE = timezone('Europe/Kiev')
24 26
@@ -161,4 +163,29 @@ def wait_to_date(date_stamp): @@ -161,4 +163,29 @@ def wait_to_date(date_stamp):
161 wait_seconds += 2 163 wait_seconds += 2
162 if wait_seconds < 0: 164 if wait_seconds < 0:
163 return 0 165 return 0
164 - return wait_seconds  
  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
  187 +
  188 +def local_path_to_file( file_name ):
  189 + path = os.getcwd()
  190 + path = path.split("brokers", 1)[0] + "documents/" + file_name
  191 + return path
@@ -26,36 +26,43 @@ ${question_id} 0 @@ -26,36 +26,43 @@ ${question_id} 0
26 *** Test Cases *** 26 *** Test Cases ***
27 Можливість оголосити однопредметний тендер 27 Можливість оголосити однопредметний тендер
28 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 28 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
29 - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}  
30 - ${TENDER_ID}= Get From List ${ids} 0  
31 - Set Global Variable ${TENDER_ID} 29 + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
  30 + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}
32 ${LAST_MODIFICATION_DATE}= Get Current Date 31 ${LAST_MODIFICATION_DATE}= Get Current Date
33 - 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}
34 35
35 Можливасть додати тендерну документацію 36 Можливасть додати тендерну документацію
36 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ 37 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ
37 - ${filename}= Set Variable file.txt 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}']}
38 45
39 - Викликати для учасника ${tender_owner} Завантажити документ ${filename} ${TENDER_ID}  
40 46
41 Можливість подати скаргу на умови 47 Можливість подати скаргу на умови
42 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови 48 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
43 - Викликати для учасника ${provider} Подати скаргу ${TENDER_ID} ${COMPLAINTS[0]} 49 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  50 + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
44 ${LAST_MODIFICATION_DATE}= Get Current Date 51 ${LAST_MODIFICATION_DATE}= Get Current Date
45 - Set Global Variable ${LAST_MODIFICATION_DATE} 52 + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
46 53
47 Можливість побачити скаргу користувачем 54 Можливість побачити скаргу користувачем
48 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера 55 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера
49 - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} 56 + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
50 57
51 можливість побачити скаргу анонімом 58 можливість побачити скаргу анонімом
52 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 59 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
53 - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} 60 + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
54 61
55 Пошук однопредметного тендера по ідентифікатору 62 Пошук однопредметного тендера по ідентифікатору
56 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору 63 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
57 Дочекатись синхронізації з майданчиком ${viewer} 64 Дочекатись синхронізації з майданчиком ${viewer}
58 - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} 65 + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
59 66
60 ###### 67 ######
61 #Відображення основних даних оголошеного тендера: 68 #Відображення основних даних оголошеного тендера:
@@ -77,7 +84,7 @@ ${question_id} 0 @@ -77,7 +84,7 @@ ${question_id} 0
77 Відображення tenderID оголошеного тендера 84 Відображення tenderID оголошеного тендера
78 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 85 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
79 ${field_response}= Викликати для учасника ${viewer} отримати інформацію із тендера tenderID 86 ${field_response}= Викликати для учасника ${viewer} отримати інформацію із тендера tenderID
80 - Should Be Equal ${TENDER_ID} ${field_response} Майданчик ${USERS.users['${viewer}'].broker} 87 + Should Be Equal ${TENDER['TENDER_UAID']} ${field_response} Майданчик ${USERS.users['${viewer}'].broker}
81 88
82 Відображення procuringEntity.name оголошеного тендера 89 Відображення procuringEntity.name оголошеного тендера
83 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 90 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
@@ -103,26 +110,18 @@ ${question_id} 0 @@ -103,26 +110,18 @@ ${question_id} 0
103 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 110 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
104 Звірити поле тендера ${viewer} minimalStep.amount 111 Звірити поле тендера ${viewer} minimalStep.amount
105 112
106 -Відображення тендерної документації оголошеного тендера  
107 - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера  
108 - Звірити поле тендера ${viewer} documents.title  
109 - #documents.format  
110 - #documents.url  
111 - #documents.datePublished  
112 - #documents.dateModified  
113 - #documents.id  
114 -  
115 Можливість редагувати однопредметний тендер 113 Можливість редагувати однопредметний тендер
116 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер 114 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
117 - Викликати для учасника ${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
118 124
119 -#Можливість додати позицію закупівлі в тендер  
120 -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
121 -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER_ID} 3  
122 -#  
123 -#Можливість видалити позиції закупівлі тендера  
124 -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер  
125 -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER_ID} 2  
126 125
127 ####### 126 #######
128 #Відображення однопредметного тендера 127 #Відображення однопредметного тендера
@@ -178,15 +177,15 @@ ${question_id} 0 @@ -178,15 +177,15 @@ ${question_id} 0
178 177
179 Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера 178 Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера
180 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера 179 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера
181 - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.scheme 180 + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].scheme
182 181
183 Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера 182 Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера
184 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера 183 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера
185 - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.id 184 + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].id
186 185
187 Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера 186 Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера
188 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера 187 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера
189 - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.description 188 + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].description
190 189
191 Відображення назви одиниці позицій закупівлі однопредметного тендера 190 Відображення назви одиниці позицій закупівлі однопредметного тендера
192 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера 191 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера
@@ -205,14 +204,14 @@ ${question_id} 0 @@ -205,14 +204,14 @@ ${question_id} 0
205 204
206 Задати питання 205 Задати питання
207 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання 206 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
208 - Викликати для учасника ${provider} Задати питання ${TENDER_ID} ${QUESTIONS[${question_id}]} 207 + Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]}
209 ${now}= Get Current Date 208 ${now}= Get Current Date
210 Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} 209 Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now}
211 210
212 Відображення заголовоку анонімного питання без відповіді 211 Відображення заголовоку анонімного питання без відповіді
213 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей 212 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
214 Дочекатись синхронізації з майданчиком ${viewer} 213 Дочекатись синхронізації з майданчиком ${viewer}
215 - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} 214 + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']}
216 Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title} 215 Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title}
217 216
218 Відображення опис анонімного питання без відповіді 217 Відображення опис анонімного питання без відповіді
@@ -227,183 +226,181 @@ ${question_id} 0 @@ -227,183 +226,181 @@ ${question_id} 0
227 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 226 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
228 ${bid}= test bid data 227 ${bid}= test bid data
229 Log ${bid} 228 Log ${bid}
230 - ${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}']}
231 234
232 ####### 235 #######
233 #Відображення відповіді на запитання 236 #Відображення відповіді на запитання
234 # 237 #
235 Відповісти на запитання 238 Відповісти на запитання
236 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання 239 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
237 - Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER_ID} 0 ${ANSWERS[0]} 240 + Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]}
238 ${now}= Get Current Date 241 ${now}= Get Current Date
239 Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} 242 Set To Dictionary ${ANSWERS[${question_id}].data} date ${now}
240 243
241 Відображення відповіді на запитання 244 Відображення відповіді на запитання
242 [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання 245 [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
243 Дочекатись синхронізації з майданчиком ${viewer} 246 Дочекатись синхронізації з майданчиком ${viewer}
244 - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} 247 + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']}
245 Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer} 248 Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer}
246 249
247 Можливість побачити скаргу користувачем під час періоду уточнень 250 Можливість побачити скаргу користувачем під час періоду уточнень
248 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера 251 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера
249 - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} 252 + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
250 253
251 можливість побачити скаргу анонімом під час періоду уточнень 254 можливість побачити скаргу анонімом під час періоду уточнень
252 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 255 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
253 - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} 256 + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
254 257
255 Подати цінову пропозицію bidder 258 Подати цінову пропозицію bidder
256 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 259 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
257 Дочекатись дати початоку прийому пропозицій 260 Дочекатись дати початоку прийому пропозицій
258 ${bid}= test bid data 261 ${bid}= test bid data
259 Log ${bid} 262 Log ${bid}
260 - ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_ID} ${bid} 263 + ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
261 Set Global Variable ${biddingresponce0} 264 Set Global Variable ${biddingresponce0}
262 log ${biddingresponce0} 265 log ${biddingresponce0}
263 266
264 Можливість скасувати цінову пропозицію 267 Можливість скасувати цінову пропозицію
265 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію 268 [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
266 - ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER_ID} ${biddingresponce0} 269 + ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponce0}
267 270
268 -Подати цінову пропозицію bidder1 271 +Подати повторно цінову пропозицію першим учасником
269 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію 272 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
270 Дочекатись дати початоку прийому пропозицій 273 Дочекатись дати початоку прийому пропозицій
271 ${bid}= test bid data 274 ${bid}= test bid data
272 Log ${bid} 275 Log ${bid}
273 - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_ID} ${bid}  
274 - Set Global Variable ${biddingresponce1}  
275 - 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}
276 280
277 -Можливість змінити цінову пропозицію до 50000 281 +Можливість змінити повторну цінову пропозицію до 50000
278 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 282 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
279 - Set To Dictionary ${biddingresponce1.data.value} amount 50000  
280 - Log ${biddingresponce1.data.value}  
281 - ${biddingresponce2}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER_ID} ${biddingresponce1}  
282 - Set Global Variable ${biddingresponce2}  
283 - 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}
284 288
285 -Можливість змінити цінову пропозицію до 1 289 +Можливість змінити повторну цінову пропозицію до 10
286 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію 290 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
287 - Set To Dictionary ${biddingresponce1.data.value} amount 1  
288 - Log ${biddingresponce1.data.value}  
289 - ${biddingresponce3}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER_ID} ${biddingresponce1}  
290 - Set Global Variable ${biddingresponce3}  
291 - 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}
292 296
293 -Завантажити документ першим учасником 297 +Завантажити документ першим учасником в повторну пропозицію
294 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця 298 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
295 log ${USERS.users['${provider}'].broker} 299 log ${USERS.users['${provider}'].broker}
296 - log ${biddingresponce1}  
297 - ${bid_id}= get variable value ${biddingresponce1.data.id}  
298 - ${token1}= Get Variable Value ${biddingresponce1.access.token}  
299 - log ${token1}  
300 - ${upload_doc_responce}= Викликати для учасника ${provider} Завантажити документ в ставку ${token1} ${bid_id}  
301 - Set Global Variable ${upload_doc_responce} 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}
  303 +
  304 +порівняти документ
  305 + [Tags] ${USERS.users['${provider}'].broker}: вичитати документ
  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 +
  311 + Should Be Equal ${flcntnt} ${doc}
  312 + Should Be Equal ${flpth} ${flnnm}
302 313
303 Можливість змінити документацію цінової пропозиції 314 Можливість змінити документацію цінової пропозиції
304 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця 315 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
305 log ${USERS.users['${provider}'].broker} 316 log ${USERS.users['${provider}'].broker}
306 - log ${biddingresponce1}  
307 - ${bid_id}= get variable value ${biddingresponce1.data.id}  
308 - ${token1}= Get Variable Value ${biddingresponce1.access.token}  
309 - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id}  
310 - log ${token1}  
311 - Викликати для учасника ${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}
312 322
313 Неможливість задати запитання після закінчення періоду уточнень 323 Неможливість задати запитання після закінчення періоду уточнень
314 [Documentation] 324 [Documentation]
315 ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" 325 ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
316 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання 326 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
317 - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER_ID} ${questions[${question_id}]} 327 + ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${questions[${question_id}]}
318 328
319 -Подати цінову пропозицію bidder2 329 +Подати цінову пропозицію другим учасником
320 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію 330 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
321 Дочекатись дати початоку прийому пропозицій 331 Дочекатись дати початоку прийому пропозицій
322 ${bid}= test bid data 332 ${bid}= test bid data
323 Log ${bid} 333 Log ${bid}
324 - ${biddingresponce5}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER_ID} ${bid}  
325 - Set Global Variable ${biddingresponce5}  
326 - 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}
327 340
328 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій 341 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій
329 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію 342 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
330 - ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера B 343 +
  344 + FIXME: finish the keyword
  345 +
  346 + ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера
331 347
332 Завантажити документ другим учасником 348 Завантажити документ другим учасником
333 - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця 349 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця
334 log ${USERS.users['${provider1}'].broker} 350 log ${USERS.users['${provider1}'].broker}
335 - ${bid_id2}= get variable value ${biddingresponce5.data.id}  
336 - ${token2}= Get Variable Value ${biddingresponce5.access.token}  
337 - log ${token2}  
338 - Викликати для учасника ${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}
339 354
340 Можливість побачити скаргу користувачем під час подачі пропозицій 355 Можливість побачити скаргу користувачем під час подачі пропозицій
341 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера 356 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера
342 - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} 357 + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
343 358
344 можливість побачити скаргу анонімом під час подачі пропозицій 359 можливість побачити скаргу анонімом під час подачі пропозицій
345 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера 360 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
346 - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]}  
347 - 361 + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
348 362
349 Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій 363 Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій
350 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій 364 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій
351 Дочекатись дати закінчення прийому пропозицій 365 Дочекатись дати закінчення прийому пропозицій
352 - Set To Dictionary ${biddingresponce1.data.value} amount 50000  
353 - Log ${biddingresponce5.data.value}  
354 - ${biddingresponce6}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5}  
355 - Set Global Variable ${biddingresponce6}  
356 - 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}
357 371
358 Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій 372 Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
359 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій 373 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
360 - Set To Dictionary ${biddingresponce5.data.value} amount 1  
361 - Log ${biddingresponce1.data.value}  
362 - ${biddingresponce7}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5}  
363 - Set Global Variable ${biddingresponce7}  
364 - 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}
365 379
366 Неможливість скасувати цінову пропозицію 380 Неможливість скасувати цінову пропозицію
367 - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію  
368 - ${biddingresponce8}= Викликати для учасника ${provider} скасувати цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} 381 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію
  382 + ${biddingresponce}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']}
369 383
370 Неможливість завантажити документ другим учасником після закінчення прийому пропозицій 384 Неможливість завантажити документ другим учасником після закінчення прийому пропозицій
371 - [Tags] ${USERS.users['${provider}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій  
372 - log ${USERS.users['${provider1}'].broker}  
373 - log ${biddingresponce5}  
374 - ${bid_id}= get variable value ${biddingresponce5.data.id}  
375 - ${token1}= Get Variable Value ${biddingresponce5.access.token}  
376 - log ${token1}  
377 - ${upload_doc_responce2}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${token1} ${bid_id}  
378 - log ${upload_doc_responce_2}  
379 - Set Global Variable ${upload_doc_responce2}  
380 -  
381 -Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій  
382 - [Tags] ${USERS.users['${provider}'].broker}: Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій  
383 - log ${USERS.users['${provider}'].broker}  
384 - log ${biddingresponce5}  
385 - ${bid_id}= get variable value ${biddingresponce5.data.id}  
386 - ${token1}= Get Variable Value ${biddingresponce5.access.token}  
387 - ${upload_doc_responce_id2}= get variable value ${upload_doc_responce2.data.id}  
388 - log ${upload_doc_responce_id2}  
389 - log ${token1}  
390 - Викликати для учасника ${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}
391 389
392 390
393 Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій 391 Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій
394 - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця  
395 - log ${USERS.users['${provider}'].broker}  
396 - log ${biddingresponce1}  
397 - ${bid_id}= get variable value ${biddingresponce1.data.id}  
398 - ${token1}= Get Variable Value ${biddingresponce1.access.token}  
399 - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id}  
400 - log ${token1}  
401 - Викликати для учасника ${provider} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id} 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}
402 398
403 399
404 -Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій  
405 - [Tags] ${USERS.users['${provider}'].broker}: Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій  
406 - ${biddingresponce8}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5}  
407 - Set Global Variable ${biddingresponce8}  
408 - log ${biddingresponce8}  
409 - 400 +Вичитати цінову пропозицію
  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}
  406 + log ${bids}
Please register or login to post a comment