Commit d78942d6f246092bd3a5c70bdb333280c4546af1

Authored by SavchukRoman
2 parents 05313d24 454bac38

Merge branch 'master', remote-tracking branch 'w-be/master'

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,57 +5,219 @@ Library DateTime
5 5
6 6 *** Variables ***
7 7 ${locator.tenderId} jquery=h3
8   -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)>
9   -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)>
10   -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)>
11   -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)>
12   -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)>
13   -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)>
14   -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)>
15   -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)>
16   -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)>
  8 +##Використовую такий шлях у кожного буде мінятись /yboi/. Міняйте на сві шлях до файлу
  9 +${file_add} /home/yboi/openprocurement.robottests.buildout/Document.docx
  10 +${locator.title} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[6]
  11 +${locator.description} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[7]
  12 +${locator.minimalStep.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[9]
  13 +${locator.value.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[8]
17 14
18 15 *** Keywords ***
19   -Підготувати дані для задання питання
20   - ${QUESTIONS}= prepare_test_question_data
21   - [return] ${QUESTIONS}
22   -
23 16 Підготувати клієнт для користувача
24 17 [Arguments] @{ARGUMENTS}
25 18 [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо
26 19 ... ${ARGUMENTS[0]} == username
27   - Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} alias=${ARGUMENTS[0]}
  20 + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]}
28 21 Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  22 + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  23 + Run Keyword If '${username}' != 'E-tender_Viewer' Login
29 24
30 25 Login
31 26 Wait Until Page Contains Element id=inputUsername 100
32 27 Input text id=inputUsername ${USERS.users['${username}'].login}
33   - Input text id=inputPassword ${USERS.users['${username}'].password}
  28 + Wait Until Page Contains Element id=inputPassword 100
  29 + Input text id=inputPassword ${USERS.users['${username}'].password}
34 30 Click Button id=btn_submit
35 31
  32 +Створити тендер
  33 + [Arguments] @{ARGUMENTS}
  34 + [Documentation]
  35 + ... ${ARGUMENTS[0]} == username
  36 + ... ${ARGUMENTS[1]} == initial_tender_data
  37 + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]}
  38 + ${items}= Get From Dictionary ${prepared_tender_data.data} items
  39 + ${title}= Get From Dictionary ${prepared_tender_data.data} title
  40 + ${description}= Get From Dictionary ${prepared_tender_data.data} description
  41 + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount
  42 + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount
  43 + ${items_description}= Get From Dictionary ${prepared_tender_data.data} description
  44 + ${quantity}= Get From Dictionary ${items[0]} quantity
  45 + ${cpv}= Get From Dictionary ${items[0].classification} id
  46 + ${unit}= Get From Dictionary ${items[0].unit} name
  47 + ${start_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate
  48 + ${start_date}= convert_date_to_etender_format ${start_date}
  49 + ${start_time}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate
  50 + ${start_time}= convert_time_to_etender_format ${start_time}
  51 + ${end_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate
  52 + ${end_date}= convert_date_to_etender_format ${end_date}
  53 + ${end_time}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate
  54 + ${end_time}= convert_time_to_etender_format ${end_time}
  55 + ${enquiry_end_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate
  56 + ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date}
  57 + ${enquiry_end_time}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate
  58 + ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time}
  59 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  60 + Wait Until Page Contains Мої закупівлі 100
  61 + Sleep 1
  62 + Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі']
  63 + Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')]
  64 + Sleep 1
  65 + Click Element xpath=//a[contains(@class, 'btn btn-info')]
  66 + Wait Until Page Contains Element id=title
  67 + Input text id=title ${title}
  68 + Input text id=description ${description}
  69 + Input text id=value ${budget}
  70 + Click Element xpath=//div[contains(@class, 'form-group col-sm-6')]//input[@type='checkbox']
  71 + Input text id=minimalStep ${step_rate}
  72 + Input text id=itemsDescription ${items_description}
  73 + Input text id=itemsQuantity ${quantity}
  74 + Wait Until Page Contains Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram']
  75 + Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram']
  76 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date}
  77 + 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}
  78 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='startDate'] ${start_date}
  79 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.tenderPeriod.startDate'] ${start_time}
  80 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='endDate'] ${end_date}
  81 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.tenderPeriod.endDate'] ${end_time}
  82 + Sleep 2
  83 + Click Element xpath=//div[contains(@class, 'col-sm-2')]//input[@data-target='#classification']
  84 + Sleep 1
  85 + Input text xpath=//div[contains(@class, 'modal-content')]//input[@ng-model='searchstring'] ${cpv}
  86 + Sleep 2
  87 + Wait Until Page Contains ${cpv}
  88 + Click Element xpath=//td[contains(., '${cpv}')]
  89 + Sleep 1
  90 + Click Element xpath=//div[contains(@class, 'modal-content')]//button[@ng-click='choose()']
  91 + Sleep 1
  92 + Додати предмет ${items[0]} 0
  93 + Run Keyword if '${mode}' == 'multi' Додати багато предметів items
  94 + Sleep 1
  95 + Wait Until Page Contains Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  96 + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  97 + Sleep 1
  98 + Wait Until Page Contains [ТЕСТУВАННЯ] 100
  99 + Sleep 20
  100 + Click Element xpath=//*[text()='${title}']
  101 + Sleep 5
  102 + ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")]
  103 + ${tender_UAid}= Get Substring ${tender_UAid} 10
  104 + ${Ids}= Convert To String ${tender_UAid}
  105 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid}
  106 + [return] ${Ids}
  107 +
  108 +Set Multi Ids
  109 + [Arguments] @{ARGUMENTS}
  110 + [Documentation]
  111 + ... ${ARGUMENTS[0]} == ${tender_UAid}
  112 + ${current_location}= Get Location
  113 + ${id}= Get Substring ${current_location} 10
  114 + ${Ids}= Create List ${tender_UAid} ${id}
  115 +
  116 +Oтримати internal id по UAid
  117 + [Arguments] @{ARGUMENTS}
  118 + [Documentation]
  119 + ... ${ARGUMENTS[0]} == username
  120 + ... ${ARGUMENTS[1]} == ${tender_UAid}
  121 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  122 + ${current_location}= Get Location
  123 + ${tender_id}= Fetch From Right ${current_location} /
  124 + [return] ${tender_id}
  125 +
  126 +Додати предмет
  127 + [Arguments] @{ARGUMENTS}
  128 + [Documentation]
  129 + ... ${ARGUMENTS[0]} == items
  130 + ... ${ARGUMENTS[1]} == ${INDEX}
  131 + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description
  132 + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id
  133 + Sleep 2
  134 + Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[${ARGUMENTS[1]}+1]
  135 + Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')]
  136 + Sleep 2
  137 + Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc}
  138 + Wait Until Page Contains ${dkpp_id}
  139 + Sleep 1
  140 + Click Element xpath=//td[contains(., '${dkpp_id}')]
  141 + Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()']
  142 + Sleep 2
  143 +
  144 +Додати багато предметів
  145 + [Arguments] @{ARGUMENTS}
  146 + [Documentation]
  147 + ... ${ARGUMENTS[0]} == items
  148 + ${Items_length}= Get Length ${items}
  149 + : FOR ${INDEX} IN RANGE 1 ${Items_length}
  150 + \ Click Element xpath=.//*[@id='myform']/tender-form/div/button
  151 + \ Додати предмет ${items[${INDEX}]} ${INDEX}
  152 +
36 153 Пошук тендера по ідентифікатору
37 154 [Arguments] @{ARGUMENTS}
38 155 [Documentation]
39 156 ... ${ARGUMENTS[0]} == username
40   - ... ${ARGUMENTS[1]} == tenderId
41   - ... ${ARGUMENTS[2]} == id
  157 + ... ${ARGUMENTS[1]} == ${TENDER_UAID}
42 158 Switch browser ${ARGUMENTS[0]}
43   - ${current_location}= Get Location
44   - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page
45 159 Go to ${BROKERS['${USERS.users['${username}'].broker}'].url}
46   - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10
  160 + Wait Until Page Contains Список закупівель 10
47 161 sleep 1
48 162 Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]}
49 163 Click Link jquery=a[ng-click='search()']
50 164 sleep 2
51   -# ${last_note_id}= Add pointy note jquery=a[href^="#/tenderDetailes"] Found tender with tenderID "${ARGUMENTS[1]}" width=200 position=bottom
52   -# sleep 1
53   -# Remove element ${last_note_id}
54 165 Click Link jquery=a[href^="#/tenderDetailes"]
55 166 Wait Until Page Contains ${ARGUMENTS[1]} 10
56 167 sleep 1
57 168 Capture Page Screenshot
58 169
  170 +Подати цінову пропозицію
  171 + [Arguments] @{ARGUMENTS}
  172 + [Documentation]
  173 + ... ${ARGUMENTS[0]} == username
  174 + ... ${ARGUMENTS[1]} == ${TENDER_UAID}
  175 + ... ${ARGUMENTS[2]} == test_bid_data
  176 +
  177 + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount
  178 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  179 + Wait Until Page Contains Інформація про процедуру закупівлі 100
  180 + Wait Until Page Contains Element id=amount 10
  181 + Input text id=amount ${bid}
  182 + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції']
  183 +
  184 +Задати питання
  185 + [Arguments] @{ARGUMENTS}
  186 + [Documentation]
  187 + ... ${ARGUMENTS[0]} = username
  188 + ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  189 + ... ${ARGUMENTS[2]} = question_data
  190 +
  191 + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title
  192 + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  193 +
  194 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  195 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  196 +
  197 + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100
  198 + Click Element jquery=a[href^="#/addQuestion/"]
  199 + Wait Until Page Contains Element id=title
  200 + Input text id=title ${title}
  201 + Input text id=description ${description}
  202 + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  203 +
  204 +Відповісти на питання
  205 + [Arguments] @{ARGUMENTS}
  206 + [Documentation]
  207 + ... ${ARGUMENTS[0]} = username
  208 + ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  209 + ... ${ARGUMENTS[2]} = 0
  210 + ... ${ARGUMENTS[3]} = answer_data
  211 +
  212 + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer
  213 +
  214 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  215 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  216 +
  217 + Click Element xpath=//div[div/pre[1]]/div[1]
  218 + Input text xpath=//div[textarea]/textarea ${answer}
  219 + Click Element xpath=//div[textarea]/span/button[1]
  220 +
59 221 обновити сторінку з тендером
60 222 [Arguments] @{ARGUMENTS}
61 223 [Documentation]
... ... @@ -68,6 +230,61 @@ Login
68 230 Wait Until Page Contains ${ARGUMENTS[1]} 10
69 231 sleep 1
70 232
  233 +Внести зміни в тендер
  234 + [Arguments] @{ARGUMENTS}
  235 + [Documentation]
  236 + ... ${ARGUMENTS[0]} = username
  237 + ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  238 + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} single
  239 + ${tender_data}= Add_data_for_GUI_FrontEnds ${ADDITIONAL_DATA}
  240 + ${items}= Get From Dictionary ${tender_data.data} items
  241 + ${description}= Get From Dictionary ${tender_data.data} description
  242 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  243 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  244 + Wait Until Page Contains Element xpath=//a[@class='btn btn-primary ng-scope'] 10
  245 + Click Element xpath=//a[@class='btn btn-primary ng-scope']
  246 + Sleep 2
  247 + Input text id=description ${description}
  248 + Click Element xpath=//button[@class='btn btn-info ng-isolate-scope']
  249 + Capture Page Screenshot
  250 +
  251 +додати предмети закупівлі
  252 + [Arguments] @{ARGUMENTS}
  253 + [Documentation]
  254 + ... ${ARGUMENTS[0]} = username
  255 + ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  256 + ... ${ARGUMENTS[2]} = 3
  257 + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} multi
  258 + ${tender_data}= Add_data_for_GUI_FrontEnds ${ADDITIONAL_DATA}
  259 + ${items}= Get From Dictionary ${tender_data.data} items
  260 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  261 + Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію
  262 + Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' видалити позиції
  263 +
  264 +додати позицію
  265 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  266 + Sleep 2
  267 + Click Element xpath=//a[@class='btn btn-primary ng-scope']
  268 + Sleep 2
  269 + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1
  270 + \ Click Element xpath=.//*[@id='myform']/tender-form/div/button
  271 + \ Додати предмет ${items[${INDEX}]} ${INDEX}
  272 + Sleep 2
  273 + Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни']
  274 + Wait Until Page Contains [ТЕСТУВАННЯ] 100
  275 +
  276 +видалити позиції
  277 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  278 + Click Element xpath=//a[@class='btn btn-primary ng-scope']
  279 + Sleep 2
  280 + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1
  281 + \ Click Element xpath=(//button[@class='btn btn-danger ng-scope'])[last()]
  282 + \ Sleep 1
  283 + Sleep 2
  284 + Wait Until Page Contains Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] 10
  285 + Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни']
  286 + Wait Until Page Contains [ТЕСТУВАННЯ] 100
  287 +
71 288 отримати інформацію із тендера
72 289 [Arguments] @{ARGUMENTS}
73 290 [Documentation]
... ... @@ -75,15 +292,9 @@ Login
75 292 ... ${ARGUMENTS[1]} == fieldname
76 293 Switch browser ${ARGUMENTS[0]}
77 294 ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]}
  295 + Log ${return_value}
78 296 [return] ${return_value}
79 297
80   -Відмітити на сторінці поле з тендера
81   - [Arguments] ${fieldname} ${locator}
82   - ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom
83   - Align elements horizontally ${locator} ${last_note_id}
84   - sleep 1
85   - Remove element ${last_note_id}
86   -
87 298 Отримати тест із поля і показати на сторінці
88 299 [Arguments] ${fieldname}
89 300 sleep 3
... ... @@ -91,16 +302,12 @@ Login
91 302 ${return_value}= Get Text ${locator.${fieldname}}
92 303 [return] ${return_value}
93 304
94   -отримати інформацію про tenderId
95   - ${return_value}= Отримати тест із поля і показати на сторінці tenderId
96   - [return] ${return_value.split(' ')[1]}
97   -
98 305 отримати інформацію про title
99 306 ${return_value}= Отримати тест із поля і показати на сторінці title
100 307 [return] ${return_value}
101 308
102 309 отримати інформацію про description
103   - ${return_value}= Отримати тест із поля і показати на сторінці description
  310 + ${return_value}= Отримати тест із поля і показати на сторінці description
104 311 [return] ${return_value}
105 312
106 313 отримати інформацію про minimalStep.amount
... ... @@ -108,17 +315,28 @@ Login
108 315 ${return_value}= Convert To Number ${return_value.split(' ')[0]}
109 316 [return] ${return_value}
110 317
111   -отримати інформацію про procuringEntity.name
112   - ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name
113   - [return] ${return_value}
114   -
115   -
116 318 отримати інформацію про value.amount
117   - ${return_value}= Отримати тест із поля і показати на сторінці value.amount
  319 + ${return_value}= Отримати тест із поля і показати на сторінці value.amount
118 320 ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3])
119 321 ${return_value}= Convert To Number ${return_value}
120 322 [return] ${return_value}
121 323
  324 +Відмітити на сторінці поле з тендера
  325 + [Arguments] ${fieldname} ${locator}
  326 + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom
  327 + Align elements horizontally ${locator} ${last_note_id}
  328 + sleep 1
  329 + Remove element ${last_note_id}
  330 +
  331 +отримати інформацію про tenderId
  332 + ${return_value}= отримати тест із поля і показати на сторінці tenderId
  333 + ${return_value}= Get Substring ${return_value} 10
  334 + [return] ${return_value}
  335 +
  336 +отримати інформацію про procuringEntity.name
  337 + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name
  338 + [return] ${return_value}
  339 +
122 340 отримати інформацію про tenderPeriod.startDate
123 341 ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate
124 342 [return] ${return_value}
... ... @@ -135,7 +353,6 @@ Login
135 353 ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate
136 354 [return] ${return_value}
137 355
138   -
139 356 отримати інформацію про items[${item_id}].description
140 357 відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)>
141 358 ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)>
... ... @@ -190,25 +407,3 @@ Login
190 407 відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last>
191 408 ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last>
192 409 [return] ${return_value}
193   -
194   -Задати питання
195   - [Arguments] @{QUESTIONS}
196   - [Documentation]
197   - ... ${QUESTIONS[0]} == question_data
198   - Login
199   - ${title}= Get From Dictionary ${QUESTIONS[0].data} title
200   - ${description}= Get From Dictionary ${QUESTIONS[0].data} description
201   - Wait Until Page Contains Element jquery=a[href="#/"]
202   - Click Element jquery=a[href="#/"]
203   - Wait Until Page Contains Element jquery=input[ng-change='search()']
204   - Input Text jquery=input[ng-change='search()'] UA-2015-06-30-000012 #Так як немає попередніх тестів, використовую хард-код
205   - Wait Until Page Contains Element jquery=a[ng-click="search()"]
206   - Click Element jquery=a[ng-click="search()"]
207   - Wait Until Page Contains [ТЕСТУВАННЯ] 100
208   - Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a
209   - Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"]
210   - Click Link jquery=a[href^="#/addQuestion/"]
211   - Wait Until Page Contains Element id=title
212   - Input text id=title ${title}
213   - Input text id=description ${description}
214   - Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
\ No newline at end of file
... ...
... ... @@ -3,47 +3,372 @@ Library Selenium2Screenshots
3 3 Library String
4 4 Library DateTime
5 5
6   -*** Variables ***
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 6
  7 +*** Variables ***
  8 +${file_path} local_path_to_file("TestDocument.docx")
  9 +${locator.tenderId} xpath=//td[./text()='TenderID']/following-sibling::td[1]
  10 +${locator.title} xpath=//td[./text()='Загальна назва закупівлі']/following-sibling::td[1]
  11 +${locator.description} xpath=//td[./text()='Предмет закупівлі']/following-sibling::td[1]
  12 +${locator.value.amount} xpath=//td[./text()='Максимальний бюджет']/following-sibling::td[1]
  13 +${locator.minimalStep.amount} xpath=//td[./text()='Крок зменшення ціни']/following-sibling::td[1]
  14 +${locator.enquiryPeriod.endDate} xpath=//td[./text()='Завершення періоду обговорення']/following-sibling::td[1]
  15 +${locator.tenderPeriod.endDate} xpath=//td[./text()='Завершення періоду прийому пропозицій']/following-sibling::td[1]
  16 +${locator.items[0].deliveryAddress.countryName} xpath=//td[@class='nameField'][./text()='Адреса поставки']/following-sibling::td[1]
  17 +${locator.items[0].deliveryDate} xpath=//td[./text()='Кінцева дата поставки']/following-sibling::td[1]
  18 +${locator.items[0].classification.scheme} xpath=//td[@class = 'nameField'][./text()='Клас CPV']
  19 +${locator.items[0].additionalClassifications[0].scheme} xpath=//td[@class = 'nameField'][./text()='Клас ДКПП']
18 20
19 21 *** Keywords ***
20 22 Підготувати клієнт для користувача
21   - [Arguments] ${username}
22   - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо
23   - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username}
24   - Set Window Position @{USERS.users['${username}'].position}
25   - Set Window Size @{USERS.users['${username}'].size}
26   - Log Variables
  23 + [Arguments] @{ARGUMENTS}
  24 + [Documentation] Відкрити брaузер, створити обєкт api wrapper, тощо
  25 + ... ${ARGUMENTS[0]} == username
  26 + Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]}
  27 + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  28 + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  29 + Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]}
  30 + Wait Until Page Contains Element jquery=a[href="/cabinet"]
  31 + Click Element jquery=a[href="/cabinet"]
  32 + Run Keyword If '${username}' != 'Netcast_Viewer' Login
  33 +
  34 +Login
  35 + [Arguments] @{ARGUMENTS}
  36 + Wait Until Page Contains Element name=email 10
  37 + Input text name=email mail
  38 + Sleep 1
  39 + Input text name=email ${USERS.users['${username}'].login}
  40 + Sleep 2
  41 + Input text name=psw ${USERS.users['${username}'].password}
  42 + Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 20
  43 + Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет']
  44 +
  45 +Pre Login
  46 + [Arguments] @{ARGUMENTS}
  47 + [Documentation]
  48 + ... ${ARGUMENTS[0]} == username
  49 + Wait Until Page Contains Element name=siteLogin 10
  50 + Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login}
  51 + Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password}
  52 + Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input
  53 +
  54 +Створити тендер
  55 + [Arguments] @{ARGUMENTS}
  56 + [Documentation]
  57 + ... ${ARGUMENTS[0]} == username
  58 + ... ${ARGUMENTS[1]} == tender_data
  59 + #{tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]}
  60 + ${items}= Get From Dictionary ${ARGUMENTS[1].data} items
  61 + ${title}= Get From Dictionary ${ARGUMENTS[1].data} title
  62 + ${description}= Get From Dictionary ${ARGUMENTS[1].data} description
  63 + ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount
  64 + ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount
  65 + ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description
  66 + ${quantity}= Get From Dictionary ${items[0]} quantity
  67 + ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName
  68 + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate
  69 + ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date}
  70 + ${cpv}= Convert To String Картонки
  71 + ${cpv_id}= Get From Dictionary ${items[0].classification} id
  72 + ${cpv_id1}= Replace String ${cpv_id} - _
  73 + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description
  74 + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id
  75 + ${dkpp_id1}= Replace String ${dkpp_id} - _
  76 + ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate
  77 + ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date}
  78 + ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate
  79 + ${end_date}= convert_date_to_slash_format ${end_date}
  80 +
  81 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  82 + Wait Until Page Contains Element jquery=a[href="/tenders/new"] 100
  83 + Click Element jquery=a[href="/tenders/new"]
  84 + Wait Until Page Contains Element name=tender_title 100
  85 + Input text name=tender_title ${title}
  86 + Input text name=tender_description ${description}
  87 + Input text name=tender_value_amount ${budget}
  88 + Input text name=tender_minimalStep_amount ${step_rate}
  89 + Input text name=items[0][item_description] ${items_description}
  90 + Input text name=items[0][item_quantity] ${quantity}
  91 + Input text name=items[0][item_deliveryAddress_countryName] ${countryName}
  92 + Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date}
  93 + Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником']
  94 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]
  95 + Input text id=search ${cpv}
  96 + Wait Until Page Contains ${cpv_id}
  97 + Click Element xpath=//a[contains(@id,'${cpv_id1}')]
  98 + Click Element xpath=.//*[@id='select']
  99 + Unselect Frame
  100 + Click Element xpath=//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником']
  101 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')]
  102 + Input text id=search ${dkpp_desc}
  103 + Wait Until Page Contains ${dkpp_id}
  104 + Click Element xpath=//a[contains(@id,'${dkpp_id1}')]
  105 + Click Element xpath=.//*[@id='select']
  106 + Unselect Frame
  107 + Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date}
  108 + Input text name=tender_tenderPeriod_endDate ${end_date}
  109 + Run Keyword if '${mode}' == 'multi' Додати предмет items
  110 + Wait Until Page Contains Element name=do 100
  111 + Click Element name=do
  112 + Wait Until Page Contains Element xpath=//a[contains(@class, 'button pubBtn')] 100
  113 + Click Element xpath=//a[contains(@class, 'button pubBtn')]
  114 + Wait Until Page Contains Тендер опубліковано 100
  115 + ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2]
  116 + ${Ids}= Convert To String ${tender_UAid}
  117 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid}
  118 + [return] ${Ids}
  119 +
  120 +Set Multi Ids
  121 + [Arguments] @{ARGUMENTS}
  122 + [Documentation]
  123 + ... ${ARGUMENTS[1]} == ${tender_UAid}
  124 + ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2]
  125 + ${Ids}= Create List ${tender_UAid} ${id}
  126 +
  127 +Додати предмет
  128 + [Arguments] @{ARGUMENTS}
  129 + [Documentation]
  130 + ... ${ARGUMENTS[0]} == items
  131 + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description
  132 + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id
  133 + ${dkpp_1id}= Replace String ${dkpp_id11} - _
  134 + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description
  135 + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id
  136 + ${dkpp_id2_1}= Replace String ${dkpp_id2} - _
  137 + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description
  138 + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id
  139 + ${dkpp_id3_1}= Replace String ${dkpp_id3} - _
  140 +
  141 + Wait Until Page Contains Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі']
  142 + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі']
  143 + Wait Until Page Contains Element name=items[1][item_description] 100
  144 + Input text name=items[1][item_description] ${description}
  145 + Input text name=items[1][item_quantity] ${quantity}
  146 + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[2]
  147 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]
  148 + Input text id=search ${cpv}
  149 + Wait Until Page Contains ${cpv_id}
  150 + Click Element xpath=//a[contains(@id,'${cpv_id1}')]
  151 + Click Element xpath=.//*[@id='select']
  152 + Unselect Frame
  153 + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[2]
  154 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')]
  155 + Input text id=search ${dkpp_desc1}
  156 + Wait Until Page Contains ${dkpp_id11}
  157 + Click Element xpath=//a[contains(@id,'${dkpp_1id}')]
  158 + Click Element xpath=.//*[@id='select']
  159 + Unselect Frame
  160 + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі']
  161 + Wait Until Page Contains Element name=items[2][item_description] 100
  162 + Input text name=items[2][item_description] ${description}
  163 + Input text name=items[2][item_quantity] ${quantity}
  164 + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[3]
  165 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]
  166 + Input text id=search ${cpv}
  167 + Wait Until Page Contains ${cpv_id}
  168 + Click Element xpath=//a[contains(@id,'${cpv_id1}')]
  169 + Click Element xpath=.//*[@id='select']
  170 + Unselect Frame
  171 + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[3]
  172 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')]
  173 + Input text id=search ${dkpp_desc2}
  174 + Wait Until Page Contains ${dkpp_id2}
  175 + Click Element xpath=//a[contains(@id,'${dkpp_id2_1}')]
  176 + Click Element xpath=.//*[@id='select']
  177 + Unselect Frame
  178 + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі']
  179 + Wait Until Page Contains Element name=items[3][item_description] 100
  180 + Input text name=items[3][item_description] ${description}
  181 + Input text name=items[3][item_quantity] ${quantity}
  182 + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[4]
  183 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')]
  184 + Input text id=search ${cpv}
  185 + Wait Until Page Contains ${cpv_id}
  186 + Click Element xpath=//a[contains(@id,'${cpv_id1}')]
  187 + Click Element xpath=.//*[@id='select']
  188 + Unselect Frame
  189 + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[4]
  190 + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')]
  191 + Input text id=search ${dkpp_desc3}
  192 + Wait Until Page Contains ${dkpp_id3}
  193 + Click Element xpath=//a[contains(@id,'${dkpp_id3_1}')]
  194 + Click Element xpath=.//*[@id='select']
  195 + Unselect Frame
  196 + Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date}
  197 + Input text name=tender_tenderPeriod_endDate ${end_date}
27 198
28 199 Пошук тендера по ідентифікатору
29 200 [Arguments] @{ARGUMENTS}
30 201 [Documentation]
31 202 ... ${ARGUMENTS[0]} == username
32 203 ... ${ARGUMENTS[1]} == tenderId
33   - ... ${ARGUMENTS[2]} == id
34 204 Switch browser ${ARGUMENTS[0]}
35   - ${current_location}= Get Location
36   - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page
37 205 Go to ${BROKERS['${USERS.users['${username}'].broker}'].url}
38   - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10
  206 + Wait Until Page Contains Держзакупівлі.онлайн 10
  207 + Click Element xpath=//a[text()='Закупівлі']
39 208 sleep 1
40   - Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]}
41   - Click Link jquery=a[ng-click='search()']
42   - sleep 2
43   - ${last_note_id}= Add pointy note jquery=a[href^="#/tenderDetailes"] Found tender with tenderID "${ARGUMENTS[1]}" width=200 position=bottom
  209 + Click Element xpath=//select[@name='filter[object]']/option[@value='tenderID']
  210 + Input text xpath=//input[@name='filter[search]'] ${ARGUMENTS[1]}
  211 + Click Element xpath=//button[@class='btn'][./text()='Пошук']
  212 + Wait Until Page Contains ${ARGUMENTS[1]} 10
  213 + Capture Page Screenshot
44 214 sleep 1
45   - Remove element ${last_note_id}
46   - Click Link jquery=a[href^="#/tenderDetailes"]
47   - Wait Until Page Contains ${ARGUMENTS[1]} 10
  215 + Click Element xpath=//a[@class='reverse tenderLink']
  216 +
  217 +Задати питання
  218 + [Arguments] @{ARGUMENTS}
  219 + [Documentation]
  220 + ... ${ARGUMENTS[0]} == username
  221 + ... ${ARGUMENTS[1]} == tenderUaId
  222 + ... ${ARGUMENTS[2]} == questionId
  223 + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title
  224 + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  225 +
  226 +
  227 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  228 + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  229 +
  230 + Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20
  231 + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]
  232 + Wait Until Page Contains Element name=title 20
  233 + Input text name=title ${title}
  234 + Input text xpath=//textarea[@name='description'] ${description}
  235 + Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit']
  236 + Wait Until Page Contains ${title} 30
  237 + Capture Page Screenshot
  238 +
  239 +Відповісти на питання
  240 + [Arguments] @{ARGUMENTS}
  241 + [Documentation]
  242 + ... ${ARGUMENTS[0]} = username
  243 + ... ${ARGUMENTS[1]} = tenderUaId
  244 + ... ${ARGUMENTS[2]} = 0
  245 + ... ${ARGUMENTS[3]} = answer_data
  246 +
  247 + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer
  248 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  249 + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  250 +
  251 + Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20
  252 + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']]
  253 + Wait Until Page Contains Element xpath=//textarea[@name='answer'] 20
  254 + Input text xpath=//textarea[@name='answer'] ${answer}
  255 + Click Element xpath=//div[1]/div[3]/form/div/table/tbody/tr/td[2]/button
  256 + Wait Until Page Contains ${answer} 30
  257 + Capture Page Screenshot
  258 +
  259 +Подати скаргу
  260 + [Arguments] @{ARGUMENTS}
  261 + [Documentation]
  262 + ... ${ARGUMENTS[0]} = username
  263 + ... ${ARGUMENTS[1]} = tenderUaId
  264 + ... ${ARGUMENTS[2]} = complaintsId
  265 + ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title
  266 + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  267 +
  268 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  269 + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  270 + sleep 1
  271 + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']]
  272 + Wait Until Page Contains Element name=title 20
  273 + Input text name=title ${complaint}
  274 + Input text xpath=//textarea[@name='description'] ${description}
  275 + Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit']
  276 + Wait Until Page Contains ${complaint} 30
  277 + Capture Page Screenshot
  278 +
  279 +Порівняти скаргу
  280 + [Arguments] @{ARGUMENTS}
  281 + [Documentation]
  282 + ... ${ARGUMENTS[0]} = username
  283 + ... ${ARGUMENTS[1]} = tenderUaId
  284 + ... ${ARGUMENTS[2]} = complaintsData
  285 + ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title
  286 + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  287 +
  288 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  289 + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  290 + sleep 1
  291 + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']]
  292 + Wait Until Page Contains ${complaint} 30
  293 + Capture Page Screenshot
  294 +
  295 +
  296 +
  297 +Внести зміни в тендер
  298 + # Тест написано для уже існуючого тендеру, що знаходиться у чернетках користувача
  299 + [Arguments] @{ARGUMENTS}
  300 + [Documentation]
  301 + ... ${ARGUMENTS[0]} = username
  302 + ... ${ARGUMENTS[1]} = description
  303 +
  304 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  305 + Click Element xpath=//a[@class='reverse'][./text()='Мої закупівлі']
  306 + Wait Until Page Contains Element xpath=//a[@class='reverse'][./text()='Чернетки'] 30
  307 + Click Element xpath=//a[@class='reverse'][./text()='Чернетки']
  308 + Wait Until Page Contains Element xpath=//a[@class='reverse tenderLink'] 30
  309 + Click Element xpath=//a[@class='reverse tenderLink']
  310 + sleep 1
  311 + Click Element xpath=//a[@class='button save'][./text()='Редагувати']
  312 + sleep 1
  313 + Input text name=tender_title ${ARGUMENTS[1]}
48 314 sleep 1
49   - Capture Page Screenshot
\ No newline at end of file
  315 + Click Element xpath=//button[@class='saveDraft']
  316 + Wait Until Page Contains ${ARGUMENTS[1]} 30
  317 + Capture Page Screenshot
  318 +
  319 +отримати інформацію із тендера
  320 + [Arguments] @{ARGUMENTS}
  321 + [Documentation]
  322 + ... ${ARGUMENTS[0]} == username
  323 + ... ${ARGUMENTS[1]} == fieldname
  324 + Switch browser ${ARGUMENTS[0]}
  325 + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]}
  326 + [return] ${return_value}
  327 +
  328 +отримати тест із поля і показати на сторінці
  329 + [Arguments] ${fieldname}
  330 + sleep 5
  331 + ${return_value}= Get Text ${locator.${fieldname}}
  332 + [return] ${return_value}
  333 +
  334 +отримати інформацію про title
  335 + ${title}= отримати тест із поля і показати на сторінці title
  336 + [return] ${title}
  337 +
  338 +отримати інформацію про description
  339 + ${description}= отримати тест із поля і показати на сторінці description
  340 + [return] ${description}
  341 +
  342 +отримати інформацію про tenderId
  343 + ${tenderId}= отримати тест із поля і показати на сторінці tenderId
  344 + [return] ${tenderId}
  345 +
  346 +отримати інформацію про value.amount
  347 + ${valueAmount}= отримати тест із поля і показати на сторінці value.amount
  348 + ${valueAmount}= Convert To Number ${valueAmount.split(' ')[0]}
  349 + [return] ${valueAmount}
  350 +
  351 +отримати інформацію про minimalStep.amount
  352 + ${minimalStepAmount}= отримати тест із поля і показати на сторінці minimalStep.amount
  353 + ${minimalStepAmount}= Convert To Number ${minimalStepAmount.split(' ')[0]}
  354 + [return] ${minimalStepAmount}
  355 +
  356 +отримати інформацію про enquiryPeriod.endDate
  357 + ${enquiryPeriodEndDate}= отримати тест із поля і показати на сторінці enquiryPeriod.endDate
  358 + [return] ${enquiryPeriodEndDate}
  359 +
  360 +отримати інформацію про tenderPeriod.endDate
  361 + ${tenderPeriodEndDate}= отримати тест із поля і показати на сторінці tenderPeriod.endDate
  362 + [return] ${tenderPeriodEndDate}
  363 +
  364 +отримати інформацію про items[0].deliveryAddress.countryName
  365 + ${countryName}= отримати тест із поля і показати на сторінці items[0].deliveryAddress.countryName
  366 + [return] ${countryName}
  367 +
  368 +отримати інформацію про items[0].classification.scheme
  369 + ${classificationScheme}= отримати тест із поля і показати на сторінці items[0].classification.scheme
  370 + [return] ${classificationScheme.split(' ')[1]}
  371 +
  372 +отримати інформацію про items[0].additionalClassifications[0].scheme
  373 + ${additionalClassificationsScheme}= отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].scheme
  374 + [return] ${additionalClassificationsScheme.split(' ')[1]}
\ No newline at end of file
... ...
  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 + Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]}
  19 + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  20 + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  21 +
  22 +# sleep 10
  23 + Run Keyword If '${username}' != 'Newtend_Viewer' Login
  24 +
  25 +Login
  26 + Wait Until Page Contains Element id=indexpage_login 20
  27 + Click Element id=indexpage_login
  28 + Wait Until Page Contains Element id=password 20
  29 + Input text id=login-email ${USERS.users['${username}'].login}
  30 + Input text id=password ${USERS.users['${username}'].password}
  31 + Click Element id=submit-login-button
  32 + Wait Until Page Contains Element xpath =//a[@class="close-modal-dialog"] 20
  33 + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage}
  34 +# Wait Until Page Contains Element xpath=//div[@class="introjs-overlay"] 20
  35 +
  36 +Створити тендер
  37 + [Arguments] @{ARGUMENTS}
  38 + [Documentation]
  39 + ... ${ARGUMENTS[0]} == username
  40 + ... ${ARGUMENTS[1]} == initial_tender_data
  41 +## Inicialisation
  42 + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]}
  43 + ${items}= Get From Dictionary ${prepared_tender_data.data} items
  44 + ${title}= Get From Dictionary ${prepared_tender_data.data} title
  45 + ${description}= Get From Dictionary ${prepared_tender_data.data} description
  46 + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount
  47 + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount
  48 + ${start_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate
  49 + ${end_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate
  50 + ${enquiry_start_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} startDate
  51 + ${enquiry_end_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate
  52 +
  53 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  54 + Go To ${USERS.users['${username}'].homepage}
  55 + Wait Until Page Contains Element xpath=//a[@href="#/create-tender"] 100
  56 + Click Link xpath=//a[@href="#/create-tender"]
  57 + Wait Until Page Contains Новый тендер 100
  58 +# Input fields tender
  59 + Input text name=tenderName ${title}
  60 + Input text name=tenderDescription ${description}
  61 + Input text id=budget ${budget}
  62 + Click Element id=with-nds
  63 + Input text id=step ${step_rate}
  64 +# Add Item(s)
  65 + Додати придмет ${items[0]} 0
  66 + Run Keyword If '${mode}' == 'multi' Додати багато придметів items
  67 +# Set tender datatimes
  68 + Set datetime start-date-registration ${start_date}
  69 + Set datetime end-date-registration ${end_date}
  70 + Set datetime end-date-qualification ${enquiry_end_date}
  71 + Set datetime start-date-qualification ${enquiry_start_date}
  72 +# Save
  73 + Click Element xpath=//button[@class="btn btn-lg btn-default cancel pull-right ng-binding"]
  74 + Wait Until Page Contains Element xpath=//div[@ng-click="goHome()"] 30
  75 + Click Element xpath=//div[@ng-click="goHome()"]
  76 +# Get Ids
  77 + Wait Until Page Contains Element xpath=//div[@class="title"] 30
  78 + ${tender_UAid}= Get Text xpath=//div[@class="title"]
  79 + ${Ids}= Convert To String ${tender_UAid}
  80 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid}
  81 + [return] ${Ids}
  82 +
  83 +Set Multi Ids
  84 + [Arguments] @{ARGUMENTS}
  85 + [Documentation]
  86 + ... ${ARGUMENTS[0]} == ${tender_UAid}
  87 + ${current_location}= Get Location
  88 + ${id}= Get Substring ${current_location} -41 -9
  89 + ${Ids}= Create List ${tender_UAid} ${id}
  90 +
  91 +Set datetime
  92 + [Arguments] @{ARGUMENTS}
  93 + [Documentation]
  94 + ... ${ARGUMENTS[0]} == control_id
  95 + ... ${ARGUMENTS[1]} == date
  96 +#Pick Date
  97 + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/../span[@class="calendar-btn"]
  98 + Wait Until Page Contains Element xpath=//td[@class="text-center ng-scope"] 30
  99 + ${datapicker_id}= Get Element Attribute xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@class="text-center ng-scope"]@id
  100 + ${datapicker_id}= Get Substring ${datapicker_id} 0 -1
  101 + ${date_index}= newtend_date_picker_index ${ARGUMENTS[1]}
  102 + ${datapicker_id}= Convert To String ${datapicker_id}${date_index}
  103 + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@id="${datapicker_id}"]/button
  104 +#Set time
  105 + ${hous}= Get Substring ${ARGUMENTS[1]} 11 13
  106 + ${minutes}= Get Substring ${ARGUMENTS[1]} 14 16
  107 + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="hours"] ${hous}
  108 + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="minutes"] ${minutes}
  109 +
  110 +Додати придмет
  111 + [Arguments] @{ARGUMENTS}
  112 + [Documentation]
  113 + ... ${ARGUMENTS[0]} == items_n
  114 + ... ${ARGUMENTS[1]} == index
  115 +## Get values for item
  116 + ${items_description}= Get From Dictionary ${ARGUMENTS[0]} description
  117 + ${quantity}= Get From Dictionary ${ARGUMENTS[0]} quantity
  118 + ${cpv}= Convert To String Картонки
  119 + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description
  120 + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id
  121 + ${unit}= Get From Dictionary ${ARGUMENTS[0].unit} name
  122 + ${deliverydate_end_date}= Get From Dictionary ${ARGUMENTS[0].deliveryDate} endDate
  123 + ${countryName}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} countryName
  124 + ${ZIP}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} postalCode
  125 + ${region}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} region
  126 + ${locality}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} locality
  127 + ${streetAddress}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} streetAddress
  128 +# Add item
  129 + Input text id=itemDescription${ARGUMENTS[1]} ${items_description}
  130 + Input text id=quantity${ARGUMENTS[1]} ${quantity}
  131 + Click Element xpath=//a[contains(text(), "единицы измерения")]
  132 + Click Element xpath=//a[contains(text(), "единицы измерения")]/..//a[contains(text(), '${unit}')]
  133 +# Set CPV
  134 + Click Element id=classifier1${ARGUMENTS[1]}
  135 + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100
  136 + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${cpv}
  137 + Wait Until Page Contains Element xpath=//span[contains(text(),'${cpv}')] 20
  138 + Click Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"]
  139 + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"]
  140 +# Set ДКПП
  141 + Click Element id=classifier2${ARGUMENTS[1]}
  142 + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100
  143 + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${dkpp_desc}
  144 + Wait Until Page Contains Element xpath=//span[contains(text(),'${dkpp_id}')] 100
  145 + Click Element xpath=//span[contains(text(),'${dkpp_id}')]/../..//input[@class="ng-pristine ng-untouched ng-valid"]
  146 + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"]
  147 +# Set Delivery Address
  148 + Click Element id=deliveryAddress${ARGUMENTS[1]}
  149 + Wait Until Page Contains Element xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] 100
  150 + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${countryName}
  151 + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${ZIP}
  152 + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${region}
  153 + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${locality}
  154 + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${streetAddress}
  155 + Click Element xpath=//button[@class="btn btn-lg single-btn ng-binding"]
  156 +# Set Item Datetime
  157 + Set datetime end-date-delivery${ARGUMENTS[1]} ${deliverydate_end_date}
  158 +
  159 +Додати багато придметів
  160 + [Arguments] @{ARGUMENTS}
  161 + [Documentation]
  162 + ... ${ARGUMENTS[0]} == items
  163 + ${Items_length}= Get Length ${items}
  164 + : FOR ${INDEX} IN RANGE 1 ${Items_length}
  165 + \ Click Element xpath=//a[@class="icon-black plus-black remove-field ng-scope"]
  166 + \ Додати придмет ${items[${INDEX}]} ${INDEX}
  167 +
  168 +Пошук тендера по ідентифікатору
  169 + [Arguments] @{ARGUMENTS}
  170 + [Documentation]
  171 + ... ${ARGUMENTS[0]} == username
  172 + ... ${ARGUMENTS[1]} == ${TENDER_UAID}
  173 + Switch browser ${ARGUMENTS[0]}
  174 + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage}
  175 + Wait Until Page Contains Element xpath=//div[@class="search-field"]/input 20
  176 +# ${ARGUMENTS[1]}= Convert To String UA-2015-06-08-000023
  177 + Input text xpath=//div[@class="search-field"]/input ${ARGUMENTS[1]}
  178 + : FOR ${INDEX} IN RANGE 1 30
  179 + \ Log To Console . no_newline=true
  180 +# \ sleep 1
  181 + \ ${count}= Get Matching Xpath Count xpath=//a[@class="row tender-info ng-scope"]
  182 + \ Exit For Loop If '${count}' == '1'
  183 + Click Element xpath=//a[@class="row tender-info ng-scope"]
  184 + Wait Until Page Contains Element xpath=//a[@class="ng-binding ng-scope"] 30
  185 + ${fould_title}= Get Text xpath=//a[@class="ng-binding ng-scope"]
  186 + Should Be Equal ${fould_title} ${ARGUMENTS[1]}
\ No newline at end of file
... ...
... ... @@ -7,28 +7,46 @@ ${item_id} 0
7 7 ${question_id} 0
8 8
9 9 *** Keywords ***
  10 +отримати internal id по UAid
  11 + [Arguments] @{ARGUMENTS}
  12 + [Documentation]
  13 + ... ${ARGUMENTS[0]} == username
  14 + ... ${ARGUMENTS[1]} == tenderid
  15 + log many @{ARGUMENTS}
  16 + ${tenders}= get_internal_id ${USERS.users['${ARGUMENTS[0]}'].client.get_tenders} ${USERS.users['${ARGUMENTS[0]}'].creation_date}
  17 + :FOR ${tender} IN @{tenders}
  18 + \ log ${tender}
  19 + \ ${internal_id}= Run Keyword And Return If '${tender.tenderID}' == '${ARGUMENTS[1]}' Get Variable Value ${tender.id}
  20 + \ Exit For Loop If '${tender.tenderID}' == '${ARGUMENTS[1]}'
  21 + log ${internal_id}
  22 + log ${tenders}
  23 + [return] ${internal_id}
  24 +
  25 +
10 26 Підготувати клієнт для користувача
11 27 [Arguments] @{ARGUMENTS}
12 28 [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо
13   - ${api_wrapper}= prepare_api_wrapper ${USERS.users['${ARGUMENTS[0]}'].api_key} ${API_HOST_URL} ${api_version}
  29 + ${api_wrapper}= prepare_api_wrapper ${USERS.users['${ARGUMENTS[0]}'].api_key} ${API_HOST_URL} ${api_version}
  30 + ${creation_date} = get_date
  31 + Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} creation_date ${creation_date}
14 32 Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} client ${api_wrapper}
15 33 Log Variables
16   -
17   -Підготувати дані для оголошення тендера
  34 +
  35 +Підготувати дані для оголошення тендера
18 36 ${INITIAL_TENDER_DATA}= prepare_test_tender_data
19 37 [return] ${INITIAL_TENDER_DATA}
20   -
  38 +
21 39 Створити тендер
22 40 [Arguments] @{ARGUMENTS}
23 41 ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_tender ${ARGUMENTS[1]}
24 42 Log object data ${TENDER_DATA} cteated_tender
25 43 ${access_token}= Get Variable Value ${TENDER_DATA.access.token}
26   - Set Global Variable ${access_token}
27 44 Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} access_token ${access_token}
28   - Log access_token: ${access_token}
29   - Log tender_id: ${TENDER_DATA.data.id}
30   - Set Global Variable ${TENDER_DATA}
31   - [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}
32 50
33 51 Створити багатопредметний тендер
34 52 [Arguments] @{ARGUMENTS}
... ... @@ -43,27 +61,24 @@ ${question_id} 0
43 61 Log tender_id: ${TENDER_DATA.data.id}
44 62 Set Global Variable ${TENDER_DATA}
45 63 [return] ${TENDER_DATA}
46   -
  64 +
47 65 Пошук тендера по ідентифікатору
48 66 [Arguments] @{ARGUMENTS}
49 67 [Documentation]
50 68 ... ${ARGUMENTS[0]} == username
51 69 ... ${ARGUMENTS[1]} == tenderId
52   - ... ${ARGUMENTS[2]} == id
53   - ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[2]}
  70 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  71 + ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
54 72 Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data}
55 73 [return] ${tender_data}
56 74
57   -
58 75 Обновити сторінку з тендером
59 76 [Arguments] @{ARGUMENTS}
60 77 [Documentation]
61 78 ... ${ARGUMENTS[0]} == username
62 79 ... ${ARGUMENTS[1]} == tenderId
63   - ... ${ARGUMENTS[2]} == id
64 80 openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS}
65 81
66   -
67 82 отримати інформацію із тендера
68 83 [Arguments] @{ARGUMENTS}
69 84 [Documentation]
... ... @@ -74,7 +89,6 @@ ${question_id} 0
74 89 log ${field_value}
75 90 [return] ${field_value}
76 91
77   -
78 92 Внести зміни в тендер
79 93 [Arguments] @{ARGUMENTS}
80 94 [Documentation]
... ... @@ -82,11 +96,11 @@ ${question_id} 0
82 96 ... ${ARGUMENTS[1]} == id
83 97 ... ${ARGUMENTS[2]} == fieldname
84 98 ... ${ARGUMENTS[3]} == fieldvalue
85   - отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  99 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  100 + отримати тендер ${ARGUMENTS[0]} ${internalid}
86 101 Set_To_Object ${TENDER_DATA.data} ${ARGUMENTS[2]} ${ARGUMENTS[3]}
87 102 ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token}
88 103 ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA}
89   -
90 104 Set Global Variable ${TENDER_DATA}
91 105
92 106 отримати тендер
... ... @@ -105,7 +119,8 @@ ${question_id} 0
105 119 ... ${ARGUMENTS[0]} == username
106 120 ... ${ARGUMENTS[1]} == id
107 121 ... ${ARGUMENTS[2]} == number
108   - отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  122 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  123 + отримати тендер ${ARGUMENTS[0]} ${internalid}
109 124 ${items}= get from object ${TENDER_DATA.data} items
110 125 log ${items}
111 126 :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]}
... ... @@ -121,7 +136,8 @@ ${question_id} 0
121 136 ... ${ARGUMENTS[0]} == username
122 137 ... ${ARGUMENTS[1]} == id
123 138 ... ${ARGUMENTS[2]} == number
124   - отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  139 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  140 + отримати тендер ${ARGUMENTS[0]} ${internalid}
125 141 ${items}= get from object ${TENDER_DATA.data} items
126 142 ${item}= get variable value ${items[1]}
127 143 log ${items}
... ... @@ -131,20 +147,21 @@ ${question_id} 0
131 147 Set_To_Object ${TENDER_DATA.data} items ${items}
132 148 ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token}
133 149 ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA}
134   -
  150 +
135 151
136 152 Задати питання
137 153 [Documentation]
138 154 ... ${ARGUMENTS[0]} == username
139 155 ... ${ARGUMENTS[1]} == tender_uid
140   - ... ${ARGUMENTS[2]} == bid
  156 + ... ${ARGUMENTS[2]} == question
141 157 [Arguments] @{ARGUMENTS}
142 158 log many @{ARGUMENTS}
143   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  159 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  160 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
144 161 log ${USERS.users['${ARGUMENTS[0]}']}
145 162 ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]}
146 163 [return] ${biddingresponce}
147   -
  164 +
148 165 Відповісти на питання
149 166 [Documentation]
150 167 ... ${ARGUMENTS[0]} == username
... ... @@ -153,7 +170,8 @@ ${question_id} 0
153 170 ... ${ARGUMENTS[3]} == answer_data
154 171 [Arguments] @{ARGUMENTS}
155 172 log many @{ARGUMENTS}
156   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  173 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  174 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
157 175 log many ${USERS.users['${ARGUMENTS[0]}']}
158 176 ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token}
159 177 ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.questions[${ARGUMENTS[2]}].id}
... ... @@ -168,27 +186,28 @@ ${question_id} 0
168 186 ... ${ARGUMENTS[2]} == complaint
169 187 [Arguments] @{ARGUMENTS}
170 188 log many @{ARGUMENTS}
171   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  189 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  190 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
172 191 ${complaint}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _create_tender_resource_item ${tender} ${ARGUMENTS[2]} complaints
173 192 Log object data ${complaint} complaint
174   -
175   -порівняти скаргу
  193 +
  194 +порівняти скаргу
176 195 [Documentation]
177 196 ... ${ARGUMENTS[0]} == username
178 197 ... ${ARGUMENTS[1]} == tender_uid
179 198 ... ${ARGUMENTS[2]} == complaint
180 199 [Arguments] @{ARGUMENTS}
181   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
182   - ${complaint}= Get Variable Value ${tender.data.complaints[0]}
  200 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  201 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
  202 + ${complaint}= Get Variable Value ${tender.data.complaints[0]}
183 203 log ${complaint}
184 204 log ${ARGUMENTS[2]}
185   - #TODO: COMPARE
  205 + #TODO: COMPARE
186 206 #Dictionary Should Contain Sub Dictionary ${complaint} ${ARGUMENTS[2].data}
187 207 #:FOR ${element} IN ${ARGUMENTS[2].data}
188 208 #\ log ${element}
189 209 #\ Dictionary Should Contain Value ${complaint} ${element}
190   -
191   -
  210 +
192 211 Обробити скаргу
193 212 [Documentation]
194 213 ... ${ARGUMENTS[0]} == username
... ... @@ -197,14 +216,13 @@ ${question_id} 0
197 216 ... ${ARGUMENTS[3]} == answer_data
198 217 [Arguments] @{ARGUMENTS}
199 218 log many @{ARGUMENTS}
200   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  219 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  220 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
201 221 ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token}
202 222 ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.complaints[${ARGUMENTS[2]}].id}
203 223 ${complaint_with_answer}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _patch_tender_resource_item ${tender} ${ARGUMENTS[3]} complaints
204 224 log many ${USERS.users['${ARGUMENTS[0]}'].client} ${tender} ${ARGUMENTS[3]}
205 225 Log object data ${complaint_with_answer} complaint_with_answer
206   -
207   -
208 226
209 227 Подати цінову пропозицію
210 228 [Documentation]
... ... @@ -213,18 +231,20 @@ ${question_id} 0
213 231 ... ${ARGUMENTS[2]} == bid
214 232 [Arguments] @{ARGUMENTS}
215 233 log many @{ARGUMENTS}
216   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
217   - log ${tender}
  234 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  235 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
  236 + log ${tender}отримати
218 237 ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]}
219 238 [return] ${biddingresponce}
220   -
  239 +
221 240 Змінити цінову пропозицію
222 241 [Documentation]
223 242 ... ${ARGUMENTS[0]} == username
224 243 ... ${ARGUMENTS[1]} == tender_uid
225 244 ... ${ARGUMENTS[2]} == bid
226 245 [Arguments] @{ARGUMENTS}
227   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  246 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  247 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
228 248 ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_bid ${tender} ${ARGUMENTS[2]}
229 249 Log ${changed_bid}
230 250 [return] ${changed_bid}
... ... @@ -235,71 +255,110 @@ ${question_id} 0
235 255 ... ${ARGUMENTS[1]} == tender_uid
236 256 ... ${ARGUMENTS[2]} == bid
237 257 [Arguments] @{ARGUMENTS}
238   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  258 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  259 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
239 260 log ${tender}
240   - log ${ARGUMENTS[2]}
  261 + log ${ARGUMENTS[2]}отримати
241 262 ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_bid ${tender} ${ARGUMENTS[2]}
242 263 Log ${changed_bid}
243 264 [return] ${changed_bid}
244   -
  265 +
245 266 Прийняти цінову пропозицію
246 267 [Documentation]
247 268 ... ${ARGUMENTS[0]} == username
248 269 ... ${ARGUMENTS[1]} == tender_uid
249 270 ... ${ARGUMENTS[2]} == award
250 271 [Arguments] @{ARGUMENTS}
251   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]}
  272 + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  273 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid}
252 274 ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token}
253 275 ${award_activeted_response}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_award ${tender} ${ARGUMENTS[2]}
254 276 Log ${award_activeted_response}
255 277 [return] ${award_activeted_response}
256 278
257   -
258 279 Завантажити документ в ставку
259 280 [Documentation]
260 281 ... ${ARGUMENTS[0]} == username
261   - ... ${ARGUMENTS[1]} == token
262   - ... ${ARGUMENTS[2]} == bid_id
  282 + ... ${ARGUMENTS[1]} == path
  283 + ... ${ARGUMENTS[2]} == tenderid
263 284 [Arguments] @{ARGUMENTS}
264 285 log ${ARGUMENTS[0]}
265 286 log ${ARGUMENTS[1]}
266   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id}
267   - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]}
268   - ${filename}= Set Variable file.txt
269   - Set_To_Object ${TENDER_DATA.data} documents.title ${filename}
270   - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${filename} ${tender} ${ARGUMENTS[2]}
271   - Log object data ${reply} reply
272   - [return] ${reply}
273   -
  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 +
274 298 Змінити документ в ставці
275 299 [Documentation]
276 300 ... ${ARGUMENTS[0]} == username
277   - ... ${ARGUMENTS[1]} == token
278   - ... ${ARGUMENTS[2]} == bid_id
279   - ... ${ARGUMENTS[3]} == file_id
  301 + ... ${ARGUMENTS[1]} == path
  302 + ... ${ARGUMENTS[2]} == bidid
  303 + ... ${ARGUMENTS[3]} == docid
280 304 [Arguments] @{ARGUMENTS}
281 305 log ${ARGUMENTS[0]}
282 306 log ${ARGUMENTS[1]}
283 307 log ${ARGUMENTS[2]}
284   - log ${ARGUMENTS[3]}
285   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id}
286   - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]}
287   - ${filename}= Set Variable newfile.txt
288   - Set_To_Object ${TENDER_DATA.data} documents.title ${filename}
289   - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${filename} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]}
290   - 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 +
291 319
292 320 Завантажити документ
293 321 [Documentation]
294 322 ... ${ARGUMENTS[0]} == username
295   - ... ${ARGUMENTS[1]} == token
  323 + ... ${ARGUMENTS[1]} == filepath
  324 + ... ${ARGUMENTS[2]} == tenderUAID
296 325 [Arguments] @{ARGUMENTS}
297 326 log ${ARGUMENTS[0]}
298 327 log ${ARGUMENTS[1]}
299   - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id}
300   - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]}
301   - ${filename}= Set Variable file.txt
302   - Set_To_Object ${TENDER_DATA.data} documents.title ${filename}
303   - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_tender_document ${filename} ${tender}
  328 + log ${ARGUMENTS[2]}
  329 + ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]}
  330 + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID}
  331 + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token}
  332 + ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_document ${tender} ${ARGUMENTS[1]}
304 333 Log object data ${reply} reply
305   -
\ No newline at end of file
  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}
\ No newline at end of file
... ...
1 1 from openprocurement_client.client import Client
  2 +import sys
2 3
3   -
4   -def prepare_api_wrapper(key='', host_url="https://api-sandbox.openprocurement.org", api_version='0.7' ):
  4 +def prepare_api_wrapper(key='', host_url="https://api-sandbox.openprocurement.org", api_version='0.8' ):
5 5 return Client(key, host_url, api_version )
  6 +
  7 +def get_internal_id(get_tenders_function, date):
  8 + result = get_tenders_function({"offset": date, "opt_fields": 'tenderID', })
  9 + #import pdb; pdb.Pdb(stdout=sys.__stdout__).set_trace()
  10 + return result
... ...
... ... @@ -3,14 +3,154 @@ Library Selenium2Screenshots
3 3 Library String
4 4 Library DateTime
5 5
  6 +*** Variables ***
  7 +${mail} test@mail.com
  8 +${telephone} +380976535447
  9 +
  10 +
6 11 *** Keywords ***
7 12 Підготувати клієнт для користувача
8   - [Arguments] ${username}
  13 + [Arguments] @{ARGUMENTS}
9 14 [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
  15 + ... ${ARGUMENTS[0]} == username
  16 + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]}
  17 + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  18 + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  19 +
  20 +# login
  21 + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:j_idt54 10
  22 + Click Element id=mForm:j_idt54
  23 + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:email 10
  24 + Input text id=mForm:email ${USERS.users['${username}'].login}
  25 + Sleep 2
  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 + ${file_path}= local_path_to_file TestDocument.docx
  35 + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]}
  36 + ${items}= Get From Dictionary ${prepared_tender_data.data} items
  37 + ${title}= Get From Dictionary ${prepared_tender_data.data} title
  38 + ${description}= Get From Dictionary ${prepared_tender_data.data} description
  39 + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount
  40 + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount
  41 + ${countryName}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.address} countryName
  42 + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate
  43 + ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date}
  44 + ${cpv}= Convert To String "Картонки"
  45 + ${cpv_id}= Get From Dictionary ${items[0].classification} id
  46 + ${cpv_id_1}= Get Substring ${cpv_id} 0 3
  47 + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description
  48 + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id
  49 + ${code}= Get From Dictionary ${items[0].unit} code
  50 + ${quantity}= Get From Dictionary ${items[0]} quantity
  51 + ${name}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.contactPoint} name
  52 +
  53 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  54 + Wait Until Page Contains Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] 10
  55 + Click Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля']
  56 + Wait Until Page Contains Element id=mForm:data:name
  57 + Input text id=mForm:data:name ${title}
  58 + Input text id=mForm:data:desc ${description}
  59 + Input text id=mForm:data:budget ${budget}
  60 + Input text id=mForm:data:step ${step_rate}
  61 + Click Element xpath=//*[@id='mForm:data:vat']/tbody/tr/td[1]//span
  62 + Input text id=mForm:data:dEPr_input ${delivery_end_date}
  63 + Click Element id=mForm:data:cKind_label
  64 + Click Element xpath=//div[@id='mForm:data:cKind_panel']//li[3]
  65 + Input text id=mForm:data:cCpvGr_input ${cpv_id_1}
  66 + Wait Until Page Contains Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span 10
  67 + Click Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span
  68 + Input text id=mForm:data:subject0 ${dkpp_desc}
  69 + Input text id=mForm:data:cCpv0_input ${cpv_id}
  70 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span 10
  71 + Click Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span
  72 + Input text id=mForm:data:unit0_input ${code}
  73 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] 10
  74 + Click Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1]
  75 + Input text id=mForm:data:amount0 ${quantity}
  76 + Input text id=mForm:data:cDkpp0_input ${dkpp_id}
  77 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span 10
  78 + Click Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span
  79 + Input text id=mForm:data:rName ${name}
  80 + Input text id=mForm:data:rPhone ${telephone}
  81 + Input text id=mForm:data:rMail ${mail}
  82 + Choose File id=mForm:data:docFile_input ${file_path}
  83 + Sleep 2
  84 + Run Keyword if '${mode}' == 'multi' Додати предмет items
  85 + Click Element id=mForm:bSave
  86 + # More smart wait for id is needed there.
  87 + Sleep 25
  88 + ${tender_UAid}= Get Text id=mForm:nBid
  89 + ${tender_UAid}= Get Substring ${tender_UAid} 19
  90 + ${Ids} Convert To String ${tender_UAid}
  91 + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid}
  92 + [return] ${Ids}
  93 +
  94 +Set Multi Ids
  95 + [Arguments] @{ARGUMENTS}
  96 + [Documentation]
  97 + ... ${ARGUMENTS[0]} == ${tender_UAid}
  98 + ${id}= Get Text id=mForm:nBid
  99 + ${Ids} Create List ${tender_UAid} ${id}
  100 +
  101 +Додати предмет
  102 + [Arguments] @{ARGUMENTS}
  103 + [Documentation]
  104 + ... ${ARGUMENTS[0]} == items
  105 + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description
  106 + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id
  107 + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description
  108 + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id
  109 + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description
  110 + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id
  111 +
  112 + Wait Until Page Contains Element xpath=//button[@class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"] 10
  113 + Wait Until Page Contains Element xpath=//button[contains(@class, 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only')] 10
  114 + Wait Until Page Contains Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] 10
  115 + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"]
  116 + Wait Until Page Contains Element id=mForm:data:subject1 10
  117 + Input text id=mForm:data:subject1 ${dkpp_desc1}
  118 + Input text id=mForm:data:cCpv1_input ${cpv_id}
  119 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span 10
  120 + Click Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span
  121 + Input text id=mForm:data:unit1_input ${code}
  122 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] 10
  123 + Click Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1]
  124 + Input text id=mForm:data:amount1 ${quantity}
  125 + Input text id=mForm:data:cDkpp1_input ${dkpp_id11}
  126 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span 10
  127 + Click Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span
  128 + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"]
  129 + Wait Until Page Contains Element id=mForm:data:subject2 10
  130 + Input text id=mForm:data:subject2 ${dkpp_desc2}
  131 + Input text id=mForm:data:cCpv2_input ${cpv_id}
  132 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span 10
  133 + Click Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span
  134 + Input text id=mForm:data:unit2_input ${code}
  135 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] 10
  136 + Click Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1]
  137 + Input text id=mForm:data:amount2 ${quantity}
  138 + Input text id=mForm:data:cDkpp2_input ${dkpp_id2}
  139 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span 10
  140 + Click Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span
  141 + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"]
  142 + Wait Until Page Contains Element id=mForm:data:subject3 10
  143 + Input text id=mForm:data:subject3 ${dkpp_desc3}
  144 + Input text id=mForm:data:cCpv3_input ${cpv_id}
  145 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span 10
  146 + Click Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span
  147 + Input text id=mForm:data:unit3_input ${code}
  148 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] 10
  149 + Click Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1]
  150 + Input text id=mForm:data:amount3 ${quantity}
  151 + Input text id=mForm:data:cDkpp3_input ${dkpp_id3}
  152 + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span 10
  153 + Click Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span
14 154
15 155 Пошук тендера по ідентифікатору
16 156 [Arguments] @{ARGUMENTS}
... ...
... ... @@ -24,5 +24,20 @@ Publicbid:
24 24 period_interval: 2
25 25 Netcast:
26 26 keywords_file: netcast
27   - url: http://dz2.byustudio.in.ua
  27 + url: "http://dz2.byustudio.in.ua"
  28 + login: admin
  29 + password: uStudio
28 30 timout_on_wait: 15
  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
\ No newline at end of file
... ...
... ... @@ -2,57 +2,130 @@ users:
2 2 Tender_Owner:
3 3 api_key: e9c3ccb8e8124f26941d5f9639a4ebc3
4 4 broker: Quinta
5   - Prom_Owner:
6   - broker: Prom
7   - username: Promtest
  5 + Tender_Viewer:
  6 + broker: Quinta
  7 + api_key: ""
  8 + Tender_User:
  9 + api_key: e9c3ccb8e8124f26941d5f9639a4ebc3
  10 + broker: Quinta
  11 + Tender_User1:
  12 + api_key: e9c3ccb8e8124f26941d5f9639a4ebc3
  13 + broker: Quinta
  14 + E-tender_Owner:
  15 + broker: E-tender
  16 + username: E-tendertest
  17 + homepage: "http://uat.e-tender.biz/#/profile"
  18 + login: Misha2
  19 + password: Password1
8 20 browser: chrome
9 21 position: [0, 0]
  22 + size: [800, 800]
  23 + E-tender_Provider1:
  24 + broker: E-tender
  25 + username: E-tendertest
  26 + homepage: "http://uat.e-tender.biz/#/profile"
  27 + login: st_org
  28 + password: 12345678
  29 + browser: chrome
  30 + position: [700, 0]
  31 + size: [700, 800]
  32 + E-tender_Provider2:
  33 + broker: E-tender
  34 + username: E-tendertest
  35 + homepage: "http://uat.e-tender.biz/#/profile"
  36 + login: provider2
  37 + password: Qa123456
  38 + browser: chrome
  39 + position: [700, 0]
10 40 size: [640, 450]
11 41 E-tender_Viewer:
12 42 broker: E-tender
13 43 username: E-tendertest
  44 + homepage: "http://uat.e-tender.biz/#/profile"
14 45 browser: chrome
15 46 position: [0, 0]
16 47 size: [640, 450]
17   - Prom_Viewer:
  48 + Netcast_Owner:
  49 + broker: Netcast
  50 + username: Netcasttest
  51 + homepage: "http://dz2.byustudio.in.ua"
  52 + login: ovramet.s@gmail.com
  53 + password: Password1
  54 + browser: chrome
  55 + position: [0, 0]
  56 + size: [700, 800]
  57 + Netcast_Provider1:
  58 + broker: Netcast
  59 + username: Netcasttest
  60 + homepage: "http://dz2.byustudio.in.ua"
  61 + login: halyna.khimka@gmail.com
  62 + password: JHO5VUp5n
  63 + browser: chrome
  64 + position: [0, 0]
  65 + size: [600, 800]
  66 + Netcast_Viewer:
  67 + broker: Netcast
  68 + username: Netcasttest
  69 + homepage: "http://dz2.byustudio.in.ua"
  70 + browser: chrome
  71 + #browser: chrome
  72 + position: [0, 0]
  73 + size: [600, 800]
  74 + Newtend_Owner:
  75 + broker: Newtend
  76 + username: Newtendtest
  77 + homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1"
  78 + login: openprocurement@mailinator.com
  79 + password: 123123
  80 + browser: chrome
  81 + position: [0, 0]
  82 + size: [1000, 1100]
  83 + Newtend_Provider1:
  84 + broker: Newtend
  85 + username: Newtendtest
  86 + homepage: "http://dev23.newtend.com/openprocurement/tenders"
  87 + login: openprocboss@mailinator.com
  88 + password: 123123
  89 + browser: chrome
  90 + position: [700, 0]
  91 + size: [800, 700]
  92 + Newtend_Viewer:
  93 + broker: Newtend
  94 + username: Newtendtest
  95 + homepage: "http://dev23.newtend.com/openprocurement/tenders"
  96 + browser: chrome
  97 + position: [0, 0]
  98 + size: [640, 450]
  99 + Prom_Owner:
18 100 broker: Prom
19 101 username: Promtest
20 102 browser: chrome
21   - position: [640, 0]
  103 + position: [0, 0]
22 104 size: [640, 450]
23   - SmartTender_Viewer:
24   - broker: SmartTender
25   - username: SmartTendertest
  105 + Prom_Viewer:
  106 + broker: Prom
  107 + username: Promtest
26 108 browser: chrome
27   - position: [0, 450]
  109 + position: [640, 0]
28 110 size: [640, 450]
  111 + Publicbid_Owner:
  112 + broker: Publicbid
  113 + username: Publicbid
  114 + homepage: "https://public-bid.com.ua/test/"
  115 + login: yaroslav1boyko@gmail.com
  116 + password: Password1
  117 + browser: chrome
  118 + position: [0, 0]
  119 + size: [740, 550]
29 120 Publicbid_Viewer:
30 121 broker: Publicbid
31 122 username: Publicbid
32 123 browser: chrome
33 124 position: [0, 450]
34   - size: [640, 450]
35   - Netcast_Viewer:
36   - broker: Netcast
37   - username: TetcastTest
  125 + size: [640, 450]
  126 + SmartTender_Viewer:
  127 + broker: SmartTender
  128 + username: SmartTendertest
38 129 browser: chrome
39 130 position: [0, 450]
40   - size: [640, 450]
41   - Tender_Viewer:
42   - broker: Quinta
43   - api_key: ""
44   - Tender_User:
45   - api_key: e9c3ccb8e8124f26941d5f9639a4ebc3
46   - broker: Quinta
47   - Tender_User1:
48   - api_key: e9c3ccb8e8124f26941d5f9639a4ebc3
49   - broker: Quinta
50   - E-tender_Provider1:
51   - broker: E-tender
52   - username: E-tendertest
53   - homepage: "http://uat.e-tender.biz/#/profile"
54   - login: st_org
55   - password: 12345678
56   - browser: firefox
57   - position: [0, 0]
58   - size: [640, 450]
\ No newline at end of file
  131 + size: [640, 450]
... ...
  1 +Some tesxt here
\ No newline at end of file
... ...
  1 +from iso8601 import parse_date
  2 +from robot.output import LOGGER
  3 +from robot.output.loggerhelper import Message
  4 +from robot.libraries.BuiltIn import BuiltIn
  5 +from robot.errors import HandlerExecutionFailed
  6 +from datetime import datetime, timedelta, date
  7 +from dateutil.parser import parse
  8 +from dateutil.tz import tzlocal
  9 +from pytz import timezone
  10 +from jsonpath_rw import parse as parse_path
  11 +import time
  12 +from op_robot_tests.tests_files.initial_data import (
  13 + test_tender_data
  14 +)
  15 +
  16 +TIMEZONE = timezone('Europe/Kiev')
  17 +
  18 +def convert_date_to_etender_format(isodate):
  19 + iso_dt=parse_date(isodate)
  20 + date_string = iso_dt.strftime("%d-%m-%Y")
  21 + return date_string
  22 +
  23 +def convert_time_to_etender_format(isodate):
  24 + iso_dt=parse_date(isodate)
  25 + time_string = iso_dt.strftime("%H:%M")
  26 + return time_string
\ No newline at end of file
... ...
... ... @@ -6,6 +6,14 @@ from faker import Factory
6 6 fake = Factory.create('uk_UA')
7 7 fake_ru = Factory.create('ru')
8 8 fake_en = Factory.create()
  9 +from tempfile import NamedTemporaryFile
  10 +
  11 +def create_fake_doc():
  12 + content = fake.text()
  13 + tf = NamedTemporaryFile(delete=False)
  14 + tf.write(content)
  15 + tf.close()
  16 + return tf.name
9 17
10 18 def test_tender_data(period_interval=2):
11 19 now = datetime.now()
... ... @@ -133,7 +141,7 @@ def prom_test_tender_data():
133 141 {
134 142 "description": fake.catch_phrase(),
135 143 "deliveryDate": {
136   - "startDate": (now + timedelta(days=4)).isoformat(),
  144 + "startDate": (now + timedelta(days=4)).isoformat(),
137 145 "endDate": (now + timedelta(days=5)).isoformat()
138 146 },
139 147 "deliveryLocation": {
... ... @@ -150,7 +158,7 @@ def prom_test_tender_data():
150 158 "classification": {
151 159 "scheme": u"CPV",
152 160 "id": u"44617100-9",
153   - "description": u"Cartons"
  161 + "description": u"Cartons",
154 162 },
155 163 "additionalClassifications": [
156 164 {
... ... @@ -205,15 +213,15 @@ def test_tender_data_multiple_lots(period_interval=2):
205 213 "name": fake.name(),
206 214 "telephone": fake.phone_number()
207 215 }
208   - },
209   - "value": {
210   - "amount": 50000.99,
  216 + },
  217 + "value": {
  218 + "amount": 50000,
211 219 "currency": u"UAH"
212 220 },
213 221 "minimalStep": {
214   - "amount": 100.1,
215   - "currency": u"UAH"
216   - },
  222 + "amount": 100,
  223 + "currency": u"UAH"
  224 + },
217 225 "items": [
218 226 {
219 227 "description": fake.catch_phrase(),
... ... @@ -229,7 +237,7 @@ def test_tender_data_multiple_lots(period_interval=2):
229 237 "postalCode": "01008",
230 238 "region": u"м. Київ",
231 239 "locality": u"м. Київ",
232   - "streetAddress": "ул. Грушевского, 12/2"
  240 + "streetAddress": u"ул. Грушевского, 12/2"
233 241 },
234 242 "classification": {
235 243 "scheme": u"CPV",
... ... @@ -297,7 +305,7 @@ def test_tender_data_multiple_lots(period_interval=2):
297 305 "postalCode": fake.postalcode(),
298 306 "region": u"м. Луганськ",
299 307 "locality": u"м. Луганськ",
300   - "streetAddress": "Вул. Оборонна 28"
  308 + "streetAddress": u"Вул. Оборонна 28"
301 309 },
302 310 "classification": {
303 311 "scheme": u"CPV",
... ... @@ -460,7 +468,7 @@ def test_bid_data():
460 468 }
461 469 }
462 470 })
463   -
  471 +
464 472 def auction_bid():
465 473 return munchify({
466 474 "data": {"value": {
... ...
... ... @@ -18,7 +18,6 @@ TestSuiteSetup
18 18
19 19 Завантажуємо дані про корисувачів і площадки
20 20 [Arguments] ${active_users}
21   - # Init Brokers
22 21 log ${active_users}
23 22
24 23 ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml
... ... @@ -27,15 +26,14 @@ TestSuiteSetup
27 26 Set Global Variable ${BROKERS}
28 27 ${brokers_list}= Get Dictionary Items ${BROKERS}
29 28 log ${brokers_list}
30   - # Init Users
31 29 ${file_path}= Get Variable Value ${USERS_FILE} users.yaml
32 30 ${USERS}= load_initial_data_from ${file_path}
33 31 Set Global Variable ${USERS}
34 32 ${users_list}= Get Dictionary Items ${USERS.users}
35 33 :FOR ${username} ${user_data} IN @{users_list}
36   - \ log ${active_users}
  34 + \ log ${active_users}
37 35 \ log ${username}
38   - \ ${status}= Run Keyword And Return Status List Should Contain Value ${active_users} ${username}
  36 + \ ${status}= Run Keyword And Return Status List Should Contain Value ${active_users} ${username}
39 37 \ Run Keyword If '${status}' == 'True' Завантажуємо бібліотеку з реалізацією ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file} площадки
40 38 \ Run Keyword If '${status}' == 'True' Викликати для учасника ${username} Підготувати клієнт для користувача
41 39
... ... @@ -58,6 +56,9 @@ TestSuiteSetup
58 56 Set Global Variable ${REPLIES}
59 57 ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode}
60 58 Set Global Variable ${INITIAL_TENDER_DATA}
  59 + ${TENDER}= Create Dictionary
  60 + Set Global Variable ${TENDER}
  61 + Log ${TENDER}
61 62 Log ${INITIAL_TENDER_DATA}
62 63
63 64 Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки
... ... @@ -73,46 +74,43 @@ TestSuiteSetup
73 74 ... ${ARGUMENTS[2]} == id
74 75
75 76 ${now}= Get Current Date
76   - ${delta}= Subtract Date From Date ${now} ${LAST_MODIFICATION_DATE}
  77 + ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']}
77 78 ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta}
78 79 Run Keyword If ${wait_timout}>0 Sleep ${wait_timout}
79 80
80   -#отримати останні зміни в тендері
81   -# ${TENDER_DATA}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER_DATA.data.tenderID} ${TENDER_DATA.data.id}
82   -# Set To Dictionary ${TENDER_DATA} access_token ${access_token}
83   -# Set Global Variable ${TENDER_DATA}
84   -# ${now}= Get Current Date
85   -# Log object data ${TENDER_DATA} tender_${tender_dump_id}
86   -# ${tender_dump_id}= Evaluate ${tender_dump_id}+1
87   -# Set Global Variable ${tender_dump_id}
88   -
89 81 Звірити поле тендера
90 82 [Arguments] ${username} ${field}
91 83 ${field_value}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field}
92 84 Звірити поле ${username} ${field} ${field_value}
93 85
94   -Звірити поле
95   - [Arguments] ${username} ${field} ${subject}
  86 +Звірити поле
  87 + [Arguments] ${username} ${field} ${subject}
96 88 ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field}
  89 + Should Not Be Equal ${field_response} ${None}
97 90 Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker}
98 91
99 92 Звірити поле створеного тендера
100 93 [Arguments] ${initial} ${tender_data} ${field}
101 94 ${field_value}= Get_From_Object ${initial} ${field}
102 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}
103 98 Should Be Equal ${field_value} ${field_response}
104 99
105 100 Звірити дату тендера
106 101 [Arguments] ${username} ${field}
107 102 ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field}
  103 + Should Not Be Equal ${isodate} ${None}
108 104 Звірити дату ${username} ${field} ${isodate}
109 105
110 106 Звірити дату
111   - [Arguments] ${username} ${field} ${subject}
  107 + [Arguments] ${username} ${field} ${subject}
112 108 ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field}
113 109 ${returned}= compare_date ${subject} ${field_date}
114   - Should Be True '${returned}' == 'True'
115   -
  110 + Should Not Be Equal ${field_date} ${None}
  111 + Should Not Be Equal ${returned} ${None}
  112 + Should Be True '${returned}' == 'True'
  113 +
116 114 Звірити поля предметів закупівлі багатопредметного тендера
117 115 [Arguments] ${username} ${field}
118 116 Дочекатись синхронізації з майданчиком ${username}
... ... @@ -122,10 +120,18 @@ TestSuiteSetup
122 120 \ Log ${index}
123 121 \ Звірити поле тендера ${viewer} items[${index}].${field}
124 122
125   -
  123 +Звірити дату предметів закупівлі багатопредметного тендера
  124 + [Arguments] ${username} ${field}
  125 + Дочекатись синхронізації з майданчиком ${username}
  126 + @{items}= Get_From_Object ${INITIAL_TENDER_DATA.data} items
  127 + ${len_of_items}= Get Length ${items}
  128 + :FOR ${index} IN RANGE ${len_of_items}
  129 + \ Log ${index}
  130 + \ Звірити дату тендера ${viewer} items[${index}].${field}
  131 +
126 132 Викликати для учасника
127 133 [Documentation]
128   - ... cause sometimes keyword SHOULD fail to pass the testcase, this keyword takes "shouldfail" argument as first one in @{arguments} and switches the behaviour of keyword and "shouldfail"
  134 + ... cause sometimes keyword SHOULD fail to pass the testcase, this keyword takes "shouldfail" argument as first one in @{arguments} and switches the behaviour of keyword and "shouldfail"
129 135 [Arguments] ${username} ${command} @{arguments}
130 136 log ${username}
131 137 log ${command}
... ... @@ -153,7 +159,7 @@ switchsate
153 159 ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments}
154 160 Run keyword if '${status}' == 'PASS' Log Учасник ${username} зміг виконати "${command}" WARN
155 161 [return] ${value}
156   -
  162 +
157 163 Дочекатись дати
158 164 [Arguments] ${date}
159 165 ${wait_timout}= wait_to_date ${date}
... ... @@ -161,12 +167,12 @@ switchsate
161 167
162 168 Дочекатись дати початоку прийому пропозицій
163 169 Дочекатись дати ${TENDER_DATA.data.tenderPeriod.startDate}
164   -
  170 +
165 171 Дочекатись дати закінчення прийому пропозицій
166 172 Дочекатись дати ${TENDER_DATA.data.tenderPeriod.endDate}
167   -
  173 +
168 174 Дочекатись дати початоку аукціону
169 175 Дочекатись дати ${TENDER_DATA.data.auctionPeriod.startDate}
170 176
171 177 Дочекатись дати закінчення аукціону
172   - Дочекатись дати ${TENDER_DATA.data.auctionPeriod.endDate}
\ No newline at end of file
  178 + Дочекатись дати ${TENDER_DATA.data.auctionPeriod.endDate}
\ No newline at end of file
... ...
... ... @@ -25,9 +25,9 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"]
25 25
26 26 Можливість оголосити багатопредметний тендер
27 27 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
28   - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}
29   - ${TENDER_ID}= Get From List ${ids} 0
30   - ${INTERNAL_TENDER_ID}= Get From List ${ids} 1
  28 + ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}
  29 + ${TENDER_ID}= Get From List ${ids} 0
  30 + ${INTERNAL_TENDER_ID}= Get From List ${ids} 1
31 31 Set Global Variable ${INTERNAL_TENDER_ID}
32 32 Set Global Variable ${TENDER_ID}
33 33 ${LAST_MODIFICATION_DATE}= Get Current Date
... ... @@ -36,24 +36,24 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"]
36 36 Отримати багатопредметний тендер по ідентифікатору
37 37 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
38 38 Дочекатись синхронізації з майданчиком ${viewer}
39   - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID}
40   -
  39 + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID}
  40 +
41 41 Відображення опису позицій закупівлі багатопредметного тендера
42 42 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
43 43 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} description
44   -
  44 +
45 45 Відображення дати доставки позицій закупівлі багатопредметного тендера
46 46 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
47   - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryDate.endDate
  47 + Звірити дату предметів закупівлі багатопредметного тендера ${viewer} deliveryDate.endDate
48 48
49 49 Відображення координат широти доставки позицій закупівлі багатопредметного тендера
50 50 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
51 51 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.latitude
52   -
  52 +
53 53 Відображення координат довготи доставки позицій закупівлі багатопредметного тендера
54 54 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
55 55 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.longitude
56   -
  56 +
57 57 Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера
58 58 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
59 59 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.countryName
... ... @@ -61,53 +61,53 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"]
61 61 Відображення пошт коду доставки позицій закупівлі багатопредметного тендера
62 62 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
63 63 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.postalCode
64   -
  64 +
65 65 Відображення регіону доставки позицій закупівлі багатопредметного тендера
66 66 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
67 67 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.region
68   -
  68 +
69 69 Відображення locality адреси доставки позицій закупівлі багатопредметного тендера
70 70 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
71 71 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.locality
72   -
  72 +
73 73 Відображення вулиці доставки позицій закупівлі багатопредметного тендера
74 74 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
75 75 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.streetAddress
76   -
  76 +
77 77 Відображення схеми класифікації позицій закупівлі багатопредметного тендера
78 78 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
79 79 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.scheme
80   -
  80 +
81 81 Відображення ідентифйікатора класифікації позицій закупівлі багатопредметного тендера
82 82 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
83 83 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.id
84   -
  84 +
85 85 Відображення опису класифікації позицій закупівлі багатопредметного тендера
86 86 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
87 87 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.description
88   -
  88 +
89 89 Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера
90 90 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
91 91 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.scheme
92   -
  92 +
93 93 Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера
94 94 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
95 95 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.id
96   -
  96 +
97 97 Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера
98 98 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
99 99 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.description
100   -
  100 +
101 101 Відображення назви одиниці позицій закупівлі багатопредметного тендера
102 102 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
103 103 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.name
104   -
  104 +
105 105 Відображення коду одиниці позицій закупівлі багатопредметного тендера
106 106 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
107 107 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.code
108   -
  108 +
109 109 Відображення кількості позицій закупівлі багатопредметного тендера
110 110 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера
111 111 Звірити поля предметів закупівлі багатопредметного тендера ${viewer} quantity
112   -
113   -
  112 +
  113 +
... ...
  1 +#!/usr/bin/env python
1 2 # -*- coding: utf-8 -
2 3 import os
3 4 from munch import munchify, Munch, fromYAML
... ... @@ -17,11 +18,14 @@ import time
17 18 from .initial_data import (
18 19 test_tender_data, test_question_data, test_question_answer_data,
19 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 25 TIMEZONE = timezone('Europe/Kiev')
24 26
  27 +def get_date():
  28 + return datetime.now().isoformat()
25 29
26 30 def change_state(arguments):
27 31 try:
... ... @@ -34,9 +38,6 @@ def change_state(arguments):
34 38 def prepare_prom_test_tender_data():
35 39 return munchify({'data': prom_test_tender_data()})
36 40
37   -def prepare_test_question_data():
38   - return munchify({'data': test_question_data()})
39   -
40 41 def compare_date(data1, data2):
41 42 data1=parse(data1)
42 43 data2=parse(data2)
... ... @@ -44,7 +45,6 @@ def compare_date(data1, data2):
44 45 data1 = TIMEZONE.localize(data1)
45 46 if data2.tzinfo is None:
46 47 data2 = TIMEZONE.localize(data2)
47   -
48 48 delta = (data1-data2).total_seconds()
49 49 if abs(delta) > 60:
50 50 return False
... ... @@ -78,7 +78,6 @@ def load_initial_data_from(file_name):
78 78 elif file_name.endswith(".yaml"):
79 79 return fromYAML(file_obj)
80 80
81   -
82 81 def prepare_test_tender_data(period_interval=2, mode='single'):
83 82 if mode == 'single':
84 83 return munchify({'data': test_tender_data(period_interval=period_interval)})
... ... @@ -86,21 +85,16 @@ def prepare_test_tender_data(period_interval=2, mode='single'):
86 85 return munchify({'data': test_tender_data_multiple_lots(period_interval=period_interval)})
87 86 raise ValueError('A very specific bad thing happened')
88 87
89   -
90 88 def run_keyword_and_ignore_keyword_definations(name, *args):
91 89 """Runs the given keyword with given arguments and returns the status as a Boolean value.
92   -
93 90 This keyword returns `True` if the keyword that is executed succeeds and
94 91 `False` if it fails. This is useful, for example, in combination with
95 92 `Run Keyword If`. If you are interested in the error message or return
96 93 value, use `Run Keyword And Ignore Error` instead.
97   -
98 94 The keyword name and arguments work as in `Run Keyword`.
99   -
100 95 Example:
101 96 | ${passed} = | `Run Keyword And Return Status` | Keyword | args |
102 97 | `Run Keyword If` | ${passed} | Another keyword |
103   -
104 98 New in Robot Framework 2.7.6.
105 99 """
106 100 try:
... ... @@ -110,7 +104,6 @@ def run_keyword_and_ignore_keyword_definations(name, *args):
110 104 return "FAIL", ""
111 105 return status, _
112 106
113   -
114 107 def set_tender_periods(tender):
115 108 now = datetime.now()
116 109 tender.data.enquiryPeriod.endDate = (now + timedelta(minutes=2)).isoformat()
... ... @@ -118,17 +111,14 @@ def set_tender_periods(tender):
118 111 tender.data.tenderPeriod.endDate = (now + timedelta(minutes=4)).isoformat()
119 112 return tender
120 113
121   -
122 114 def set_access_key(tender, access_token):
123 115 tender.access = munchify({"token": access_token})
124 116 return tender
125 117
126   -
127 118 def set_to_object(obj, attribute, value):
128 119 xpathset(obj, attribute.replace('.', '/'), value)
129 120 return obj
130 121
131   -
132 122 def get_from_object(obj, attribute):
133 123 """Gets data from a dictionary using a dotted accessor-string"""
134 124 jsonpath_expr = parse_path(attribute)
... ... @@ -137,7 +127,6 @@ def get_from_object(obj, attribute):
137 127 return return_list[0]
138 128 return None
139 129
140   -
141 130 def wait_to_date(date_stamp):
142 131 date = parse(date_stamp)
143 132 LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO"))
... ... @@ -147,4 +136,44 @@ def wait_to_date(date_stamp):
147 136 wait_seconds += 2
148 137 if wait_seconds < 0:
149 138 return 0
150   - return wait_seconds
\ No newline at end of file
  139 + return wait_seconds
  140 +
  141 +def convert_date_to_slash_format(isodate):
  142 + iso_dt=parse_date(isodate)
  143 + date_string = iso_dt.strftime("%d/%m/%Y")
  144 + return date_string
  145 +
  146 +def convert_date_to_etender_format(isodate):
  147 + iso_dt=parse_date(isodate)
  148 + date_string = iso_dt.strftime("%d-%m-%Y")
  149 + return date_string
  150 +
  151 +def convert_time_to_etender_format(isodate):
  152 + iso_dt=parse_date(isodate)
  153 + time_string = iso_dt.strftime("%H:%M")
  154 + return time_string
  155 +
  156 +def newtend_date_picker_index(isodate):
  157 + now = datetime.today()
  158 + date_str = '01' + str(now.month) + str(now.year)
  159 + first_day_of_month = datetime.strptime(date_str, "%d%m%Y")
  160 + mod = first_day_of_month.isoweekday() - 2
  161 + iso_dt=parse_date(isodate)
  162 + last_day_of_month = calendar.monthrange(now.year, now.month)[1]
  163 + #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO"))
  164 + if now.day>iso_dt.day:
  165 + mod = calendar.monthrange(now.year, now.month)[1] + mod
  166 + return mod + iso_dt.day
  167 +
  168 +def Add_data_for_GUI_FrontEnds(INITIAL_TENDER_DATA):
  169 + now = datetime.now()
  170 + INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat()
  171 + INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=3)).isoformat()
  172 + INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=4)).isoformat()
  173 + INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=5)).isoformat()
  174 + return INITIAL_TENDER_DATA
  175 +
  176 +def local_path_to_file(file_name):
  177 + path = os.getcwd()
  178 + path = path.split("brokers", 1)[0] + "/src/op_robot_tests/op_robot_tests/tests_files/documents/" + file_name
  179 + return path
... ...
... ... @@ -24,42 +24,49 @@ ${item_id} 0
24 24 ${question_id} 0
25 25
26 26 *** Test Cases ***
27   -Можливість оголосити однопердметний тендер
  27 +Можливість оголосити однопредметний тендер
28 28 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
29   - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}
30   - ${TENDER_ID}= Get From List ${ids} 0
31   - ${INTERNAL_TENDER_ID}= Get From List ${ids} 1
32   - Set Global Variable ${INTERNAL_TENDER_ID}
33   - Set Global Variable ${TENDER_ID}
  29 + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
  30 + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA}
34 31 ${LAST_MODIFICATION_DATE}= Get Current Date
35   - Set Global Variable ${LAST_MODIFICATION_DATE}
  32 + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
  33 + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
  34 + log ${TENDER}
36 35
37 36 Можливасть додати тендерну документацію
38 37 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ
39   - Викликати для учасника ${tender_owner} Завантажити документ ${INTERNAL_TENDER_ID}
  38 + [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі
  39 + ${filepath}= create_fake_doc
  40 + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']}
  41 + ${file_upload_process_data} = Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply}
  42 + log ${file_upload_process_data}
  43 + Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data}
  44 + Log ${USERS.users['${tender_owner}']}
  45 +
40 46
41 47 Можливість подати скаргу на умови
42 48 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
43   - Викликати для учасника ${provider} Подати скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
  49 + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
  50 + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
44 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 55 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера
49   - Викликати для учасника ${provider} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
  56 + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
50 57
51 58 можливість побачити скаргу анонімом
52 59 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
53   - Викликати для учасника ${viewer} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
  60 + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
54 61
55 62 Пошук однопредметного тендера по ідентифікатору
56 63 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору
57 64 Дочекатись синхронізації з майданчиком ${viewer}
58   - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID}
59   -
  65 + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']}
  66 +
60 67 ######
61 68 #Відображення основних даних оголошеного тендера:
62   -#заголовок, опис, бюджет, тендерна документація,
  69 +#заголовок, опис, бюджет, тендерна документація,
63 70 #procuringEntity, періоди уточнень/прийому-пропозицій, мінімального кроку
64 71
65 72 Відображення заголовоку оголошеного тендера
... ... @@ -77,7 +84,7 @@ ${question_id} 0
77 84 Відображення tenderID оголошеного тендера
78 85 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
79 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 89 Відображення procuringEntity.name оголошеного тендера
83 90 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
... ... @@ -103,26 +110,18 @@ ${question_id} 0
103 110 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
104 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 114 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
117   - Викликати для учасника ${tender_owner} Внести зміни в тендер ${INTERNAL_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} додати предмети закупівлі ${INTERNAL_TENDER_ID} 3
122   -#
123   -#Можливість видалити позиції закупівлі тендера
124   -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
125   -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${INTERNAL_TENDER_ID} 2
126 125
127 126 #######
128 127 #Відображення однопредметного тендера
... ... @@ -178,15 +177,15 @@ ${question_id} 0
178 177
179 178 Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера
180 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 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 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 191 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера
... ... @@ -205,14 +204,14 @@ ${question_id} 0
205 204
206 205 Задати питання
207 206 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
208   - Викликати для учасника ${provider} Задати питання ${INTERNAL_TENDER_ID} ${QUESTIONS[${question_id}]}
  207 + Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]}
209 208 ${now}= Get Current Date
210 209 Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now}
211 210
212 211 Відображення заголовоку анонімного питання без відповіді
213 212 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
214 213 Дочекатись синхронізації з майданчиком ${viewer}
215   - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} ${INTERNAL_TENDER_ID}
  214 + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']}
216 215 Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title}
217 216
218 217 Відображення опис анонімного питання без відповіді
... ... @@ -221,184 +220,185 @@ ${question_id} 0
221 220
222 221 Відображення дати анонімного питання без відповіді
223 222 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
224   - Звірити дату ${viewer} questions[${question_id}].date ${QUESTIONS[${question_id}].data.date}
  223 + Звірити дату ${viewer} questions[${question_id}].date ${QUESTIONS[${question_id}].data.date}
225 224
226 225 Неможливість подати цінову пропозицію до початку періоду подачі пропозицій bidder1
227 226 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
228 227 ${bid}= test bid data
229 228 Log ${bid}
230   - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${INTERNAL_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 239 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
237   - Викликати для учасника ${tender_owner} Відповісти на питання ${INTERNAL_TENDER_ID} 0 ${ANSWERS[0]}
  240 + Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]}
238 241 ${now}= Get Current Date
239 242 Set To Dictionary ${ANSWERS[${question_id}].data} date ${now}
240 243
241 244 Відображення відповіді на запитання
242 245 [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання
243 246 Дочекатись синхронізації з майданчиком ${viewer}
244   - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} ${INTERNAL_TENDER_ID}
  247 + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']}
245 248 Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer}
246 249
247 250 Можливість побачити скаргу користувачем під час періоду уточнень
248 251 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера
249   - Викликати для учасника ${provider} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
  252 + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
250 253
251 254 можливість побачити скаргу анонімом під час періоду уточнень
252 255 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
253   - Викликати для учасника ${viewer} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
  256 + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
254 257
255   -Подати цінову пропозицію bidder1
  258 +Подати цінову пропозицію bidder
256 259 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
257 260 Дочекатись дати початоку прийому пропозицій
258 261 ${bid}= test bid data
259 262 Log ${bid}
260   - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію ${INTERNAL_TENDER_ID} ${bid}
261   - Set Global Variable ${biddingresponce1}
262   - log ${biddingresponce1}
  263 + ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
  264 + Set Global Variable ${biddingresponce0}
  265 + log ${biddingresponce0}
263 266
264   -Можливість змінити цінову пропозицію до 50000
  267 +Можливість скасувати цінову пропозицію
  268 + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
  269 + ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponce0}
  270 +
  271 +Подати повторно цінову пропозицію першим учасником
  272 + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію
  273 + Дочекатись дати початоку прийому пропозицій
  274 + ${bid}= test bid data
  275 + Log ${bid}
  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}
  280 +
  281 +Можливість змінити повторну цінову пропозицію до 50000
265 282 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
266   - Set To Dictionary ${biddingresponce1.data.value} amount 50000
267   - Log ${biddingresponce1.data.value}
268   - ${biddingresponce2}= Викликати для учасника ${provider} Змінити цінову пропозицію ${INTERNAL_TENDER_ID} ${biddingresponce1}
269   - Set Global Variable ${biddingresponce2}
270   - 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}
271 288
272   -Можливість змінити цінову пропозицію до 1
  289 +Можливість змінити повторну цінову пропозицію до 10
273 290 [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію
274   - Set To Dictionary ${biddingresponce1.data.value} amount 1
275   - Log ${biddingresponce1.data.value}
276   - ${biddingresponce3}= Викликати для учасника ${provider} Змінити цінову пропозицію ${INTERNAL_TENDER_ID} ${biddingresponce1}
277   - Set Global Variable ${biddingresponce3}
278   - 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}
279 296
280   -Завантажити документ першим учасником
  297 +Завантажити документ першим учасником в повторну пропозицію
281 298 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
282 299 log ${USERS.users['${provider}'].broker}
283   - log ${biddingresponce1}
284   - ${bid_id}= get variable value ${biddingresponce1.data.id}
285   - ${token1}= Get Variable Value ${biddingresponce1.access.token}
286   - log ${token1}
287   - ${upload_doc_responce}= Викликати для учасника ${provider} Завантажити документ в ставку ${token1} ${bid_id}
288   - Set Global Variable ${upload_doc_responce}
289   -
  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}
  313 +
290 314 Можливість змінити документацію цінової пропозиції
291 315 [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
292 316 log ${USERS.users['${provider}'].broker}
293   - log ${biddingresponce1}
294   - ${bid_id}= get variable value ${biddingresponce1.data.id}
295   - ${token1}= Get Variable Value ${biddingresponce1.access.token}
296   - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id}
297   - log ${token1}
298   - Викликати для учасника ${provider} Змінити документ в ставці ${token1} ${bid_id} ${upload_doc_responce_id}
299   -
300   -Можливість скасувати цінову пропозицію
301   - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
302   - ${biddingresponce4}= Викликати для учасника ${provider} скасувати цінову пропозицію ${INTERNAL_TENDER_ID} ${biddingresponce1}
303   - Set Global Variable ${biddingresponce4}
304   - log ${biddingresponce4}
  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}
305 322
306 323 Неможливість задати запитання після закінчення періоду уточнень
307 324 [Documentation]
308 325 ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed"
309 326 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
310   - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${INTERNAL_TENDER_ID} ${questions[${question_id}]}
  327 + ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${questions[${question_id}]}
311 328
312   -Подати цінову пропозицію bidder2
  329 +Подати цінову пропозицію другим учасником
313 330 [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
314 331 Дочекатись дати початоку прийому пропозицій
315 332 ${bid}= test bid data
316 333 Log ${bid}
317   - ${biddingresponce5}= Викликати для учасника ${provider1} Подати цінову пропозицію ${INTERNAL_TENDER_ID} ${bid}
318   - Set Global Variable ${biddingresponce5}
319   - 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}
320 340
321 341 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій
322 342 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
323   - ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера B
  343 +
  344 + FIXME: finish the keyword
  345 +
  346 + ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера
324 347
325 348 Завантажити документ другим учасником
326   - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
  349 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця
327 350 log ${USERS.users['${provider1}'].broker}
328   - ${bid_id2}= get variable value ${biddingresponce5.data.id}
329   - ${token2}= Get Variable Value ${biddingresponce5.access.token}
330   - log ${token2}
331   - Викликати для учасника ${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}
332 354
333 355 Можливість побачити скаргу користувачем під час подачі пропозицій
334 356 [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера
335   - Викликати для учасника ${provider} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
  357 + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
336 358
337 359 можливість побачити скаргу анонімом під час подачі пропозицій
338 360 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
339   - Викликати для учасника ${viewer} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]}
340   -
  361 + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
341 362
342 363 Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій
343 364 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій
344 365 Дочекатись дати закінчення прийому пропозицій
345   - Set To Dictionary ${biddingresponce1.data.value} amount 50000
346   - Log ${biddingresponce5.data.value}
347   - ${biddingresponce6}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5}
348   - Set Global Variable ${biddingresponce6}
349   - log ${biddingresponce6}
350   -
  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}
  371 +
351 372 Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
352 373 [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій
353   - Set To Dictionary ${biddingresponce5.data.value} amount 1
354   - Log ${biddingresponce1.data.value}
355   - ${biddingresponce7}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5}
356   - Set Global Variable ${biddingresponce7}
357   - 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}
358 379
359 380 Неможливість скасувати цінову пропозицію
360   - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію
361   - ${biddingresponce8}= Викликати для учасника ${provider} скасувати цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5}
362   - Set Global Variable ${biddingresponce4}
363   - log ${biddingresponce8}
  381 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію
  382 + ${biddingresponce}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']}
364 383
365 384 Неможливість завантажити документ другим учасником після закінчення прийому пропозицій
366   - [Tags] ${USERS.users['${provider}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій
367   - log ${USERS.users['${provider1}'].broker}
368   - log ${biddingresponce5}
369   - ${bid_id}= get variable value ${biddingresponce5.data.id}
370   - ${token1}= Get Variable Value ${biddingresponce5.access.token}
371   - log ${token1}
372   - ${upload_doc_responce2}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${token1} ${bid_id}
373   - log ${upload_doc_responce_id2}
374   - Set Global Variable ${upload_doc_responce2}
375   -
376   -Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій
377   - [Tags] ${USERS.users['${provider}'].broker}: Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій
378   - log ${USERS.users['${provider}'].broker}
379   - log ${biddingresponce5}
380   - ${bid_id}= get variable value ${biddingresponce5.data.id}
381   - ${token1}= Get Variable Value ${biddingresponce5.access.token}
382   - ${upload_doc_responce_id2}= get variable value ${upload_doc_responce2.data.id}
383   - log ${upload_doc_responce_id2}
384   - log ${token1}
385   - Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id2}
386   -
387   -
388   -Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій
389   - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця
390   - log ${USERS.users['${provider}'].broker}
391   - log ${biddingresponce1}
392   - ${bid_id}= get variable value ${biddingresponce1.data.id}
393   - ${token1}= Get Variable Value ${biddingresponce1.access.token}
394   - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id}
395   - log ${token1}
396   - Викликати для учасника ${provider} Змінити документ в ставці ${token1} ${bid_id} ${upload_doc_responce_id}
397   -
398   -
399   -Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій
400   - [Tags] ${USERS.users['${provider}'].broker}: Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій
401   - ${biddingresponce8}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5}
402   - Set Global Variable ${biddingresponce8}
403   - log ${biddingresponce8}
  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}
404 389
  390 +Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій
  391 + [Tags] ${USERS.users['${provider1}'].broker}:
  392 + ${filepath}= create_fake_doc
  393 + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id}
  394 + ${docid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['bid_doc_upload']['upload_responce'].data.id}
  395 + ${bid_doc_modified_failed}= Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${filepath} ${bidid} ${docid}
  396 + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_modified_failed ${bid_doc_modified_failed}
  397 +
  398 +Вичитати цінову пропозицію
  399 + #sleep 120
  400 + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію
  401 + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id}
  402 + ${token}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].access.token}
  403 + ${bids}= Викликати для учасника ${provider1} Отримати пропозиції ${TENDER['TENDER_UAID']} ${bidid} ${token}
  404 + log ${bids}
\ No newline at end of file
... ...
... ... @@ -11,9 +11,7 @@ Suite Teardown Close all browsers
11 11
12 12 *** Variables ***
13 13 ${tender_dump_id} 0
14   -${item_id} 0
15   -${question_id} 0
16   -
  14 +${mode} single
17 15
18 16 ${tender_owner} Tender_Owner
19 17 ${provider} Tender_User
... ... @@ -21,16 +19,9 @@ ${provider1} Tender_User1
21 19 ${viewer} Tender_Viewer
22 20
23 21 ${LOAD_USERS} ["${tender_owner}", "${provider}", "${provider1}", "${viewer}"]
24   -#Avalable roles and users
25 22
26   -#roles: Owner, User, Viewer
27   -
28   -#palyers:
29   - #E-tender
30   - #Prom
31   - #SmartTender
32   - #Publicbid
33   - #Netcast
  23 +${item_id} 0
  24 +${question_id} 0
34 25
35 26 *** Test Cases ***
36 27 Можливість оголосити однопердметний тендер
... ...
Please register or login to post a comment