Commit 222e9062c1e8b6b9e3b41823fd18765dadbbb1cc
Committed by
GitHub
Merge pull request #594 from kosaniak/master
Merge devel into master
Showing
36 changed files
with
2768 additions
and
678 deletions
| @@ -79,7 +79,7 @@ robot_tests.broker.proztorg = git ${remotes:gh}openprocurement/robot_tests.b | @@ -79,7 +79,7 @@ robot_tests.broker.proztorg = git ${remotes:gh}openprocurement/robot_tests.b | ||
| 79 | robot_tests.broker.uub = git ${remotes:gh}openprocurement/robot_tests.broker.uub.git | 79 | robot_tests.broker.uub = git ${remotes:gh}openprocurement/robot_tests.broker.uub.git |
| 80 | robot_tests.broker.aps = git ${remotes:gh}openprocurement/robot_tests.broker.aps.git | 80 | robot_tests.broker.aps = git ${remotes:gh}openprocurement/robot_tests.broker.aps.git |
| 81 | robot_tests.broker.kapitalist = git ${remotes:gh}openprocurement/robot_tests.broker.kapitalist.git | 81 | robot_tests.broker.kapitalist = git ${remotes:gh}openprocurement/robot_tests.broker.kapitalist.git |
| 82 | -robot_tests.broker.pzo = git ${remotes:gh}openprocurement/robot_tests.broker.pzo.git | 82 | +robot_tests.broker.pzo = git ${remotes:gh}openprocurement/robot_tests.broker.pzo.git |
| 83 | 83 | ||
| 84 | [versions] | 84 | [versions] |
| 85 | Faker = 0.7.7 | 85 | Faker = 0.7.7 |
| @@ -14,9 +14,12 @@ Resource base_keywords.robot | @@ -14,9 +14,12 @@ Resource base_keywords.robot | ||
| 14 | Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description | 14 | Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | -Можливість продовжити період подання пропозиції на 7 днів | ||
| 18 | - ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 7 | 17 | +Можливість продовжити період подання пропозиції на ${number_of_days} днів |
| 18 | + ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} | ||
| 19 | + ${number_of_minutes}= get_number_of_minutes ${number_of_days} ${period_intervals.${MODE}.accelerator} | ||
| 20 | + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} ${number_of_minutes} | ||
| 19 | Можливість змінити поле tenderPeriod.endDate тендера на ${endDate} | 21 | Можливість змінити поле tenderPeriod.endDate тендера на ${endDate} |
| 22 | + Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod} endDate | ||
| 20 | 23 | ||
| 21 | ############################################################################################## | 24 | ############################################################################################## |
| 22 | # BIDDING | 25 | # BIDDING |
| @@ -31,7 +34,7 @@ Resource base_keywords.robot | @@ -31,7 +34,7 @@ Resource base_keywords.robot | ||
| 31 | 34 | ||
| 32 | Можливість підтвердити цінову пропозицію учасником ${username} | 35 | Можливість підтвердити цінову пропозицію учасником ${username} |
| 33 | ${status}= Run Keyword IF '${MODE}'=='openeu' Set Variable pending | 36 | ${status}= Run Keyword IF '${MODE}'=='openeu' Set Variable pending |
| 34 | - ... ELSE IF '${MODE}'=='openua' Set Variable active | 37 | + ... ELSE IF '${MODE}'=='openua' or '${MODE}'=='openua_defense' Set Variable active |
| 35 | Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status} | 38 | Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status} |
| 36 | 39 | ||
| 37 | ############################################################################################## | 40 | ############################################################################################## |
| @@ -102,4 +102,4 @@ Suite Teardown Test Suite Teardown | @@ -102,4 +102,4 @@ Suite Teardown Test Suite Teardown | ||
| 102 | ... Run Keywords | 102 | ... Run Keywords |
| 103 | ... Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників | 103 | ... Wait Until Keyword Succeeds 5 times 30 s Page should not contain очікуємо розкриття учасників |
| 104 | ... AND | 104 | ... AND |
| 105 | - ... Close browser | 105 | + ... Close browser |
| 1 | +*** Settings *** | ||
| 2 | +Resource keywords.robot | ||
| 3 | +Resource resource.robot | ||
| 4 | +Suite Setup Test Suite Setup | ||
| 5 | +Suite Teardown Test Suite Teardown | ||
| 6 | +Library Selenium2Library | ||
| 7 | + | ||
| 8 | +*** Variables *** | ||
| 9 | +@{USED_ROLES} viewer provider provider1 | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +*** Test Cases *** | ||
| 13 | +Можливість знайти закупівлю по ідентифікатору | ||
| 14 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера | ||
| 15 | + ... ${USERS.users['${viewer}'].broker} | ||
| 16 | + ... find_tender | ||
| 17 | + Завантажити дані про тендер | ||
| 18 | + Run As ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | ||
| 19 | + | ||
| 20 | +############################################################################################## | ||
| 21 | +# AUCTION | ||
| 22 | +############################################################################################## | ||
| 23 | + | ||
| 24 | +Відображення дати початку аукціону | ||
| 25 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних аукціону | ||
| 26 | + ... viewer | ||
| 27 | + ... ${USERS.users['${viewer}'].broker} | ||
| 28 | + ... tender_view | ||
| 29 | + [Setup] Дочекатись дати закінчення прийому пропозицій ${viewer} ${TENDER['TENDER_UAID']} | ||
| 30 | + Дочекатись дати початку періоду аукціону ${viewer} ${TENDER['TENDER_UAID']} | ||
| 31 | + Отримати дані із тендера ${viewer} ${TENDER['TENDER_UAID']} auctionPeriod.startDate ${TENDER['LOT_ID']} | ||
| 32 | + | ||
| 33 | + | ||
| 34 | +Можливість дочекатися початку аукціону | ||
| 35 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 36 | + ... viewer | ||
| 37 | + ... ${USERS.users['${viewer}'].broker} | ||
| 38 | + ... auction | ||
| 39 | + Дочекатись дати початку аукціону ${viewer} | ||
| 40 | + | ||
| 41 | + | ||
| 42 | +Можливість вичитати посилання на аукціон для першого учасника | ||
| 43 | + [Tags] ${USERS.users['${provider}'].broker}: Процес аукціону | ||
| 44 | + ... provider | ||
| 45 | + ... ${USERS.users['${provider}'].broker} | ||
| 46 | + ... auction | ||
| 47 | + Можливість вичитати посилання на аукціон для ${provider} | ||
| 48 | + | ||
| 49 | + | ||
| 50 | +Можливість вичитати посилання на аукціон для другого учасника | ||
| 51 | + [Tags] ${USERS.users['${provider1}'].broker}: Процес аукціону | ||
| 52 | + ... provider1 | ||
| 53 | + ... ${USERS.users['${provider1}'].broker} | ||
| 54 | + ... auction | ||
| 55 | + Можливість вичитати посилання на аукціон для ${provider1} | ||
| 56 | + | ||
| 57 | + | ||
| 58 | +Можливість вичитати посилання на аукціон для глядача | ||
| 59 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 60 | + ... viewer | ||
| 61 | + ... ${USERS.users['${viewer}'].broker} | ||
| 62 | + ... auction | ||
| 63 | + Можливість вичитати посилання на аукціон для ${viewer} | ||
| 64 | + | ||
| 65 | + | ||
| 66 | +Можливість дочекатись першого раунду | ||
| 67 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 68 | + ... viewer provider provider1 | ||
| 69 | + ... ${USERS.users['${viewer}'].broker} | ||
| 70 | + ... ${USERS.users['${provider}'].broker} | ||
| 71 | + ... ${USERS.users['${provider1}'].broker} | ||
| 72 | + ... auction | ||
| 73 | + Дочекатись завершення паузи перед першим раундом | ||
| 74 | + | ||
| 75 | + | ||
| 76 | +Можливість проведення 1 го раунду аукціону для першого учасника | ||
| 77 | + [Tags] ${USERS.users['${provider}'].broker}: Процес аукціону | ||
| 78 | + ... provider | ||
| 79 | + ... ${USERS.users['${provider}'].broker} | ||
| 80 | + ... auction | ||
| 81 | + Вибрати учасника, який може зробити ставку | ||
| 82 | + Поставити максимально можливу ставку | ||
| 83 | + Дочекатись учасником закінчення стадії ставок | ||
| 84 | + Перевірити чи ставка була прийнята | ||
| 85 | + | ||
| 86 | + | ||
| 87 | +Можливість проведення 1 го раунду аукціону для другого учасника | ||
| 88 | + [Tags] ${USERS.users['${provider1}'].broker}: Процес аукціону | ||
| 89 | + ... provider1 | ||
| 90 | + ... ${USERS.users['${provider1}'].broker} | ||
| 91 | + ... auction | ||
| 92 | + Вибрати учасника, який може зробити ставку | ||
| 93 | + Поставити ставку більшу від максимальної на 1 грн | ||
| 94 | + Поставити максимально можливу ставку | ||
| 95 | + Дочекатись учасником закінчення стадії ставок | ||
| 96 | + Перевірити чи ставка була прийнята | ||
| 97 | + | ||
| 98 | + | ||
| 99 | +Можливість дочекатись другого раунду | ||
| 100 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 101 | + ... viewer provider provider1 | ||
| 102 | + ... ${USERS.users['${viewer}'].broker} | ||
| 103 | + ... ${USERS.users['${provider}'].broker} | ||
| 104 | + ... ${USERS.users['${provider1}'].broker} | ||
| 105 | + ... auction | ||
| 106 | + Дочекатись завершення паузи перед 2 раундом | ||
| 107 | + | ||
| 108 | + | ||
| 109 | +Можливість проведення 2 го раунду аукціону для першого учасника | ||
| 110 | + [Tags] ${USERS.users['${provider}'].broker}: Процес аукціону | ||
| 111 | + ... provider | ||
| 112 | + ... ${USERS.users['${provider}'].broker} | ||
| 113 | + ... auction | ||
| 114 | + Вибрати учасника, який може зробити ставку | ||
| 115 | + Поставити малу ставку в 1 грн | ||
| 116 | + Відмінитити ставку | ||
| 117 | + Поставити максимально можливу ставку | ||
| 118 | + Дочекатись учасником закінчення стадії ставок | ||
| 119 | + Перевірити чи ставка була прийнята | ||
| 120 | + | ||
| 121 | + | ||
| 122 | +Можливість проведення 2 го раунду аукціону для другого учасника | ||
| 123 | + [Tags] ${USERS.users['${provider1}'].broker}: Процес аукціону | ||
| 124 | + ... provider1 | ||
| 125 | + ... ${USERS.users['${provider1}'].broker} | ||
| 126 | + ... auction | ||
| 127 | + Дочекатись учасником закінчення стадії ставок | ||
| 128 | + Вибрати учасника, який може зробити ставку | ||
| 129 | + Поставити максимально можливу ставку | ||
| 130 | + Дочекатись учасником закінчення стадії ставок | ||
| 131 | + Перевірити чи ставка була прийнята | ||
| 132 | + | ||
| 133 | + | ||
| 134 | +Можливість дочекатись третього раунду | ||
| 135 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 136 | + ... viewer provider provider1 | ||
| 137 | + ... ${USERS.users['${viewer}'].broker} | ||
| 138 | + ... ${USERS.users['${provider}'].broker} | ||
| 139 | + ... ${USERS.users['${provider1}'].broker} | ||
| 140 | + ... auction | ||
| 141 | + Дочекатись завершення паузи перед 3 раундом | ||
| 142 | + | ||
| 143 | + | ||
| 144 | +Можливість проведення 3 го раунду аукціону для першого учасника | ||
| 145 | + [Tags] ${USERS.users['${provider}'].broker}: Процес аукціону | ||
| 146 | + ... provider | ||
| 147 | + ... ${USERS.users['${provider}'].broker} | ||
| 148 | + ... auction | ||
| 149 | + Вибрати учасника, який може зробити ставку | ||
| 150 | + Поставити нульову ставку | ||
| 151 | + Поставити максимально можливу ставку | ||
| 152 | + Дочекатись учасником закінчення стадії ставок | ||
| 153 | + Перевірити чи ставка була прийнята | ||
| 154 | + | ||
| 155 | + | ||
| 156 | +Можливість проведення 3 го раунду аукціону для другого учасника | ||
| 157 | + [Tags] ${USERS.users['${provider1}'].broker}: Процес аукціону | ||
| 158 | + ... provider1 | ||
| 159 | + ... ${USERS.users['${provider1}'].broker} | ||
| 160 | + ... auction | ||
| 161 | + Вибрати учасника, який може зробити ставку | ||
| 162 | + Поставити малу ставку в 1 грн | ||
| 163 | + Змінити ставку на максимальну | ||
| 164 | + Дочекатись учасником закінчення стадії ставок | ||
| 165 | + Перевірити чи ставка була прийнята | ||
| 166 | + | ||
| 167 | + | ||
| 168 | +Можливість дочекатися завершення аукціону | ||
| 169 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 170 | + ... viewer provider provider1 | ||
| 171 | + ... ${USERS.users['${viewer}'].broker} | ||
| 172 | + ... ${USERS.users['${provider}'].broker} | ||
| 173 | + ... ${USERS.users['${provider1}'].broker} | ||
| 174 | + ... auction | ||
| 175 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 176 | + Дочекатись дати закінчення аукціону | ||
| 177 | + | ||
| 178 | + | ||
| 179 | +Відображення дати завершення аукціону | ||
| 180 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних аукціону | ||
| 181 | + ... viewer | ||
| 182 | + ... ${USERS.users['${viewer}'].broker} | ||
| 183 | + ... tender_view | ||
| 184 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 185 | + Отримати дані із тендера ${viewer} ${TENDER['TENDER_UAID']} auctionPeriod.endDate ${TENDER['LOT_ID']} | ||
| 186 | + | ||
| 187 | + | ||
| 188 | +*** Keywords *** | ||
| 189 | +Дочекатись дати початку аукціону | ||
| 190 | + [Arguments] ${username} | ||
| 191 | + # Can't use that dirty hack here since we don't know | ||
| 192 | + # the date of auction when creating the procurement :) | ||
| 193 | + ${auctionStart}= Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} auctionPeriod.startDate ${TENDER['LOT_ID']} | ||
| 194 | + Дочекатись дати ${auctionStart} | ||
| 195 | + Оновити LAST_MODIFICATION_DATE | ||
| 196 | + Дочекатись синхронізації з майданчиком ${username} | ||
| 197 | + | ||
| 198 | + | ||
| 199 | +Можливість вичитати посилання на аукціон для ${username} | ||
| 200 | + ${url}= Run Keyword If '${username}' == '${viewer}' Run As ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']} | ||
| 201 | + ... ELSE Run As ${username} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']} | ||
| 202 | + Should Be True '${url}' | ||
| 203 | + Should Match Regexp ${url} ^https?:\/\/auction(?:-sandbox)?\.openprocurement\.org\/tenders\/([0-9A-Fa-f]{32}) | ||
| 204 | + Log URL: ${url} | ||
| 205 | + [return] ${url} | ||
| 206 | + | ||
| 207 | + | ||
| 208 | +Відкрити сторінку аукціону для ${username} | ||
| 209 | + ${url}= Можливість вичитати посилання на аукціон для ${username} | ||
| 210 | + Open browser ${url} ${USERS.users['${username}'].browser} ${username} | ||
| 211 | + Set Window Position @{USERS['${username}']['position']} | ||
| 212 | + Set Window Size @{USERS['${username}']['size']} | ||
| 213 | + Run Keyword Unless '${username}' == '${viewer}' | ||
| 214 | + ... Click Element xpath=//button[contains(@class, 'btn btn-success')] | ||
| 215 | + | ||
| 216 | + | ||
| 217 | +Дочекатись завершення паузи перед першим раундом | ||
| 218 | + Відкрити сторінку аукціону для ${viewer} | ||
| 219 | + Дочекатись паузи перед першим раундом глядачем | ||
| 220 | + Дочекатись завершення паузи перед першим раундом для користувачів | ||
| 221 | + | ||
| 222 | + | ||
| 223 | +Дочекатись дати закінчення аукціону | ||
| 224 | + Переключитись на учасника ${viewer} | ||
| 225 | + ${status} ${_}= Run Keyword And Ignore Error Wait Until Keyword Succeeds 61 times 30 s Page should contain Аукціон завершився | ||
| 226 | + Run Keyword If '${status}' == 'FAIL' | ||
| 227 | + ... Run Keywords | ||
| 228 | + ... Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} auctionPeriod.startDate ${TENDER['LOT_ID']} | ||
| 229 | + ... AND | ||
| 230 | + ... Дочекатись дати початку аукціону ${username} | ||
| 231 | + ... AND | ||
| 232 | + ... Дочекатись дати закінчення аукціону для ${username} | ||
| 233 | + ... ELSE | ||
| 234 | + ... Run Keywords | ||
| 235 | + ... Wait Until Keyword Succeeds 15 times 30 s Page should not contain Очікуємо на розкриття імен учасників | ||
| 236 | + ... AND | ||
| 237 | + ... Переключитись на учасника ${provider} | ||
| 238 | + ... AND | ||
| 239 | + ... Page should contain Аукціон завершився | ||
| 240 | + ... AND | ||
| 241 | + ... Переключитись на учасника ${provider1} | ||
| 242 | + ... AND | ||
| 243 | + ... Page should contain Аукціон завершився | ||
| 244 | + ... AND | ||
| 245 | + ... Close browser | ||
| 246 | + | ||
| 247 | + | ||
| 248 | +Дочекатись паузи перед першим раундом глядачем | ||
| 249 | + ${status} ${_}= Run Keyword And Ignore Error Page should contain Очікування | ||
| 250 | + Run Keyword If '${status}' == 'PASS' | ||
| 251 | + ... Run Keywords | ||
| 252 | + ... Дочекатись дати початку аукціону ${viewer} | ||
| 253 | + ... AND | ||
| 254 | + ... Wait Until Keyword Succeeds 15 times 10 s Page should contain до початку раунду | ||
| 255 | + | ||
| 256 | + | ||
| 257 | +Дочекатись завершення паузи перед ${round_number} раундом | ||
| 258 | + Переключитись на учасника ${viewer} | ||
| 259 | + Wait Until Keyword Succeeds 30 times 5s Page should contain → ${round_number} | ||
| 260 | + ${date}= Get Current Date | ||
| 261 | + Переключитись на учасника ${provider} | ||
| 262 | + Page should contain → ${round_number} | ||
| 263 | + Переключитись на учасника ${provider1} | ||
| 264 | + Page should contain → ${round_number} | ||
| 265 | + Переключитись на учасника ${viewer} | ||
| 266 | + Wait Until Keyword Succeeds 30 times 5 s Page should not contain → ${round_number} | ||
| 267 | + ${new_date}= Get Current Date | ||
| 268 | + Переключитись на учасника ${provider} | ||
| 269 | + Page should not contain → ${round_number} | ||
| 270 | + Переключитись на учасника ${provider1} | ||
| 271 | + Page should not contain → ${round_number} | ||
| 272 | + ${time}= Subtract Date From Date ${new_date} ${date} | ||
| 273 | + Should Be True ${time} < 140 and ${time} > 100 | ||
| 274 | + | ||
| 275 | + | ||
| 276 | +Дочекатись завершення паузи перед першим раундом для користувачів | ||
| 277 | + Wait Until Keyword Succeeds 30 times 5s Page should contain → 1 | ||
| 278 | + ${date}= Get Current Date | ||
| 279 | + Відкрити сторінку аукціону для ${provider} | ||
| 280 | + Відкрити сторінку аукціону для ${provider1} | ||
| 281 | + Переключитись на учасника ${viewer} | ||
| 282 | + Wait Until Keyword Succeeds 62 times 5 s Page should not contain → 1 | ||
| 283 | + ${new_date}= Get Current Date | ||
| 284 | + ${time}= Subtract Date From Date ${new_date} ${date} | ||
| 285 | + Should Be True ${time} < 310 and ${time} > 250 | ||
| 286 | + Переключитись на учасника ${provider} | ||
| 287 | + Page should not contain → 1 | ||
| 288 | + Переключитись на учасника ${provider1} | ||
| 289 | + Page should not contain → 1 | ||
| 290 | + | ||
| 291 | + | ||
| 292 | +Дочекатись закінчення стадії ставок глядачем | ||
| 293 | + Wait Until Keyword Succeeds 30 times 5s Page should contain до закінчення раунду | ||
| 294 | + ${date}= Get Current Date | ||
| 295 | + Wait Until Keyword Succeeds 50 times 5 s Page should not contain до закінчення раунду | ||
| 296 | + ${new_date}= Get Current Date | ||
| 297 | + ${time}= Subtract Date From Date ${new_date} ${date} | ||
| 298 | + Should Be True ${time} < 250 and ${time} > 210 | ||
| 299 | + | ||
| 300 | + | ||
| 301 | +Дочекатись учасником закінчення стадії ставок | ||
| 302 | + Wait Until Keyword Succeeds 12 times 10 s Page should not contain до закінчення вашої черги | ||
| 303 | + | ||
| 304 | + | ||
| 305 | +Дочекатись оголошення результатів глядачем | ||
| 306 | + Wait Until Keyword Succeeds 30 times 5s Page should contain до оголошення результатів | ||
| 307 | + ${date}= Get Current Date | ||
| 308 | + Wait Until Keyword Succeeds 50 times 5 s Page should not contain до оголошення результатів | ||
| 309 | + ${new_date}= Get Current Date | ||
| 310 | + ${time}= Subtract Date From Date ${new_date} ${date} | ||
| 311 | + Should Be True ${time} < 250 and ${time} > 210 | ||
| 312 | + | ||
| 313 | + | ||
| 314 | +Переключитись на учасника | ||
| 315 | + [Arguments] ${username} | ||
| 316 | + Switch Browser ${username} | ||
| 317 | + ${CURRENT_USER}= Set Variable ${username} | ||
| 318 | + Set Global Variable ${CURRENT_USER} | ||
| 319 | + | ||
| 320 | + | ||
| 321 | +Поставити максимально можливу ставку | ||
| 322 | + Wait Until Page Contains Element id=max_bid_amount_price | ||
| 323 | + ${last_amount}= Get Text id=max_bid_amount_price | ||
| 324 | + ${last_amount}= convert_amount_string_to_float ${last_amount} | ||
| 325 | + ${value}= Convert To Number 0.01 | ||
| 326 | + ${last_amount}= subtraction ${last_amount} ${value} | ||
| 327 | + Поставити ставку ${last_amount} Заявку прийнято | ||
| 328 | + | ||
| 329 | + | ||
| 330 | +Поставити ставку більшу від максимальної на ${extra_amount} грн | ||
| 331 | + Wait Until Page Contains Element id=max_bid_amount_price | ||
| 332 | + ${last_amount}= Get Text id=max_bid_amount_price | ||
| 333 | + ${last_amount}= convert_amount_string_to_float ${last_amount} | ||
| 334 | + ${extra_amount}= convert_amount_string_to_float ${extra_amount} | ||
| 335 | + ${last_amount}= Evaluate ${last_amount}+${extra_amount} | ||
| 336 | + Поставити ставку ${last_amount} Надто висока заявка | ||
| 337 | + | ||
| 338 | + | ||
| 339 | +Поставити ставку | ||
| 340 | + [Arguments] ${amount} ${msg} | ||
| 341 | + ${amount}= Convert To String ${amount} | ||
| 342 | + Set To Dictionary ${USERS['${CURRENT_USER}']} last_amount=${amount} | ||
| 343 | + Click Element id=clear-bid-button | ||
| 344 | + Wait Until Page Does Not Contain Element xpath=//alert[contains(@class, 'bids-form')] 7s | ||
| 345 | + Input Text id=bid-amount-input ${amount} | ||
| 346 | + Click Element id=place-bid-button | ||
| 347 | + Wait Until Page Contains ${msg} 30s | ||
| 348 | + | ||
| 349 | + | ||
| 350 | +Відмінитити ставку | ||
| 351 | + Click Element id=cancel-bid-button | ||
| 352 | + Wait Until Page Contains Заявку відмінено 10s | ||
| 353 | + | ||
| 354 | + | ||
| 355 | +Змінити ставку на максимальну | ||
| 356 | + Click Element id=edit-bid-button | ||
| 357 | + Click Element id=clear-bid-button | ||
| 358 | + Поставити максимально можливу ставку | ||
| 359 | + | ||
| 360 | + | ||
| 361 | +Вибрати учасника, який може зробити ставку | ||
| 362 | + :FOR ${username} IN ${provider} ${provider1} | ||
| 363 | + \ Переключитись на учасника ${username} | ||
| 364 | + \ ${status} ${_}= Run Keyword And Ignore Error Page Should Contain до закінчення вашої черги | ||
| 365 | + \ Run Keyword If '${status}' == 'PASS' Exit For Loop | ||
| 366 | + | ||
| 367 | + | ||
| 368 | +Поставити малу ставку в ${last_amount} грн | ||
| 369 | + Wait Until Page Contains Element id=max_bid_amount_price | ||
| 370 | + Поставити ставку ${last_amount} Ви ввели дуже малу суму | ||
| 371 | + | ||
| 372 | + | ||
| 373 | +Поставити нульову ставку | ||
| 374 | + Wait Until Page Contains Element id=max_bid_amount_price | ||
| 375 | + Поставити ставку 0 Bid amount is required | ||
| 376 | + | ||
| 377 | + | ||
| 378 | +Перевірити чи ставка була прийнята | ||
| 379 | + ${last_amount}= convert_amount ${USERS['${CURRENT_USER}']['last_amount']} | ||
| 380 | + Page Should Contain ${last_amount} |
| @@ -37,6 +37,22 @@ Resource resource.robot | @@ -37,6 +37,22 @@ Resource resource.robot | ||
| 37 | \ Should Match Regexp ${document_url} ^https?:\/\/public.docs(?:-sandbox)?\.openprocurement\.org\/get\/([0-9A-Fa-f]{32}) msg=Not a Document Service Upload | 37 | \ Should Match Regexp ${document_url} ^https?:\/\/public.docs(?:-sandbox)?\.openprocurement\.org\/get\/([0-9A-Fa-f]{32}) msg=Not a Document Service Upload |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | +Можливість створити план закупівлі | ||
| 41 | + ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS} | ||
| 42 | + ${tender_parameters}= Create Dictionary | ||
| 43 | + ... mode=${MODE} | ||
| 44 | + ... number_of_items=${NUMBER_OF_ITEMS} | ||
| 45 | + ... tender_meat=${${TENDER_MEAT}} | ||
| 46 | + ... item_meat=${${ITEM_MEAT}} | ||
| 47 | + ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} | ||
| 48 | + Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} | ||
| 49 | + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters} | ||
| 50 | + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_data} | ||
| 51 | + ${TENDER_UAID}= Run As ${tender_owner} Створити план ${adapted_data} | ||
| 52 | + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | ||
| 53 | + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} | ||
| 54 | + | ||
| 55 | + | ||
| 40 | Можливість знайти тендер по ідентифікатору для усіх користувачів | 56 | Можливість знайти тендер по ідентифікатору для усіх користувачів |
| 41 | :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer} | 57 | :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer} |
| 42 | \ Можливість знайти тендер по ідентифікатору для користувача ${username} | 58 | \ Можливість знайти тендер по ідентифікатору для користувача ${username} |
| @@ -47,6 +63,16 @@ Resource resource.robot | @@ -47,6 +63,16 @@ Resource resource.robot | ||
| 47 | Run as ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 63 | Run as ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
| 48 | 64 | ||
| 49 | 65 | ||
| 66 | +Можливість знайти план по ідентифікатору | ||
| 67 | + :FOR ${username} IN ${tender_owner} ${viewer} | ||
| 68 | + \ Можливість знайти план по ідентифікатору для користувача ${username} | ||
| 69 | + | ||
| 70 | + | ||
| 71 | +Можливість знайти план по ідентифікатору для користувача ${username} | ||
| 72 | + Дочекатись синхронізації з майданчиком ${username} | ||
| 73 | + Run as ${username} Пошук плану по ідентифікатору ${TENDER['TENDER_UAID']} | ||
| 74 | + | ||
| 75 | + | ||
| 50 | Можливість знайти тендер по ідентифікатору ${tender_id} та зберегти його в ${save_location} для користувача ${username} | 76 | Можливість знайти тендер по ідентифікатору ${tender_id} та зберегти його в ${save_location} для користувача ${username} |
| 51 | Дочекатись синхронізації з майданчиком ${username} | 77 | Дочекатись синхронізації з майданчиком ${username} |
| 52 | Run as ${username} Пошук тендера по ідентифікатору ${tender_id} ${save_location} | 78 | Run as ${username} Пошук тендера по ідентифікатору ${tender_id} ${save_location} |
| @@ -56,6 +82,10 @@ Resource resource.robot | @@ -56,6 +82,10 @@ Resource resource.robot | ||
| 56 | Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value} | 82 | Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value} |
| 57 | 83 | ||
| 58 | 84 | ||
| 85 | +Можливість змінити поле ${field_name} плану на ${field_value} | ||
| 86 | + Run As ${tender_owner} Внести зміни в план ${TENDER['TENDER_UAID']} ${field_name} ${field_value} | ||
| 87 | + | ||
| 88 | + | ||
| 59 | Можливість додати документацію до тендера | 89 | Можливість додати документацію до тендера |
| 60 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 90 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
| 61 | Run As ${tender_owner} Завантажити документ ${file_path} ${TENDER['TENDER_UAID']} | 91 | Run As ${tender_owner} Завантажити документ ${file_path} ${TENDER['TENDER_UAID']} |
| @@ -79,10 +109,25 @@ Resource resource.robot | @@ -79,10 +109,25 @@ Resource resource.robot | ||
| 79 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} | 109 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} |
| 80 | 110 | ||
| 81 | 111 | ||
| 112 | +Можливість додати предмет закупівлі в план | ||
| 113 | + ${item}= Підготувати дані для створення предмету закупівлі плану ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} | ||
| 114 | + Run As ${tender_owner} Додати предмет закупівлі в план ${TENDER['TENDER_UAID']} ${item} | ||
| 115 | + ${item_id}= get_id_from_object ${item} | ||
| 116 | + ${item_data}= Create Dictionary | ||
| 117 | + ... item=${item} | ||
| 118 | + ... item_id=${item_id} | ||
| 119 | + ${item_data}= munch_dict arg=${item_data} | ||
| 120 | + Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} | ||
| 121 | + | ||
| 122 | + | ||
| 82 | Можливість видалити предмет закупівлі з тендера | 123 | Можливість видалити предмет закупівлі з тендера |
| 83 | Run As ${tender_owner} Видалити предмет закупівлі ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id} | 124 | Run As ${tender_owner} Видалити предмет закупівлі ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id} |
| 84 | 125 | ||
| 85 | 126 | ||
| 127 | +Можливість видалити предмет закупівлі з плану | ||
| 128 | + Run As ${tender_owner} Видалити предмет закупівлі плану ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id} | ||
| 129 | + | ||
| 130 | + | ||
| 86 | Звірити відображення поля ${field} документа ${doc_id} із ${left} для користувача ${username} | 131 | Звірити відображення поля ${field} документа ${doc_id} із ${left} для користувача ${username} |
| 87 | ${right}= Run As ${username} Отримати інформацію із документа ${TENDER['TENDER_UAID']} ${doc_id} ${field} | 132 | ${right}= Run As ${username} Отримати інформацію із документа ${TENDER['TENDER_UAID']} ${doc_id} ${field} |
| 88 | Порівняти об'єкти ${left} ${right} | 133 | Порівняти об'єкти ${left} ${right} |
| @@ -101,6 +146,10 @@ Resource resource.robot | @@ -101,6 +146,10 @@ Resource resource.robot | ||
| 101 | Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} | 146 | Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} |
| 102 | 147 | ||
| 103 | 148 | ||
| 149 | +Звірити відображення поля ${field} плану для користувача ${username} | ||
| 150 | + Звірити поле плану ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} | ||
| 151 | + | ||
| 152 | + | ||
| 104 | Отримати доступ до тендера другого етапу та зберегти його | 153 | Отримати доступ до тендера другого етапу та зберегти його |
| 105 | Run as ${tender_owner} Отримати тендер другого етапу та зберегти його ${USERS.users['${tender_owner}'].tender_data.data.stage2TenderID} | 154 | Run as ${tender_owner} Отримати тендер другого етапу та зберегти його ${USERS.users['${tender_owner}'].tender_data.data.stage2TenderID} |
| 106 | ${TENDER_UAID_second_stage}= BuiltIn.Catenate SEPARATOR= ${TENDER['TENDER_UAID']} .2 | 155 | ${TENDER_UAID_second_stage}= BuiltIn.Catenate SEPARATOR= ${TENDER['TENDER_UAID']} .2 |
| @@ -115,6 +164,25 @@ Resource resource.robot | @@ -115,6 +164,25 @@ Resource resource.robot | ||
| 115 | Порівняти об'єкти ${left} ${right} | 164 | Порівняти об'єкти ${left} ${right} |
| 116 | 165 | ||
| 117 | 166 | ||
| 167 | +Отримати інформацію про документ тендера ${doc_id} ${username} | ||
| 168 | + ${file_properties} = Run as ${username} Отримати інформацію про документ ${TENDER['TENDER_UAID']} ${doc_id} | ||
| 169 | + Set To Dictionary ${USERS.users['${tender_owner}'].tender_document} file_properties=${file_properties} | ||
| 170 | + Log ${file_properties} | ||
| 171 | + | ||
| 172 | + | ||
| 173 | +Отримати інформацію про документ лотів ${doc_id} ${username} | ||
| 174 | + ${file_properties} = Run as ${username} Отримати інформацію про документ ${TENDER['TENDER_UAID']} ${doc_id} | ||
| 175 | + Set To Dictionary ${USERS.users['${tender_owner}'].lots_documents[0]} file_properties=${file_properties} | ||
| 176 | + Log ${file_properties} | ||
| 177 | + | ||
| 178 | + | ||
| 179 | +Звірити інформацію про документацію ${file_properties} ${username} | ||
| 180 | + ${file_contents}= Run as ${username} Отримати вміст документа ${file_properties.url} | ||
| 181 | + ${file_hash}= get_hash ${file_contents} | ||
| 182 | + ${new_file_properties}= Call Method ${USERS.users['${viewer}'].client} get_file_properties ${file_properties.url} ${file_hash} | ||
| 183 | + Порівняти об'єкти ${new_file_properties} ${file_properties} | ||
| 184 | + | ||
| 185 | + | ||
| 118 | Звірити відображення дати ${date} тендера для усіх користувачів | 186 | Звірити відображення дати ${date} тендера для усіх користувачів |
| 119 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | 187 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} |
| 120 | \ Звірити відображення дати ${date} тендера для користувача ${username} | 188 | \ Звірити відображення дати ${date} тендера для користувача ${username} |
| @@ -146,6 +214,17 @@ Resource resource.robot | @@ -146,6 +214,17 @@ Resource resource.robot | ||
| 146 | \ Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} | 214 | \ Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} |
| 147 | 215 | ||
| 148 | 216 | ||
| 217 | +Звірити відображення ${field} усіх предметів плану для усіх користувачів | ||
| 218 | + :FOR ${username} IN ${viewer} ${tender_owner} | ||
| 219 | + \ Звірити відображення ${field} усіх предметів плану для користувача ${username} | ||
| 220 | + | ||
| 221 | + | ||
| 222 | +Звірити відображення ${field} усіх предметів плану для користувача ${username} | ||
| 223 | + :FOR ${item_index} IN RANGE ${NUMBER_OF_ITEMS} | ||
| 224 | + \ ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]} | ||
| 225 | + \ Звірити поле плану із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${field}} ${field} ${item_id} | ||
| 226 | + | ||
| 227 | + | ||
| 149 | Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} | 228 | Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} |
| 150 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]} | 229 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]} |
| 151 | Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${field}} ${field} ${item_id} | 230 | Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${field}} ${field} ${item_id} |
| @@ -413,6 +492,71 @@ Resource resource.robot | @@ -413,6 +492,71 @@ Resource resource.robot | ||
| 413 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | 492 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} |
| 414 | \ Remove From List ${USERS.users['${username}'].tender_data.data['features']} ${feature_index} | 493 | \ Remove From List ${USERS.users['${username}'].tender_data.data['features']} ${feature_index} |
| 415 | 494 | ||
| 495 | + | ||
| 496 | +Звірити відображення поля ${field} зміни до договору для користувача ${username} | ||
| 497 | + Звірити поле зміни до договору ${username} ${CONTRACT_UAID} | ||
| 498 | + ... ${USERS.users['${tender_owner}'].change_data} | ||
| 499 | + ... ${field} | ||
| 500 | + | ||
| 501 | + | ||
| 502 | +Звірити відображення поля ${field} договору із ${left} для користувача ${username} | ||
| 503 | + ${right}= Run As ${username} Отримати інформацію із договору ${CONTRACT_UAID} ${field} | ||
| 504 | + Порівняти об'єкти ${left} ${right} | ||
| 505 | + | ||
| 506 | + | ||
| 507 | +Звірити відображення поля ${field} документа ${doc_id} до договору з ${left} для користувача ${username} | ||
| 508 | + ${right}= Run As ${username} Отримати інформацію із документа до договору ${CONTRACT_UAID} ${doc_id} ${field} | ||
| 509 | + Порівняти об'єкти ${left} ${right} | ||
| 510 | + | ||
| 511 | + | ||
| 512 | +Звірити відображення вмісту документа ${doc_id} до договору з ${left} для користувача ${username} | ||
| 513 | + ${file_name}= Run As ${username} Отримати документ до договору ${CONTRACT_UAID} ${doc_id} | ||
| 514 | + ${right}= Get File ${OUTPUT_DIR}${/}${file_name} | ||
| 515 | + Порівняти об'єкти ${left} ${right} | ||
| 516 | + | ||
| 517 | + | ||
| 518 | +Звірити відображення причин зміни договору | ||
| 519 | + ${rationale_types_from_broker}= Run as ${viewer} Отримати інформацію із договору ${CONTRACT_UAID} changes[0].rationaleTypes | ||
| 520 | + ${rationale_types_from_robot}= Get variable value ${USERS.users['${tender_owner}'].change_data.data.rationaleTypes} | ||
| 521 | + Log ${rationale_types_from_broker} | ||
| 522 | + Log ${rationale_types_from_robot} | ||
| 523 | + ${result}= compare_rationale_types ${rationale_types_from_broker} ${rationale_types_from_robot} | ||
| 524 | + Run keyword if ${result} == ${False} Fail Rationale types are not equal | ||
| 525 | + | ||
| 526 | + | ||
| 527 | +Додати документацію до зміни договору | ||
| 528 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | ||
| 529 | + ${doc_id}= get_id_from_string ${file_name} | ||
| 530 | + ${doc}= Create Dictionary | ||
| 531 | + ... id=${doc_id} | ||
| 532 | + ... name=${file_name} | ||
| 533 | + ... content=${file_content} | ||
| 534 | + Set to dictionary ${USERS.users['${tender_owner}']} change_doc=${doc} | ||
| 535 | + Run As ${tender_owner} Додати документацію до зміни в договорі ${CONTRACT_UAID} ${file_path} | ||
| 536 | + Remove File ${file_path} | ||
| 537 | + | ||
| 538 | + | ||
| 539 | +Додати документацію до договору | ||
| 540 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | ||
| 541 | + ${doc_id}= get_id_from_string ${file_name} | ||
| 542 | + ${doc}= Create Dictionary | ||
| 543 | + ... id=${doc_id} | ||
| 544 | + ... name=${file_name} | ||
| 545 | + ... content=${file_content} | ||
| 546 | + Set to dictionary ${USERS.users['${tender_owner}']} contract_doc=${doc} | ||
| 547 | + Run As ${tender_owner} Завантажити документацію до договору ${CONTRACT_UAID} ${file_path} | ||
| 548 | + Remove File ${file_path} | ||
| 549 | + | ||
| 550 | + | ||
| 551 | +Вказати дійсно оплачену суму | ||
| 552 | + ${amount}= Get variable value ${USERS.users['${tender_owner}'].contract_data.data.value.amount} | ||
| 553 | + ${amountPaid}= Create Dictionary amount=${amount} valueAddedTaxIncluded=${True} currency=UAH | ||
| 554 | + ${data}= Create Dictionary amountPaid=${amountPaid} | ||
| 555 | + ${data}= Create Dictionary data=${data} | ||
| 556 | + Set to dictionary ${USERS.users['${tender_owner}']} terminating_data=${data} | ||
| 557 | + Run As ${tender_owner} Внести зміни в договір ${CONTRACT_UAID} ${data} | ||
| 558 | + | ||
| 559 | + | ||
| 416 | ############################################################################################## | 560 | ############################################################################################## |
| 417 | # QUESTIONS | 561 | # QUESTIONS |
| 418 | ############################################################################################## | 562 | ############################################################################################## |
| @@ -669,7 +813,7 @@ Resource resource.robot | @@ -669,7 +813,7 @@ Resource resource.robot | ||
| 669 | 813 | ||
| 670 | Можливість скасувати вимогу про виправлення визначення ${award_index} переможця | 814 | Можливість скасувати вимогу про виправлення визначення ${award_index} переможця |
| 671 | ${cancellation_reason}= create_fake_sentence | 815 | ${cancellation_reason}= create_fake_sentence |
| 672 | - ${status}= Set variable if 'open' in '${MODE}' stopping cancelled | 816 | + ${status}= Set variable if "${USERS.users['${provider}'].tender_data.data.awards[${award_index}].complaints[-1].status}" == 'pending' and 'open' in '${MODE}' stopping cancelled |
| 673 | ${data}= Create Dictionary | 817 | ${data}= Create Dictionary |
| 674 | ... status=${status} | 818 | ... status=${status} |
| 675 | ... cancellationReason=${cancellation_reason} | 819 | ... cancellationReason=${cancellation_reason} |
| @@ -682,7 +826,6 @@ Resource resource.robot | @@ -682,7 +826,6 @@ Resource resource.robot | ||
| 682 | ... ${cancellation_data} | 826 | ... ${cancellation_data} |
| 683 | ... ${award_index} | 827 | ... ${award_index} |
| 684 | Set To Dictionary ${USERS.users['${provider}'].claim_data} cancellation ${cancellation_data} | 828 | Set To Dictionary ${USERS.users['${provider}'].claim_data} cancellation ${cancellation_data} |
| 685 | - ${status}= Set variable if 'open' in '${MODE}' stopping cancelled | ||
| 686 | Wait until keyword succeeds | 829 | Wait until keyword succeeds |
| 687 | ... 40 min 15 sec | 830 | ... 40 min 15 sec |
| 688 | ... 15 sec | 831 | ... 15 sec |
| @@ -971,6 +1114,7 @@ Resource resource.robot | @@ -971,6 +1114,7 @@ Resource resource.robot | ||
| 971 | ... ELSE Set Variable ${None} | 1114 | ... ELSE Set Variable ${None} |
| 972 | Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} | 1115 | Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} |
| 973 | 1116 | ||
| 1117 | + | ||
| 974 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} | 1118 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} |
| 975 | ${bid}= Підготувати дані для подання пропозиції | 1119 | ${bid}= Підготувати дані для подання пропозиції |
| 976 | ${values}= Get Variable Value ${bid.data.lotValues[0]} | 1120 | ${values}= Get Variable Value ${bid.data.lotValues[0]} |
| @@ -1042,9 +1186,65 @@ Resource resource.robot | @@ -1042,9 +1186,65 @@ Resource resource.robot | ||
| 1042 | Remove File ${file_path} | 1186 | Remove File ${file_path} |
| 1043 | 1187 | ||
| 1044 | 1188 | ||
| 1189 | +Можливість завантажити документ в ${contract_index} угоду користувачем ${username} | ||
| 1190 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | ||
| 1191 | + ${doc_id}= get_id_from_string ${file_name} | ||
| 1192 | + ${doc}= Create Dictionary | ||
| 1193 | + ... id=${doc_id} | ||
| 1194 | + ... name=${file_name} | ||
| 1195 | + ... content=${file_content} | ||
| 1196 | + Set to dictionary ${USERS.users['${tender_owner}']} contract_doc=${doc} | ||
| 1197 | + Run As ${username} Завантажити документ в угоду ${file_path} ${TENDER['TENDER_UAID']} ${contract_index} | ||
| 1198 | + Remove File ${file_path} | ||
| 1199 | + | ||
| 1200 | + | ||
| 1045 | Можливість укласти угоду для закупівлі | 1201 | Можливість укласти угоду для закупівлі |
| 1046 | Run as ${tender_owner} | 1202 | Run as ${tender_owner} |
| 1047 | ... Підтвердити підписання контракту | 1203 | ... Підтвердити підписання контракту |
| 1048 | ... ${TENDER['TENDER_UAID']} | 1204 | ... ${TENDER['TENDER_UAID']} |
| 1049 | ... ${0} | 1205 | ... ${0} |
| 1050 | Run Keyword And Ignore Error Remove From Dictionary ${USERS.users['${viewer}'].tender_data.data.contracts[0]} status | 1206 | Run Keyword And Ignore Error Remove From Dictionary ${USERS.users['${viewer}'].tender_data.data.contracts[0]} status |
| 1207 | + | ||
| 1208 | +############################################################################################## | ||
| 1209 | +# Pre-Qualifications | ||
| 1210 | +############################################################################################## | ||
| 1211 | + | ||
| 1212 | +Дочекатися перевірки прекваліфікацій | ||
| 1213 | + [Documentation] | ||
| 1214 | + ... [Arguments] Username, tender uaid | ||
| 1215 | + ... [Description] Waint until edr bridge check qualifications | ||
| 1216 | + ... [Return] Nothing | ||
| 1217 | + [Arguments] ${username} ${tender_uaid} | ||
| 1218 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1219 | + :FOR ${qualification} IN @{tender.data.qualifications} | ||
| 1220 | + \ ${res}= Wait until keyword succeeds | ||
| 1221 | + \ ... 10 min 15 sec | ||
| 1222 | + \ ... 30 sec | ||
| 1223 | + \ ... Перевірити документ прекваліфікіції ${qualification.id} для користувача ${username} в тендері ${tender_uaid} | ||
| 1224 | + | ||
| 1225 | + | ||
| 1226 | +Перевірити документ прекваліфікіції ${qualification_id} для користувача ${username} в тендері ${tender_uaid} | ||
| 1227 | + ${document}= openprocurement_client.Отримати останній документ прекваліфікації з типом registerExtract ${username} ${tender_uaid} ${qualification_id} | ||
| 1228 | + Порівняти об'єкти ${document['documentType']} registerExtract | ||
| 1229 | + | ||
| 1230 | +############################################################################################## | ||
| 1231 | +# Qualifications | ||
| 1232 | +############################################################################################## | ||
| 1233 | + | ||
| 1234 | +Дочекатися перевірки кваліфікацій | ||
| 1235 | + [Documentation] | ||
| 1236 | + ... [Arguments] Username, tender uaid | ||
| 1237 | + ... [Description] Waint until edr bridge create check award | ||
| 1238 | + ... [Return] Nothing | ||
| 1239 | + [Arguments] ${username} ${tender_uaid} | ||
| 1240 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1241 | + :FOR ${award} IN @{tender.data.awards} | ||
| 1242 | + \ Wait until keyword succeeds | ||
| 1243 | + \ ... 10 min 15 sec | ||
| 1244 | + \ ... 30 sec | ||
| 1245 | + \ ... Перевірити документ кваліфікіції ${award.id} для користувача ${username} в тендері ${tender_uaid} | ||
| 1246 | + | ||
| 1247 | + | ||
| 1248 | +Перевірити документ кваліфікіції ${award_id} для користувача ${username} в тендері ${tender_uaid} | ||
| 1249 | + ${document}= openprocurement_client.Отримати останній документ кваліфікації з типом registerExtract ${username} ${tender_uaid} ${award_id} | ||
| 1250 | + Порівняти об'єкти ${document['documentType']} registerExtract |
| 1 | *** Settings *** | 1 | *** Settings *** |
| 2 | Library openprocurement_client_helper.py | 2 | Library openprocurement_client_helper.py |
| 3 | +Library openprocurement_client.utils | ||
| 3 | 4 | ||
| 4 | 5 | ||
| 5 | *** Keywords *** | 6 | *** Keywords *** |
| @@ -16,16 +17,51 @@ Library openprocurement_client_helper.py | @@ -16,16 +17,51 @@ Library openprocurement_client_helper.py | ||
| 16 | [return] ${tender_id} | 17 | [return] ${tender_id} |
| 17 | 18 | ||
| 18 | 19 | ||
| 20 | +Отримати internal id плану по UAid | ||
| 21 | + [Arguments] ${username} ${tender_uaid} | ||
| 22 | + Log ${username} | ||
| 23 | + Log ${tender_uaid} | ||
| 24 | + Log Many ${USERS.users['${username}'].id_map} | ||
| 25 | + ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].id_map} ${tender_uaid} | ||
| 26 | + Run Keyword And Return If ${status} Get From Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} | ||
| 27 | + Call Method ${USERS.users['${username}'].client} get_plans | ||
| 28 | + ${tender_id}= Wait Until Keyword Succeeds 5x 30 sec get_plan_id_by_uaid ${tender_uaid} ${USERS.users['${username}'].client} | ||
| 29 | + Set To Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} ${tender_id} | ||
| 30 | + [return] ${tender_id} | ||
| 31 | + | ||
| 32 | + | ||
| 19 | Підготувати клієнт для користувача | 33 | Підготувати клієнт для користувача |
| 20 | [Arguments] ${username} | 34 | [Arguments] ${username} |
| 21 | - [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо | 35 | + [Documentation] Відкрити браузер, створити об’єкти api wrapper і |
| 36 | + ... ds api wrapper, приєднати їх атрибутами до користувача, тощо | ||
| 37 | + Log ${RESOURCE} | ||
| 22 | Log ${API_HOST_URL} | 38 | Log ${API_HOST_URL} |
| 23 | Log ${API_VERSION} | 39 | Log ${API_VERSION} |
| 24 | - ${api_wrapper}= prepare_api_wrapper ${USERS.users['${username}'].api_key} ${RESOURCE} ${API_HOST_URL} ${API_VERSION} | 40 | + Log ${DS_HOST_URL} |
| 41 | + ${auth_ds_all}= get variable value ${USERS.users.${username}.auth_ds} | ||
| 42 | + ${auth_ds}= set variable ${auth_ds_all.${RESOURCE}} | ||
| 43 | + Log ${auth_ds} | ||
| 44 | + | ||
| 45 | +# Uncomment this line if there is need to process files operations without DS. | ||
| 46 | +# ${ds_api_wraper}= set variable ${None} | ||
| 47 | + ${ds_api_wraper}= prepare_ds_api_wrapper ${DS_HOST_URL} ${auth_ds} | ||
| 48 | + ${api_wrapper}= Run Keyword If '${MODE}' == 'planning' | ||
| 49 | + ... prepare_plan_api_wrapper ${USERS.users['${username}'].api_key} ${API_HOST_URL} ${API_VERSION} | ||
| 50 | + ... ELSE prepare_api_wrapper ${USERS.users['${username}'].api_key} ${RESOURCE} ${API_HOST_URL} ${API_VERSION} ${ds_api_wraper} | ||
| 25 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} | 51 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} |
| 26 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} | 52 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} |
| 27 | ${id_map}= Create Dictionary | 53 | ${id_map}= Create Dictionary |
| 28 | Set To Dictionary ${USERS.users['${username}']} id_map=${id_map} | 54 | Set To Dictionary ${USERS.users['${username}']} id_map=${id_map} |
| 55 | + Log ${EDR_HOST_URL} | ||
| 56 | + Log ${EDR_VERSION} | ||
| 57 | + ${edr_wrapper}= prepare_edr_wrapper ${EDR_HOST_URL} ${EDR_VERSION} ${USERS.users['${username}'].auth_edr[0]} ${USERS.users['${username}'].auth_edr[1]} | ||
| 58 | + Set To Dictionary ${USERS.users['${username}']} edr_client=${edr_wrapper} | ||
| 59 | + #Variables for contracting_management module | ||
| 60 | + ${contract_api_wrapper}= prepare_contract_api_wrapper ${USERS.users['${username}'].api_key} ${api_host_url} ${api_version} ${ds_api_wraper} | ||
| 61 | + Set To Dictionary ${USERS.users['${username}']} contracting_client=${contract_api_wrapper} | ||
| 62 | + Set To Dictionary ${USERS.users['${username}']} contract_access_token=${EMPTY} | ||
| 63 | + ${contracts_id_map}= Create Dictionary | ||
| 64 | + Set To Dictionary ${USERS.users['${username}']} contracts_id_map=${contracts_id_map} | ||
| 29 | Log Variables | 65 | Log Variables |
| 30 | 66 | ||
| 31 | 67 | ||
| @@ -35,11 +71,11 @@ Library openprocurement_client_helper.py | @@ -35,11 +71,11 @@ Library openprocurement_client_helper.py | ||
| 35 | Log ${tender_uaid} | 71 | Log ${tender_uaid} |
| 36 | Log ${filepath} | 72 | Log ${filepath} |
| 37 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 73 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 38 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | 74 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} |
| 39 | ${reply}= Call Method ${USERS.users['${username}'].client} upload_document ${filepath} ${tender} | 75 | ${reply}= Call Method ${USERS.users['${username}'].client} upload_document ${filepath} ${tender} |
| 40 | Log object data ${reply} reply | 76 | Log object data ${reply} reply |
| 41 | #return here is needed to have uploaded doc data in `Завантажити документ в лот` keyword | 77 | #return here is needed to have uploaded doc data in `Завантажити документ в лот` keyword |
| 42 | - [return] ${reply} | 78 | + [return] ${reply} |
| 43 | 79 | ||
| 44 | 80 | ||
| 45 | Отримати інформацію із документа | 81 | Отримати інформацію із документа |
| @@ -50,6 +86,15 @@ Library openprocurement_client_helper.py | @@ -50,6 +86,15 @@ Library openprocurement_client_helper.py | ||
| 50 | [Return] ${document['${field}']} | 86 | [Return] ${document['${field}']} |
| 51 | 87 | ||
| 52 | 88 | ||
| 89 | +Отримати інформацію про документ | ||
| 90 | + [Arguments] ${username} ${tender_uaid} ${doc_id} | ||
| 91 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 92 | + ${document}= get_document_by_id ${tender.data} ${doc_id} | ||
| 93 | + ${file_properties}= Call Method ${USERS.users['${username}'].client} get_file_properties ${document.url} ${document.hash} | ||
| 94 | + Log ${file_properties} | ||
| 95 | + [return] ${file_properties} | ||
| 96 | + | ||
| 97 | + | ||
| 53 | Отримати документ | 98 | Отримати документ |
| 54 | [Arguments] ${username} ${tender_uaid} ${doc_id} | 99 | [Arguments] ${username} ${tender_uaid} ${doc_id} |
| 55 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 100 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| @@ -58,6 +103,13 @@ Library openprocurement_client_helper.py | @@ -58,6 +103,13 @@ Library openprocurement_client_helper.py | ||
| 58 | [return] ${filename} | 103 | [return] ${filename} |
| 59 | 104 | ||
| 60 | 105 | ||
| 106 | +Отримати вміст документа | ||
| 107 | + [Arguments] ${username} ${url} | ||
| 108 | + ${file_name}= download_file_from_url ${url} ${OUTPUT_DIR}${/}file | ||
| 109 | + ${file_contents}= Get File ${OUTPUT_DIR}${/}${file_name} | ||
| 110 | + [return] ${file_contents} | ||
| 111 | + | ||
| 112 | + | ||
| 61 | Отримати посилання на аукціон для глядача | 113 | Отримати посилання на аукціон для глядача |
| 62 | [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty} | 114 | [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty} |
| 63 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 115 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| @@ -103,6 +155,20 @@ Library openprocurement_client_helper.py | @@ -103,6 +155,20 @@ Library openprocurement_client_helper.py | ||
| 103 | [return] ${tender.data.tenderID} | 155 | [return] ${tender.data.tenderID} |
| 104 | 156 | ||
| 105 | 157 | ||
| 158 | +Створити план | ||
| 159 | + [Arguments] ${username} ${tender_data} | ||
| 160 | + ${tender}= Call Method ${USERS.users['${username}'].client} create_plan ${tender_data} | ||
| 161 | + Log ${tender} | ||
| 162 | + ${access_token}= Get Variable Value ${tender.access.token} | ||
| 163 | + ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 164 | + Log ${tender} | ||
| 165 | + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/plans/${tender.data.id}${\n} WARN | ||
| 166 | + Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} | ||
| 167 | + Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} | ||
| 168 | + Log ${USERS.users['${username}'].tender_data} | ||
| 169 | + [return] ${tender.data.planID} | ||
| 170 | + | ||
| 171 | + | ||
| 106 | Пошук тендера по ідентифікатору | 172 | Пошук тендера по ідентифікатору |
| 107 | [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data | 173 | [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data |
| 108 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} | 174 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} |
| @@ -114,6 +180,17 @@ Library openprocurement_client_helper.py | @@ -114,6 +180,17 @@ Library openprocurement_client_helper.py | ||
| 114 | [return] ${tender} | 180 | [return] ${tender} |
| 115 | 181 | ||
| 116 | 182 | ||
| 183 | +Пошук плану по ідентифікатору | ||
| 184 | + [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data | ||
| 185 | + ${internalid}= openprocurement_client.Отримати internal id плану по UAid ${username} ${tender_uaid} | ||
| 186 | + ${tender}= Call Method ${USERS.users['${username}'].client} get_plan ${internalid} | ||
| 187 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 188 | + Set To Dictionary ${USERS.users['${username}']} ${save_key}=${tender} | ||
| 189 | + ${tender}= munch_dict arg=${tender} | ||
| 190 | + Log ${tender} | ||
| 191 | + [return] ${tender} | ||
| 192 | + | ||
| 193 | + | ||
| 117 | Отримати тендер другого етапу та зберегти його | 194 | Отримати тендер другого етапу та зберегти його |
| 118 | [Arguments] ${username} ${tender_id} | 195 | [Arguments] ${username} ${tender_id} |
| 119 | ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token} | 196 | ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token} |
| @@ -128,6 +205,11 @@ Library openprocurement_client_helper.py | @@ -128,6 +205,11 @@ Library openprocurement_client_helper.py | ||
| 128 | openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 205 | openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 129 | 206 | ||
| 130 | 207 | ||
| 208 | +Оновити сторінку з планом | ||
| 209 | + [Arguments] ${username} ${tender_uaid} | ||
| 210 | + openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 211 | + | ||
| 212 | + | ||
| 131 | Отримати інформацію із тендера | 213 | Отримати інформацію із тендера |
| 132 | [Arguments] ${username} ${tender_uaid} ${field_name} | 214 | [Arguments] ${username} ${tender_uaid} ${field_name} |
| 133 | openprocurement_client.Пошук тендера по ідентифікатору | 215 | openprocurement_client.Пошук тендера по ідентифікатору |
| @@ -143,6 +225,21 @@ Library openprocurement_client_helper.py | @@ -143,6 +225,21 @@ Library openprocurement_client_helper.py | ||
| 143 | Fail Field not found: ${field_name} | 225 | Fail Field not found: ${field_name} |
| 144 | 226 | ||
| 145 | 227 | ||
| 228 | +Отримати інформацію із плану | ||
| 229 | + [Arguments] ${username} ${tender_uaid} ${field_name} | ||
| 230 | + openprocurement_client.Пошук плану по ідентифікатору | ||
| 231 | + ... ${username} | ||
| 232 | + ... ${tender_uaid} | ||
| 233 | + | ||
| 234 | + ${status} ${field_value}= Run keyword and ignore error | ||
| 235 | + ... Get from object | ||
| 236 | + ... ${USERS.users['${username}'].tender_data.data} | ||
| 237 | + ... ${field_name} | ||
| 238 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | ||
| 239 | + | ||
| 240 | + Fail Field not found: ${field_name} | ||
| 241 | + | ||
| 242 | + | ||
| 146 | Внести зміни в тендер | 243 | Внести зміни в тендер |
| 147 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} | 244 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} |
| 148 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 245 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| @@ -154,6 +251,16 @@ Library openprocurement_client_helper.py | @@ -154,6 +251,16 @@ Library openprocurement_client_helper.py | ||
| 154 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 251 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 155 | Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} | 252 | Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} |
| 156 | 253 | ||
| 254 | + | ||
| 255 | +Внести зміни в план | ||
| 256 | + [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} | ||
| 257 | + ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 258 | + Set_To_Object ${tender.data} ${fieldname} ${fieldvalue} | ||
| 259 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 260 | + ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 261 | + Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} | ||
| 262 | + | ||
| 263 | + | ||
| 157 | ############################################################################## | 264 | ############################################################################## |
| 158 | # Item operations | 265 | # Item operations |
| 159 | ############################################################################## | 266 | ############################################################################## |
| @@ -165,6 +272,13 @@ Library openprocurement_client_helper.py | @@ -165,6 +272,13 @@ Library openprocurement_client_helper.py | ||
| 165 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 272 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 166 | 273 | ||
| 167 | 274 | ||
| 275 | +Додати предмет закупівлі в план | ||
| 276 | + [Arguments] ${username} ${tender_uaid} ${item} | ||
| 277 | + ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 278 | + Append To List ${tender.data['items']} ${item} | ||
| 279 | + Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 280 | + | ||
| 281 | + | ||
| 168 | Отримати інформацію із предмету | 282 | Отримати інформацію із предмету |
| 169 | [Arguments] ${username} ${tender_uaid} ${item_id} ${field_name} | 283 | [Arguments] ${username} ${tender_uaid} ${item_id} ${field_name} |
| 170 | ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${item_id} | 284 | ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${item_id} |
| @@ -178,6 +292,13 @@ Library openprocurement_client_helper.py | @@ -178,6 +292,13 @@ Library openprocurement_client_helper.py | ||
| 178 | Remove From List ${tender.data['items']} ${item_index} | 292 | Remove From List ${tender.data['items']} ${item_index} |
| 179 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 293 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 180 | 294 | ||
| 295 | +Видалити предмет закупівлі плану | ||
| 296 | + [Arguments] ${username} ${tender_uaid} ${item_id} ${lot_id}=${Empty} | ||
| 297 | + ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 298 | + ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id} | ||
| 299 | + Remove From List ${tender.data['items']} ${item_index} | ||
| 300 | + Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 301 | + | ||
| 181 | ############################################################################## | 302 | ############################################################################## |
| 182 | # Lot operations | 303 | # Lot operations |
| 183 | ############################################################################## | 304 | ############################################################################## |
| @@ -247,6 +368,7 @@ Library openprocurement_client_helper.py | @@ -247,6 +368,7 @@ Library openprocurement_client_helper.py | ||
| 247 | Скасувати лот | 368 | Скасувати лот |
| 248 | [Arguments] ${username} ${tender_uaid} ${lot_id} ${cancellation_reason} ${document} ${new_description} | 369 | [Arguments] ${username} ${tender_uaid} ${lot_id} ${cancellation_reason} ${document} ${new_description} |
| 249 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 370 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 371 | + ${lot_index}= get_object_index_by_id ${tender.data.lots} ${lot_id} | ||
| 250 | ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | 372 | ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} |
| 251 | ${data}= Create dictionary | 373 | ${data}= Create dictionary |
| 252 | ... reason=${cancellation_reason} | 374 | ... reason=${cancellation_reason} |
| @@ -705,8 +827,16 @@ Library openprocurement_client_helper.py | @@ -705,8 +827,16 @@ Library openprocurement_client_helper.py | ||
| 705 | # Bid operations | 827 | # Bid operations |
| 706 | ############################################################################## | 828 | ############################################################################## |
| 707 | 829 | ||
| 830 | +Перевірити учасника за ЄДРПОУ | ||
| 831 | + [Arguments] ${username} ${edrpou} | ||
| 832 | + ${reply}= Call Method ${USERS.users['${username}'].edr_client} verify_member ${edrpou} | ||
| 833 | + Log ${reply} | ||
| 834 | + | ||
| 835 | + | ||
| 708 | Подати цінову пропозицію | 836 | Подати цінову пропозицію |
| 709 | [Arguments] ${username} ${tender_uaid} ${bid} ${lots_ids}=${None} ${features_ids}=${None} | 837 | [Arguments] ${username} ${tender_uaid} ${bid} ${lots_ids}=${None} ${features_ids}=${None} |
| 838 | + ${verify_response}= Run As ${username} Перевірити учасника за ЄДРПОУ ${bid.data.tenderers[0].identifier.id} | ||
| 839 | + Log ${verify_response} | ||
| 710 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 840 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 711 | ${lots_ids}= Run Keyword IF ${lots_ids} Set Variable ${lots_ids} | 841 | ${lots_ids}= Run Keyword IF ${lots_ids} Set Variable ${lots_ids} |
| 712 | ... ELSE Create List | 842 | ... ELSE Create List |
| @@ -722,12 +852,17 @@ Library openprocurement_client_helper.py | @@ -722,12 +852,17 @@ Library openprocurement_client_helper.py | ||
| 722 | \ Set To Dictionary ${bid.data.parameters[${index}]} code=${code} | 852 | \ Set To Dictionary ${bid.data.parameters[${index}]} code=${code} |
| 723 | ${reply}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid} | 853 | ${reply}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid} |
| 724 | Log ${reply} | 854 | Log ${reply} |
| 725 | - ${status}= Set Variable If '${MODE}'=='openeu' pending active | 855 | + Set To Dictionary ${USERS.users['${username}']} bid_access_token=${reply.access.token} |
| 856 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bid_access_token} | ||
| 857 | + ${procurementMethodType}= Get variable value ${USERS.users['${username}'].tender_data.data.procurementMethodType} | ||
| 858 | + ${status}= Set Variable If 'EU' in '${procurementMethodType}' or '${procurementMethodType}'=='competitiveDialogueUA' pending active | ||
| 726 | Set To Dictionary ${reply['data']} status=${status} | 859 | Set To Dictionary ${reply['data']} status=${status} |
| 727 | ${reply_active}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${reply} | 860 | ${reply_active}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${reply} |
| 728 | Set To Dictionary ${USERS.users['${username}']} access_token=${reply['access']['token']} | 861 | Set To Dictionary ${USERS.users['${username}']} access_token=${reply['access']['token']} |
| 729 | Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id=${reply['data']['id']} | 862 | Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id=${reply['data']['id']} |
| 730 | Log ${reply_active} | 863 | Log ${reply_active} |
| 864 | + Set To Dictionary ${USERS.users['${username}']} bid_id=${reply['data']['id']} | ||
| 865 | + Log ${reply} | ||
| 731 | 866 | ||
| 732 | 867 | ||
| 733 | Змінити цінову пропозицію | 868 | Змінити цінову пропозицію |
| @@ -762,13 +897,13 @@ Library openprocurement_client_helper.py | @@ -762,13 +897,13 @@ Library openprocurement_client_helper.py | ||
| 762 | 897 | ||
| 763 | 898 | ||
| 764 | Змінити документ в ставці | 899 | Змінити документ в ставці |
| 765 | - [Arguments] ${username} ${tender_uaid} ${path} ${doc_id} | 900 | + [Arguments] ${username} ${tender_uaid} ${path} ${doc_id} ${doc_type}=documents |
| 766 | ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} | 901 | ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} |
| 767 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 902 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 768 | ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} | 903 | ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} |
| 769 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | 904 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} |
| 770 | ${bid_doc}= get_document_by_id ${bid.data} ${doc_id} | 905 | ${bid_doc}= get_document_by_id ${bid.data} ${doc_id} |
| 771 | - ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document ${path} ${tender} ${bid_id} ${bid_doc['id']} | 906 | + ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document ${path} ${tender} ${bid_id} ${bid_doc['id']} ${doc_type} |
| 772 | ${uploaded_file} = Create Dictionary | 907 | ${uploaded_file} = Create Dictionary |
| 773 | ... filepath=${path} | 908 | ... filepath=${path} |
| 774 | ... upload_response=${response} | 909 | ... upload_response=${response} |
| @@ -789,8 +924,8 @@ Library openprocurement_client_helper.py | @@ -789,8 +924,8 @@ Library openprocurement_client_helper.py | ||
| 789 | Отримати пропозицію | 924 | Отримати пропозицію |
| 790 | [Arguments] ${username} ${tender_uaid} | 925 | [Arguments] ${username} ${tender_uaid} |
| 791 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 926 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 792 | - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} | ||
| 793 | - ${token}= Get Variable Value ${USERS.users['${username}']['access_token']} | 927 | + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bid_id} |
| 928 | + ${token}= Get Variable Value ${USERS.users['${username}'].access_token} | ||
| 794 | ${reply}= Call Method ${USERS.users['${username}'].client} get_bid ${tender} ${bid_id} ${token} | 929 | ${reply}= Call Method ${USERS.users['${username}'].client} get_bid ${tender} ${bid_id} ${token} |
| 795 | ${reply}= munch_dict arg=${reply} | 930 | ${reply}= munch_dict arg=${reply} |
| 796 | [return] ${reply} | 931 | [return] ${reply} |
| @@ -806,6 +941,59 @@ Library openprocurement_client_helper.py | @@ -806,6 +941,59 @@ Library openprocurement_client_helper.py | ||
| 806 | # Qualification operations | 941 | # Qualification operations |
| 807 | ############################################################################## | 942 | ############################################################################## |
| 808 | 943 | ||
| 944 | + | ||
| 945 | +Отримати список документів по прекваліфікації | ||
| 946 | + [Documentation] | ||
| 947 | + ... [Arguments] Username, tender uaid, qualification id | ||
| 948 | + ... [Description] Return all qualification documents by id | ||
| 949 | + ... [Return] Reply from API | ||
| 950 | + [Arguments] ${username} ${tender_uaid} ${qualification_id} | ||
| 951 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 952 | + ${doc_list}= Call Method ${USERS.users['${username}'].client} get_qualification_documents ${tender} ${qualification_id} | ||
| 953 | + Log ${doc_list} | ||
| 954 | + [Return] ${doc_list} | ||
| 955 | + | ||
| 956 | + | ||
| 957 | +Отримати список документів по кваліфікації | ||
| 958 | + [Documentation] | ||
| 959 | + ... [Arguments] Username, tender uaid, award id | ||
| 960 | + ... [Description] Return all awards documents by id | ||
| 961 | + ... [Return] Reply from API | ||
| 962 | + [Arguments] ${username} ${tender_uaid} ${award_id} | ||
| 963 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 964 | + ${doc_list}= Call Method ${USERS.users['${username}'].client} get_awards_documents ${tender} ${award_id} | ||
| 965 | + Log ${doc_list} | ||
| 966 | + [Return] ${doc_list} | ||
| 967 | + | ||
| 968 | + | ||
| 969 | +Отримати останній документ прекваліфікації з типом registerExtract | ||
| 970 | + [Documentation] | ||
| 971 | + ... [Arguments] Username, tender uaid, qualification id | ||
| 972 | + ... [Description] Check documentType in last pre-quailfication document | ||
| 973 | + ... [Return] Last document from pre-quailfication | ||
| 974 | + [Arguments] ${username} ${tender_uaid} ${qualification_id} | ||
| 975 | + ${docs}= Run As ${username} Отримати список документів по прекваліфікації ${tender_uaid} ${qualification_id} | ||
| 976 | + :FOR ${item} IN @{docs['data']} | ||
| 977 | + \ ${status} ${_}= Run Keyword And Ignore Error Dictionary Should Contain Key ${item} documentType | ||
| 978 | + \ Run Keyword If '${status}' == 'PASS' Exit For Loop | ||
| 979 | + Log ${item} | ||
| 980 | + [Return] ${item} | ||
| 981 | + | ||
| 982 | + | ||
| 983 | +Отримати останній документ кваліфікації з типом registerExtract | ||
| 984 | + [Documentation] | ||
| 985 | + ... [Arguments] Username, tender uaid, award id | ||
| 986 | + ... [Description] Check documentType in last award document | ||
| 987 | + ... [Return] Last document for | ||
| 988 | + [Arguments] ${username} ${tender_uaid} ${award_id} | ||
| 989 | + ${docs}= Run As ${username} Отримати список документів по кваліфікації ${tender_uaid} ${award_id} | ||
| 990 | + :FOR ${item} IN @{docs['data']} | ||
| 991 | + \ ${status} ${_}= Run Keyword And Ignore Error Dictionary Should Contain Key ${item} documentType | ||
| 992 | + \ Run Keyword If '${status}' == 'PASS' Exit For Loop | ||
| 993 | + Log ${item} | ||
| 994 | + [Return] ${item} | ||
| 995 | + | ||
| 996 | + | ||
| 809 | Завантажити документ рішення кваліфікаційної комісії | 997 | Завантажити документ рішення кваліфікаційної комісії |
| 810 | [Documentation] | 998 | [Documentation] |
| 811 | ... [Arguments] Username, tender uaid, qualification number and document to upload | 999 | ... [Arguments] Username, tender uaid, qualification number and document to upload |
| @@ -956,19 +1144,6 @@ Library openprocurement_client_helper.py | @@ -956,19 +1144,6 @@ Library openprocurement_client_helper.py | ||
| 956 | ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title} | 1144 | ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title} |
| 957 | [return] ${filename} | 1145 | [return] ${filename} |
| 958 | 1146 | ||
| 959 | - | ||
| 960 | -Підтвердити підписання контракту | ||
| 961 | - [Documentation] | ||
| 962 | - ... [Arguments] Username, tender uaid, contract number | ||
| 963 | - ... Find tender using uaid, get contract test_confirmation data and call patch_contract | ||
| 964 | - ... [Return] Nothing | ||
| 965 | - [Arguments] ${username} ${tender_uaid} ${contract_num} | ||
| 966 | - ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 967 | - ${data}= test_confirm_data ${tender['data']['contracts'][${contract_num}]['id']} | ||
| 968 | - Log ${data} | ||
| 969 | - ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} | ||
| 970 | - Log ${reply} | ||
| 971 | - | ||
| 972 | ############################################################################## | 1147 | ############################################################################## |
| 973 | # OpenUA procedure | 1148 | # OpenUA procedure |
| 974 | ############################################################################## | 1149 | ############################################################################## |
| @@ -1069,3 +1244,217 @@ Library openprocurement_client_helper.py | @@ -1069,3 +1244,217 @@ Library openprocurement_client_helper.py | ||
| 1069 | set_to_object ${tender} data.status active.tendering | 1244 | set_to_object ${tender} data.status active.tendering |
| 1070 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 1245 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 1071 | Log ${reply} | 1246 | Log ${reply} |
| 1247 | + | ||
| 1248 | +############################################################################## | ||
| 1249 | +# CONTRACT SIGNING | ||
| 1250 | +############################################################################## | ||
| 1251 | + | ||
| 1252 | +Редагувати угоду | ||
| 1253 | + [Arguments] ${username} ${tender_uaid} ${contract_index} ${fieldname} ${fieldvalue} | ||
| 1254 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1255 | + ${contract}= Create Dictionary data=${tender.data.contracts[${contract_index}]} | ||
| 1256 | + Set_to_object ${contract.data} ${fieldname} ${fieldvalue} | ||
| 1257 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${contract} | ||
| 1258 | + Log ${reply} | ||
| 1259 | + | ||
| 1260 | + | ||
| 1261 | +Встановити дату підписання угоди | ||
| 1262 | + [Arguments] ${username} ${tender_uaid} ${contract_index} ${fieldvalue} | ||
| 1263 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1264 | + ${contract}= Create Dictionary data=${tender.data.contracts[${contract_index}]} | ||
| 1265 | + Set To Dictionary ${contract.data} dateSigned=${fieldvalue} | ||
| 1266 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${contract} | ||
| 1267 | + Log ${reply} | ||
| 1268 | + | ||
| 1269 | + | ||
| 1270 | +Вказати період дії угоди | ||
| 1271 | + [Arguments] ${username} ${tender_uaid} ${contract_index} ${startDate} ${endDate} | ||
| 1272 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1273 | + ${period}= Create Dictionary startDate=${startDate} | ||
| 1274 | + Set to Dictionary ${period} endDate=${endDate} | ||
| 1275 | + ${contract}= Create Dictionary data=${tender.data.contracts[${contract_index}]} | ||
| 1276 | + Set To Dictionary ${contract.data} period=${period} | ||
| 1277 | + Log ${contract} | ||
| 1278 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${contract} | ||
| 1279 | + Log ${reply} | ||
| 1280 | + | ||
| 1281 | + | ||
| 1282 | +Завантажити документ в угоду | ||
| 1283 | + [Arguments] ${username} ${path} ${tender_uaid} ${contract_index} ${doc_type}=documents | ||
| 1284 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1285 | + ${contract_id}= Get Variable Value ${tender.data.contracts[${contract_index}].id} | ||
| 1286 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} | ||
| 1287 | + ${response}= Call Method ${USERS.users['${username}'].client} upload_contract_document ${path} ${tender} ${contract_id} ${doc_type} | ||
| 1288 | + ${uploaded_file} = Create Dictionary | ||
| 1289 | + ... filepath=${path} | ||
| 1290 | + ... upload_response=${response} | ||
| 1291 | + Log object data ${uploaded_file} | ||
| 1292 | + | ||
| 1293 | + | ||
| 1294 | +Підтвердити підписання контракту | ||
| 1295 | + [Documentation] | ||
| 1296 | + ... [Arguments] Username, tender uaid, contract number | ||
| 1297 | + ... Find tender using uaid, get contract test_confirmation data and call patch_contract | ||
| 1298 | + ... [Return] Nothing | ||
| 1299 | + [Arguments] ${username} ${tender_uaid} ${contract_num} | ||
| 1300 | + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | ||
| 1301 | + ${data}= test_confirm_data ${tender['data']['contracts'][${contract_num}]['id']} | ||
| 1302 | + Log ${data} | ||
| 1303 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} | ||
| 1304 | + Log ${reply} | ||
| 1305 | + [Return] ${reply} | ||
| 1306 | + | ||
| 1307 | +############################################################################## | ||
| 1308 | +# CONTRACT MANAGEMENT | ||
| 1309 | +############################################################################## | ||
| 1310 | + | ||
| 1311 | +Отримати internal id по UAid для договору | ||
| 1312 | + [Arguments] ${username} ${contract_uaid} | ||
| 1313 | + Log ${contract_uaid} | ||
| 1314 | + Log ${USERS.users['${username}'].contracts_id_map} | ||
| 1315 | + ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].contracts_id_map} ${contract_uaid} | ||
| 1316 | + Run Keyword and Return If ${status} Get From Dictionary ${USERS.users['${username}'].contracts_id_map} ${contract_uaid} | ||
| 1317 | + Call Method ${USERS.users['${username}'].contracting_client} get_contracts | ||
| 1318 | + ${contract_id}= Wait Until Keyword Succeeds 15x 10 sec get_contract_id_by_uaid ${contract_uaid} ${USERS.users['${username}'].contracting_client} | ||
| 1319 | + Set To Dictionary ${USERS.users['${username}'].contracts_id_map} ${contract_uaid} ${contract_id} | ||
| 1320 | + [Return] ${contract_id} | ||
| 1321 | + | ||
| 1322 | + | ||
| 1323 | +Оновити сторінку з договором | ||
| 1324 | + [Arguments] ${username} ${contract_uaid} | ||
| 1325 | + openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | ||
| 1326 | + | ||
| 1327 | + | ||
| 1328 | +Пошук договору по ідентифікатору | ||
| 1329 | + [Arguments] ${username} ${contract_uaid} | ||
| 1330 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1331 | + ${contract}= Call Method ${USERS.users['${username}'].contracting_client} get_contract ${internalid} | ||
| 1332 | + ${contract}= munch_dict arg=${contract} | ||
| 1333 | + Set To Dictionary ${USERS.users['${username}']} contract_data=${contract} | ||
| 1334 | + Log ${contract} | ||
| 1335 | + [return] ${contract} | ||
| 1336 | + | ||
| 1337 | + | ||
| 1338 | +Отримати доступ до договору | ||
| 1339 | + [Arguments] ${username} ${contract_uaid} | ||
| 1340 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1341 | + ${contract}= Call Method ${USERS.users['${username}'].contracting_client} retrieve_contract_credentials ${internalid} ${USERS.users['${username}'].access_token} | ||
| 1342 | + ${contract}= munch_dict arg=${contract} | ||
| 1343 | + Set To Dictionary ${USERS.users['${username}']} contract_data=${contract} | ||
| 1344 | + Set To Dictionary ${USERS.users['${username}']} contract_access_token=${contract.access.token} | ||
| 1345 | + Log ${contract} | ||
| 1346 | + [return] ${contract} | ||
| 1347 | + | ||
| 1348 | + | ||
| 1349 | +Внести зміну в договір | ||
| 1350 | + [Arguments] ${username} ${contract_uaid} ${change_data} | ||
| 1351 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1352 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} create_change ${internalid} ${USERS.users['${username}'].contract_access_token} ${change_data} | ||
| 1353 | + # we need this to have change id in `Додати документацію до зміни в договорі` and `Застосувати зміну` keywords | ||
| 1354 | + ${empty_list}= Create List | ||
| 1355 | + ${changes}= Get variable value ${USERS.users['${username}'].changes} ${empty_list} | ||
| 1356 | + Append to list ${changes} ${reply} | ||
| 1357 | + Set to dictionary ${USERS.users['${username}']} changes=${changes} | ||
| 1358 | + Log ${change_data} | ||
| 1359 | + Log ${reply} | ||
| 1360 | + | ||
| 1361 | + | ||
| 1362 | +Додати документацію до зміни в договорі | ||
| 1363 | + [Arguments] ${username} ${contract_uaid} ${document} | ||
| 1364 | + ${contract}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | ||
| 1365 | + ${contract}= set_access_key ${contract} ${USERS.users['${username}'].contract_access_token} | ||
| 1366 | + ${reply_doc_create}= Call Method ${USERS.users['${username}'].contracting_client} upload_document ${document} ${contract} | ||
| 1367 | + ${change_document}= test_change_document_data ${reply_doc_create} ${USERS.users['${username}'].changes[0].data.id} | ||
| 1368 | + ${reply_doc_patch}= Call Method ${USERS.users['${username}'].contracting_client} patch_document ${contract} ${change_document} | ||
| 1369 | + Log ${reply_doc_create} | ||
| 1370 | + Log ${reply_doc_patch} | ||
| 1371 | + | ||
| 1372 | + | ||
| 1373 | +Редагувати поле договору | ||
| 1374 | + [Arguments] ${username} ${contract_uaid} ${fieldname} ${fieldvalue} | ||
| 1375 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1376 | + ${contract}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | ||
| 1377 | + Set_To_Object ${contract.data} ${fieldname} ${fieldvalue} | ||
| 1378 | + Log ${contract} | ||
| 1379 | + ${contract}= Call Method ${USERS.users['${username}'].contracting_client} patch_contract ${internalid} ${USERS.users['${username}'].contract_access_token} ${contract} | ||
| 1380 | + Log ${contract} | ||
| 1381 | + | ||
| 1382 | + | ||
| 1383 | +Редагувати зміну | ||
| 1384 | + [Arguments] ${username} ${contract_uaid} ${fieldname} ${fieldvalue} | ||
| 1385 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1386 | + ${data}= Create Dictionary ${fieldname}=${fieldvalue} | ||
| 1387 | + ${data}= Create Dictionary data=${data} | ||
| 1388 | + ${changes}= Get variable value ${USERS.users['${username}'].changes} | ||
| 1389 | + ${change}= munchify ${changes[-1]} | ||
| 1390 | + Log ${change} | ||
| 1391 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} patch_change ${internalid} ${USERS.users['${username}'].changes[-1].data.id} ${USERS.users['${username}'].contract_access_token} ${data} | ||
| 1392 | + Log ${data} | ||
| 1393 | + Log ${reply} | ||
| 1394 | + | ||
| 1395 | + | ||
| 1396 | +Застосувати зміну | ||
| 1397 | + [Arguments] ${username} ${contract_uaid} ${dateSigned} | ||
| 1398 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1399 | + ${data}= Create Dictionary status=active dateSigned=${dateSigned} | ||
| 1400 | + ${data}= Create Dictionary data=${data} | ||
| 1401 | + ${changes}= Get variable value ${USERS.users['${username}'].changes} | ||
| 1402 | + ${change}= munchify ${changes[-1]} | ||
| 1403 | + Log ${change} | ||
| 1404 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} patch_change ${internalid} ${USERS.users['${username}'].changes[-1].data.id} ${USERS.users['${username}'].contract_access_token} ${data} | ||
| 1405 | + Log ${data} | ||
| 1406 | + Log ${reply} | ||
| 1407 | + | ||
| 1408 | + | ||
| 1409 | +Завантажити документацію до договору | ||
| 1410 | + [Arguments] ${username} ${contract_uaid} ${document} | ||
| 1411 | + ${contract}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | ||
| 1412 | + ${contract}= set_access_key ${contract} ${USERS.users['${username}'].contract_access_token} | ||
| 1413 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} upload_document ${document} ${contract} | ||
| 1414 | + Log ${reply} | ||
| 1415 | + | ||
| 1416 | + | ||
| 1417 | +Внести зміни в договір | ||
| 1418 | + [Arguments] ${username} ${contract_uaid} ${data} | ||
| 1419 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1420 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} patch_contract ${internalid} ${USERS.users['${username}'].contract_access_token} ${data} | ||
| 1421 | + Log ${reply} | ||
| 1422 | + | ||
| 1423 | + | ||
| 1424 | +Завершити договір | ||
| 1425 | + [Arguments] ${username} ${contract_uaid} | ||
| 1426 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | ||
| 1427 | + ${data}= Create Dictionary status=terminated | ||
| 1428 | + ${data}= Create Dictionary data=${data} | ||
| 1429 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} patch_contract ${internalid} ${USERS.users['${username}'].contract_access_token} ${data} | ||
| 1430 | + | ||
| 1431 | + | ||
| 1432 | +Отримати інформацію із договору | ||
| 1433 | + [Arguments] ${username} ${contract_uaid} ${field_name} | ||
| 1434 | + openprocurement_client.Пошук договору по ідентифікатору | ||
| 1435 | + ... ${username} | ||
| 1436 | + ... ${contract_uaid} | ||
| 1437 | + | ||
| 1438 | + ${status} ${field_value}= Run keyword and ignore error | ||
| 1439 | + ... Get from object | ||
| 1440 | + ... ${USERS.users['${username}'].contract_data.data} | ||
| 1441 | + ... ${field_name} | ||
| 1442 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | ||
| 1443 | + | ||
| 1444 | + Fail Field not found: ${field_name} | ||
| 1445 | + | ||
| 1446 | + | ||
| 1447 | +Отримати інформацію із документа до договору | ||
| 1448 | + [Arguments] ${username} ${contract_uaid} ${doc_id} ${field_name} | ||
| 1449 | + ${tender}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | ||
| 1450 | + ${document}= get_document_by_id ${tender.data} ${doc_id} | ||
| 1451 | + Log ${document} | ||
| 1452 | + [Return] ${document['${field_name}']} | ||
| 1453 | + | ||
| 1454 | + | ||
| 1455 | +Отримати документ до договору | ||
| 1456 | + [Arguments] ${username} ${contract_uaid} ${doc_id} | ||
| 1457 | + ${tender}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | ||
| 1458 | + ${document}= get_document_by_id ${tender.data} ${doc_id} | ||
| 1459 | + ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title} | ||
| 1460 | + [return] ${filename} |
| 1 | -from openprocurement_client.client import Client | ||
| 2 | -from openprocurement_client.utils import get_tender_id_by_uaid | 1 | +from openprocurement_client.client import Client, EDRClient |
| 2 | +from openprocurement_client.document_service_client \ | ||
| 3 | + import DocumentServiceClient | ||
| 4 | +from openprocurement_client.plan import PlansClient | ||
| 5 | +from openprocurement_client.contract import ContractingClient | ||
| 3 | from openprocurement_client.exceptions import IdNotFound | 6 | from openprocurement_client.exceptions import IdNotFound |
| 4 | -from restkit.errors import RequestFailed, BadStatusLine | 7 | +from restkit.errors import RequestFailed, BadStatusLine, ResourceError |
| 5 | from retrying import retry | 8 | from retrying import retry |
| 9 | +from time import sleep | ||
| 6 | import os | 10 | import os |
| 7 | import urllib | 11 | import urllib |
| 8 | 12 | ||
| 9 | - | ||
| 10 | def retry_if_request_failed(exception): | 13 | def retry_if_request_failed(exception): |
| 11 | if isinstance(exception, RequestFailed): | 14 | if isinstance(exception, RequestFailed): |
| 12 | status_code = getattr(exception, 'status_int', None) | 15 | status_code = getattr(exception, 'status_int', None) |
| @@ -19,13 +22,54 @@ def retry_if_request_failed(exception): | @@ -19,13 +22,54 @@ def retry_if_request_failed(exception): | ||
| 19 | 22 | ||
| 20 | 23 | ||
| 21 | class StableClient(Client): | 24 | class StableClient(Client): |
| 22 | - @retry(stop_max_attempt_number=100, wait_random_min=500, wait_random_max=4000, retry_on_exception=retry_if_request_failed) | 25 | + @retry(stop_max_attempt_number=100, wait_random_min=500, |
| 26 | + wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
| 23 | def request(self, *args, **kwargs): | 27 | def request(self, *args, **kwargs): |
| 24 | return super(StableClient, self).request(*args, **kwargs) | 28 | return super(StableClient, self).request(*args, **kwargs) |
| 25 | 29 | ||
| 26 | 30 | ||
| 27 | -def prepare_api_wrapper(key, resource, host_url, api_version): | ||
| 28 | - return StableClient(key, resource, host_url, api_version) | 31 | +class StableDsClient(DocumentServiceClient): |
| 32 | + @retry(stop_max_attempt_number=100, wait_random_min=500, | ||
| 33 | + wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
| 34 | + def request(self, *args, **kwargs): | ||
| 35 | + return super(StableDsClient, self).request(*args, **kwargs) | ||
| 36 | + | ||
| 37 | + | ||
| 38 | +def prepare_api_wrapper(key, resource, host_url, api_version, ds_client=None): | ||
| 39 | + return StableClient(key, resource, host_url, api_version, | ||
| 40 | + ds_client=ds_client) | ||
| 41 | + | ||
| 42 | + | ||
| 43 | +def prepare_ds_api_wrapper(ds_host_url, auth_ds): | ||
| 44 | + return StableDsClient(ds_host_url, auth_ds) | ||
| 45 | + | ||
| 46 | + | ||
| 47 | +class ContractingStableClient(ContractingClient): | ||
| 48 | + @retry(stop_max_attempt_number=100, wait_random_min=500, wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
| 49 | + def request(self, *args, **kwargs): | ||
| 50 | + return super(ContractingStableClient, self).request(*args, **kwargs) | ||
| 51 | + | ||
| 52 | + | ||
| 53 | +def prepare_contract_api_wrapper(key, host_url, api_version, ds_client=None): | ||
| 54 | + return ContractingStableClient(key, host_url, api_version, ds_client=ds_client) | ||
| 55 | + | ||
| 56 | + | ||
| 57 | +class StableEDRClient(EDRClient): | ||
| 58 | + @retry(stop_max_attempt_number=100, wait_random_min=500, | ||
| 59 | + wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
| 60 | + def request(self, *args, **kwargs): | ||
| 61 | + try: | ||
| 62 | + res = super(StableEDRClient, self).request(*args, **kwargs) | ||
| 63 | + except ResourceError as re: | ||
| 64 | + if re.status_int == 429: | ||
| 65 | + sleep(int(re.response.headers.get('Retry-After', '30'))) | ||
| 66 | + raise re | ||
| 67 | + else: | ||
| 68 | + return res | ||
| 69 | + | ||
| 70 | + | ||
| 71 | +def prepare_edr_wrapper(host_url, api_version, username, password): | ||
| 72 | + return StableEDRClient(host_url, api_version, username, password) | ||
| 29 | 73 | ||
| 30 | 74 | ||
| 31 | def get_complaint_internal_id(tender, complaintID): | 75 | def get_complaint_internal_id(tender, complaintID): |
| @@ -53,6 +97,10 @@ def get_document_by_id(data, doc_id): | @@ -53,6 +97,10 @@ def get_document_by_id(data, doc_id): | ||
| 53 | for document in complaint.get('documents', []): | 97 | for document in complaint.get('documents', []): |
| 54 | if doc_id in document.get('title', ''): | 98 | if doc_id in document.get('title', ''): |
| 55 | return document | 99 | return document |
| 100 | + for contract in data.get('contracts', []): | ||
| 101 | + for document in contract.get('documents', []): | ||
| 102 | + if doc_id in document.get('title', ''): | ||
| 103 | + return document | ||
| 56 | for award in data.get('awards', []): | 104 | for award in data.get('awards', []): |
| 57 | for document in award.get('documents', []): | 105 | for document in award.get('documents', []): |
| 58 | if doc_id in document.get('title', ''): | 106 | if doc_id in document.get('title', ''): |
| @@ -77,3 +125,13 @@ def download_file_from_url(url, path_to_save_file): | @@ -77,3 +125,13 @@ def download_file_from_url(url, path_to_save_file): | ||
| 77 | f.write(urllib.urlopen(url).read()) | 125 | f.write(urllib.urlopen(url).read()) |
| 78 | f.close() | 126 | f.close() |
| 79 | return os.path.basename(f.name) | 127 | return os.path.basename(f.name) |
| 128 | + | ||
| 129 | + | ||
| 130 | +class StableClient_plan(PlansClient): | ||
| 131 | + @retry(stop_max_attempt_number=100, wait_random_min=500, wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
| 132 | + def request(self, *args, **kwargs): | ||
| 133 | + return super(StableClient_plan, self).request(*args, **kwargs) | ||
| 134 | + | ||
| 135 | + | ||
| 136 | +def prepare_plan_api_wrapper(key, host_url, api_version): | ||
| 137 | + return StableClient_plan(key, host_url, api_version) |
| 1 | *** Settings *** | 1 | *** Settings *** |
| 2 | -Resource keywords.robot | ||
| 3 | -Resource resource.robot | 2 | +Resource base_keywords.robot |
| 4 | Suite Setup Test Suite Setup | 3 | Suite Setup Test Suite Setup |
| 5 | Suite Teardown Test Suite Teardown | 4 | Suite Teardown Test Suite Teardown |
| 6 | 5 | ||
| 7 | *** Variables *** | 6 | *** Variables *** |
| 8 | -@{USED_ROLES} tender_owner viewer | 7 | +@{USED_ROLES} tender_owner viewer |
| 9 | 8 | ||
| 10 | 9 | ||
| 11 | *** Test Cases *** | 10 | *** Test Cases *** |
| 12 | -Можливість знайти закупівлю по ідентифікатору | ||
| 13 | - [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | ||
| 14 | - ... viewer | ||
| 15 | - ... ${USERS.users['${viewer}'].broker} | ||
| 16 | - ... tender_cancelation lot_cancelation delete_lot | ||
| 17 | - Завантажити дані про тендер | ||
| 18 | - Run As ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 11 | +Можливість оголосити тендер |
| 12 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | ||
| 13 | + ... tender_owner | ||
| 14 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 15 | + ... create_tender | ||
| 16 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 17 | + Можливість оголосити тендер | ||
| 18 | + | ||
| 19 | + | ||
| 20 | +Можливість знайти тендер по ідентифікатору | ||
| 21 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера | ||
| 22 | + ... viewer tender_owner | ||
| 23 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 24 | + ... find_tender | ||
| 25 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 26 | + :FOR ${username} IN ${tender_owner} ${viewer} | ||
| 27 | + \ Можливість знайти тендер по ідентифікатору для користувача ${username} | ||
| 19 | 28 | ||
| 20 | ############################################################################################## | 29 | ############################################################################################## |
| 21 | -# TENDER CANCELLATION | 30 | +# LOT CANCELLATION |
| 22 | ############################################################################################## | 31 | ############################################################################################## |
| 23 | 32 | ||
| 24 | -Можливість скасувати тендер | ||
| 25 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера | 33 | +Можливість скасувати лот |
| 34 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування лота | ||
| 26 | ... tender_owner | 35 | ... tender_owner |
| 27 | ... ${USERS.users['${tender_owner}'].broker} | 36 | ... ${USERS.users['${tender_owner}'].broker} |
| 28 | - ... tender_cancelation | 37 | + ... lot_cancellation |
| 29 | [Teardown] Оновити LAST_MODIFICATION_DATE | 38 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 30 | - Можливість скасувати тендер | 39 | + Можливість скасувати 0 лот |
| 31 | 40 | ||
| 32 | 41 | ||
| 33 | -Відображення активного статусу скасування тендера | ||
| 34 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | 42 | +Відображення активного статусу скасування лота |
| 43 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | ||
| 35 | ... viewer | 44 | ... viewer |
| 36 | ... ${USERS.users['${viewer}'].broker} | 45 | ... ${USERS.users['${viewer}'].broker} |
| 37 | - ... tender_cancelation | 46 | + ... lot_cancellation |
| 38 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} | 47 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
| 48 | + ${cancellation_index}= Отримати останній індекс cancellations ${viewer} | ||
| 39 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | 49 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} |
| 40 | ... active | 50 | ... active |
| 41 | - ... cancellations[0].status | 51 | + ... cancellations[${cancellation_index}].status |
| 42 | 52 | ||
| 43 | 53 | ||
| 44 | -Відображення причини скасування тендера | ||
| 45 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | 54 | +Відображення причини скасування лота |
| 55 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | ||
| 46 | ... viewer | 56 | ... viewer |
| 47 | ... ${USERS.users['${viewer}'].broker} | 57 | ... ${USERS.users['${viewer}'].broker} |
| 48 | - ... tender_cancelation | 58 | + ... lot_cancellation |
| 59 | + ${cancellation_index}= Отримати останній індекс cancellations ${viewer} | ||
| 49 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | 60 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} |
| 50 | - ... ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_reason']} | ||
| 51 | - ... cancellations[0].reason | 61 | + ... ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_reason']} |
| 62 | + ... cancellations[${cancellation_index}].reason | ||
| 52 | 63 | ||
| 53 | 64 | ||
| 54 | -Відображення опису документа до скасування тендера | ||
| 55 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | 65 | +Відображення опису документа до скасування лота |
| 66 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | ||
| 56 | ... viewer | 67 | ... viewer |
| 57 | ... ${USERS.users['${viewer}'].broker} | 68 | ... ${USERS.users['${viewer}'].broker} |
| 58 | - ... tender_cancelation | ||
| 59 | - Звірити відображення поля description документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['description']} для користувача ${viewer} | 69 | + ... lot_cancellation |
| 70 | + Звірити відображення поля description документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['lot_cancellation_data']['description']} для користувача ${viewer} | ||
| 60 | 71 | ||
| 61 | 72 | ||
| 62 | -Відображення заголовку документа до скасування тендера | ||
| 63 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | 73 | +Відображення заголовку документа до скасування лота |
| 74 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | ||
| 64 | ... viewer | 75 | ... viewer |
| 65 | ... ${USERS.users['${viewer}'].broker} | 76 | ... ${USERS.users['${viewer}'].broker} |
| 66 | - ... tender_cancelation | ||
| 67 | - Звірити відображення поля title документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_name']} для користувача ${viewer} | 77 | + ... lot_cancellation |
| 78 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_name']} для користувача ${viewer} | ||
| 68 | 79 | ||
| 69 | 80 | ||
| 70 | -Відображення вмісту документа до скасування тендера | ||
| 71 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | 81 | +Відображення вмісту документа до скасування лота |
| 82 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | ||
| 72 | ... viewer | 83 | ... viewer |
| 73 | ... ${USERS.users['${viewer}'].broker} | 84 | ... ${USERS.users['${viewer}'].broker} |
| 74 | - ... tender_cancelation | ||
| 75 | - Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} з ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_content']} для користувача ${viewer} | 85 | + ... lot_cancellation |
| 86 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} з ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_content']} для користувача ${viewer} | ||
| 76 | 87 | ||
| 77 | ############################################################################################## | 88 | ############################################################################################## |
| 78 | -# LOT CANCELLATION | 89 | +# TENDER CANCELLATION |
| 79 | ############################################################################################## | 90 | ############################################################################################## |
| 80 | 91 | ||
| 81 | -Можливість скасувати лот | ||
| 82 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування лота | 92 | +Можливість скасувати тендер |
| 93 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера | ||
| 83 | ... tender_owner | 94 | ... tender_owner |
| 84 | ... ${USERS.users['${tender_owner}'].broker} | 95 | ... ${USERS.users['${tender_owner}'].broker} |
| 85 | - ... lot_cancelation | 96 | + ... tender_cancellation |
| 86 | [Teardown] Оновити LAST_MODIFICATION_DATE | 97 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 87 | - Можливість скасувати лот | 98 | + Можливість скасувати тендер |
| 88 | 99 | ||
| 89 | 100 | ||
| 90 | -Відображення активного статусу скасування лота | ||
| 91 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | 101 | +Відображення активного статусу скасування тендера |
| 102 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | ||
| 92 | ... viewer | 103 | ... viewer |
| 93 | ... ${USERS.users['${viewer}'].broker} | 104 | ... ${USERS.users['${viewer}'].broker} |
| 94 | - ... lot_cancelation | 105 | + ... tender_cancellation |
| 95 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} | 106 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
| 107 | + ${cancellation_index}= Отримати останній індекс cancellations ${viewer} | ||
| 96 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | 108 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} |
| 97 | ... active | 109 | ... active |
| 98 | - ... cancellations[0].status | 110 | + ... cancellations[${cancellation_index}].status |
| 99 | 111 | ||
| 100 | 112 | ||
| 101 | -Відображення причини скасування лота | ||
| 102 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | 113 | +Відображення причини скасування тендера |
| 114 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | ||
| 103 | ... viewer | 115 | ... viewer |
| 104 | ... ${USERS.users['${viewer}'].broker} | 116 | ... ${USERS.users['${viewer}'].broker} |
| 105 | - ... lot_cancelation | 117 | + ... tender_cancellation |
| 118 | + ${cancellation_index}= Отримати останній індекс cancellations ${viewer} | ||
| 106 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | 119 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} |
| 107 | - ... ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_reason']} | ||
| 108 | - ... cancellations[0].reason | 120 | + ... ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_reason']} |
| 121 | + ... cancellations[${cancellation_index}].reason | ||
| 109 | 122 | ||
| 110 | 123 | ||
| 111 | -Відображення опису документа до скасування лота | ||
| 112 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | 124 | +Відображення опису документа до скасування тендера |
| 125 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | ||
| 113 | ... viewer | 126 | ... viewer |
| 114 | ... ${USERS.users['${viewer}'].broker} | 127 | ... ${USERS.users['${viewer}'].broker} |
| 115 | - ... lot_cancelation | ||
| 116 | - Звірити відображення поля description документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['lot_cancellation_data']['description']} для користувача ${viewer} | 128 | + ... tender_cancellation |
| 129 | + Звірити відображення поля description документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['description']} для користувача ${viewer} | ||
| 117 | 130 | ||
| 118 | 131 | ||
| 119 | -Відображення заголовку документа до скасування лота | ||
| 120 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | 132 | +Відображення заголовку документа до скасування тендера |
| 133 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | ||
| 121 | ... viewer | 134 | ... viewer |
| 122 | ... ${USERS.users['${viewer}'].broker} | 135 | ... ${USERS.users['${viewer}'].broker} |
| 123 | - ... lot_cancelation | ||
| 124 | - Звірити відображення поля title документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_name']} для користувача ${viewer} | 136 | + ... tender_cancellation |
| 137 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_name']} для користувача ${viewer} | ||
| 125 | 138 | ||
| 126 | 139 | ||
| 127 | -Відображення вмісту документа до скасування лота | ||
| 128 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування лота | 140 | +Відображення вмісту документа до скасування тендера |
| 141 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | ||
| 129 | ... viewer | 142 | ... viewer |
| 130 | ... ${USERS.users['${viewer}'].broker} | 143 | ... ${USERS.users['${viewer}'].broker} |
| 131 | - ... lot_cancelation | ||
| 132 | - Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} з ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_content']} для користувача ${viewer} | 144 | + ... tender_cancellation |
| 145 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} з ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_content']} для користувача ${viewer} | ||
| 133 | 146 | ||
| 134 | ############################################################################################## | 147 | ############################################################################################## |
| 135 | # DELETING LOT | 148 | # DELETING LOT |
| @@ -141,7 +154,7 @@ Suite Teardown Test Suite Teardown | @@ -141,7 +154,7 @@ Suite Teardown Test Suite Teardown | ||
| 141 | ... ${USERS.users['${tender_owner}'].broker} | 154 | ... ${USERS.users['${tender_owner}'].broker} |
| 142 | ... delete_lot | 155 | ... delete_lot |
| 143 | [Teardown] Оновити LAST_MODIFICATION_DATE | 156 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 144 | - Require Failure ${tender_owner} Видалити лот ${TENDER['TENDER_UAID']} ${TENDER['LOT_ID']} | 157 | + Run Keyword And Expect Error * Можливість видалення 1 лоту |
| 145 | 158 | ||
| 146 | 159 | ||
| 147 | *** Keywords *** | 160 | *** Keywords *** |
| @@ -156,12 +169,13 @@ Suite Teardown Test Suite Teardown | @@ -156,12 +169,13 @@ Suite Teardown Test Suite Teardown | ||
| 156 | Set To Dictionary ${USERS.users['${tender_owner}']} tender_cancellation_data=${cancellation_data} | 169 | Set To Dictionary ${USERS.users['${tender_owner}']} tender_cancellation_data=${cancellation_data} |
| 157 | 170 | ||
| 158 | 171 | ||
| 159 | -Можливість скасувати лот | 172 | +Можливість скасувати ${index} лот |
| 160 | ${cancellation_data}= Підготувати дані про скасування | 173 | ${cancellation_data}= Підготувати дані про скасування |
| 174 | + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${index}]} | ||
| 161 | Run As ${tender_owner} | 175 | Run As ${tender_owner} |
| 162 | ... Скасувати лот | 176 | ... Скасувати лот |
| 163 | ... ${TENDER['TENDER_UAID']} | 177 | ... ${TENDER['TENDER_UAID']} |
| 164 | - ... ${TENDER['LOT_ID']} | 178 | + ... ${lot_id} |
| 165 | ... ${cancellation_data['cancellation_reason']} | 179 | ... ${cancellation_data['cancellation_reason']} |
| 166 | ... ${cancellation_data['document']['doc_path']} | 180 | ... ${cancellation_data['document']['doc_path']} |
| 167 | ... ${cancellation_data['description']} | 181 | ... ${cancellation_data['description']} |
| 1 | +*** Settings *** | ||
| 2 | +Resource base_keywords.robot | ||
| 3 | +Suite Setup Test Suite Setup | ||
| 4 | +Suite Teardown Test Suite Teardown | ||
| 5 | + | ||
| 6 | +*** Variables *** | ||
| 7 | +@{used_roles} tender_owner viewer | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +*** Test Cases *** | ||
| 11 | +Можливість знайти закупівлю по ідентифікатору | ||
| 12 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера | ||
| 13 | + ... ${USERS.users['${tender_owner}'].broker}: Пошук тендера | ||
| 14 | + ... viewer tender_owner | ||
| 15 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 16 | + ... find_tender | ||
| 17 | + Завантажити дані про тендер | ||
| 18 | + :FOR ${username} in @{used_roles} | ||
| 19 | + \ Run As ${${username}} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | ||
| 20 | + ${CONTRACT_UAID}= Get variable value ${USERS.users['${tender_owner}'].tender_data.data.contracts[1].contractID} | ||
| 21 | + Set Suite Variable ${CONTRACT_UAID} | ||
| 22 | + | ||
| 23 | + | ||
| 24 | +Можливість знайти договір по ідентифікатору | ||
| 25 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук договору | ||
| 26 | + ... ${USERS.users['${tender_owner}'].broker}: Пошук договору | ||
| 27 | + ... viewer tender_owner | ||
| 28 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 29 | + ... find_contract | ||
| 30 | + :FOR ${username} IN @{used_roles} | ||
| 31 | + \ Run As ${${username}} Пошук договору по ідентифікатору ${CONTRACT_UAID} | ||
| 32 | + | ||
| 33 | + | ||
| 34 | +Можливість отримати доступ до договору | ||
| 35 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Отримання прав доступу до договору | ||
| 36 | + ... tender_owner | ||
| 37 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 38 | + ... access_contract | ||
| 39 | + Run As ${tender_owner} Отримати доступ до договору ${CONTRACT_UAID} | ||
| 40 | + | ||
| 41 | + | ||
| 42 | +Можливість внести зміну до умов договору | ||
| 43 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Внесення зміни | ||
| 44 | + ... tender_owner | ||
| 45 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 46 | + ... submit_change | ||
| 47 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 48 | + ${change_data}= Підготувати дані про зміну до договору ${tender_owner} | ||
| 49 | + Run As ${tender_owner} Внести зміну в договір ${CONTRACT_UAID} ${change_data} | ||
| 50 | + | ||
| 51 | + | ||
| 52 | +Відображення опису причини зміни договору | ||
| 53 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | ||
| 54 | + ... tender_owner | ||
| 55 | + ... ${USERS.users['${viewer}'].broker} | ||
| 56 | + ... view_change | ||
| 57 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 58 | + Звірити відображення поля rationale зміни до договору для користувача ${viewer} | ||
| 59 | + | ||
| 60 | + | ||
| 61 | +Відображення причин зміни договору | ||
| 62 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | ||
| 63 | + ... tender_owner | ||
| 64 | + ... ${USERS.users['${viewer}'].broker} | ||
| 65 | + ... view_change | ||
| 66 | + Звірити відображення причин зміни договору | ||
| 67 | + | ||
| 68 | + | ||
| 69 | +Відображення опису причини зміни договору англійською мовою | ||
| 70 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | ||
| 71 | + ... tender_owner | ||
| 72 | + ... ${USERS.users['${viewer}'].broker} | ||
| 73 | + ... view_change | ||
| 74 | + Звірити відображення поля rationale_en зміни до договору для користувача ${viewer} | ||
| 75 | + | ||
| 76 | + | ||
| 77 | +Відображення опису причини зміни договору російською мовою | ||
| 78 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | ||
| 79 | + ... tender_owner | ||
| 80 | + ... ${USERS.users['${viewer}'].broker} | ||
| 81 | + ... view_change | ||
| 82 | + Звірити відображення поля rationale_ru зміни до договору для користувача ${viewer} | ||
| 83 | + | ||
| 84 | + | ||
| 85 | +Відображення непідтвердженого статусу зміни договору | ||
| 86 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | ||
| 87 | + ... tender_owner | ||
| 88 | + ... ${USERS.users['${viewer}'].broker} | ||
| 89 | + ... view_change | ||
| 90 | + Звірити поле зміни до договору із значенням | ||
| 91 | + ... ${viewer} | ||
| 92 | + ... ${CONTRACT_UAID} | ||
| 93 | + ... pending | ||
| 94 | + ... status | ||
| 95 | + | ||
| 96 | + | ||
| 97 | +Можливість додати документацію до зміни договору | ||
| 98 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 99 | + ... tender_owner | ||
| 100 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 101 | + ... upload_change_document | ||
| 102 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 103 | + Додати документацію до зміни договору | ||
| 104 | + | ||
| 105 | + | ||
| 106 | +Відображення заголовку документації до зміни договору | ||
| 107 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 108 | + ... viewer | ||
| 109 | + ... ${USERS.users['${viewer}'].broker} | ||
| 110 | + ... upload_change_document | ||
| 111 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 112 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з ${USERS.users['${tender_owner}']['change_doc']['name']} для користувача ${viewer} | ||
| 113 | + | ||
| 114 | + | ||
| 115 | +Відображення належності документа до зміни договору | ||
| 116 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 117 | + ... viewer | ||
| 118 | + ... ${USERS.users['${viewer}'].broker} | ||
| 119 | + ... view_change_documentOf | ||
| 120 | + Звірити відображення поля documentOf документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з change для користувача ${viewer} | ||
| 121 | + | ||
| 122 | + | ||
| 123 | +Відображення вмісту документації до зміни договору | ||
| 124 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 125 | + ... viewer | ||
| 126 | + ... ${USERS.users['${viewer}'].broker} | ||
| 127 | + ... upload_change_document | ||
| 128 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з ${USERS.users['${tender_owner}']['change_doc']['content']} для користувача ${viewer} | ||
| 129 | + | ||
| 130 | + | ||
| 131 | +Можливість редагувати опис договору | ||
| 132 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 133 | + ... tender_owner | ||
| 134 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 135 | + ... modify_contract | ||
| 136 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 137 | + ${description}= create_fake_sentence | ||
| 138 | + Set to dictionary ${USERS.users['${tender_owner}']} new_description=${description} | ||
| 139 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} description ${description} | ||
| 140 | + | ||
| 141 | + | ||
| 142 | +Можливість редагувати опис причини зміни договору | ||
| 143 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування зміни | ||
| 144 | + ... tender_owner | ||
| 145 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 146 | + ... modify_change | ||
| 147 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 148 | + ${new_rationale}= create_fake_sentence | ||
| 149 | + Set to dictionary ${USERS.users['${tender_owner}']} new_rationale=${new_rationale} | ||
| 150 | + Run As ${tender_owner} Редагувати зміну ${CONTRACT_UAID} rationale ${new_rationale} | ||
| 151 | + | ||
| 152 | + | ||
| 153 | +Можливість редагувати назву договору | ||
| 154 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 155 | + ... tender_owner | ||
| 156 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 157 | + ... modify_contract | ||
| 158 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 159 | + ${title}= create_fake_title | ||
| 160 | + Set to dictionary ${USERS.users['${tender_owner}']} new_title=${title} | ||
| 161 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} title ${title} | ||
| 162 | + | ||
| 163 | + | ||
| 164 | +Можливість редагувати вартість договору | ||
| 165 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 166 | + ... tender_owner | ||
| 167 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 168 | + ... modify_contract | ||
| 169 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 170 | + ${value.amount}= create_fake_value_amount | ||
| 171 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${value.amount} | ||
| 172 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amount ${value.amount} | ||
| 173 | + | ||
| 174 | + | ||
| 175 | +Можливість редагувати дату завершення дії договору | ||
| 176 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 177 | + ... tender_owner | ||
| 178 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 179 | + ... modify_contract | ||
| 180 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 181 | + ${endDate}= create_fake_date | ||
| 182 | + Set to dictionary ${USERS.users['${tender_owner}']} new_endDate=${endDate} | ||
| 183 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} period.endDate ${endDate} | ||
| 184 | + | ||
| 185 | + | ||
| 186 | +Можливість редагувати дату початку дії договору | ||
| 187 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 188 | + ... tender_owner | ||
| 189 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 190 | + ... modify_contract | ||
| 191 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 192 | + ${startDate}= create_fake_date | ||
| 193 | + ${period.startDate}= add_minutes_to_date ${startDate} -20 | ||
| 194 | + Set to dictionary ${USERS.users['${tender_owner}']} new_startDate=${period.startDate} | ||
| 195 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} period.startDate ${period.startDate} | ||
| 196 | + | ||
| 197 | + | ||
| 198 | +Можливість застосувати зміну договору | ||
| 199 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 200 | + ... tender_owner | ||
| 201 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 202 | + ... apply_change | ||
| 203 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 204 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 205 | + ${dateSigned}= create_fake_date | ||
| 206 | + Run As ${tender_owner} Застосувати зміну ${CONTRACT_UAID} ${dateSigned} | ||
| 207 | + Set to dictionary ${USERS.users['${tender_owner}'].change_data.data} status=active | ||
| 208 | + | ||
| 209 | + | ||
| 210 | +Відображення відредагованого опису договору | ||
| 211 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 212 | + ... viewer | ||
| 213 | + ... ${USERS.users['${viewer}'].broker} | ||
| 214 | + ... modify_contract | ||
| 215 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 216 | + Звірити поле договору із значенням | ||
| 217 | + ... ${viewer} | ||
| 218 | + ... ${CONTRACT_UAID} | ||
| 219 | + ... ${USERS.users['${tender_owner}'].new_description} | ||
| 220 | + ... description | ||
| 221 | + | ||
| 222 | + | ||
| 223 | +Відображення відредагованого опису причини зміни договору | ||
| 224 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування зміни договору | ||
| 225 | + ... viewer | ||
| 226 | + ... ${USERS.users['${viewer}'].broker} | ||
| 227 | + ... modify_change | ||
| 228 | + Remove From Dictionary ${USERS.users['${viewer}'].contract_data.data.changes[0]} rationale | ||
| 229 | + Звірити поле договору із значенням | ||
| 230 | + ... ${viewer} | ||
| 231 | + ... ${CONTRACT_UAID} | ||
| 232 | + ... ${USERS.users['${tender_owner}'].new_rationale} | ||
| 233 | + ... changes[0].rationale | ||
| 234 | + | ||
| 235 | + | ||
| 236 | +Відображення відредагованої назви договору | ||
| 237 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 238 | + ... viewer | ||
| 239 | + ... ${USERS.users['${viewer}'].broker} | ||
| 240 | + ... modify_contract | ||
| 241 | + Звірити поле договору із значенням | ||
| 242 | + ... ${viewer} | ||
| 243 | + ... ${CONTRACT_UAID} | ||
| 244 | + ... ${USERS.users['${tender_owner}'].new_title} | ||
| 245 | + ... title | ||
| 246 | + | ||
| 247 | + | ||
| 248 | +Відображення відредагованої вартості договору | ||
| 249 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 250 | + ... viewer | ||
| 251 | + ... ${USERS.users['${viewer}'].broker} | ||
| 252 | + ... modify_contract | ||
| 253 | + Звірити поле договору із значенням | ||
| 254 | + ... ${viewer} | ||
| 255 | + ... ${CONTRACT_UAID} | ||
| 256 | + ... ${USERS.users['${tender_owner}'].new_amount} | ||
| 257 | + ... value.amount | ||
| 258 | + | ||
| 259 | + | ||
| 260 | +Відображення відредагованої дати початку дії договору | ||
| 261 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 262 | + ... viewer | ||
| 263 | + ... ${USERS.users['${viewer}'].broker} | ||
| 264 | + ... modify_contract | ||
| 265 | + Звірити поле договору із значенням | ||
| 266 | + ... ${viewer} | ||
| 267 | + ... ${CONTRACT_UAID} | ||
| 268 | + ... ${USERS.users['${tender_owner}'].new_startDate} | ||
| 269 | + ... period.startDate | ||
| 270 | + | ||
| 271 | + | ||
| 272 | +Відображення відредагованої дати завершення дії договору | ||
| 273 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 274 | + ... viewer | ||
| 275 | + ... ${USERS.users['${viewer}'].broker} | ||
| 276 | + ... modify_contract | ||
| 277 | + Звірити поле договору із значенням | ||
| 278 | + ... ${viewer} | ||
| 279 | + ... ${CONTRACT_UAID} | ||
| 280 | + ... ${USERS.users['${tender_owner}'].new_endDate} | ||
| 281 | + ... period.endDate | ||
| 282 | + | ||
| 283 | + | ||
| 284 | +Відображення підтвердженого статусу зміни договору | ||
| 285 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | ||
| 286 | + ... tender_owner | ||
| 287 | + ... ${USERS.users['${viewer}'].broker} | ||
| 288 | + ... apply_change | ||
| 289 | + Звірити поле зміни до договору із значенням | ||
| 290 | + ... ${viewer} | ||
| 291 | + ... ${CONTRACT_UAID} | ||
| 292 | + ... active | ||
| 293 | + ... status | ||
| 294 | + | ||
| 295 | + | ||
| 296 | +Неможливість додати документ до зміни договору після застосування зміни | ||
| 297 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 298 | + ... tender_owner | ||
| 299 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 300 | + ... upload_change_document | ||
| 301 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 302 | + Run keyword and expect error * Додати документацію до зміни договору | ||
| 303 | + | ||
| 304 | + | ||
| 305 | +Неможливість редагувати опис причини зміни договору після застосування зміни | ||
| 306 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування зміни договору | ||
| 307 | + ... tender_owner | ||
| 308 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 309 | + ... modify_change | ||
| 310 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 311 | + ${new_rationale}= create_fake_sentence | ||
| 312 | + Run keyword and expect error * Run As ${tender_owner} Редагувати зміну ${CONTRACT_UAID} rationale ${new_rationale} | ||
| 313 | + | ||
| 314 | + | ||
| 315 | +Можливість завантажити документацію до договору | ||
| 316 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації до договору | ||
| 317 | + ... tender_owner | ||
| 318 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 319 | + ... add_contract_doc | ||
| 320 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 321 | + Додати документацію до договору | ||
| 322 | + | ||
| 323 | + | ||
| 324 | +Відображення заголовку документації до договору | ||
| 325 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 326 | + ... viewer | ||
| 327 | + ... ${USERS.users['${viewer}'].broker} | ||
| 328 | + ... add_contract_doc | ||
| 329 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 330 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з ${USERS.users['${tender_owner}']['contract_doc']['name']} для користувача ${viewer} | ||
| 331 | + | ||
| 332 | + | ||
| 333 | +Відображення вмісту документації до договору | ||
| 334 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 335 | + ... viewer | ||
| 336 | + ... ${USERS.users['${viewer}'].broker} | ||
| 337 | + ... add_contract_doc | ||
| 338 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з ${USERS.users['${tender_owner}']['contract_doc']['content']} для користувача ${viewer} | ||
| 339 | + | ||
| 340 | + | ||
| 341 | +Відображення належності документа до договору | ||
| 342 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 343 | + ... viewer | ||
| 344 | + ... ${USERS.users['${viewer}'].broker} | ||
| 345 | + ... add_contract_doc | ||
| 346 | + Звірити відображення поля documentOf документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з contract для користувача ${viewer} | ||
| 347 | + | ||
| 348 | + | ||
| 349 | +Можливість вказати причини розірвання договору | ||
| 350 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 351 | + ... tender_owner | ||
| 352 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 353 | + ... termination_reasons | ||
| 354 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 355 | + ${terminationDetails}= create_fake_sentence | ||
| 356 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} terminationDetails ${terminationDetails} | ||
| 357 | + | ||
| 358 | + | ||
| 359 | +Можливість редагувати причини розірвання договору | ||
| 360 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 361 | + ... tender_owner | ||
| 362 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 363 | + ... termination_reasons | ||
| 364 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 365 | + ${terminationDetails}= create_fake_sentence | ||
| 366 | + Set to dictionary ${USERS.users['${tender_owner}']} new_termination_details=${terminationDetails} | ||
| 367 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} terminationDetails ${terminationDetails} | ||
| 368 | + | ||
| 369 | + | ||
| 370 | +Відображення відредагованих причин розірвання договору | ||
| 371 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 372 | + ... viewer | ||
| 373 | + ... ${USERS.users['${viewer}'].broker} | ||
| 374 | + ... termination_reasons | ||
| 375 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 376 | + Звірити поле договору із значенням | ||
| 377 | + ... ${viewer} | ||
| 378 | + ... ${CONTRACT_UAID} | ||
| 379 | + ... ${USERS.users['${tender_owner}'].new_termination_details} | ||
| 380 | + ... terminationDetails | ||
| 381 | + | ||
| 382 | + | ||
| 383 | +Можливість вказати дійсно оплачену суму | ||
| 384 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 385 | + ... tender_owner | ||
| 386 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 387 | + ... amount_paid | ||
| 388 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 389 | + Вказати дійсно оплачену суму | ||
| 390 | + | ||
| 391 | + | ||
| 392 | +Можливість редагувати обсяг дійсно оплаченої суми | ||
| 393 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 394 | + ... tender_owner | ||
| 395 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 396 | + ... amount_paid | ||
| 397 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 398 | + ${amountPaid.amount}= create_fake_value_amount | ||
| 399 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amountPaid_amount=${amountPaid.amount} | ||
| 400 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} amountPaid.amount ${amountPaid.amount} | ||
| 401 | + | ||
| 402 | + | ||
| 403 | +Відображення відредагованого обсягу дійсно оплаченої суми | ||
| 404 | + [Tags] ${USERS.users['${viewer}'].broker}: Редагування договору | ||
| 405 | + ... viewer | ||
| 406 | + ... ${USERS.users['${viewer}'].broker} | ||
| 407 | + ... amount_paid | ||
| 408 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 409 | + Звірити поле договору із значенням | ||
| 410 | + ... ${viewer} | ||
| 411 | + ... ${CONTRACT_UAID} | ||
| 412 | + ... ${USERS.users['${tender_owner}'].new_amountPaid_amount} | ||
| 413 | + ... amountPaid.amount | ||
| 414 | + | ||
| 415 | + | ||
| 416 | +Відображення врахованого ПДВ в дійсно оплачену суму в договорі | ||
| 417 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних договору | ||
| 418 | + ... tender_owner | ||
| 419 | + ... ${USERS.users['${viewer}'].broker} | ||
| 420 | + ... amount_paid | ||
| 421 | + Звірити відображення поля amountPaid.valueAddedTaxIncluded договору із ${USERS.users['${tender_owner}']['terminating_data'].data.amountPaid.valueAddedTaxIncluded} для користувача ${tender_owner} | ||
| 422 | + | ||
| 423 | + | ||
| 424 | +Відображення валюти дійсно оплаченої суми в договорі | ||
| 425 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних договору | ||
| 426 | + ... tender_owner | ||
| 427 | + ... ${USERS.users['${viewer}'].broker} | ||
| 428 | + ... amount_paid | ||
| 429 | + Звірити відображення поля amountPaid.currency договору із ${USERS.users['${tender_owner}']['terminating_data'].data.amountPaid.currency} для користувача ${tender_owner} | ||
| 430 | + | ||
| 431 | + | ||
| 432 | +Можливість завершити договір | ||
| 433 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Завершення договору | ||
| 434 | + ... tender_owner | ||
| 435 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 436 | + ... contract_termination | ||
| 437 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 438 | + Run As ${tender_owner} Завершити договір ${CONTRACT_UAID} | ||
| 439 | + | ||
| 440 | + | ||
| 441 | +Звірити статус завершеного договору | ||
| 442 | + [Tags] ${USERS.users['${viewer}'].broker}: Завершення договору | ||
| 443 | + ... viewer | ||
| 444 | + ... ${USERS.users['${viewer}'].broker} | ||
| 445 | + ... contract_termination | ||
| 446 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 447 | + Remove From Dictionary ${USERS.users['${viewer}'].contract_data.data} status | ||
| 448 | + Звірити поле договору із значенням | ||
| 449 | + ... ${viewer} | ||
| 450 | + ... ${CONTRACT_UAID} | ||
| 451 | + ... terminated | ||
| 452 | + ... status | ||
| 453 | + | ||
| 454 | + | ||
| 455 | +Неможливість редагувати догововір після його завершення | ||
| 456 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | ||
| 457 | + ... tender_owner | ||
| 458 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 459 | + ... modify_contract | ||
| 460 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 461 | + Run keyword and expect error * Додати документацію до договору |
| 1 | *** Settings *** | 1 | *** Settings *** |
| 2 | -Resource keywords.robot | ||
| 3 | -Resource resource.robot | 2 | +Resource base_keywords.robot |
| 4 | Suite Setup Test Suite Setup | 3 | Suite Setup Test Suite Setup |
| 5 | Suite Teardown Test Suite Teardown | 4 | Suite Teardown Test Suite Teardown |
| 6 | 5 | ||
| @@ -16,7 +15,7 @@ Suite Teardown Test Suite Teardown | @@ -16,7 +15,7 @@ Suite Teardown Test Suite Teardown | ||
| 16 | ... find_tender level1 | 15 | ... find_tender level1 |
| 17 | Завантажити дані про тендер | 16 | Завантажити дані про тендер |
| 18 | :FOR ${username} IN ${viewer} ${tender_owner} | 17 | :FOR ${username} IN ${viewer} ${tender_owner} |
| 19 | - \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 18 | + \ Run As ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
| 20 | 19 | ||
| 21 | ############################################################################################## | 20 | ############################################################################################## |
| 22 | # CONTRACT | 21 | # CONTRACT |
| @@ -27,8 +26,9 @@ Suite Teardown Test Suite Teardown | @@ -27,8 +26,9 @@ Suite Teardown Test Suite Teardown | ||
| 27 | ... tender_owner | 26 | ... tender_owner |
| 28 | ... ${USERS.users['${tender_owner}'].broker} | 27 | ... ${USERS.users['${tender_owner}'].broker} |
| 29 | ... tender_view | 28 | ... tender_view |
| 29 | + ${award_index}= Отримати останній індекс awards ${viewer} | ||
| 30 | :FOR ${username} IN ${viewer} ${tender_owner} | 30 | :FOR ${username} IN ${viewer} ${tender_owner} |
| 31 | - \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[-1].complaintPeriod.endDate | 31 | + \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[${award_index}].complaintPeriod.endDate |
| 32 | 32 | ||
| 33 | 33 | ||
| 34 | Дочекатися закічення stand still періоду | 34 | Дочекатися закічення stand still періоду |
| @@ -36,24 +36,157 @@ Suite Teardown Test Suite Teardown | @@ -36,24 +36,157 @@ Suite Teardown Test Suite Teardown | ||
| 36 | ... tender_owner | 36 | ... tender_owner |
| 37 | ... ${USERS.users['${tender_owner}'].broker} | 37 | ... ${USERS.users['${tender_owner}'].broker} |
| 38 | ... contract_sign | 38 | ... contract_sign |
| 39 | - ${standstillEnd}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data.awards[-1].complaintPeriod.endDate} | 39 | + ${award_index}= Отримати останній індекс awards ${viewer} |
| 40 | + ${standstillEnd}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data.data.awards[${award_index}].complaintPeriod.endDate} | ||
| 40 | Дочекатись дати ${standstillEnd} | 41 | Дочекатись дати ${standstillEnd} |
| 41 | 42 | ||
| 42 | 43 | ||
| 44 | +Відображення вартості угоди | ||
| 45 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | ||
| 46 | + ... viewer | ||
| 47 | + ... ${USERS.users['${viewer}'].broker} | ||
| 48 | + ... contract_view | ||
| 49 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 50 | + ${award_index}= Отримати останній індекс awards ${viewer} | ||
| 51 | + Отримати дані із поля awards[${award_index}].value.amount тендера для користувача ${viewer} | ||
| 52 | + | ||
| 53 | + | ||
| 54 | +Можливість редагувати вартість угоди | ||
| 55 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | ||
| 56 | + ... tender_owner | ||
| 57 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 58 | + ... modify_contract | ||
| 59 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 60 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 61 | + ${award_index}= Отримати останній індекс awards ${viewer} | ||
| 62 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 63 | + ${award_amount}= Get From Dictionary ${USERS.users['${viewer}'].tender_data.data.awards[${award_index}].value} amount | ||
| 64 | + ${amount}= create_fake_amount ${award_amount} | ||
| 65 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | ||
| 66 | + Run As ${tender_owner} Редагувати угоду ${TENDER['TENDER_UAID']} ${contract_index} value.amount ${amount} | ||
| 67 | + | ||
| 68 | + | ||
| 69 | +Відображення відредагованої вартості угоди | ||
| 70 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | ||
| 71 | + ... viewer | ||
| 72 | + ... ${USERS.users['${viewer}'].broker} | ||
| 73 | + ... contract_view | ||
| 74 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 75 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 76 | + Remove From Dictionary ${USERS.users['${viewer}'].tender_data.data.contracts[${contract_index}].value} amount | ||
| 77 | + Звірити відображення поля contracts[${contract_index}].value.amount тендера із ${USERS.users['${tender_owner}'].new_amount} для користувача ${viewer} | ||
| 78 | + | ||
| 79 | + | ||
| 80 | +Можливість встановити дату підписання угоди | ||
| 81 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | ||
| 82 | + ... tender_owner | ||
| 83 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 84 | + ... modify_contract | ||
| 85 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 86 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 87 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 88 | + ${dateSigned}= create_fake_date | ||
| 89 | + Set to dictionary ${USERS.users['${tender_owner}']} dateSigned=${dateSigned} | ||
| 90 | + Run As ${tender_owner} Встановити дату підписання угоди ${TENDER['TENDER_UAID']} ${contract_index} ${dateSigned} | ||
| 91 | + | ||
| 92 | + | ||
| 93 | +Відображення дати підписання угоди | ||
| 94 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | ||
| 95 | + ... viewer | ||
| 96 | + ... ${USERS.users['${viewer}'].broker} | ||
| 97 | + ... contract_view | ||
| 98 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 99 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 100 | + Звірити відображення поля contracts[${contract_index}].dateSigned тендера із ${USERS.users['${tender_owner}'].dateSigned} для користувача ${viewer} | ||
| 101 | + | ||
| 102 | + | ||
| 103 | +Можливість вказати період дії угоди | ||
| 104 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | ||
| 105 | + ... tender_owner | ||
| 106 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 107 | + ... modify_contract | ||
| 108 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 109 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 110 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 111 | + ${startDate}= create_fake_date | ||
| 112 | + ${endDate}= add_minutes_to_date ${startDate} 10 | ||
| 113 | + Set to dictionary ${USERS.users['${tender_owner}']} contract_startDate=${startDate} contract_endDate=${endDate} | ||
| 114 | + Run As ${tender_owner} Вказати період дії угоди ${TENDER['TENDER_UAID']} ${contract_index} ${startDate} ${endDate} | ||
| 115 | + | ||
| 116 | + | ||
| 117 | +Відображення дати початку дії угоди | ||
| 118 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | ||
| 119 | + ... viewer | ||
| 120 | + ... ${USERS.users['${viewer}'].broker} | ||
| 121 | + ... contract_view | ||
| 122 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 123 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 124 | + Звірити відображення поля contracts[${contract_index}].period.startDate тендера із ${USERS.users['${tender_owner}'].contract_startDate} для користувача ${viewer} | ||
| 125 | + | ||
| 126 | + | ||
| 127 | +Відображення дати завершення дії угоди | ||
| 128 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | ||
| 129 | + ... viewer | ||
| 130 | + ... ${USERS.users['${viewer}'].broker} | ||
| 131 | + ... contract_view | ||
| 132 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 133 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 134 | + Звірити відображення поля contracts[${contract_index}].period.endDate тендера із ${USERS.users['${tender_owner}'].contract_endDate} для користувача ${viewer} | ||
| 135 | + | ||
| 136 | + | ||
| 137 | +Можливість завантажити документацію в угоду | ||
| 138 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Завантаження документації в угоду | ||
| 139 | + ... tender_owner | ||
| 140 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 141 | + ... add_doc_to_contract | ||
| 142 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 143 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 144 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 145 | + Можливість завантажити документ в ${contract_index} угоду користувачем ${tender_owner} | ||
| 146 | + | ||
| 147 | + | ||
| 148 | +Відображення заголовку документа | ||
| 149 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 150 | + ... viewer | ||
| 151 | + ... ${USERS.users['${viewer}'].broker} | ||
| 152 | + ... add_doc_to_contract | ||
| 153 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 154 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['contract_doc']['id']} із ${USERS.users['${tender_owner}']['contract_doc']['name']} для користувача ${viewer} | ||
| 155 | + | ||
| 156 | + | ||
| 157 | +Відображення вмісту документа | ||
| 158 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 159 | + ... viewer | ||
| 160 | + ... ${USERS.users['${viewer}'].broker} | ||
| 161 | + ... add_doc_to_contract | ||
| 162 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['contract_doc']['id']} із ${USERS.users['${tender_owner}']['contract_doc']['content']} для користувача ${viewer} | ||
| 163 | + | ||
| 164 | + | ||
| 165 | +Відображення прив'язки документа до тендера | ||
| 166 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 167 | + ... viewer | ||
| 168 | + ... ${USERS.users['${viewer}'].broker} | ||
| 169 | + ... add_doc_to_contract | ||
| 170 | + Звірити відображення поля documentOf документа ${USERS.users['${tender_owner}']['contract_doc']['id']} із tender для користувача ${viewer} | ||
| 171 | + | ||
| 172 | + | ||
| 43 | Можливість укласти угоду для закупівлі | 173 | Можливість укласти угоду для закупівлі |
| 44 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди | ||
| 45 | - ... tender_owner | ||
| 46 | - ... ${USERS.users['${tender_owner}'].broker} | ||
| 47 | - ... contract_sign level1 | 174 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди |
| 175 | + ... tender_owner | ||
| 176 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 177 | + ... contract_sign level1 | ||
| 178 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 48 | [Teardown] Оновити LAST_MODIFICATION_DATE | 179 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 49 | - Run As ${tender_owner} Підтвердити підписання контракту ${TENDER['TENDER_UAID']} -1 | 180 | + ${contract_index}= Отримати останній індекс contracts ${viewer} |
| 181 | + Run As ${tender_owner} Підтвердити підписання контракту ${TENDER['TENDER_UAID']} ${contract_index} | ||
| 50 | 182 | ||
| 51 | 183 | ||
| 52 | Відображення статусу підписаної угоди з постачальником закупівлі | 184 | Відображення статусу підписаної угоди з постачальником закупівлі |
| 53 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | ||
| 54 | - ... viewer | ||
| 55 | - ... ${USERS.users['${viewer}'].broker} | ||
| 56 | - ... contract_sign | ||
| 57 | - [Setup] Дочекатись синхронізації з майданчиком ${viewer} | 185 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди |
| 186 | + ... viewer | ||
| 187 | + ... ${USERS.users['${viewer}'].broker} | ||
| 188 | + ... contract_sign | ||
| 189 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 190 | + ${contract_index}= Отримати останній індекс contracts ${viewer} | ||
| 58 | Run As ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | 191 | Run As ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} |
| 59 | - Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} active contracts[-1].status | 192 | + Звірити відображення поля contracts[${contract_index}].status тендера із active для користувача ${viewer} |
| @@ -7,7 +7,7 @@ Default: | @@ -7,7 +7,7 @@ Default: | ||
| 7 | # | 7 | # |
| 8 | # Each field is a mode name | 8 | # Each field is a mode name |
| 9 | # Current modes are: | 9 | # Current modes are: |
| 10 | - # single, multi, limited, openua, openeu | 10 | + # single, multi, limited, openua, openeu, openua_defense |
| 11 | # | 11 | # |
| 12 | # See `prepare_test_tender_data()` | 12 | # See `prepare_test_tender_data()` |
| 13 | # in `service_keywords.py` for more details | 13 | # in `service_keywords.py` for more details |
| @@ -32,12 +32,15 @@ Default: | @@ -32,12 +32,15 @@ Default: | ||
| 32 | openua: | 32 | openua: |
| 33 | accelerator: 1440 | 33 | accelerator: 1440 |
| 34 | tender: [0, 15] | 34 | tender: [0, 15] |
| 35 | - # Please remember that openUA and openEU procedures | 35 | + # Please remember that openUA, openEU and openUA_defense procedures |
| 36 | # forbid anyone to set or modify enquiryPeriod | 36 | # forbid anyone to set or modify enquiryPeriod |
| 37 | # (it is set automatically) | 37 | # (it is set automatically) |
| 38 | openeu: | 38 | openeu: |
| 39 | accelerator: 1440 | 39 | accelerator: 1440 |
| 40 | tender: [0, 30] | 40 | tender: [0, 30] |
| 41 | + openua_defense: | ||
| 42 | + accelerator: 1440 | ||
| 43 | + tender: [0, 6] | ||
| 41 | open_competitive_dialogue: | 44 | open_competitive_dialogue: |
| 42 | accelerator: 1440 | 45 | accelerator: 1440 |
| 43 | tender: [0, 30] | 46 | tender: [0, 30] |
| @@ -52,6 +55,8 @@ Quinta: | @@ -52,6 +55,8 @@ Quinta: | ||
| 52 | tender: [1, 30] | 55 | tender: [1, 30] |
| 53 | openeu: | 56 | openeu: |
| 54 | tender: [1, 35] | 57 | tender: [1, 35] |
| 58 | + openua_defense: | ||
| 59 | + tender: [0, 30] | ||
| 55 | open_competitive_dialogue: | 60 | open_competitive_dialogue: |
| 56 | accelerator: 1440 | 61 | accelerator: 1440 |
| 57 | tender: [0, 30] | 62 | tender: [0, 30] |
| @@ -151,9 +156,9 @@ ztv: | @@ -151,9 +156,9 @@ ztv: | ||
| 151 | keywords_file: ztv | 156 | keywords_file: ztv |
| 152 | roles: | 157 | roles: |
| 153 | tender_owner: ztv_Owner | 158 | tender_owner: ztv_Owner |
| 154 | - provider: ztv_Provider | ||
| 155 | - provider1: ztv_Provider1 | ||
| 156 | - viewer: ztv_Viewer | 159 | + provider: ztv_Provider |
| 160 | + provider1: ztv_Provider1 | ||
| 161 | + viewer: ztv_Viewer | ||
| 157 | timeout_on_wait: 300 | 162 | timeout_on_wait: 300 |
| 158 | Newtend: | 163 | Newtend: |
| 159 | keywords_file: newtend | 164 | keywords_file: newtend |
| 1 | users: | 1 | users: |
| 2 | Tender_Owner: | 2 | Tender_Owner: |
| 3 | + auth_ds: | ||
| 4 | + tenders: [test.quintagroup.com, test.quintagroup.com] | ||
| 5 | + auctions: [test.quintagroup.com, bc698baa8b814908bc75405ed3d63548] | ||
| 3 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | 6 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
| 4 | broker: Quinta | 7 | broker: Quinta |
| 8 | + auth_edr: [test.quintagroup.com, f5111c99a97a45348d8165ba8fcf0d62] | ||
| 9 | + browser: phantomjs | ||
| 10 | + position: [0, 0] | ||
| 11 | + size: [1400, 900] | ||
| 5 | Tender_User: | 12 | Tender_User: |
| 13 | + auth_ds: | ||
| 14 | + tenders: [test.quintagroup.com, test.quintagroup.com] | ||
| 15 | + auctions: [test.quintagroup.com, bc698baa8b814908bc75405ed3d63548] | ||
| 6 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | 16 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
| 7 | broker: Quinta | 17 | broker: Quinta |
| 18 | + auth_edr: [test.quintagroup.com, f5111c99a97a45348d8165ba8fcf0d62] | ||
| 19 | + browser: phantomjs | ||
| 20 | + position: [0, 0] | ||
| 21 | + size: [1400, 900] | ||
| 8 | Tender_User1: | 22 | Tender_User1: |
| 23 | + auth_ds: | ||
| 24 | + tenders: [test.quintagroup.com, test.quintagroup.com] | ||
| 25 | + auctions: [test.quintagroup.com, bc698baa8b814908bc75405ed3d63548] | ||
| 9 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | 26 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
| 10 | broker: Quinta | 27 | broker: Quinta |
| 28 | + auth_edr: [test.quintagroup.com, f5111c99a97a45348d8165ba8fcf0d62] | ||
| 29 | + browser: phantomjs | ||
| 30 | + position: [0, 0] | ||
| 31 | + size: [1400, 900] | ||
| 11 | Tender_User2: | 32 | Tender_User2: |
| 33 | + auth_ds: | ||
| 34 | + tenders: [test.quintagroup.com, test.quintagroup.com] | ||
| 35 | + auctions: [test.quintagroup.com, bc698baa8b814908bc75405ed3d63548] | ||
| 12 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | 36 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
| 13 | broker: Quinta | 37 | broker: Quinta |
| 38 | + auth_edr: [test.quintagroup.com, f5111c99a97a45348d8165ba8fcf0d62] | ||
| 39 | + browser: phantomjs | ||
| 40 | + position: [0, 0] | ||
| 41 | + size: [1400, 900] | ||
| 14 | Tender_Viewer: | 42 | Tender_Viewer: |
| 43 | + auth_ds: | ||
| 44 | + tenders: [test.quintagroup.com, test.quintagroup.com] | ||
| 45 | + auctions: [test.quintagroup.com, bc698baa8b814908bc75405ed3d63548] | ||
| 15 | api_key: "" | 46 | api_key: "" |
| 16 | broker: Quinta | 47 | broker: Quinta |
| 17 | browser: firefox | 48 | browser: firefox |
| 49 | + auth_edr: [test.quintagroup.com, f5111c99a97a45348d8165ba8fcf0d62] | ||
| 50 | + position: [0, 0] | ||
| 51 | + size: [1400, 900] | ||
| 18 | Etender_Owner: | 52 | Etender_Owner: |
| 19 | broker: Etender | 53 | broker: Etender |
| 20 | homepage: "http://bid.uat.e-tender.biz/#/" | 54 | homepage: "http://bid.uat.e-tender.biz/#/" |
| 1 | # -*- coding: utf-8 - | 1 | # -*- coding: utf-8 - |
| 2 | import os | 2 | import os |
| 3 | import random | 3 | import random |
| 4 | +import hashlib | ||
| 4 | from datetime import timedelta | 5 | from datetime import timedelta |
| 5 | from tempfile import NamedTemporaryFile | 6 | from tempfile import NamedTemporaryFile |
| 6 | from uuid import uuid4 | 7 | from uuid import uuid4 |
| @@ -17,7 +18,7 @@ fake_ru = Factory.create(locale='ru_RU') | @@ -17,7 +18,7 @@ fake_ru = Factory.create(locale='ru_RU') | ||
| 17 | fake_uk = Factory.create(locale='uk_UA') | 18 | fake_uk = Factory.create(locale='uk_UA') |
| 18 | fake_uk.add_provider(OP_Provider) | 19 | fake_uk.add_provider(OP_Provider) |
| 19 | fake = fake_uk | 20 | fake = fake_uk |
| 20 | - | 21 | +used_identifier_id = [] |
| 21 | # This workaround fixes an error caused by missing "catch_phrase" class method | 22 | # This workaround fixes an error caused by missing "catch_phrase" class method |
| 22 | # for the "ru_RU" locale in Faker >= 0.7.4 | 23 | # for the "ru_RU" locale in Faker >= 0.7.4 |
| 23 | fake_ru.add_provider(CompanyProviderEnUs) | 24 | fake_ru.add_provider(CompanyProviderEnUs) |
| @@ -28,6 +29,31 @@ def create_fake_sentence(): | @@ -28,6 +29,31 @@ def create_fake_sentence(): | ||
| 28 | return fake.sentence(nb_words=10, variable_nb_words=True) | 29 | return fake.sentence(nb_words=10, variable_nb_words=True) |
| 29 | 30 | ||
| 30 | 31 | ||
| 32 | +def create_fake_amount(award_amount): | ||
| 33 | + return round(random.uniform(1, award_amount), 2) | ||
| 34 | + | ||
| 35 | + | ||
| 36 | +def create_fake_title(): | ||
| 37 | + return u"[ТЕСТУВАННЯ] {}".format(fake.title()) | ||
| 38 | + | ||
| 39 | + | ||
| 40 | +def create_fake_date(): | ||
| 41 | + return get_now().isoformat() | ||
| 42 | + | ||
| 43 | + | ||
| 44 | +def subtraction(value1, value2): | ||
| 45 | + if "." in str (value1) or "." in str (value2): | ||
| 46 | + return (float (value1) - float (value2)) | ||
| 47 | + else: | ||
| 48 | + return (int (value1) - int (value2)) | ||
| 49 | + | ||
| 50 | + | ||
| 51 | +def create_fake_value_amount(): | ||
| 52 | + return fake.random_int(min=1) | ||
| 53 | + | ||
| 54 | +def get_number_of_minutes(days, accelerator): | ||
| 55 | + return 1440 * int(days) / accelerator | ||
| 56 | + | ||
| 31 | def field_with_id(prefix, sentence): | 57 | def field_with_id(prefix, sentence): |
| 32 | return u"{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) | 58 | return u"{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) |
| 33 | 59 | ||
| @@ -39,6 +65,10 @@ def translate_country_en(country): | @@ -39,6 +65,10 @@ def translate_country_en(country): | ||
| 39 | raise Exception(u"Cannot translate country to english: {}".format(country)) | 65 | raise Exception(u"Cannot translate country to english: {}".format(country)) |
| 40 | 66 | ||
| 41 | 67 | ||
| 68 | +def convert_amount(amount): | ||
| 69 | + return (("{:,}".format(float (amount))).replace(',',' ').replace('.',',')) | ||
| 70 | + | ||
| 71 | + | ||
| 42 | def translate_country_ru(country): | 72 | def translate_country_ru(country): |
| 43 | if country == u"Україна": | 73 | if country == u"Україна": |
| 44 | return u"Украина" | 74 | return u"Украина" |
| @@ -63,7 +93,7 @@ def test_tender_data(params, | @@ -63,7 +93,7 @@ def test_tender_data(params, | ||
| 63 | submissionMethodDetails = submissionMethodDetails \ | 93 | submissionMethodDetails = submissionMethodDetails \ |
| 64 | if submissionMethodDetails else "quick" | 94 | if submissionMethodDetails else "quick" |
| 65 | now = get_now() | 95 | now = get_now() |
| 66 | - value_amount = round(random.uniform(3000, 99999999999.99), 2) # max value equals to budget of Ukraine in hryvnias | 96 | + value_amount = round(random.uniform(3000, 99999999.99), 2) # max value equals to budget of Ukraine in hryvnias |
| 67 | data = { | 97 | data = { |
| 68 | "mode": "test", | 98 | "mode": "test", |
| 69 | "submissionMethodDetails": submissionMethodDetails, | 99 | "submissionMethodDetails": submissionMethodDetails, |
| @@ -145,6 +175,56 @@ def test_tender_data(params, | @@ -145,6 +175,56 @@ def test_tender_data(params, | ||
| 145 | return munchify(data) | 175 | return munchify(data) |
| 146 | 176 | ||
| 147 | 177 | ||
| 178 | +def test_tender_data_planning(params): | ||
| 179 | + data = { | ||
| 180 | + "budget": { | ||
| 181 | + "amountNet": round(random.uniform(3000, 999999999.99), 2), | ||
| 182 | + "description": fake.description(), | ||
| 183 | + "project": { | ||
| 184 | + "id": str(fake.random_int(min=1, max=999)), | ||
| 185 | + "name": fake.description(), | ||
| 186 | + }, | ||
| 187 | + "currency": "UAH", | ||
| 188 | + "amount": round(random.uniform(3000, 99999999999.99), 2), | ||
| 189 | + "id": str(fake.random_int(min=1, max=99999999999)) + "-" + str(fake.random_int(min=1, max=9)), | ||
| 190 | + }, | ||
| 191 | + "procuringEntity": { | ||
| 192 | + "identifier": { | ||
| 193 | + "scheme": "UA-EDR", | ||
| 194 | + "id": str(fake.random_int(min=1, max=999)), | ||
| 195 | + "legalName": fake.description(), | ||
| 196 | + }, | ||
| 197 | + "name": fake.description(), | ||
| 198 | + }, | ||
| 199 | + "tender": { | ||
| 200 | + "procurementMethod": "open", | ||
| 201 | + "procurementMethodType": "belowThreshold", | ||
| 202 | + "tenderPeriod": { | ||
| 203 | + "startDate": (get_now().isoformat()) | ||
| 204 | + } | ||
| 205 | + }, | ||
| 206 | + "items": [] | ||
| 207 | + } | ||
| 208 | + id_cpv=fake.cpv()[:4] | ||
| 209 | + cpv_data=test_item_data(id_cpv) | ||
| 210 | + data.update(cpv_data) | ||
| 211 | + del data['deliveryDate'] | ||
| 212 | + del data['description'] | ||
| 213 | + del data['description_en'] | ||
| 214 | + del data['description_ru'] | ||
| 215 | + del data['deliveryAddress'] | ||
| 216 | + del data['deliveryLocation'] | ||
| 217 | + del data['quantity'] | ||
| 218 | + del data['unit'] | ||
| 219 | + for i in range(params['number_of_items']): | ||
| 220 | + item_data=test_item_data(id_cpv) | ||
| 221 | + del item_data['deliveryAddress'] | ||
| 222 | + del item_data['deliveryLocation'] | ||
| 223 | + del item_data['deliveryDate']['startDate'] | ||
| 224 | + data['items'].append(item_data) | ||
| 225 | + return munchify(data) | ||
| 226 | + | ||
| 227 | + | ||
| 148 | def test_tender_data_limited(params): | 228 | def test_tender_data_limited(params): |
| 149 | data = test_tender_data(params) | 229 | data = test_tender_data(params) |
| 150 | del data["submissionMethodDetails"] | 230 | del data["submissionMethodDetails"] |
| @@ -274,6 +354,33 @@ def test_complaint_reply_data(): | @@ -274,6 +354,33 @@ def test_complaint_reply_data(): | ||
| 274 | }) | 354 | }) |
| 275 | 355 | ||
| 276 | 356 | ||
| 357 | +def test_bid_competitive_data(): | ||
| 358 | + bid = munchify({ | ||
| 359 | + "data": { | ||
| 360 | + "tenderers": [ | ||
| 361 | + fake.procuringEntity() | ||
| 362 | + ] | ||
| 363 | + } | ||
| 364 | + }) | ||
| 365 | + if len(used_identifier_id) == 3: | ||
| 366 | + del used_identifier_id[0] | ||
| 367 | + id = bid.data.tenderers[0].identifier.id | ||
| 368 | + while (id in used_identifier_id): | ||
| 369 | + bid = munchify({ | ||
| 370 | + "data": { | ||
| 371 | + "tenderers": [ | ||
| 372 | + fake.procuringEntity() | ||
| 373 | + ] | ||
| 374 | + } | ||
| 375 | + }) | ||
| 376 | + id = bid.data.tenderers[0].identifier.id | ||
| 377 | + used_identifier_id.append(id) | ||
| 378 | + bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName) | ||
| 379 | + bid.data.tenderers[0].address.countryName_ru = translate_country_ru(bid.data.tenderers[0].address.countryName) | ||
| 380 | + bid.data['status'] = 'draft' | ||
| 381 | + return bid | ||
| 382 | + | ||
| 383 | + | ||
| 277 | def test_bid_data(): | 384 | def test_bid_data(): |
| 278 | bid = munchify({ | 385 | bid = munchify({ |
| 279 | "data": { | 386 | "data": { |
| @@ -292,7 +399,7 @@ def test_bid_value(max_value_amount): | @@ -292,7 +399,7 @@ def test_bid_value(max_value_amount): | ||
| 292 | return munchify({ | 399 | return munchify({ |
| 293 | "value": { | 400 | "value": { |
| 294 | "currency": "UAH", | 401 | "currency": "UAH", |
| 295 | - "amount": round(random.uniform(1, max_value_amount), 2), | 402 | + "amount": round(random.uniform((0.95 * max_value_amount), max_value_amount), 2), |
| 296 | "valueAddedTaxIncluded": True | 403 | "valueAddedTaxIncluded": True |
| 297 | } | 404 | } |
| 298 | }) | 405 | }) |
| @@ -376,6 +483,10 @@ def test_lot_document_data(document, lot_id): | @@ -376,6 +483,10 @@ def test_lot_document_data(document, lot_id): | ||
| 376 | document.data.update({"documentOf": "lot", "relatedItem": lot_id}) | 483 | document.data.update({"documentOf": "lot", "relatedItem": lot_id}) |
| 377 | return munchify(document) | 484 | return munchify(document) |
| 378 | 485 | ||
| 486 | +def test_change_document_data(document, change_id): | ||
| 487 | + document.data.update({"documentOf": "change", "relatedItem": change_id}) | ||
| 488 | + return munchify(document) | ||
| 489 | + | ||
| 379 | 490 | ||
| 380 | def test_tender_data_openua(params, submissionMethodDetails): | 491 | def test_tender_data_openua(params, submissionMethodDetails): |
| 381 | # We should not provide any values for `enquiryPeriod` when creating | 492 | # We should not provide any values for `enquiryPeriod` when creating |
| @@ -387,6 +498,16 @@ def test_tender_data_openua(params, submissionMethodDetails): | @@ -387,6 +498,16 @@ def test_tender_data_openua(params, submissionMethodDetails): | ||
| 387 | return data | 498 | return data |
| 388 | 499 | ||
| 389 | 500 | ||
| 501 | +def test_tender_data_openua_defense(params, submissionMethodDetails): | ||
| 502 | + """We should not provide any values for `enquiryPeriod` when creating | ||
| 503 | + an openUA, openEU or openUA_defense procedure. That field should not be present at all. | ||
| 504 | + Therefore, we pass a nondefault list of periods to `test_tender_data()`.""" | ||
| 505 | + data = test_tender_data(params, ('tender',), submissionMethodDetails) | ||
| 506 | + data['procurementMethodType'] = 'aboveThresholdUA.defense' | ||
| 507 | + data['procuringEntity']['kind'] = 'defense' | ||
| 508 | + return data | ||
| 509 | + | ||
| 510 | + | ||
| 390 | def test_tender_data_openeu(params, submissionMethodDetails): | 511 | def test_tender_data_openeu(params, submissionMethodDetails): |
| 391 | # We should not provide any values for `enquiryPeriod` when creating | 512 | # We should not provide any values for `enquiryPeriod` when creating |
| 392 | # an openUA or openEU procedure. That field should not be present at all. | 513 | # an openUA or openEU procedure. That field should not be present at all. |
| @@ -422,3 +543,21 @@ def test_tender_data_competitive_dialogue(params, submissionMethodDetails): | @@ -422,3 +543,21 @@ def test_tender_data_competitive_dialogue(params, submissionMethodDetails): | ||
| 422 | data['procuringEntity']['identifier']['legalName_en'] = fake_en.sentence(nb_words=10, variable_nb_words=True) | 543 | data['procuringEntity']['identifier']['legalName_en'] = fake_en.sentence(nb_words=10, variable_nb_words=True) |
| 423 | data['procuringEntity']['kind'] = 'general' | 544 | data['procuringEntity']['kind'] = 'general' |
| 424 | return data | 545 | return data |
| 546 | + | ||
| 547 | + | ||
| 548 | +def test_change_data(): | ||
| 549 | + return munchify( | ||
| 550 | + { | ||
| 551 | + "data": | ||
| 552 | + { | ||
| 553 | + "rationale": fake.description(), | ||
| 554 | + "rationale_en": fake_en.sentence(nb_words=10, variable_nb_words=True), | ||
| 555 | + "rationale_ru": fake_ru.sentence(nb_words=10, variable_nb_words=True), | ||
| 556 | + "rationaleTypes": fake.rationaleTypes(amount=3), | ||
| 557 | + "status": "pending" | ||
| 558 | + } | ||
| 559 | + }) | ||
| 560 | + | ||
| 561 | + | ||
| 562 | +def get_hash(file_contents): | ||
| 563 | + return ("md5:"+hashlib.md5(file_contents).hexdigest()) |
| @@ -49,7 +49,7 @@ Set Suite Variable With Default Value | @@ -49,7 +49,7 @@ Set Suite Variable With Default Value | ||
| 49 | ${repo}= Run git remote -v | 49 | ${repo}= Run git remote -v |
| 50 | ${branch}= Run git branch -vva | 50 | ${branch}= Run git branch -vva |
| 51 | ${status}= Run git status | 51 | ${status}= Run git status |
| 52 | - ${diff}= Run git diff | 52 | + ${diff}= Run git diff |
| 53 | ${reflog}= Run git reflog | 53 | ${reflog}= Run git reflog |
| 54 | Log ${commit} | 54 | Log ${commit} |
| 55 | Log ${repo} | 55 | Log ${repo} |
| @@ -174,6 +174,11 @@ Get Broker Property By Username | @@ -174,6 +174,11 @@ Get Broker Property By Username | ||
| 174 | Run Keyword And Ignore Error Set To Dictionary ${artifact} tender_owner_access_token=${USERS.users['${tender_owner}'].access_token} | 174 | Run Keyword And Ignore Error Set To Dictionary ${artifact} tender_owner_access_token=${USERS.users['${tender_owner}'].access_token} |
| 175 | Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_access_token=${USERS.users['${provider}'].access_token} | 175 | Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_access_token=${USERS.users['${provider}'].access_token} |
| 176 | Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_access_token=${USERS.users['${provider1}'].access_token} | 176 | Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_access_token=${USERS.users['${provider1}'].access_token} |
| 177 | + Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_bid_id=${USERS.users['${provider}'].bid_id} | ||
| 178 | + Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_bid_id=${USERS.users['${provider1}'].bid_id} | ||
| 179 | + Run Keyword And Ignore Error Set To Dictionary ${artifact} | ||
| 180 | + ... tender_file_properties=${USERS.users['${tender_owner}'].tender_document.file_properties} | ||
| 181 | + ... lot_file_properties=${USERS.users['${tender_owner}'].lots_documents[0].file_properties} | ||
| 177 | ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots | 182 | ${status} ${lots_ids}= Run Keyword And Ignore Error Отримати ідентифікатори об’єктів ${viewer} lots |
| 178 | Run Keyword If '${status}'=='PASS' | 183 | Run Keyword If '${status}'=='PASS' |
| 179 | ... Set To Dictionary ${artifact} lots=${lots_ids} | 184 | ... Set To Dictionary ${artifact} lots=${lots_ids} |
| @@ -193,8 +198,12 @@ Get Broker Property By Username | @@ -193,8 +198,12 @@ Get Broker Property By Username | ||
| 193 | Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]} | 198 | Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]} |
| 194 | ${MODE}= Get Variable Value ${MODE} ${ARTIFACT.mode} | 199 | ${MODE}= Get Variable Value ${MODE} ${ARTIFACT.mode} |
| 195 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.tender_owner_access_token} | 200 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.tender_owner_access_token} |
| 201 | + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${viewer}']} tender_file_properties=${ARTIFACT.tender_file_properties} | ||
| 202 | + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${viewer}']} lot_file_properties=${ARTIFACT.lot_file_properties} | ||
| 196 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider}']} access_token=${ARTIFACT.provider_access_token} | 203 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider}']} access_token=${ARTIFACT.provider_access_token} |
| 197 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider1}']} access_token=${ARTIFACT.provider1_access_token} | 204 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider1}']} access_token=${ARTIFACT.provider1_access_token} |
| 205 | + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider}']} bid_id=${ARTIFACT.provider_bid_id} | ||
| 206 | + Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${provider1}']} bid_id=${ARTIFACT.provider1_bid_id} | ||
| 198 | Set Suite Variable ${MODE} | 207 | Set Suite Variable ${MODE} |
| 199 | Set Suite Variable ${lot_index} | 208 | Set Suite Variable ${lot_index} |
| 200 | Set Suite Variable ${TENDER} | 209 | Set Suite Variable ${TENDER} |
| @@ -219,6 +228,15 @@ Get Broker Property By Username | @@ -219,6 +228,15 @@ Get Broker Property By Username | ||
| 219 | [Return] ${item} | 228 | [Return] ${item} |
| 220 | 229 | ||
| 221 | 230 | ||
| 231 | +Підготувати дані для створення предмету закупівлі плану | ||
| 232 | + [Arguments] ${cpv} | ||
| 233 | + ${item}= test_item_data ${cpv[0:4]} | ||
| 234 | + Remove From Dictionary ${item} deliveryAddress | ||
| 235 | + Remove From Dictionary ${item} deliveryLocation | ||
| 236 | + Remove From Dictionary ${item} deliveryDate.startDate | ||
| 237 | + [Return] ${item} | ||
| 238 | + | ||
| 239 | + | ||
| 222 | Підготувати дані для створення лоту | 240 | Підготувати дані для створення лоту |
| 223 | [Arguments] ${max_lot_value_amount} | 241 | [Arguments] ${max_lot_value_amount} |
| 224 | ${lot}= test_lot_data ${max_lot_value_amount} | 242 | ${lot}= test_lot_data ${max_lot_value_amount} |
| @@ -263,7 +281,7 @@ Get Broker Property By Username | @@ -263,7 +281,7 @@ Get Broker Property By Username | ||
| 263 | 281 | ||
| 264 | Підготувати дані для подання пропозиції для другого етапу | 282 | Підготувати дані для подання пропозиції для другого етапу |
| 265 | [Arguments] ${index}=0 | 283 | [Arguments] ${index}=0 |
| 266 | - ${bid}= generate_test_bid_data_second_stage ${USERS.users['${tender_owner}'].initialdata.data} ${index} | 284 | + ${bid}= generate_test_bid_data_second_stage ${USERS.users['${tender_owner}'].tender_data.data} ${index} |
| 267 | [Return] ${bid} | 285 | [Return] ${bid} |
| 268 | 286 | ||
| 269 | 287 | ||
| @@ -298,6 +316,14 @@ Get Broker Property By Username | @@ -298,6 +316,14 @@ Get Broker Property By Username | ||
| 298 | [Return] ${cancellation_data} | 316 | [Return] ${cancellation_data} |
| 299 | 317 | ||
| 300 | 318 | ||
| 319 | +Підготувати дані про зміну до договору | ||
| 320 | + [Arguments] ${username} | ||
| 321 | + ${change_data}= test_change_data | ||
| 322 | + Set To Dictionary ${USERS.users['${username}']} change_data=${change_data} | ||
| 323 | + Log ${change_data} | ||
| 324 | + [Return] ${change_data} | ||
| 325 | + | ||
| 326 | + | ||
| 301 | Адаптувати дані для оголошення тендера | 327 | Адаптувати дані для оголошення тендера |
| 302 | [Arguments] ${tender_data} | 328 | [Arguments] ${tender_data} |
| 303 | # munchify is used to make deep copy of ${tender_data} | 329 | # munchify is used to make deep copy of ${tender_data} |
| @@ -405,24 +431,67 @@ Log differences between dicts | @@ -405,24 +431,67 @@ Log differences between dicts | ||
| 405 | ... ${last_modification_date_corrected} | 431 | ... ${last_modification_date_corrected} |
| 406 | ... ${USERS.users['${username}']['LAST_REFRESH_DATE']} | 432 | ... ${USERS.users['${username}']['LAST_REFRESH_DATE']} |
| 407 | ${LAST_REFRESH_DATE}= Get Current TZdate | 433 | ${LAST_REFRESH_DATE}= Get Current TZdate |
| 408 | - Run Keyword If ${time_diff} > 0 Run keywords | ||
| 409 | - ... Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | 434 | + Run Keyword If ${time_diff} > 0 Run Keywords |
| 435 | + ... Оновити сторінку ${username} | ||
| 410 | ... AND | 436 | ... AND |
| 411 | ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE} | 437 | ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE} |
| 412 | 438 | ||
| 413 | 439 | ||
| 440 | +Оновити сторінку | ||
| 441 | + [Arguments] ${username} | ||
| 442 | + Run Keyword If '${MODE}' == 'planning' Run As ${username} Оновити сторінку з планом ${TENDER['TENDER_UAID']} | ||
| 443 | + ... ELSE Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | ||
| 444 | + | ||
| 445 | + | ||
| 414 | Звірити поле тендера | 446 | Звірити поле тендера |
| 415 | [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} | 447 | [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} |
| 416 | ${left}= get_from_object ${tender_data.data} ${field} | 448 | ${left}= get_from_object ${tender_data.data} ${field} |
| 417 | Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field} | 449 | Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field} |
| 418 | 450 | ||
| 419 | 451 | ||
| 452 | +Звірити поле плану | ||
| 453 | + [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} | ||
| 454 | + ${left}= get_from_object ${tender_data.data} ${field} | ||
| 455 | + Звірити поле плану із значенням ${username} ${tender_uaid} ${left} ${field} | ||
| 456 | + | ||
| 457 | + | ||
| 458 | +Звірити поле плану із значенням | ||
| 459 | + [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} | ||
| 460 | + ${right}= Отримати дані із плану ${username} ${tender_uaid} ${field} ${object_id} | ||
| 461 | + Порівняти об'єкти ${left} ${right} | ||
| 462 | + | ||
| 463 | + | ||
| 420 | Звірити поле тендера із значенням | 464 | Звірити поле тендера із значенням |
| 421 | [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} | 465 | [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} |
| 422 | ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} | 466 | ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} |
| 423 | Порівняти об'єкти ${left} ${right} | 467 | Порівняти об'єкти ${left} ${right} |
| 424 | 468 | ||
| 425 | 469 | ||
| 470 | +Звірити поле договору | ||
| 471 | + [Arguments] ${username} ${contract_uaid} ${cotract_data} ${field} | ||
| 472 | + ${left}= get_from_object ${contract_data.data} ${field} | ||
| 473 | + Звірити поле договору із значенням ${username} ${contract_uaid} ${left} ${field} | ||
| 474 | + | ||
| 475 | + | ||
| 476 | +Звірити поле договору із значенням | ||
| 477 | + [Arguments] ${username} ${contract_uaid} ${left} ${field} | ||
| 478 | + ${right}= Отримати дані із договору ${username} ${contract_uaid} ${field} | ||
| 479 | + Порівняти об'єкти ${left} ${right} | ||
| 480 | + | ||
| 481 | + | ||
| 482 | +Звірити поле зміни до договору | ||
| 483 | + [Arguments] ${username} ${contract_uaid} ${change_data} ${field} | ||
| 484 | + ${left}= get_from_object ${change_data.data} ${field} | ||
| 485 | + Звірити поле зміни до договору із значенням ${username} ${contract_uaid} ${left} ${field} | ||
| 486 | + | ||
| 487 | + | ||
| 488 | +Звірити поле зміни до договору із значенням | ||
| 489 | + [Arguments] ${username} ${contract_uaid} ${left} ${field} | ||
| 490 | + ${field}= Evaluate "{}{}".format('changes[0].', '${field}') | ||
| 491 | + ${right}= Отримати дані із договору ${username} ${contract_uaid} ${field} | ||
| 492 | + Порівняти об'єкти ${left} ${right} | ||
| 493 | + | ||
| 494 | + | ||
| 426 | Порівняти об'єкти | 495 | Порівняти об'єкти |
| 427 | [Arguments] ${left} ${right} | 496 | [Arguments] ${left} ${right} |
| 428 | Log ${left} | 497 | Log ${left} |
| @@ -531,6 +600,44 @@ Log differences between dicts | @@ -531,6 +600,44 @@ Log differences between dicts | ||
| 531 | [return] ${field_value} | 600 | [return] ${field_value} |
| 532 | 601 | ||
| 533 | 602 | ||
| 603 | +Отримати дані із плану | ||
| 604 | + [Arguments] ${username} ${tender_uaid} ${field_name} ${object_id}=${Empty} | ||
| 605 | + ${field}= Run Keyword If '${object_id}' Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} | ||
| 606 | + ... ELSE Set Variable ${field_name} | ||
| 607 | + ${status} ${field_value}= Run keyword and ignore error | ||
| 608 | + ... get_from_object | ||
| 609 | + ... ${USERS.users['${username}'].tender_data.data} | ||
| 610 | + ... ${field} | ||
| 611 | + # If field in cache, return its value | ||
| 612 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | ||
| 613 | + # Else call broker to find field | ||
| 614 | + ${field_value}= Run As ${username} Отримати інформацію із плану ${tender_uaid} ${field} | ||
| 615 | + # And caching its value before return | ||
| 616 | + Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value} | ||
| 617 | + ${data}= munch_dict arg=${USERS.users['${username}'].tender_data.data} | ||
| 618 | + Set To Dictionary ${USERS.users['${username}'].tender_data} data=${data} | ||
| 619 | + Log ${USERS.users['${username}'].tender_data.data} | ||
| 620 | + [return] ${field_value} | ||
| 621 | + | ||
| 622 | + | ||
| 623 | +Отримати дані із договору | ||
| 624 | + [Arguments] ${username} ${contract_uaid} ${field} | ||
| 625 | + ${status} ${field_value}= Run keyword and ignore error | ||
| 626 | + ... get_from_object | ||
| 627 | + ... ${USERS.users['${username}'].contract_data.data} | ||
| 628 | + ... ${field} | ||
| 629 | + # If field in cache, return its value | ||
| 630 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | ||
| 631 | + # Else call broker to find field | ||
| 632 | + ${field_value}= Run As ${username} Отримати інформацію із договору ${contract_uaid} ${field} | ||
| 633 | + # And caching its value before return | ||
| 634 | + Set_To_Object ${USERS.users['${username}'].contract_data.data} ${field} ${field_value} | ||
| 635 | + ${data}= munch_dict arg=${USERS.users['${username}'].contract_data.data} | ||
| 636 | + Set To Dictionary ${USERS.users['${username}'].contract_data} data=${data} | ||
| 637 | + Log ${USERS.users['${username}'].contract_data.data} | ||
| 638 | + [return] ${field_value} | ||
| 639 | + | ||
| 640 | + | ||
| 534 | Отримати шлях до поля об’єкта | 641 | Отримати шлях до поля об’єкта |
| 535 | [Arguments] ${username} ${field_name} ${object_id} | 642 | [Arguments] ${username} ${field_name} ${object_id} |
| 536 | ${object_type}= get_object_type_by_id ${object_id} | 643 | ${object_type}= get_object_type_by_id ${object_id} |
| @@ -660,6 +767,20 @@ Require Failure | @@ -660,6 +767,20 @@ Require Failure | ||
| 660 | ... ${next_status} | 767 | ... ${next_status} |
| 661 | 768 | ||
| 662 | 769 | ||
| 770 | +Дочекатись дати закінчення періоду уточнень | ||
| 771 | + [Arguments] ${username} | ||
| 772 | + Дочекатись дати ${USERS.users['${username}'].tender_data.data.enquiryPeriod.endDate} | ||
| 773 | + Оновити LAST_MODIFICATION_DATE | ||
| 774 | + Дочекатись синхронізації з майданчиком ${username} | ||
| 775 | + | ||
| 776 | + | ||
| 777 | +Дочекатись дати закінчення періоду відповідей на запитання | ||
| 778 | + [Arguments] ${username} | ||
| 779 | + Дочекатись дати ${USERS.users['${username}'].tender_data.data.enquiryPeriod.clarificationsUntil} | ||
| 780 | + Оновити LAST_MODIFICATION_DATE | ||
| 781 | + Дочекатись синхронізації з майданчиком ${username} | ||
| 782 | + | ||
| 783 | + | ||
| 663 | Звірити статус тендера | 784 | Звірити статус тендера |
| 664 | [Arguments] ${username} ${tender_uaid} ${left} | 785 | [Arguments] ${username} ${tender_uaid} ${left} |
| 665 | ${right}= Run as ${username} Отримати інформацію із тендера ${tender_uaid} status | 786 | ${right}= Run as ${username} Отримати інформацію із тендера ${tender_uaid} status |
| @@ -695,7 +816,7 @@ Require Failure | @@ -695,7 +816,7 @@ Require Failure | ||
| 695 | Оновити LAST_MODIFICATION_DATE | 816 | Оновити LAST_MODIFICATION_DATE |
| 696 | Дочекатись синхронізації з майданчиком ${username} | 817 | Дочекатись синхронізації з майданчиком ${username} |
| 697 | Wait until keyword succeeds | 818 | Wait until keyword succeeds |
| 698 | - ... 5 min 15 sec | 819 | + ... 30 min 15 sec |
| 699 | ... 15 sec | 820 | ... 15 sec |
| 700 | ... Звірити статус тендера | 821 | ... Звірити статус тендера |
| 701 | ... ${username} | 822 | ... ${username} |
| @@ -717,7 +838,7 @@ Require Failure | @@ -717,7 +838,7 @@ Require Failure | ||
| 717 | Оновити LAST_MODIFICATION_DATE | 838 | Оновити LAST_MODIFICATION_DATE |
| 718 | Дочекатись синхронізації з майданчиком ${username} | 839 | Дочекатись синхронізації з майданчиком ${username} |
| 719 | Wait until keyword succeeds | 840 | Wait until keyword succeeds |
| 720 | - ... 5 min 15 sec | 841 | + ... 40 min 15 sec |
| 721 | ... 15 sec | 842 | ... 15 sec |
| 722 | ... Run Keyword And Expect Error * | 843 | ... Run Keyword And Expect Error * |
| 723 | ... Звірити статус тендера | 844 | ... Звірити статус тендера |
| @@ -740,7 +861,7 @@ Require Failure | @@ -740,7 +861,7 @@ Require Failure | ||
| 740 | Оновити LAST_MODIFICATION_DATE | 861 | Оновити LAST_MODIFICATION_DATE |
| 741 | Дочекатись синхронізації з майданчиком ${username} | 862 | Дочекатись синхронізації з майданчиком ${username} |
| 742 | Wait until keyword succeeds | 863 | Wait until keyword succeeds |
| 743 | - ... 5 min 15 sec | 864 | + ... 20 min 15 sec |
| 744 | ... 15 sec | 865 | ... 15 sec |
| 745 | ... Звірити статус тендера | 866 | ... Звірити статус тендера |
| 746 | ... ${username} | 867 | ... ${username} |
| @@ -803,7 +924,7 @@ Require Failure | @@ -803,7 +924,7 @@ Require Failure | ||
| 803 | Оновити LAST_MODIFICATION_DATE | 924 | Оновити LAST_MODIFICATION_DATE |
| 804 | Дочекатись синхронізації з майданчиком ${username} | 925 | Дочекатись синхронізації з майданчиком ${username} |
| 805 | Wait until keyword succeeds | 926 | Wait until keyword succeeds |
| 806 | - ... 10 min 15 sec | 927 | + ... 40 min 15 sec |
| 807 | ... 15 sec | 928 | ... 15 sec |
| 808 | ... Звірити статус тендера | 929 | ... Звірити статус тендера |
| 809 | ... ${username} | 930 | ... ${username} |
| @@ -855,3 +976,12 @@ Require Failure | @@ -855,3 +976,12 @@ Require Failure | ||
| 855 | ${LAST_MODIFICATION_DATE}= Get Current TZdate | 976 | ${LAST_MODIFICATION_DATE}= Get Current TZdate |
| 856 | ${status}= Get Variable Value ${TEST_STATUS} PASS | 977 | ${status}= Get Variable Value ${TEST_STATUS} PASS |
| 857 | Run Keyword If '${status}' == 'PASS' Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE} | 978 | Run Keyword If '${status}' == 'PASS' Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE} |
| 979 | + | ||
| 980 | + | ||
| 981 | +Отримати останній індекс | ||
| 982 | + [Arguments] ${object} ${username} | ||
| 983 | + ${status}= Run Keyword And Return Status List Should Contain Value ${USERS.users['${username}'].tender_data.data} ${object} | ||
| 984 | + Run Keyword If '${status}' == 'False' Fail ${object} not found in \${USERS.users['${username}'].tender_data.data} | ||
| 985 | + ${len_of_object}= Get Length ${USERS.users['${username}'].tender_data.data.${object}} | ||
| 986 | + ${index}= subtraction ${len_of_object} 1 | ||
| 987 | + [Return] ${index} |
| 1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
| 2 | from faker.providers import BaseProvider | 2 | from faker.providers import BaseProvider |
| 3 | +from faker.generator import random | ||
| 3 | from copy import deepcopy | 4 | from copy import deepcopy |
| 4 | from munch import Munch | 5 | from munch import Munch |
| 5 | from json import load | 6 | from json import load |
| @@ -17,13 +18,14 @@ def load_data_from_file(file_name): | @@ -17,13 +18,14 @@ def load_data_from_file(file_name): | ||
| 17 | 18 | ||
| 18 | 19 | ||
| 19 | class OP_Provider(BaseProvider): | 20 | class OP_Provider(BaseProvider): |
| 20 | - __fake_data = load_data_from_file("op_faker_data.json") | ||
| 21 | - word_list = __fake_data.words | ||
| 22 | - procuringEntities = __fake_data.procuringEntities | ||
| 23 | - addresses = __fake_data.addresses | ||
| 24 | - classifications = __fake_data.classifications | ||
| 25 | - cpvs = __fake_data.cpvs | ||
| 26 | - items_base_data = __fake_data.items_base_data | 21 | + _fake_data = load_data_from_file("op_faker_data.json") |
| 22 | + word_list = _fake_data.words | ||
| 23 | + procuringEntities = _fake_data.procuringEntities | ||
| 24 | + addresses = _fake_data.addresses | ||
| 25 | + classifications = _fake_data.classifications | ||
| 26 | + cpvs = _fake_data.cpvs | ||
| 27 | + items_base_data = _fake_data.items_base_data | ||
| 28 | + rationale_types = _fake_data.rationale_types | ||
| 27 | 29 | ||
| 28 | @classmethod | 30 | @classmethod |
| 29 | def randomize_nb_elements(self, number=10, le=60, ge=140): | 31 | def randomize_nb_elements(self, number=10, le=60, ge=140): |
| @@ -150,3 +152,7 @@ class OP_Provider(BaseProvider): | @@ -150,3 +152,7 @@ class OP_Provider(BaseProvider): | ||
| 150 | "description_en": item_base_data["description_en"] | 152 | "description_en": item_base_data["description_en"] |
| 151 | }) | 153 | }) |
| 152 | return deepcopy(item) | 154 | return deepcopy(item) |
| 155 | + | ||
| 156 | + @classmethod | ||
| 157 | + def rationaleTypes(self, amount=3): | ||
| 158 | + return random.sample(self.rationale_types, amount) |
| @@ -518,7 +518,7 @@ | @@ -518,7 +518,7 @@ | ||
| 518 | }, | 518 | }, |
| 519 | "identifier": { | 519 | "identifier": { |
| 520 | "scheme": "UA-EDR", | 520 | "scheme": "UA-EDR", |
| 521 | - "id": "02544394", | 521 | + "id": "13313462", |
| 522 | "legalName": "Київський професійний будівельний ліцей" | 522 | "legalName": "Київський професійний будівельний ліцей" |
| 523 | }, | 523 | }, |
| 524 | "name": "Київський професійний будівельний ліцей", | 524 | "name": "Київський професійний будівельний ліцей", |
| @@ -540,7 +540,7 @@ | @@ -540,7 +540,7 @@ | ||
| 540 | }, | 540 | }, |
| 541 | "identifier": { | 541 | "identifier": { |
| 542 | "scheme": "UA-EDR", | 542 | "scheme": "UA-EDR", |
| 543 | - "id": "01994008", | 543 | + "id": "00037256", |
| 544 | "legalName": "Київська міська клінічна шкірно-венерологічна лікарня" | 544 | "legalName": "Київська міська клінічна шкірно-венерологічна лікарня" |
| 545 | }, | 545 | }, |
| 546 | "name": "Київська міська клінічна шкірно-венерологічна лікарня", | 546 | "name": "Київська міська клінічна шкірно-венерологічна лікарня", |
| @@ -562,7 +562,7 @@ | @@ -562,7 +562,7 @@ | ||
| 562 | }, | 562 | }, |
| 563 | "identifier": { | 563 | "identifier": { |
| 564 | "scheme": "UA-EDR", | 564 | "scheme": "UA-EDR", |
| 565 | - "id": "37405111", | 565 | + "id": "21725150", |
| 566 | "legalName": "Шевченківська районна в місті Києві державна адміністрація" | 566 | "legalName": "Шевченківська районна в місті Києві державна адміністрація" |
| 567 | }, | 567 | }, |
| 568 | "name": "Шевченківська районна в місті Києві державна адміністрація", | 568 | "name": "Шевченківська районна в місті Києві державна адміністрація", |
| @@ -573,512 +573,6 @@ | @@ -573,512 +573,6 @@ | ||
| 573 | "region": "Київська область", | 573 | "region": "Київська область", |
| 574 | "locality": "Переяслав-Хмельницький" | 574 | "locality": "Переяслав-Хмельницький" |
| 575 | } | 575 | } |
| 576 | - }, | ||
| 577 | - { | ||
| 578 | - "contactPoint": { | ||
| 579 | - "url": "http://e-tender.biz", | ||
| 580 | - "telephone": "457-98-17", | ||
| 581 | - "email": "poliklinika1solom@yandex.ua", | ||
| 582 | - "name": "Чепіков Олександр Миколайович", | ||
| 583 | - "faxNumber": "408-23-33" | ||
| 584 | - }, | ||
| 585 | - "identifier": { | ||
| 586 | - "scheme": "UA-EDR", | ||
| 587 | - "id": "04593340", | ||
| 588 | - "legalName": "Комунальне некомерційне підприємство \"Консультативно-діагностичний центр\" Солом’янського району міста Києва" | ||
| 589 | - }, | ||
| 590 | - "name": "Комунальне некомерційне підприємство \"Консультативно-діагностичний центр\" Солом’янського району міста Києва", | ||
| 591 | - "address": { | ||
| 592 | - "postalCode": "03067", | ||
| 593 | - "countryName": "Україна", | ||
| 594 | - "streetAddress": "проспект Космонавта Комарова, 36, 4А", | ||
| 595 | - "region": "місто Київ", | ||
| 596 | - "locality": "Київ" | ||
| 597 | - } | ||
| 598 | - }, | ||
| 599 | - { | ||
| 600 | - "contactPoint": { | ||
| 601 | - "url": "http://osvita.kaniv.info", | ||
| 602 | - "telephone": "0473632433", | ||
| 603 | - "email": "kanvo@ukr.net", | ||
| 604 | - "name": "П'яткова Оксана Дмитрівна", | ||
| 605 | - "faxNumber": "0473632384" | ||
| 606 | - }, | ||
| 607 | - "identifier": { | ||
| 608 | - "scheme": "UA-EDR", | ||
| 609 | - "id": "02147115", | ||
| 610 | - "legalName": "Відділ освіти Канівської районної державної адміністрації Черкаської області" | ||
| 611 | - }, | ||
| 612 | - "name": "Відділ освіти Канівської районної державної адміністрації Черкаської області", | ||
| 613 | - "address": { | ||
| 614 | - "postalCode": "19003", | ||
| 615 | - "countryName": "Україна", | ||
| 616 | - "streetAddress": "Леніна, 60", | ||
| 617 | - "region": "Черкаська", | ||
| 618 | - "locality": "Канів" | ||
| 619 | - } | ||
| 620 | - }, | ||
| 621 | - { | ||
| 622 | - "contactPoint": { | ||
| 623 | - "url": "http://www.pcenter.org.ua", | ||
| 624 | - "telephone": "5228755", | ||
| 625 | - "email": "pcenter_ekonomist@ukr.net", | ||
| 626 | - "name": "Пуніна Ірина Пилипівна", | ||
| 627 | - "faxNumber": "5228745" | ||
| 628 | - }, | ||
| 629 | - "identifier": { | ||
| 630 | - "scheme": "UA-EDR", | ||
| 631 | - "id": "22964365", | ||
| 632 | - "legalName": "Перинатальний центр м.Києва" | ||
| 633 | - }, | ||
| 634 | - "name": "Перинатальний центр м.Києва", | ||
| 635 | - "address": { | ||
| 636 | - "postalCode": "03150", | ||
| 637 | - "countryName": "Україна", | ||
| 638 | - "streetAddress": "вулиця Івана Федорова, 9, 5А", | ||
| 639 | - "region": "місто Київ", | ||
| 640 | - "locality": "Київ" | ||
| 641 | - } | ||
| 642 | - }, | ||
| 643 | - { | ||
| 644 | - "contactPoint": { | ||
| 645 | - "url": "http://kneu.edu.ua/", | ||
| 646 | - "telephone": "456-12-01", | ||
| 647 | - "email": "tender01@kneu.kiev.ua", | ||
| 648 | - "name": "Узунов Лев Олександрович", | ||
| 649 | - "faxNumber": "371-61-72" | ||
| 650 | - }, | ||
| 651 | - "identifier": { | ||
| 652 | - "scheme": "UA-EDR", | ||
| 653 | - "id": "02070884", | ||
| 654 | - "legalName": "Державний вищий навчальний заклад \" Київський національний економічний університет імені Вадима Гетьмана\"" | ||
| 655 | - }, | ||
| 656 | - "name": "Державний вищий навчальний заклад \" Київський національний економічний університет імені Вадима Гетьмана\"", | ||
| 657 | - "address": { | ||
| 658 | - "postalCode": "03680", | ||
| 659 | - "countryName": "Україна", | ||
| 660 | - "streetAddress": "проспект Перемоги, 54/1", | ||
| 661 | - "region": "місто Київ", | ||
| 662 | - "locality": "Київ" | ||
| 663 | - } | ||
| 664 | - }, | ||
| 665 | - { | ||
| 666 | - "contactPoint": { | ||
| 667 | - "url": "http://vk.com/id1", | ||
| 668 | - "telephone": "+380123456789", | ||
| 669 | - "email": "me@example.invalid", | ||
| 670 | - "name": "Гвідо ван Россум", | ||
| 671 | - "faxNumber": "8-800-500-35-35" | ||
| 672 | - }, | ||
| 673 | - "identifier": { | ||
| 674 | - "scheme": "UA-EDR", | ||
| 675 | - "id": "02544394", | ||
| 676 | - "legalName": "Піу піу піу програміст" | ||
| 677 | - }, | ||
| 678 | - "name": "Супер професійний освічений чуйний добрий класний милий чудовий піу піу піу програміст", | ||
| 679 | - "address": { | ||
| 680 | - "postalCode": "01488", | ||
| 681 | - "countryName": "Україна", | ||
| 682 | - "streetAddress": "вулиця Лінуса Торвальдса, 228", | ||
| 683 | - "region": "Тернопільська область", | ||
| 684 | - "locality": "Козятин" | ||
| 685 | - } | ||
| 686 | - }, | ||
| 687 | - { | ||
| 688 | - "contactPoint": { | ||
| 689 | - "url": "http://gorsvet.kiev.ua", | ||
| 690 | - "telephone": "0444580520", | ||
| 691 | - "email": "kievgorsvet_z@ukr.net", | ||
| 692 | - "name": "Зайченко Марина Григорівна", | ||
| 693 | - "faxNumber": "0444580520" | ||
| 694 | - }, | ||
| 695 | - "identifier": { | ||
| 696 | - "scheme": "UA-EDR", | ||
| 697 | - "id": "03360905", | ||
| 698 | - "legalName": "Комунальне підприємство електромереж зовнішнього освітлення м. Києва «Київміськсвітло»" | ||
| 699 | - }, | ||
| 700 | - "name": "Комунальне підприємство електромереж зовнішнього освітлення м. Києва «Київміськсвітло»", | ||
| 701 | - "address": { | ||
| 702 | - "postalCode": "03680", | ||
| 703 | - "countryName": "Україна", | ||
| 704 | - "streetAddress": "вулиця Виборзька, 40, 95", | ||
| 705 | - "region": "місто Київ", | ||
| 706 | - "locality": "Київ" | ||
| 707 | - } | ||
| 708 | - }, | ||
| 709 | - { | ||
| 710 | - "contactPoint": { | ||
| 711 | - "url": "http://dk.kievcity.gov.ua", | ||
| 712 | - "telephone": "0442346071", | ||
| 713 | - "email": "buhkapela@ukr.net", | ||
| 714 | - "name": "Литвин Наталія Миколаївна", | ||
| 715 | - "faxNumber": "0442346071" | ||
| 716 | - }, | ||
| 717 | - "identifier": { | ||
| 718 | - "scheme": "UA-EDR", | ||
| 719 | - "id": "02226079", | ||
| 720 | - "legalName": "\"Концертний заклад культури \"Муніципальна академічна чоловіча хорова капела ім. Л.М. Ревуцького\"" | ||
| 721 | - }, | ||
| 722 | - "name": "\"Концертний заклад культури \"Муніципальна академічна чоловіча хорова капела ім. Л.М. Ревуцького\"", | ||
| 723 | - "address": { | ||
| 724 | - "postalCode": "01004", | ||
| 725 | - "countryName": "Україна", | ||
| 726 | - "streetAddress": "Крутий узвіз, 1/2, 2/1", | ||
| 727 | - "region": "місто Київ", | ||
| 728 | - "locality": "Київ" | ||
| 729 | - } | ||
| 730 | - }, | ||
| 731 | - { | ||
| 732 | - "contactPoint": { | ||
| 733 | - "url": "http://honchar.org.ua", | ||
| 734 | - "telephone": "280-29-31", | ||
| 735 | - "email": "chayka.pl@gmail.com", | ||
| 736 | - "name": "Полякова Лариса Михайлівна", | ||
| 737 | - "faxNumber": "288-92-68" | ||
| 738 | - }, | ||
| 739 | - "identifier": { | ||
| 740 | - "scheme": "UA-EDR", | ||
| 741 | - "id": "21657170", | ||
| 742 | - "legalName": "Національний центр народної культури \"Музей Івана Гончара\"" | ||
| 743 | - }, | ||
| 744 | - "name": "Національний центр народної культури \"Музей Івана Гончара\"", | ||
| 745 | - "address": { | ||
| 746 | - "postalCode": "01015", | ||
| 747 | - "countryName": "Україна", | ||
| 748 | - "streetAddress": "вулиця Лаврська, 19", | ||
| 749 | - "region": "місто Київ", | ||
| 750 | - "locality": "Київ" | ||
| 751 | - } | ||
| 752 | - }, | ||
| 753 | - { | ||
| 754 | - "contactPoint": { | ||
| 755 | - "url": "http://gorsvet.kiev.ua", | ||
| 756 | - "telephone": "0444580520", | ||
| 757 | - "email": "kievgorsvet_z@ukr.net", | ||
| 758 | - "name": "Зайченко Марина Григорівна", | ||
| 759 | - "faxNumber": "0444580520" | ||
| 760 | - }, | ||
| 761 | - "identifier": { | ||
| 762 | - "scheme": "UA-EDR", | ||
| 763 | - "id": "03360905", | ||
| 764 | - "legalName": "Комунальне підприємство електромереж зовнішнього освітлення м. Києва «Київміськсвітло»" | ||
| 765 | - }, | ||
| 766 | - "name": "Комунальне підприємство електромереж зовнішнього освітлення м. Києва «Київміськсвітло»", | ||
| 767 | - "address": { | ||
| 768 | - "postalCode": "03680", | ||
| 769 | - "countryName": "Україна", | ||
| 770 | - "streetAddress": "вулиця Виборзька, 40, 95", | ||
| 771 | - "region": "місто Київ", | ||
| 772 | - "locality": "Київ" | ||
| 773 | - } | ||
| 774 | - }, | ||
| 775 | - { | ||
| 776 | - "contactPoint": { | ||
| 777 | - "url": "http://ksli.at.ua/", | ||
| 778 | - "telephone": "0444082566", | ||
| 779 | - "email": "kcli@ukr.net", | ||
| 780 | - "name": "Бондар Наталія Сергіївна", | ||
| 781 | - "faxNumber": "0444082566" | ||
| 782 | - }, | ||
| 783 | - "identifier": { | ||
| 784 | - "scheme": "UA-EDR", | ||
| 785 | - "id": "23516367", | ||
| 786 | - "legalName": "Загальноосвітній навчальний заклад \"Київський спортивний ліцей-інтернат\"" | ||
| 787 | - }, | ||
| 788 | - "name": "Загальноосвітній навчальний заклад \"Київський спортивний ліцей-інтернат\"", | ||
| 789 | - "address": { | ||
| 790 | - "postalCode": "03126", | ||
| 791 | - "countryName": "Україна", | ||
| 792 | - "streetAddress": "вулиця Михайла Донця, 46, 26", | ||
| 793 | - "region": "місто Київ", | ||
| 794 | - "locality": "Київ" | ||
| 795 | - } | ||
| 796 | - }, | ||
| 797 | - { | ||
| 798 | - "contactPoint": { | ||
| 799 | - "url": "http://kpt.kiev.ua/", | ||
| 800 | - "telephone": "0999826173", | ||
| 801 | - "email": "kpt-t@ukr.net", | ||
| 802 | - "name": "ГУЛАЙ ОЛЕКСАНДР ВІКТОРОВИЧ", | ||
| 803 | - "faxNumber": "0442546580" | ||
| 804 | - }, | ||
| 805 | - "identifier": { | ||
| 806 | - "scheme": "UA-EDR", | ||
| 807 | - "id": "31725604", | ||
| 808 | - "legalName": "КОМУНАЛЬНЕ ПІДПРИЄМСТВО \"КИЇВПАСТРАНС\"" | ||
| 809 | - }, | ||
| 810 | - "name": "КОМУНАЛЬНЕ ПІДПРИЄМСТВО \"КИЇВПАСТРАНС\"", | ||
| 811 | - "address": { | ||
| 812 | - "postalCode": "04070", | ||
| 813 | - "countryName": "Україна", | ||
| 814 | - "streetAddress": "Набережне шосе, 2", | ||
| 815 | - "region": "місто Київ", | ||
| 816 | - "locality": "Київ" | ||
| 817 | - } | ||
| 818 | - }, | ||
| 819 | - { | ||
| 820 | - "contactPoint": { | ||
| 821 | - "url": "http://www.energoatom.kiev.ua/ua/separated/atc/", | ||
| 822 | - "telephone": "044-406-56-84", | ||
| 823 | - "email": "tverdovska@atc.gov.ua", | ||
| 824 | - "name": "Твердовська Тетяна Нінелівна", | ||
| 825 | - "faxNumber": "044-406-56-84" | ||
| 826 | - }, | ||
| 827 | - "identifier": { | ||
| 828 | - "scheme": "UA-EDR", | ||
| 829 | - "id": "20055078", | ||
| 830 | - "legalName": "ВП «Аварійно-технічний центр» ДП «НАЕК «Енергоатом»" | ||
| 831 | - }, | ||
| 832 | - "name": "ВП «Аварійно-технічний центр» ДП «НАЕК «Енергоатом»", | ||
| 833 | - "address": { | ||
| 834 | - "postalCode": "08140", | ||
| 835 | - "countryName": "Україна", | ||
| 836 | - "streetAddress": "вулиця Припятська, 2", | ||
| 837 | - "region": "Київська область", | ||
| 838 | - "locality": "Білогородка" | ||
| 839 | - } | ||
| 840 | - }, | ||
| 841 | - { | ||
| 842 | - "contactPoint": { | ||
| 843 | - "url": "http://www.delta-pilot.ua/", | ||
| 844 | - "telephone": "0512501151", | ||
| 845 | - "email": "kryukovsky@delta-pilot.ua", | ||
| 846 | - "name": "Філія \"Дельта-лоцман\" державного підприємства \"Адміністрація морських портів України\"", | ||
| 847 | - "faxNumber": "0512501162" | ||
| 848 | - }, | ||
| 849 | - "identifier": { | ||
| 850 | - "scheme": "UA-EDR", | ||
| 851 | - "id": "38728507", | ||
| 852 | - "legalName": "Філія \"Дельта-лоцман\" державного підприємства \"Адміністрація морських портів України\"" | ||
| 853 | - }, | ||
| 854 | - "name": "Філія \"Дельта-лоцман\" державного підприємства \"Адміністрація морських портів України\"", | ||
| 855 | - "address": { | ||
| 856 | - "postalCode": "54017", | ||
| 857 | - "countryName": "Україна", | ||
| 858 | - "streetAddress": "вулиця Лягіна, 26", | ||
| 859 | - "region": "Миколаївська область", | ||
| 860 | - "locality": "Миколаїв" | ||
| 861 | - } | ||
| 862 | - }, | ||
| 863 | - { | ||
| 864 | - "contactPoint": { | ||
| 865 | - "url": "http://plus.google.com/106215980992271934972/about?gl=ua&hl=ru", | ||
| 866 | - "telephone": "0445646186", | ||
| 867 | - "email": "darnsp@health.kiev.ua", | ||
| 868 | - "name": "Сірук Олексій Вікторович", | ||
| 869 | - "faxNumber": "0445646186" | ||
| 870 | - }, | ||
| 871 | - "identifier": { | ||
| 872 | - "scheme": "UA-EDR", | ||
| 873 | - "id": "16466597", | ||
| 874 | - "legalName": "Стоматологічна поліклініка Дарницького району м. Києва" | ||
| 875 | - }, | ||
| 876 | - "name": "Стоматологічна поліклініка Дарницького району м. Києва", | ||
| 877 | - "address": { | ||
| 878 | - "postalCode": "02091", | ||
| 879 | - "countryName": "Україна", | ||
| 880 | - "streetAddress": "Харківське шосе, 3Б, 168Е", | ||
| 881 | - "region": "місто Київ", | ||
| 882 | - "locality": "Київ" | ||
| 883 | - } | ||
| 884 | - }, | ||
| 885 | - { | ||
| 886 | - "contactPoint": { | ||
| 887 | - "url": "http://2422171.kiev.ua", | ||
| 888 | - "telephone": "0442422339", | ||
| 889 | - "email": "sol-ruotender@ukr.net", | ||
| 890 | - "name": "Несвятипасха Тетяна Іллівна", | ||
| 891 | - "faxNumber": "0442420728" | ||
| 892 | - }, | ||
| 893 | - "identifier": { | ||
| 894 | - "scheme": "UA-EDR", | ||
| 895 | - "id": "37485490", | ||
| 896 | - "legalName": "Управління освіти Солом'янської районної в місті Києві державної адміністрації" | ||
| 897 | - }, | ||
| 898 | - "name": "Управління освіти Солом'янської районної в місті Києві державної адміністрації", | ||
| 899 | - "address": { | ||
| 900 | - "postalCode": "03087", | ||
| 901 | - "countryName": "Україна", | ||
| 902 | - "streetAddress": "Пітерська вулиця, 12, 12", | ||
| 903 | - "region": "місто Київ", | ||
| 904 | - "locality": "Київ" | ||
| 905 | - } | ||
| 906 | - }, | ||
| 907 | - { | ||
| 908 | - "contactPoint": { | ||
| 909 | - "url": "http://www.kievcity.gov.ua", | ||
| 910 | - "telephone": "235-23-87", | ||
| 911 | - "email": "chevchcrp@ukr.net", | ||
| 912 | - "name": "Савенко Наталія Іванівна", | ||
| 913 | - "faxNumber": "482-06-85" | ||
| 914 | - }, | ||
| 915 | - "identifier": { | ||
| 916 | - "scheme": "UA-EDR", | ||
| 917 | - "id": "38947811", | ||
| 918 | - "legalName": "Комунальне некомерційне підприємство \"Консультативно-діагностичний центр\" Шевченківського району міста Києва" | ||
| 919 | - }, | ||
| 920 | - "name": "Комунальне некомерційне підприємство \"Консультативно-діагностичний центр\" Шевченківського району міста Києва", | ||
| 921 | - "address": { | ||
| 922 | - "postalCode": "01032", | ||
| 923 | - "countryName": "Україна", | ||
| 924 | - "streetAddress": "вулиця Назарівська, 98, 23", | ||
| 925 | - "region": "місто Київ", | ||
| 926 | - "locality": "Київ" | ||
| 927 | - } | ||
| 928 | - }, | ||
| 929 | - { | ||
| 930 | - "contactPoint": { | ||
| 931 | - "url": "http://www.uspa.gov.ua/", | ||
| 932 | - "telephone": "380512508797", | ||
| 933 | - "email": "shyrikm@ukr.net", | ||
| 934 | - "name": "МФ ДП \"АМПУ\" (адміністрація Миколаївського МП)", | ||
| 935 | - "faxNumber": "380512508818" | ||
| 936 | - }, | ||
| 937 | - "identifier": { | ||
| 938 | - "scheme": "UA-EDR", | ||
| 939 | - "id": "38728444", | ||
| 940 | - "legalName": "МФ ДП \"АМПУ\" (адміністрація Миколаївського МП)" | ||
| 941 | - }, | ||
| 942 | - "name": "МФ ДП \"АМПУ\" (адміністрація Миколаївського МП)", | ||
| 943 | - "address": { | ||
| 944 | - "postalCode": "54020", | ||
| 945 | - "countryName": "Україна", | ||
| 946 | - "streetAddress": "вулиця Млинна, 23, 23", | ||
| 947 | - "region": "Миколаївська область", | ||
| 948 | - "locality": "Миколаїв" | ||
| 949 | - } | ||
| 950 | - }, | ||
| 951 | - { | ||
| 952 | - "contactPoint": { | ||
| 953 | - "url": "http://www.uspa.gov.ua/", | ||
| 954 | - "telephone": "380512508797", | ||
| 955 | - "email": "shyrikm@ukr.net", | ||
| 956 | - "name": "МФ ДП \"АМПУ\" (адміністрація Миколаївського МП)", | ||
| 957 | - "faxNumber": "380512508818" | ||
| 958 | - }, | ||
| 959 | - "identifier": { | ||
| 960 | - "scheme": "UA-EDR", | ||
| 961 | - "id": "38728444", | ||
| 962 | - "legalName": "МФ ДП \"АМПУ\" (адміністрація Миколаївського МП)" | ||
| 963 | - }, | ||
| 964 | - "name": "МФ ДП \"АМПУ\" (адміністрація Миколаївського МП)", | ||
| 965 | - "address": { | ||
| 966 | - "postalCode": "54020", | ||
| 967 | - "countryName": "Україна", | ||
| 968 | - "streetAddress": "вулиця Млинна, 23, 23", | ||
| 969 | - "region": "Миколаївська область", | ||
| 970 | - "locality": "Миколаїв" | ||
| 971 | - } | ||
| 972 | - }, | ||
| 973 | - { | ||
| 974 | - "contactPoint": { | ||
| 975 | - "url": "http://www.shevruo.kiev.ua/", | ||
| 976 | - "telephone": "489-02-47", | ||
| 977 | - "email": "lkovalenko@meta.ua", | ||
| 978 | - "name": "Коваленко Леся Аркадіївна", | ||
| 979 | - "faxNumber": "489-02-47" | ||
| 980 | - }, | ||
| 981 | - "identifier": { | ||
| 982 | - "scheme": "UA-EDR", | ||
| 983 | - "id": "37470086", | ||
| 984 | - "legalName": "Управління освіти Шевченківської районної в місті Києві державної адміністрації" | ||
| 985 | - }, | ||
| 986 | - "name": "Управління освіти Шевченківської районної в місті Києві державної адміністрації", | ||
| 987 | - "address": { | ||
| 988 | - "postalCode": "04119", | ||
| 989 | - "countryName": "Україна", | ||
| 990 | - "streetAddress": "вулиця Молдавська, 6А", | ||
| 991 | - "region": "місто Київ", | ||
| 992 | - "locality": "Київ" | ||
| 993 | - } | ||
| 994 | - }, | ||
| 995 | - { | ||
| 996 | - "contactPoint": { | ||
| 997 | - "url": "http://www.ruo-obolon.kiev.ua/", | ||
| 998 | - "telephone": "0444109322", | ||
| 999 | - "email": "katorgina@ukr.net", | ||
| 1000 | - "name": "Циганок Анджела Михайлівна", | ||
| 1001 | - "faxNumber": "0444197359" | ||
| 1002 | - }, | ||
| 1003 | - "identifier": { | ||
| 1004 | - "scheme": "UA-EDR", | ||
| 1005 | - "id": "37445442", | ||
| 1006 | - "legalName": "Управління освіти Оболонської районної в місті Києві державної адміністрації" | ||
| 1007 | - }, | ||
| 1008 | - "name": "Управління освіти Оболонської районної в місті Києві державної адміністрації", | ||
| 1009 | - "address": { | ||
| 1010 | - "postalCode": "04211", | ||
| 1011 | - "countryName": "Україна", | ||
| 1012 | - "streetAddress": "Оболонський проспект, 11А, 8А", | ||
| 1013 | - "region": "місто Київ", | ||
| 1014 | - "locality": "Київ" | ||
| 1015 | - } | ||
| 1016 | - }, | ||
| 1017 | - { | ||
| 1018 | - "contactPoint": { | ||
| 1019 | - "url": "http://dsmsu.gov.ua", | ||
| 1020 | - "telephone": "2897782", | ||
| 1021 | - "email": "anton.gubin@ukr.net", | ||
| 1022 | - "name": "Губін Антон Борисович", | ||
| 1023 | - "faxNumber": "2897788" | ||
| 1024 | - }, | ||
| 1025 | - "identifier": { | ||
| 1026 | - "scheme": "UA-EDR", | ||
| 1027 | - "id": "03767831", | ||
| 1028 | - "legalName": "Державна установа \"Управління збірних команд та забезпечення спортивних заходів \"Укрспортзабезпечення\"" | ||
| 1029 | - }, | ||
| 1030 | - "name": "Державна установа \"Управління збірних команд та забезпечення спортивних заходів \"Укрспортзабезпечення\"", | ||
| 1031 | - "address": { | ||
| 1032 | - "postalCode": "01001", | ||
| 1033 | - "countryName": "Україна", | ||
| 1034 | - "streetAddress": "вулиця Саксаганського, 30Б, 4Б", | ||
| 1035 | - "region": "місто Київ", | ||
| 1036 | - "locality": "Київ" | ||
| 1037 | - } | ||
| 1038 | - }, | ||
| 1039 | - { | ||
| 1040 | - "contactPoint": { | ||
| 1041 | - "url": "http://www.shev.gov.ua/", | ||
| 1042 | - "telephone": "2341170", | ||
| 1043 | - "email": "buh510@ukr.net", | ||
| 1044 | - "name": "Ліповець Євген Іванович", | ||
| 1045 | - "faxNumber": "2343591" | ||
| 1046 | - }, | ||
| 1047 | - "identifier": { | ||
| 1048 | - "scheme": "UA-EDR", | ||
| 1049 | - "id": "37405111", | ||
| 1050 | - "legalName": "Шевченківська районна в місті Києві державна адміністрація" | ||
| 1051 | - }, | ||
| 1052 | - "name": "Шевченківська районна в місті Києві державна адміністрація", | ||
| 1053 | - "address": { | ||
| 1054 | - "postalCode": "01030", | ||
| 1055 | - "countryName": "Україна", | ||
| 1056 | - "streetAddress": "Богдана Хмельницького вулиця, 21-29", | ||
| 1057 | - "region": "Київська область", | ||
| 1058 | - "locality": "Переяслав-Хмельницький" | ||
| 1059 | - } | ||
| 1060 | - }, | ||
| 1061 | - { | ||
| 1062 | - "contactPoint": { | ||
| 1063 | - "url": "http://don.kievcity.gov.ua", | ||
| 1064 | - "telephone": "0442798301", | ||
| 1065 | - "email": "ssrv1970@ukr.net", | ||
| 1066 | - "name": "Сорокун Рімма Вікторівна", | ||
| 1067 | - "faxNumber": "0442798301" | ||
| 1068 | - }, | ||
| 1069 | - "identifier": { | ||
| 1070 | - "scheme": "UA-EDR", | ||
| 1071 | - "id": "02147629", | ||
| 1072 | - "legalName": "Департамент освіти і науки, молоді та спорту виконавчого органу Київської міської ради (Київської міської державної адміністрації)" | ||
| 1073 | - }, | ||
| 1074 | - "name": "Департамент освіти і науки, молоді та спорту виконавчого органу Київської міської ради (Київської міської державної адміністрації)", | ||
| 1075 | - "address": { | ||
| 1076 | - "postalCode": "01004", | ||
| 1077 | - "countryName": "Україна", | ||
| 1078 | - "streetAddress": "вулиця Пушкіна, 3, 1", | ||
| 1079 | - "region": "Київська область", | ||
| 1080 | - "locality": "Яготин" | ||
| 1081 | - } | ||
| 1082 | } | 576 | } |
| 1083 | ], | 577 | ], |
| 1084 | "addresses": [ | 578 | "addresses": [ |
| @@ -8121,5 +7615,15 @@ | @@ -8121,5 +7615,15 @@ | ||
| 8121 | "name": "набір" | 7615 | "name": "набір" |
| 8122 | } | 7616 | } |
| 8123 | } | 7617 | } |
| 7618 | + ], | ||
| 7619 | + "rationale_types": [ | ||
| 7620 | + "volumeCuts", | ||
| 7621 | + "itemPriceVariation", | ||
| 7622 | + "qualityImprovement", | ||
| 7623 | + "durationExtension", | ||
| 7624 | + "priceReduction", | ||
| 7625 | + "taxRate", | ||
| 7626 | + "thirdParty", | ||
| 7627 | + "fiscalYearExtension" | ||
| 8124 | ] | 7628 | ] |
| 8125 | } | 7629 | } |
| @@ -476,6 +476,42 @@ ${ITEM_MEAT} ${True} | @@ -476,6 +476,42 @@ ${ITEM_MEAT} ${True} | ||
| 476 | Звірити відображення поля title документа ${USERS.users['${tender_owner}']['tender_document']['doc_id']} із ${USERS.users['${tender_owner}'].tender_document.doc_name} для користувача ${viewer} | 476 | Звірити відображення поля title документа ${USERS.users['${tender_owner}']['tender_document']['doc_id']} із ${USERS.users['${tender_owner}'].tender_document.doc_name} для користувача ${viewer} |
| 477 | 477 | ||
| 478 | 478 | ||
| 479 | +Можливість отримати інформацію про документацію до тендера | ||
| 480 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення документації | ||
| 481 | + ... tender_owner | ||
| 482 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 483 | + ... get_file_properties | ||
| 484 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 485 | + Отримати інформацію про документ тендера ${USERS.users['${tender_owner}'].tender_document.doc_id} ${tender_owner} | ||
| 486 | + | ||
| 487 | + | ||
| 488 | +Можливість отримати інформацію про документацію до лотів | ||
| 489 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення документації | ||
| 490 | + ... tender_owner | ||
| 491 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 492 | + ... get_file_properties | ||
| 493 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 494 | + Отримати інформацію про документ лотів ${USERS.users['${tender_owner}'].lots_documents[0].doc_id} ${tender_owner} | ||
| 495 | + | ||
| 496 | + | ||
| 497 | +Можливість перевірити інформацію про документацію до тендера | ||
| 498 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 499 | + ... viewer | ||
| 500 | + ... ${USERS.users['${viewer}'].broker} | ||
| 501 | + ... compare_file_properties | ||
| 502 | + Завантажити дані про тендер | ||
| 503 | + Звірити інформацію про документацію ${USERS.users['${viewer}'].tender_file_properties} ${viewer} | ||
| 504 | + | ||
| 505 | + | ||
| 506 | +Можливість перевірити інформацію про документацію до лотів | ||
| 507 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | ||
| 508 | + ... viewer | ||
| 509 | + ... ${USERS.users['${viewer}'].broker} | ||
| 510 | + ... compare_file_properties | ||
| 511 | + Завантажити дані про тендер | ||
| 512 | + Звірити інформацію про документацію ${USERS.users['${viewer}'].lot_file_properties} ${viewer} | ||
| 513 | + | ||
| 514 | + | ||
| 479 | Відображення заголовку документації до всіх лотів | 515 | Відображення заголовку документації до всіх лотів |
| 480 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | 516 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації |
| 481 | ... viewer | 517 | ... viewer |
| @@ -1002,7 +1038,7 @@ ${ITEM_MEAT} ${True} | @@ -1002,7 +1038,7 @@ ${ITEM_MEAT} ${True} | ||
| 1002 | ... ${USERS.users['${tender_owner}'].broker} | 1038 | ... ${USERS.users['${tender_owner}'].broker} |
| 1003 | ... answer_tender_claim | 1039 | ... answer_tender_claim |
| 1004 | [Teardown] Оновити LAST_MODIFICATION_DATE | 1040 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 1005 | - Можливість відповісти на вимогу про виправлення умов закупівлі | 1041 | + Можливість відповісти resolved на вимогу про виправлення умов tender |
| 1006 | 1042 | ||
| 1007 | 1043 | ||
| 1008 | Відображення статусу 'answered' вимоги про виправлення умов закупівлі | 1044 | Відображення статусу 'answered' вимоги про виправлення умов закупівлі |
| @@ -1189,7 +1225,7 @@ ${ITEM_MEAT} ${True} | @@ -1189,7 +1225,7 @@ ${ITEM_MEAT} ${True} | ||
| 1189 | ... ${USERS.users['${tender_owner}'].broker} | 1225 | ... ${USERS.users['${tender_owner}'].broker} |
| 1190 | ... answer_lot_claim | 1226 | ... answer_lot_claim |
| 1191 | [Teardown] Оновити LAST_MODIFICATION_DATE | 1227 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 1192 | - Можливість відповісти на вимогу про виправлення умов лоту | 1228 | + Можливість відповісти resolved на вимогу про виправлення умов lot |
| 1193 | 1229 | ||
| 1194 | 1230 | ||
| 1195 | Відображення статусу 'answered' вимоги про виправлення умов лоту | 1231 | Відображення статусу 'answered' вимоги про виправлення умов лоту |
| @@ -1364,7 +1400,7 @@ ${ITEM_MEAT} ${True} | @@ -1364,7 +1400,7 @@ ${ITEM_MEAT} ${True} | ||
| 1364 | [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | 1400 | [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції |
| 1365 | ... provider | 1401 | ... provider |
| 1366 | ... ${USERS.users['${provider}'].broker} | 1402 | ... ${USERS.users['${provider}'].broker} |
| 1367 | - ... modify_bid_by_provider | 1403 | + ... add_doc_to_bid_by_provider |
| 1368 | ... critical | 1404 | ... critical |
| 1369 | [Teardown] Оновити LAST_MODIFICATION_DATE | 1405 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 1370 | Можливість завантажити документ в пропозицію користувачем ${provider} | 1406 | Можливість завантажити документ в пропозицію користувачем ${provider} |
| @@ -1391,6 +1427,15 @@ ${ITEM_MEAT} ${True} | @@ -1391,6 +1427,15 @@ ${ITEM_MEAT} ${True} | ||
| 1391 | Можливість подати цінову пропозицію користувачем ${provider1} | 1427 | Можливість подати цінову пропозицію користувачем ${provider1} |
| 1392 | 1428 | ||
| 1393 | 1429 | ||
| 1430 | +Можливість зменшити пропозицію на 5% другим учасником | ||
| 1431 | + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції | ||
| 1432 | + ... provider1 | ||
| 1433 | + ... ${USERS.users['${provider1}'].broker} | ||
| 1434 | + ... modify_bid_by_provider1 | ||
| 1435 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 1436 | + Можливість зменшити пропозицію до 95 відсотків користувачем ${provider1} | ||
| 1437 | + | ||
| 1438 | + | ||
| 1394 | Можливість подати пропозицію третім учасником | 1439 | Можливість подати пропозицію третім учасником |
| 1395 | [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції | 1440 | [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції |
| 1396 | ... provider2 | 1441 | ... provider2 |
| @@ -1445,6 +1490,66 @@ ${ITEM_MEAT} ${True} | @@ -1445,6 +1490,66 @@ ${ITEM_MEAT} ${True} | ||
| 1445 | Можливість завантажити eligibility_documents документ до пропозиції учасником ${provider} | 1490 | Можливість завантажити eligibility_documents документ до пропозиції учасником ${provider} |
| 1446 | 1491 | ||
| 1447 | 1492 | ||
| 1493 | +Неможливість задати запитання на тендер після завершення періоду уточнень | ||
| 1494 | + [Tags] ${USERS.users['${provider}'].broker}: Задання запитання | ||
| 1495 | + ... provider | ||
| 1496 | + ... ${USERS.users['${provider}'].broker} | ||
| 1497 | + ... ask_question_after_enquiry_period | ||
| 1498 | + [Setup] Дочекатись дати закінчення періоду уточнень ${provider} | ||
| 1499 | + Run Keyword And Expect Error * Можливість задати запитання на тендер користувачем ${provider} | ||
| 1500 | + | ||
| 1501 | + | ||
| 1502 | +Неможливість подати вимогу про виправлення умов закупівлі після закінчення періоду подання скарг | ||
| 1503 | + [Tags] ${USERS.users['${provider}'].broker}: Процес оскарження | ||
| 1504 | + ... provider | ||
| 1505 | + ... ${USERS.users['${provider}'].broker} | ||
| 1506 | + ... create_tender_complaint_after_complaint_period | ||
| 1507 | + [Setup] Дочекатись дати закінчення періоду подання скарг ${provider} | ||
| 1508 | + Run Keyword And Expect Error * Можливість створити вимогу про виправлення умов закупівлі із документацією | ||
| 1509 | + | ||
| 1510 | + | ||
| 1511 | +Неможливість відповісти на запитання до тендера після завершення періоду відповідей | ||
| 1512 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Відповідь на запитання | ||
| 1513 | + ... tender_owner | ||
| 1514 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 1515 | + ... answer_question_after_clarifications_period | ||
| 1516 | + [Setup] Дочекатись дати закінчення періоду відповідей на запитання ${tender_owner} | ||
| 1517 | + Run Keyword And Expect Error * Можливість відповісти resolved на вимогу про виправлення умов tender | ||
| 1518 | + | ||
| 1519 | + | ||
| 1520 | +Неможливість редагувати однопредметний тендер менше ніж за 2 дні до завершення періоду подання пропозицій | ||
| 1521 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер | ||
| 1522 | + ... tender_owner | ||
| 1523 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 1524 | + ... modify_tender_in_tendering_period | ||
| 1525 | + ${new_description}= create_fake_sentence | ||
| 1526 | + Run Keyword And Expect Error * Можливість змінити поле description тендера на ${new_description} | ||
| 1527 | + | ||
| 1528 | + | ||
| 1529 | +Можливість відповісти на запитання до тендера після продовження періоду прийому пропозицій | ||
| 1530 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Відповідь на запитання | ||
| 1531 | + ... tender_owner | ||
| 1532 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 1533 | + ... answer_question_after_clarifications_period | ||
| 1534 | + ... extend_enquiry_period | ||
| 1535 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 1536 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 1537 | + Можливість продовжити період подання пропозиції на 3 днів | ||
| 1538 | + Можливість відповісти на запитання на тендер | ||
| 1539 | + | ||
| 1540 | + | ||
| 1541 | +Можливість редагувати тендер після продовження періоду прийому пропозицій | ||
| 1542 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер | ||
| 1543 | + ... tender_owner | ||
| 1544 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 1545 | + ... modify_tender_in_tendering_period | ||
| 1546 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 1547 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 1548 | + ${new_description}= create_fake_sentence | ||
| 1549 | + Можливість змінити поле description тендера на ${new_description} | ||
| 1550 | + Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data} description | ||
| 1551 | + | ||
| 1552 | + | ||
| 1448 | Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій | 1553 | Можливість редагувати однопредметний тендер більше ніж за 7 днів до завершення періоду подання пропозицій |
| 1449 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер | 1554 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер |
| 1450 | ... tender_owner | 1555 | ... tender_owner |
| @@ -1531,12 +1636,12 @@ ${ITEM_MEAT} ${True} | @@ -1531,12 +1636,12 @@ ${ITEM_MEAT} ${True} | ||
| 1531 | ############################################################################################## | 1636 | ############################################################################################## |
| 1532 | 1637 | ||
| 1533 | Неможливість завантажити документ першим учасником після закінчення прийому пропозицій | 1638 | Неможливість завантажити документ першим учасником після закінчення прийому пропозицій |
| 1534 | - [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції | 1639 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції |
| 1535 | ... provider | 1640 | ... provider |
| 1536 | - ... ${USERS.users['${provider1}'].broker} | 1641 | + ... ${USERS.users['${provider}'].broker} |
| 1537 | ... add_bid_doc_after_tendering_period_by_provider | 1642 | ... add_bid_doc_after_tendering_period_by_provider |
| 1538 | ... non-critical | 1643 | ... non-critical |
| 1539 | - [Setup] Дочекатись дати закінчення прийому пропозицій ${viewer} ${TENDER['TENDER_UAID']} | 1644 | + [Setup] Дочекатись дати закінчення прийому пропозицій ${provider} ${TENDER['TENDER_UAID']} |
| 1540 | Run Keyword And Expect Error * Можливість завантажити документ в пропозицію користувачем ${provider} | 1645 | Run Keyword And Expect Error * Можливість завантажити документ в пропозицію користувачем ${provider} |
| 1541 | 1646 | ||
| 1542 | 1647 | ||
| @@ -1652,6 +1757,15 @@ ${ITEM_MEAT} ${True} | @@ -1652,6 +1757,15 @@ ${ITEM_MEAT} ${True} | ||
| 1652 | Можливість завантажити документ у кваліфікацію 0 пропозиції | 1757 | Можливість завантажити документ у кваліфікацію 0 пропозиції |
| 1653 | 1758 | ||
| 1654 | 1759 | ||
| 1760 | +Можливість дочекатися перевірки учасників по ЄДРПОУ | ||
| 1761 | + [Tags] ${USERS.users['${viewer}'].broker}: Перевірка користувачів по ЄДРПОУ | ||
| 1762 | + ... tender_owner | ||
| 1763 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 1764 | + ... pre-qualifications_check_by_edrpou | ||
| 1765 | + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']} | ||
| 1766 | + Дочекатися перевірки прекваліфікацій ${tender_owner} ${TENDER['TENDER_UAID']} | ||
| 1767 | + | ||
| 1768 | + | ||
| 1655 | Можливість підтвердити першу пропозицію кваліфікації | 1769 | Можливість підтвердити першу пропозицію кваліфікації |
| 1656 | [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація | 1770 | [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація |
| 1657 | ... tender_owner | 1771 | ... tender_owner |
op_robot_tests/tests_files/planning.robot
0 → 100644
| 1 | +*** Settings *** | ||
| 2 | +Resource base_keywords.robot | ||
| 3 | +Suite Setup Test Suite Setup | ||
| 4 | +Suite Teardown Test Suite Teardown | ||
| 5 | + | ||
| 6 | +*** Variables *** | ||
| 7 | +${MODE} planning | ||
| 8 | +@{USED_ROLES} tender_owner viewer | ||
| 9 | + | ||
| 10 | +${NUMBER_OF_ITEMS} ${2} | ||
| 11 | +${TENDER_MEAT} ${False} | ||
| 12 | +${ITEM_MEAT} ${False} | ||
| 13 | + | ||
| 14 | +*** Test Cases *** | ||
| 15 | +Можливість створити план закупівлі | ||
| 16 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення плану | ||
| 17 | + ... tender_owner | ||
| 18 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 19 | + ... create_plan | ||
| 20 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 21 | + Можливість створити план закупівлі | ||
| 22 | + | ||
| 23 | + | ||
| 24 | +Можливість знайти план по ідентифікатору | ||
| 25 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук плану | ||
| 26 | + ... viewer tender_owner | ||
| 27 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 28 | + ... find_plan | ||
| 29 | + Можливість знайти план по ідентифікатору | ||
| 30 | + | ||
| 31 | + | ||
| 32 | +Відображення суми бюджету | ||
| 33 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 34 | + ... viewer | ||
| 35 | + ... ${USERS.users['${viewer}'].broker} | ||
| 36 | + ... plan_view | ||
| 37 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | ||
| 38 | + Звірити відображення поля budget.amount плану для користувача ${viewer} | ||
| 39 | + | ||
| 40 | + | ||
| 41 | +Відображення amountNet бюджету | ||
| 42 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 43 | + ... viewer | ||
| 44 | + ... ${USERS.users['${viewer}'].broker} | ||
| 45 | + ... plan_view | ||
| 46 | + Звірити відображення поля budget.amountNet плану для користувача ${viewer} | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +Відображення опису бюджету | ||
| 50 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 51 | + ... viewer | ||
| 52 | + ... ${USERS.users['${viewer}'].broker} | ||
| 53 | + ... plan_view | ||
| 54 | + Звірити відображення поля budget.description плану для користувача ${viewer} | ||
| 55 | + | ||
| 56 | + | ||
| 57 | +Відображення валюти бюджету | ||
| 58 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 59 | + ... viewer | ||
| 60 | + ... ${USERS.users['${viewer}'].broker} | ||
| 61 | + ... plan_view | ||
| 62 | + Звірити відображення поля budget.currency плану для користувача ${viewer} | ||
| 63 | + | ||
| 64 | + | ||
| 65 | +Відображення id бюджету | ||
| 66 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 67 | + ... viewer | ||
| 68 | + ... ${USERS.users['${viewer}'].broker} | ||
| 69 | + ... plan_view | ||
| 70 | + Звірити відображення поля budget.id плану для користувача ${viewer} | ||
| 71 | + | ||
| 72 | + | ||
| 73 | +Відображення id проекту в бюджеті | ||
| 74 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 75 | + ... viewer | ||
| 76 | + ... ${USERS.users['${viewer}'].broker} | ||
| 77 | + ... plan_view | ||
| 78 | + Звірити відображення поля budget.project.id плану для користувача ${viewer} | ||
| 79 | + | ||
| 80 | + | ||
| 81 | +Відображення назви проекту в бюджеті | ||
| 82 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 83 | + ... viewer | ||
| 84 | + ... ${USERS.users['${viewer}'].broker} | ||
| 85 | + ... plan_view | ||
| 86 | + Звірити відображення поля budget.project.name плану для користувача ${viewer} | ||
| 87 | + | ||
| 88 | + | ||
| 89 | +Відображення назви організації | ||
| 90 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 91 | + ... viewer | ||
| 92 | + ... ${USERS.users['${viewer}'].broker} | ||
| 93 | + ... plan_view | ||
| 94 | + Звірити відображення поля procuringEntity.name плану для користувача ${viewer} | ||
| 95 | + | ||
| 96 | + | ||
| 97 | +Відображення схеми ідентифікатора організації | ||
| 98 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 99 | + ... viewer | ||
| 100 | + ... ${USERS.users['${viewer}'].broker} | ||
| 101 | + ... plan_view | ||
| 102 | + Звірити відображення поля procuringEntity.identifier.scheme плану для користувача ${viewer} | ||
| 103 | + | ||
| 104 | + | ||
| 105 | +Відображення ідентифікатора організації | ||
| 106 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 107 | + ... viewer | ||
| 108 | + ... ${USERS.users['${viewer}'].broker} | ||
| 109 | + ... plan_view | ||
| 110 | + Звірити відображення поля procuringEntity.identifier.id плану для користувача ${viewer} | ||
| 111 | + | ||
| 112 | + | ||
| 113 | +Відображення легально зареєстрованої назви організації | ||
| 114 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 115 | + ... viewer | ||
| 116 | + ... ${USERS.users['${viewer}'].broker} | ||
| 117 | + ... plan_view | ||
| 118 | + Звірити відображення поля procuringEntity.identifier.legalName плану для користувача ${viewer} | ||
| 119 | + | ||
| 120 | + | ||
| 121 | +Відображення опису класифікації | ||
| 122 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 123 | + ... viewer | ||
| 124 | + ... ${USERS.users['${viewer}'].broker} | ||
| 125 | + ... plan_view | ||
| 126 | + Звірити відображення поля classification.description плану для користувача ${viewer} | ||
| 127 | + | ||
| 128 | + | ||
| 129 | +Відображення схеми класифікації | ||
| 130 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 131 | + ... viewer | ||
| 132 | + ... ${USERS.users['${viewer}'].broker} | ||
| 133 | + ... plan_view | ||
| 134 | + Звірити відображення поля classification.scheme плану для користувача ${viewer} | ||
| 135 | + | ||
| 136 | + | ||
| 137 | +Відображення коду класифікації | ||
| 138 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 139 | + ... viewer | ||
| 140 | + ... ${USERS.users['${viewer}'].broker} | ||
| 141 | + ... plan_view | ||
| 142 | + Звірити відображення поля classification.id плану для користувача ${viewer} | ||
| 143 | + | ||
| 144 | + | ||
| 145 | +Відображення дати початку періоду подання пропозицій | ||
| 146 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 147 | + ... viewer | ||
| 148 | + ... ${USERS.users['${viewer}'].broker} | ||
| 149 | + ... plan_view | ||
| 150 | + Звірити відображення поля tender.tenderPeriod.startDate плану для користувача ${viewer} | ||
| 151 | + | ||
| 152 | + | ||
| 153 | +Відображення опису об'єкта | ||
| 154 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 155 | + ... viewer | ||
| 156 | + ... ${USERS.users['${viewer}'].broker} | ||
| 157 | + ... plan_view level2 | ||
| 158 | + Звірити відображення description усіх предметів плану для користувача ${viewer} | ||
| 159 | + | ||
| 160 | + | ||
| 161 | +Відображення кількості необхідних одиниць об'єкта | ||
| 162 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 163 | + ... viewer | ||
| 164 | + ... ${USERS.users['${viewer}'].broker} | ||
| 165 | + ... plan_view | ||
| 166 | + Звірити відображення quantity усіх предметів плану для користувача ${viewer} | ||
| 167 | + | ||
| 168 | + | ||
| 169 | +Відображення кінцевої дати доставки | ||
| 170 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 171 | + ... viewer | ||
| 172 | + ... ${USERS.users['${viewer}'].broker} | ||
| 173 | + ... plan_view | ||
| 174 | + Звірити відображення deliveryDate.endDate усіх предметів плану для користувача ${viewer} | ||
| 175 | + | ||
| 176 | + | ||
| 177 | +Відображення коду одиниці виміру | ||
| 178 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 179 | + ... viewer | ||
| 180 | + ... ${USERS.users['${viewer}'].broker} | ||
| 181 | + ... plan_view | ||
| 182 | + Звірити відображення unit.code усіх предметів плану для користувача ${viewer} | ||
| 183 | + | ||
| 184 | + | ||
| 185 | +Відображення назви одиниці виміру | ||
| 186 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 187 | + ... viewer | ||
| 188 | + ... ${USERS.users['${viewer}'].broker} | ||
| 189 | + ... plan_view | ||
| 190 | + Звірити відображення unit.name усіх предметів плану для користувача ${viewer} | ||
| 191 | + | ||
| 192 | + | ||
| 193 | +Відображення опису класифікації об'єкта | ||
| 194 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 195 | + ... viewer | ||
| 196 | + ... ${USERS.users['${viewer}'].broker} | ||
| 197 | + ... plan_view | ||
| 198 | + Звірити відображення classification.description усіх предметів плану для користувача ${viewer} | ||
| 199 | + | ||
| 200 | + | ||
| 201 | +Відображення схеми класифікації об'єкта | ||
| 202 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 203 | + ... viewer | ||
| 204 | + ... ${USERS.users['${viewer}'].broker} | ||
| 205 | + ... plan_view | ||
| 206 | + Звірити відображення classification.scheme усіх предметів плану для користувача ${viewer} | ||
| 207 | + | ||
| 208 | + | ||
| 209 | +Відображення коду класифікації об'єкта | ||
| 210 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 211 | + ... viewer | ||
| 212 | + ... ${USERS.users['${viewer}'].broker} | ||
| 213 | + ... plan_view | ||
| 214 | + Звірити відображення classification.id усіх предметів плану для користувача ${viewer} | ||
| 215 | + | ||
| 216 | + | ||
| 217 | +Можливість змінити опис бюджету | ||
| 218 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 219 | + ... tender_owner | ||
| 220 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 221 | + ... modify_plan | ||
| 222 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 223 | + ${new_description}= create_fake_sentence | ||
| 224 | + Можливість змінити поле budget.description плану на ${new_description} | ||
| 225 | + | ||
| 226 | + | ||
| 227 | +Можливість змінити суму бюджету | ||
| 228 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 229 | + ... tender_owner | ||
| 230 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 231 | + ... modify_plan | ||
| 232 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 233 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 234 | + ${new_amount}= create_fake_value_amount | ||
| 235 | + Можливість змінити поле budget.amount плану на ${new_amount} | ||
| 236 | + | ||
| 237 | + | ||
| 238 | +Можливість змінити кінцеву дату доставки | ||
| 239 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 240 | + ... tender_owner | ||
| 241 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 242 | + ... modify_plan | ||
| 243 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 244 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 245 | + ${new_date}= create_fake_date | ||
| 246 | + Можливість змінити поле items[0].deliveryDate.endDate плану на ${new_date} | ||
| 247 | + | ||
| 248 | + | ||
| 249 | +Можливість змінити кількість одиниць предмету закупівлі | ||
| 250 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 251 | + ... tender_owner | ||
| 252 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 253 | + ... modify_plan | ||
| 254 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 255 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 256 | + ${new_quantity}= create_fake_value_amount | ||
| 257 | + Можливість змінити поле items[0].quantity плану на ${new_quantity} | ||
| 258 | + | ||
| 259 | + | ||
| 260 | +Можливість додати предмет закупівлі | ||
| 261 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 262 | + ... tender_owner | ||
| 263 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 264 | + ... add_item | ||
| 265 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 266 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 267 | + Можливість додати предмет закупівлі в план | ||
| 268 | + | ||
| 269 | + | ||
| 270 | +Можливість видалити предмет закупівлі | ||
| 271 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 272 | + ... tender_owner | ||
| 273 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 274 | + ... delete_item | ||
| 275 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 276 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 277 | + Можливість видалити предмет закупівлі з плану |
| @@ -99,7 +99,7 @@ ${award_index} ${0} | @@ -99,7 +99,7 @@ ${award_index} ${0} | ||
| 99 | ... answer_award_claim | 99 | ... answer_award_claim |
| 100 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | 100 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} |
| 101 | [Teardown] Оновити LAST_MODIFICATION_DATE | 101 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 102 | - Можливість відповісти на вимогу про виправлення визначення ${award_index} переможця | 102 | + Можливість відповісти resolved на вимогу про виправлення визначення ${award_index} переможця |
| 103 | 103 | ||
| 104 | 104 | ||
| 105 | Відображення статусу 'answered' вимоги про виправлення визначення переможця | 105 | Відображення статусу 'answered' вимоги про виправлення визначення переможця |
| @@ -211,6 +211,15 @@ ${award_index} ${0} | @@ -211,6 +211,15 @@ ${award_index} ${0} | ||
| 211 | # QUALIFICATION | 211 | # QUALIFICATION |
| 212 | ############################################################################################## | 212 | ############################################################################################## |
| 213 | 213 | ||
| 214 | +Можливість дочекатися перевірки переможців по ЄДРПОУ | ||
| 215 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Перевірка користувача по ЄДРПОУ | ||
| 216 | + ... tender_owner | ||
| 217 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 218 | + ... qualifications_check_by_edrpou | ||
| 219 | + [Setup] Дочекатись дати початку періоду кваліфікації ${tender_owner} ${TENDER['TENDER_UAID']} | ||
| 220 | + Дочекатися перевірки кваліфікацій ${tender_owner} ${TENDER['TENDER_UAID']} | ||
| 221 | + | ||
| 222 | + | ||
| 214 | Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження постачальника | 223 | Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження постачальника |
| 215 | [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | 224 | [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації |
| 216 | ... tender_owner | 225 | ... tender_owner |
| @@ -252,4 +261,4 @@ ${award_index} ${0} | @@ -252,4 +261,4 @@ ${award_index} ${0} | ||
| 252 | ... tender_owner | 261 | ... tender_owner |
| 253 | ... ${USERS.users['${tender_owner}'].broker} | 262 | ... ${USERS.users['${tender_owner}'].broker} |
| 254 | ... qualification_approve_second_award level1 | 263 | ... qualification_approve_second_award level1 |
| 255 | - Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} -1 | 264 | + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1 |
| 1 | *** Variables *** | 1 | *** Variables *** |
| 2 | +${RESOURCE} tenders # possible values: tenders, auctions | ||
| 2 | ${API_HOST_URL} https://lb.api-sandbox.openprocurement.org | 3 | ${API_HOST_URL} https://lb.api-sandbox.openprocurement.org |
| 3 | ${API_VERSION} 2.3 | 4 | ${API_VERSION} 2.3 |
| 4 | ${BROKER} Quinta | 5 | ${BROKER} Quinta |
| 6 | +${DS_HOST_URL} https://upload.docs-sandbox.openprocurement.org | ||
| 5 | ${ROLE} viewer | 7 | ${ROLE} viewer |
| 6 | -${RESOURCE} tenders | 8 | +${EDR_HOST_URL} https://lb.edr-sandbox.openprocurement.org |
| 9 | +${EDR_VERSION} 0 |
| @@ -19,10 +19,14 @@ from robot.output.loggerhelper import Message | @@ -19,10 +19,14 @@ from robot.output.loggerhelper import Message | ||
| 19 | from .initial_data import ( | 19 | from .initial_data import ( |
| 20 | create_fake_doc, | 20 | create_fake_doc, |
| 21 | create_fake_sentence, | 21 | create_fake_sentence, |
| 22 | + create_fake_amount, | ||
| 23 | + create_fake_date, | ||
| 22 | fake, | 24 | fake, |
| 25 | + subtraction, | ||
| 23 | field_with_id, | 26 | field_with_id, |
| 24 | test_bid_data, | 27 | test_bid_data, |
| 25 | test_bid_value, | 28 | test_bid_value, |
| 29 | + test_change_data, | ||
| 26 | test_claim_answer_data, | 30 | test_claim_answer_data, |
| 27 | test_claim_data, | 31 | test_claim_data, |
| 28 | test_complaint_data, | 32 | test_complaint_data, |
| @@ -42,10 +46,19 @@ from .initial_data import ( | @@ -42,10 +46,19 @@ from .initial_data import ( | ||
| 42 | test_tender_data_limited, | 46 | test_tender_data_limited, |
| 43 | test_tender_data_openeu, | 47 | test_tender_data_openeu, |
| 44 | test_tender_data_openua, | 48 | test_tender_data_openua, |
| 49 | + test_tender_data_planning, | ||
| 50 | + test_tender_data_openua_defense, | ||
| 51 | + test_bid_competitive_data, | ||
| 52 | + create_fake_title, | ||
| 53 | + create_fake_value_amount, | ||
| 54 | + test_change_document_data, | ||
| 55 | + convert_amount, | ||
| 56 | + get_number_of_minutes, | ||
| 57 | + get_hash, | ||
| 45 | ) | 58 | ) |
| 46 | from barbecue import chef | 59 | from barbecue import chef |
| 47 | from restkit import request | 60 | from restkit import request |
| 48 | -# End of non-pointless imports | 61 | +# End of non-pointless import |
| 49 | import os | 62 | import os |
| 50 | import re | 63 | import re |
| 51 | 64 | ||
| @@ -307,6 +320,9 @@ def prepare_test_tender_data(procedure_intervals, | @@ -307,6 +320,9 @@ def prepare_test_tender_data(procedure_intervals, | ||
| 307 | elif mode == 'openua': | 320 | elif mode == 'openua': |
| 308 | return munchify({'data': test_tender_data_openua( | 321 | return munchify({'data': test_tender_data_openua( |
| 309 | tender_parameters, submissionMethodDetails)}) | 322 | tender_parameters, submissionMethodDetails)}) |
| 323 | + elif mode == 'openua_defense': | ||
| 324 | + return munchify({'data': test_tender_data_openua_defense( | ||
| 325 | + tender_parameters, submissionMethodDetails)}) | ||
| 310 | elif mode == 'open_competitive_dialogue': | 326 | elif mode == 'open_competitive_dialogue': |
| 311 | return munchify({'data': test_tender_data_competitive_dialogue( | 327 | return munchify({'data': test_tender_data_competitive_dialogue( |
| 312 | tender_parameters, submissionMethodDetails)}) | 328 | tender_parameters, submissionMethodDetails)}) |
| @@ -317,6 +333,9 @@ def prepare_test_tender_data(procedure_intervals, | @@ -317,6 +333,9 @@ def prepare_test_tender_data(procedure_intervals, | ||
| 317 | tender_parameters, | 333 | tender_parameters, |
| 318 | submissionMethodDetails=submissionMethodDetails, | 334 | submissionMethodDetails=submissionMethodDetails, |
| 319 | accelerator=accelerator)}) | 335 | accelerator=accelerator)}) |
| 336 | + elif mode == 'planning': | ||
| 337 | + return munchify({'data': test_tender_data_planning( | ||
| 338 | + tender_parameters)}) | ||
| 320 | # The previous line needs an explicit keyword argument because, | 339 | # The previous line needs an explicit keyword argument because, |
| 321 | # unlike previous functions, this one has three arguments. | 340 | # unlike previous functions, this one has three arguments. |
| 322 | raise ValueError("Invalid mode for prepare_test_tender_data") | 341 | raise ValueError("Invalid mode for prepare_test_tender_data") |
| @@ -500,10 +519,18 @@ def get_object_by_id(data, given_object_id, slice_element, object_id): | @@ -500,10 +519,18 @@ def get_object_by_id(data, given_object_id, slice_element, object_id): | ||
| 500 | 519 | ||
| 501 | 520 | ||
| 502 | def generate_test_bid_data(tender_data): | 521 | def generate_test_bid_data(tender_data): |
| 503 | - bid = test_bid_data() | ||
| 504 | - if tender_data.get('procurementMethodType', '')[:-2] in ('aboveThreshold', 'competitiveDialogue'): | 522 | + if tender_data.get('procurementMethodType', '') in ( |
| 523 | + 'aboveThresholdUA', | ||
| 524 | + 'aboveThresholdUA.defense', | ||
| 525 | + 'aboveThresholdEU', | ||
| 526 | + 'competitiveDialogueUA', | ||
| 527 | + 'competitiveDialogueEU' | ||
| 528 | + ): | ||
| 529 | + bid = test_bid_competitive_data() | ||
| 505 | bid.data.selfEligible = True | 530 | bid.data.selfEligible = True |
| 506 | bid.data.selfQualified = True | 531 | bid.data.selfQualified = True |
| 532 | + else: | ||
| 533 | + bid = test_bid_data() | ||
| 507 | if 'lots' in tender_data: | 534 | if 'lots' in tender_data: |
| 508 | bid.data.lotValues = [] | 535 | bid.data.lotValues = [] |
| 509 | for lot in tender_data['lots']: | 536 | for lot in tender_data['lots']: |
| @@ -533,8 +560,8 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): | @@ -533,8 +560,8 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): | ||
| 533 | bid['data']['tenderers'][0]['identifier']['id'] = tender_data['shortlistedFirms'][index]['identifier']['id'] | 560 | bid['data']['tenderers'][0]['identifier']['id'] = tender_data['shortlistedFirms'][index]['identifier']['id'] |
| 534 | bid['data']['tenderers'][0]['identifier']['scheme'] = tender_data['shortlistedFirms'][index]['identifier']['scheme'] | 561 | bid['data']['tenderers'][0]['identifier']['scheme'] = tender_data['shortlistedFirms'][index]['identifier']['scheme'] |
| 535 | bid['data']['tenderers'][0]['identifier']['legalName'] = tender_data['shortlistedFirms'][index]['identifier']['legalName'] | 562 | bid['data']['tenderers'][0]['identifier']['legalName'] = tender_data['shortlistedFirms'][index]['identifier']['legalName'] |
| 536 | - | ||
| 537 | - if tender_data.get('procurementMethodType', '')[:-2] in ('aboveThreshold', 'competitiveDialogue'): | 563 | + bid['data']['tenderers'][0]['name'] = tender_data['shortlistedFirms'][index]['name'] |
| 564 | + if tender_data.get('procurementMethodType', '') in ('competitiveDialogueEU.stage2', 'competitiveDialogueUA.stage2'): | ||
| 538 | bid.data.selfEligible = True | 565 | bid.data.selfEligible = True |
| 539 | bid.data.selfQualified = True | 566 | bid.data.selfQualified = True |
| 540 | if 'lots' in tender_data: | 567 | if 'lots' in tender_data: |
| @@ -551,3 +578,12 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): | @@ -551,3 +578,12 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): | ||
| 551 | parameter = {"value": fake.random_element(elements=(0.05, 0.01, 0)), "code": feature.get('code', '')} | 578 | parameter = {"value": fake.random_element(elements=(0.05, 0.01, 0)), "code": feature.get('code', '')} |
| 552 | bid.data.parameters.append(parameter) | 579 | bid.data.parameters.append(parameter) |
| 553 | return bid | 580 | return bid |
| 581 | + | ||
| 582 | + | ||
| 583 | +def convert_amount_string_to_float(amount_string): | ||
| 584 | + return float(amount_string.replace(' ', '').replace(',', '.')) | ||
| 585 | + | ||
| 586 | + | ||
| 587 | +def compare_rationale_types(type1, type2): | ||
| 588 | + return set(type1) == set(type2) | ||
| 589 | + |
| @@ -78,4 +78,19 @@ | @@ -78,4 +78,19 @@ | ||
| 78 | -i qualification_add_doc_to_second_award | 78 | -i qualification_add_doc_to_second_award |
| 79 | -i qualification_approve_second_award | 79 | -i qualification_approve_second_award |
| 80 | 80 | ||
| 81 | --i contract_sign | ||
| 81 | +-i contract_view | ||
| 82 | +-i modify_contract | ||
| 83 | +-i add_doc_to_contract | ||
| 84 | +-i contract_sign | ||
| 85 | + | ||
| 86 | +-i find_contract | ||
| 87 | +-i access_contract | ||
| 88 | +-i submit_change | ||
| 89 | +-i view_change | ||
| 90 | +-i upload_change_document | ||
| 91 | +-i modify_change | ||
| 92 | +-i apply_change | ||
| 93 | +-i add_contract_doc | ||
| 94 | +-i termination_reasons | ||
| 95 | +-i amount_paid | ||
| 96 | +-i contract_termination |
robot_tests_arguments/cancellation.txt
0 → 100644
| @@ -52,7 +52,6 @@ | @@ -52,7 +52,6 @@ | ||
| 52 | 52 | ||
| 53 | -i make_bid_without_related_lot | 53 | -i make_bid_without_related_lot |
| 54 | -i make_bid_by_provider | 54 | -i make_bid_by_provider |
| 55 | - -i modify_bid_by_provider | ||
| 56 | -i add_doc_to_bid_by_provider | 55 | -i add_doc_to_bid_by_provider |
| 57 | -i make_bid_by_provider1 | 56 | -i make_bid_by_provider1 |
| 58 | -i make_bid_by_provider2 | 57 | -i make_bid_by_provider2 |
| @@ -81,6 +80,8 @@ | @@ -81,6 +80,8 @@ | ||
| 81 | 80 | ||
| 82 | -i pre-qualification_view | 81 | -i pre-qualification_view |
| 83 | 82 | ||
| 83 | +#-i pre-qualifications_check_by_edrpou | ||
| 84 | + | ||
| 84 | -i pre-qualification_add_doc_to_first_bid | 85 | -i pre-qualification_add_doc_to_first_bid |
| 85 | -i pre-qualification_approve_first_bid | 86 | -i pre-qualification_approve_first_bid |
| 86 | 87 |
| 1 | +-v MODE:open_competitive_dialogue | ||
| 2 | + | ||
| 3 | +-v DIALOGUE_TYPE:UA | ||
| 4 | + | ||
| 5 | +-v NUMBER_OF_ITEMS:1 | ||
| 6 | +-v NUMBER_OF_LOTS:1 | ||
| 7 | + | ||
| 8 | +-v TENDER_MEAT:False | ||
| 9 | +-v ITEM_MEAT:False | ||
| 10 | +-v LOT_MEAT:False | ||
| 11 | + | ||
| 12 | + | ||
| 13 | +-i create_tender | ||
| 14 | +-i find_tender | ||
| 15 | +-i tender_view | ||
| 16 | + | ||
| 17 | +-i make_bid_by_provider | ||
| 18 | +-i make_bid_by_provider1 | ||
| 19 | +-i make_bid_by_provider2 | ||
| 20 | + | ||
| 21 | +-i open_tender_view | ||
| 22 | + | ||
| 23 | +#-i pre-qualifications_check_by_edrpou | ||
| 24 | + | ||
| 25 | +-i pre-qualification_approve_first_bid | ||
| 26 | +-i pre-qualification_approve_second_bid | ||
| 27 | +-i pre-qualification_approve_third_bid | ||
| 28 | + | ||
| 29 | +-i pre-qualification_approve_qualifications | ||
| 30 | + | ||
| 31 | +-i stage2_pending_status_view | ||
| 32 | + | ||
| 33 | +-i wait_bridge_for_work | ||
| 34 | + | ||
| 35 | +-i get_second_stage | ||
| 36 | + | ||
| 37 | +-i compare_stages | ||
| 38 | + | ||
| 39 | +-i save_tender_second_stage | ||
| 40 | + | ||
| 41 | +-i activate_second_stage | ||
| 42 | + | ||
| 43 | +-i make_bid_by_provider_second_stage | ||
| 44 | +-i make_bid_by_provider1_second_stage | ||
| 45 | + | ||
| 46 | +-i auction | ||
| 47 | + | ||
| 48 | +-i qualification_approve_first_award | ||
| 49 | + | ||
| 50 | +-i contract_sign |
| 1 | --s openProcedure | ||
| 2 | - | ||
| 3 | -v MODE:open_competitive_dialogue | 1 | -v MODE:open_competitive_dialogue |
| 4 | 2 | ||
| 5 | 3 | ||
| @@ -21,6 +19,8 @@ | @@ -21,6 +19,8 @@ | ||
| 21 | 19 | ||
| 22 | -i open_tender_view | 20 | -i open_tender_view |
| 23 | 21 | ||
| 22 | +#-i pre-qualifications_check_by_edrpou | ||
| 23 | + | ||
| 24 | -i pre-qualification_approve_first_bid | 24 | -i pre-qualification_approve_first_bid |
| 25 | -i pre-qualification_approve_second_bid | 25 | -i pre-qualification_approve_second_bid |
| 26 | -i pre-qualification_approve_third_bid | 26 | -i pre-qualification_approve_third_bid |
| @@ -42,6 +42,8 @@ | @@ -42,6 +42,8 @@ | ||
| 42 | -i make_bid_by_provider_second_stage | 42 | -i make_bid_by_provider_second_stage |
| 43 | -i make_bid_by_provider1_second_stage | 43 | -i make_bid_by_provider1_second_stage |
| 44 | 44 | ||
| 45 | +#-i qualifications_check_by_edrpou | ||
| 46 | + | ||
| 45 | -i pre-qualification_approve_first_bid_second_stage | 47 | -i pre-qualification_approve_first_bid_second_stage |
| 46 | -i pre-qualification_approve_second_bid_second_stage | 48 | -i pre-qualification_approve_second_bid_second_stage |
| 47 | 49 |
| 1 | +-v MODE:openua_defense | ||
| 2 | + | ||
| 3 | +-v NUMBER_OF_ITEMS:1 | ||
| 4 | +-v NUMBER_OF_LOTS:1 | ||
| 5 | + | ||
| 6 | +-v TENDER_MEAT:True | ||
| 7 | +-v ITEM_MEAT:True | ||
| 8 | +-v LOT_MEAT:True | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +-i create_tender | ||
| 12 | +-i find_tender | ||
| 13 | +-i tender_view | ||
| 14 | +-i meat_view | ||
| 15 | +-i lot_view | ||
| 16 | +-i open_tender_view | ||
| 17 | + | ||
| 18 | +-i extend_tendering_period | ||
| 19 | +-i add_tender_doc | ||
| 20 | +-i add_lot_doc | ||
| 21 | +-i modify_lot_value_amount | ||
| 22 | +-i add_lot | ||
| 23 | + -i delete_lot | ||
| 24 | +-i add_item | ||
| 25 | + -i delete_item | ||
| 26 | +-i add_tender_meat | ||
| 27 | + -i delete_tender_meat | ||
| 28 | +-i add_lot_meat | ||
| 29 | + -i delete_lot_meat | ||
| 30 | +-i add_item_meat | ||
| 31 | + -i delete_item_meat | ||
| 32 | + | ||
| 33 | +-i ask_question_to_tender | ||
| 34 | +-i ask_question_to_item | ||
| 35 | + -i answer_question_to_item | ||
| 36 | +-i ask_question_to_lot | ||
| 37 | + -i answer_question_to_lot | ||
| 38 | +-i modify_tender_after_questions | ||
| 39 | +-i modify_lot_after_questions | ||
| 40 | + | ||
| 41 | +-i create_tender_claim | ||
| 42 | + -i answer_tender_claim | ||
| 43 | + -i resolve_tender_claim | ||
| 44 | +-i modify_tender_after_claim | ||
| 45 | + | ||
| 46 | +-i create_lot_claim | ||
| 47 | + -i answer_lot_claim | ||
| 48 | + -i resolve_lot_claim | ||
| 49 | +-i modify_lot_after_claim | ||
| 50 | + | ||
| 51 | +-i make_bid_without_related_lot | ||
| 52 | +-i make_bid_without_parameters | ||
| 53 | +-i make_bid_by_provider | ||
| 54 | + -i modify_bid_by_provider | ||
| 55 | + -i add_doc_to_bid_by_provider | ||
| 56 | +-i ask_question_after_enquiry_period | ||
| 57 | +-i create_tender_complaint_after_complaint_period | ||
| 58 | +-i answer_question_after_clarifications_period | ||
| 59 | +-i modify_tender_in_tendering_period | ||
| 60 | + -i open_confirm_first_bid | ||
| 61 | +-i bid_view_in_tendering_period | ||
| 62 | + | ||
| 63 | +-i add_bid_doc_after_tendering_period_by_provider | ||
| 64 | + | ||
| 65 | +-i qualification_add_doc_to_first_award | ||
| 66 | +-i qualification_approve_first_award | ||
| 67 | + | ||
| 68 | +-i contract_sign |
| @@ -80,6 +80,8 @@ | @@ -80,6 +80,8 @@ | ||
| 80 | 80 | ||
| 81 | -i pre-qualification_view | 81 | -i pre-qualification_view |
| 82 | 82 | ||
| 83 | +#-i pre-qualifications_check_by_edrpou | ||
| 84 | + | ||
| 83 | -i pre-qualification_add_doc_to_first_bid | 85 | -i pre-qualification_add_doc_to_first_bid |
| 84 | -i pre-qualification_approve_first_bid | 86 | -i pre-qualification_approve_first_bid |
| 85 | 87 | ||
| @@ -93,9 +95,27 @@ | @@ -93,9 +95,27 @@ | ||
| 93 | -i auction | 95 | -i auction |
| 94 | 96 | ||
| 95 | -i qualification_add_doc_to_first_award | 97 | -i qualification_add_doc_to_first_award |
| 98 | + | ||
| 99 | +#-i qualifications_check_by_edrpou | ||
| 100 | + | ||
| 96 | -i qualification_approve_first_award | 101 | -i qualification_approve_first_award |
| 97 | -i qualification_cancel_first_award_qualification | 102 | -i qualification_cancel_first_award_qualification |
| 98 | -i qualification_add_doc_to_second_award | 103 | -i qualification_add_doc_to_second_award |
| 99 | -i qualification_approve_second_award | 104 | -i qualification_approve_second_award |
| 100 | 105 | ||
| 101 | --i contract_sign | ||
| 106 | +-i contract_view | ||
| 107 | +-i modify_contract | ||
| 108 | +-i add_doc_to_contract | ||
| 109 | +-i contract_sign | ||
| 110 | + | ||
| 111 | +-i find_contract | ||
| 112 | +-i access_contract | ||
| 113 | +-i submit_change | ||
| 114 | +-i view_change | ||
| 115 | +-i upload_change_document | ||
| 116 | +-i modify_change | ||
| 117 | +-i apply_change | ||
| 118 | +-i add_contract_doc | ||
| 119 | +-i termination_reasons | ||
| 120 | +-i amount_paid | ||
| 121 | +-i contract_termination |
| @@ -18,12 +18,15 @@ | @@ -18,12 +18,15 @@ | ||
| 18 | 18 | ||
| 19 | -i open_tender_view | 19 | -i open_tender_view |
| 20 | 20 | ||
| 21 | +#-i pre-qualifications_check_by_edrpou | ||
| 22 | + | ||
| 21 | -i pre-qualification_approve_first_bid | 23 | -i pre-qualification_approve_first_bid |
| 22 | -i pre-qualification_approve_second_bid | 24 | -i pre-qualification_approve_second_bid |
| 23 | -i pre-qualification_approve_qualifications | 25 | -i pre-qualification_approve_qualifications |
| 24 | 26 | ||
| 25 | -i auction | 27 | -i auction |
| 26 | 28 | ||
| 29 | +#-i qualifications_check_by_edrpou | ||
| 27 | -i qualification_approve_first_award | 30 | -i qualification_approve_first_award |
| 28 | 31 | ||
| 29 | -i contract_sign | 32 | -i contract_sign |
| @@ -73,9 +73,25 @@ | @@ -73,9 +73,25 @@ | ||
| 73 | -i auction | 73 | -i auction |
| 74 | 74 | ||
| 75 | -i qualification_add_doc_to_first_award | 75 | -i qualification_add_doc_to_first_award |
| 76 | +#-i qualifications_check_by_edrpou | ||
| 76 | -i qualification_approve_first_award | 77 | -i qualification_approve_first_award |
| 77 | -i qualification_cancel_first_award_qualification | 78 | -i qualification_cancel_first_award_qualification |
| 78 | -i qualification_add_doc_to_second_award | 79 | -i qualification_add_doc_to_second_award |
| 79 | -i qualification_approve_second_award | 80 | -i qualification_approve_second_award |
| 80 | 81 | ||
| 81 | --i contract_sign | ||
| 82 | +-i contract_view | ||
| 83 | +-i modify_contract | ||
| 84 | +-i add_doc_to_contract | ||
| 85 | +-i contract_sign | ||
| 86 | + | ||
| 87 | +-i find_contract | ||
| 88 | +-i access_contract | ||
| 89 | +-i submit_change | ||
| 90 | +-i view_change | ||
| 91 | +-i upload_change_document | ||
| 92 | +-i modify_change | ||
| 93 | +-i apply_change | ||
| 94 | +-i add_contract_doc | ||
| 95 | +-i termination_reasons | ||
| 96 | +-i amount_paid | ||
| 97 | +-i contract_termination |
Please
register
or
login
to post a comment