Commit 959a77b69b25b6b53a95a735af3f0f7aed781892
Committed by
GitHub
Merge pull request #554 from ivanka12/planning
Planning
Showing
9 changed files
with
545 additions
and
5 deletions
| @@ -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 |
| @@ -146,6 +195,17 @@ Resource resource.robot | @@ -146,6 +195,17 @@ Resource resource.robot | ||
| 146 | \ Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} | 195 | \ Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} |
| 147 | 196 | ||
| 148 | 197 | ||
| 198 | +Звірити відображення ${field} усіх предметів плану для усіх користувачів | ||
| 199 | + :FOR ${username} IN ${viewer} ${tender_owner} | ||
| 200 | + \ Звірити відображення ${field} усіх предметів плану для користувача ${username} | ||
| 201 | + | ||
| 202 | + | ||
| 203 | +Звірити відображення ${field} усіх предметів плану для користувача ${username} | ||
| 204 | + :FOR ${item_index} IN RANGE ${NUMBER_OF_ITEMS} | ||
| 205 | + \ ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]} | ||
| 206 | + \ Звірити поле плану із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${field}} ${field} ${item_id} | ||
| 207 | + | ||
| 208 | + | ||
| 149 | Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} | 209 | Звірити відображення поля ${field} ${item_index} предмету для користувача ${username} |
| 150 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}]} | 210 | ${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} | 211 | Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data.data['items'][${item_index}].${field}} ${field} ${item_id} |
| @@ -17,6 +17,19 @@ Library openprocurement_client.utils | @@ -17,6 +17,19 @@ Library openprocurement_client.utils | ||
| 17 | [return] ${tender_id} | 17 | [return] ${tender_id} |
| 18 | 18 | ||
| 19 | 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 | + | ||
| 20 | Підготувати клієнт для користувача | 33 | Підготувати клієнт для користувача |
| 21 | [Arguments] ${username} | 34 | [Arguments] ${username} |
| 22 | [Documentation] Відкрити браузер, створити об’єкти api wrapper і | 35 | [Documentation] Відкрити браузер, створити об’єкти api wrapper і |
| @@ -32,7 +45,9 @@ Library openprocurement_client.utils | @@ -32,7 +45,9 @@ Library openprocurement_client.utils | ||
| 32 | # Uncomment this line if there is need to process files operations without DS. | 45 | # Uncomment this line if there is need to process files operations without DS. |
| 33 | # ${ds_api_wraper}= set variable ${None} | 46 | # ${ds_api_wraper}= set variable ${None} |
| 34 | ${ds_api_wraper}= prepare_ds_api_wrapper ${DS_HOST_URL} ${auth_ds} | 47 | ${ds_api_wraper}= prepare_ds_api_wrapper ${DS_HOST_URL} ${auth_ds} |
| 35 | - ${api_wrapper}= prepare_api_wrapper ${USERS.users['${username}'].api_key} ${RESOURCE} ${API_HOST_URL} ${API_VERSION} ${ds_api_wraper} | 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} | ||
| 36 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} | 51 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} |
| 37 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} | 52 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} |
| 38 | ${id_map}= Create Dictionary | 53 | ${id_map}= Create Dictionary |
| @@ -117,6 +132,20 @@ Library openprocurement_client.utils | @@ -117,6 +132,20 @@ Library openprocurement_client.utils | ||
| 117 | [return] ${tender.data.tenderID} | 132 | [return] ${tender.data.tenderID} |
| 118 | 133 | ||
| 119 | 134 | ||
| 135 | +Створити план | ||
| 136 | + [Arguments] ${username} ${tender_data} | ||
| 137 | + ${tender}= Call Method ${USERS.users['${username}'].client} create_plan ${tender_data} | ||
| 138 | + Log ${tender} | ||
| 139 | + ${access_token}= Get Variable Value ${tender.access.token} | ||
| 140 | + ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 141 | + Log ${tender} | ||
| 142 | + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/plans/${tender.data.id}${\n} WARN | ||
| 143 | + Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} | ||
| 144 | + Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} | ||
| 145 | + Log ${USERS.users['${username}'].tender_data} | ||
| 146 | + [return] ${tender.data.planID} | ||
| 147 | + | ||
| 148 | + | ||
| 120 | Пошук тендера по ідентифікатору | 149 | Пошук тендера по ідентифікатору |
| 121 | [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data | 150 | [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data |
| 122 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} | 151 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} |
| @@ -128,6 +157,17 @@ Library openprocurement_client.utils | @@ -128,6 +157,17 @@ Library openprocurement_client.utils | ||
| 128 | [return] ${tender} | 157 | [return] ${tender} |
| 129 | 158 | ||
| 130 | 159 | ||
| 160 | +Пошук плану по ідентифікатору | ||
| 161 | + [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data | ||
| 162 | + ${internalid}= openprocurement_client.Отримати internal id плану по UAid ${username} ${tender_uaid} | ||
| 163 | + ${tender}= Call Method ${USERS.users['${username}'].client} get_plan ${internalid} | ||
| 164 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 165 | + Set To Dictionary ${USERS.users['${username}']} ${save_key}=${tender} | ||
| 166 | + ${tender}= munch_dict arg=${tender} | ||
| 167 | + Log ${tender} | ||
| 168 | + [return] ${tender} | ||
| 169 | + | ||
| 170 | + | ||
| 131 | Отримати тендер другого етапу та зберегти його | 171 | Отримати тендер другого етапу та зберегти його |
| 132 | [Arguments] ${username} ${tender_id} | 172 | [Arguments] ${username} ${tender_id} |
| 133 | ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token} | 173 | ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token} |
| @@ -142,6 +182,11 @@ Library openprocurement_client.utils | @@ -142,6 +182,11 @@ Library openprocurement_client.utils | ||
| 142 | openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 182 | openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 143 | 183 | ||
| 144 | 184 | ||
| 185 | +Оновити сторінку з планом | ||
| 186 | + [Arguments] ${username} ${tender_uaid} | ||
| 187 | + openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 188 | + | ||
| 189 | + | ||
| 145 | Отримати інформацію із тендера | 190 | Отримати інформацію із тендера |
| 146 | [Arguments] ${username} ${tender_uaid} ${field_name} | 191 | [Arguments] ${username} ${tender_uaid} ${field_name} |
| 147 | openprocurement_client.Пошук тендера по ідентифікатору | 192 | openprocurement_client.Пошук тендера по ідентифікатору |
| @@ -157,6 +202,21 @@ Library openprocurement_client.utils | @@ -157,6 +202,21 @@ Library openprocurement_client.utils | ||
| 157 | Fail Field not found: ${field_name} | 202 | Fail Field not found: ${field_name} |
| 158 | 203 | ||
| 159 | 204 | ||
| 205 | +Отримати інформацію із плану | ||
| 206 | + [Arguments] ${username} ${tender_uaid} ${field_name} | ||
| 207 | + openprocurement_client.Пошук плану по ідентифікатору | ||
| 208 | + ... ${username} | ||
| 209 | + ... ${tender_uaid} | ||
| 210 | + | ||
| 211 | + ${status} ${field_value}= Run keyword and ignore error | ||
| 212 | + ... Get from object | ||
| 213 | + ... ${USERS.users['${username}'].tender_data.data} | ||
| 214 | + ... ${field_name} | ||
| 215 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | ||
| 216 | + | ||
| 217 | + Fail Field not found: ${field_name} | ||
| 218 | + | ||
| 219 | + | ||
| 160 | Внести зміни в тендер | 220 | Внести зміни в тендер |
| 161 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} | 221 | [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} |
| 162 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 222 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| @@ -168,6 +228,16 @@ Library openprocurement_client.utils | @@ -168,6 +228,16 @@ Library openprocurement_client.utils | ||
| 168 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 228 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 169 | Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} | 229 | Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} |
| 170 | 230 | ||
| 231 | + | ||
| 232 | +Внести зміни в план | ||
| 233 | + [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} | ||
| 234 | + ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 235 | + Set_To_Object ${tender.data} ${fieldname} ${fieldvalue} | ||
| 236 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
| 237 | + ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 238 | + Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} | ||
| 239 | + | ||
| 240 | + | ||
| 171 | ############################################################################## | 241 | ############################################################################## |
| 172 | # Item operations | 242 | # Item operations |
| 173 | ############################################################################## | 243 | ############################################################################## |
| @@ -179,6 +249,13 @@ Library openprocurement_client.utils | @@ -179,6 +249,13 @@ Library openprocurement_client.utils | ||
| 179 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 249 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 180 | 250 | ||
| 181 | 251 | ||
| 252 | +Додати предмет закупівлі в план | ||
| 253 | + [Arguments] ${username} ${tender_uaid} ${item} | ||
| 254 | + ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 255 | + Append To List ${tender.data['items']} ${item} | ||
| 256 | + Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 257 | + | ||
| 258 | + | ||
| 182 | Отримати інформацію із предмету | 259 | Отримати інформацію із предмету |
| 183 | [Arguments] ${username} ${tender_uaid} ${item_id} ${field_name} | 260 | [Arguments] ${username} ${tender_uaid} ${item_id} ${field_name} |
| 184 | ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${item_id} | 261 | ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${item_id} |
| @@ -192,6 +269,13 @@ Library openprocurement_client.utils | @@ -192,6 +269,13 @@ Library openprocurement_client.utils | ||
| 192 | Remove From List ${tender.data['items']} ${item_index} | 269 | Remove From List ${tender.data['items']} ${item_index} |
| 193 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 270 | Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
| 194 | 271 | ||
| 272 | +Видалити предмет закупівлі плану | ||
| 273 | + [Arguments] ${username} ${tender_uaid} ${item_id} ${lot_id}=${Empty} | ||
| 274 | + ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} | ||
| 275 | + ${item_index}= get_object_index_by_id ${tender.data['items']} ${item_id} | ||
| 276 | + Remove From List ${tender.data['items']} ${item_index} | ||
| 277 | + Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
| 278 | + | ||
| 195 | ############################################################################## | 279 | ############################################################################## |
| 196 | # Lot operations | 280 | # Lot operations |
| 197 | ############################################################################## | 281 | ############################################################################## |
| 1 | from openprocurement_client.client import Client, EDRClient | 1 | from openprocurement_client.client import Client, EDRClient |
| 2 | from openprocurement_client.document_service_client \ | 2 | from openprocurement_client.document_service_client \ |
| 3 | import DocumentServiceClient | 3 | import DocumentServiceClient |
| 4 | +from openprocurement_client.plan import PlansClient | ||
| 4 | from openprocurement_client.exceptions import IdNotFound | 5 | from openprocurement_client.exceptions import IdNotFound |
| 5 | from restkit.errors import RequestFailed, BadStatusLine, ResourceError | 6 | from restkit.errors import RequestFailed, BadStatusLine, ResourceError |
| 6 | from retrying import retry | 7 | from retrying import retry |
| @@ -8,7 +9,6 @@ from time import sleep | @@ -8,7 +9,6 @@ from time import sleep | ||
| 8 | import os | 9 | import os |
| 9 | import urllib | 10 | import urllib |
| 10 | 11 | ||
| 11 | - | ||
| 12 | def retry_if_request_failed(exception): | 12 | def retry_if_request_failed(exception): |
| 13 | if isinstance(exception, RequestFailed): | 13 | if isinstance(exception, RequestFailed): |
| 14 | status_code = getattr(exception, 'status_int', None) | 14 | status_code = getattr(exception, 'status_int', None) |
| @@ -114,3 +114,13 @@ def download_file_from_url(url, path_to_save_file): | @@ -114,3 +114,13 @@ def download_file_from_url(url, path_to_save_file): | ||
| 114 | f.write(urllib.urlopen(url).read()) | 114 | f.write(urllib.urlopen(url).read()) |
| 115 | f.close() | 115 | f.close() |
| 116 | return os.path.basename(f.name) | 116 | return os.path.basename(f.name) |
| 117 | + | ||
| 118 | + | ||
| 119 | +class StableClient_plan(PlansClient): | ||
| 120 | + @retry(stop_max_attempt_number=100, wait_random_min=500, wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
| 121 | + def request(self, *args, **kwargs): | ||
| 122 | + return super(StableClient_plan, self).request(*args, **kwargs) | ||
| 123 | + | ||
| 124 | + | ||
| 125 | +def prepare_plan_api_wrapper(key, host_url, api_version): | ||
| 126 | + return StableClient_plan(key, host_url, api_version) |
| @@ -36,6 +36,10 @@ def create_fake_date(): | @@ -36,6 +36,10 @@ def create_fake_date(): | ||
| 36 | return get_now().isoformat() | 36 | return get_now().isoformat() |
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | +def create_fake_value_amount(): | ||
| 40 | + return fake.random_int(min=1) | ||
| 41 | + | ||
| 42 | + | ||
| 39 | def field_with_id(prefix, sentence): | 43 | def field_with_id(prefix, sentence): |
| 40 | return u"{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) | 44 | return u"{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) |
| 41 | 45 | ||
| @@ -151,6 +155,56 @@ def test_tender_data(params, | @@ -151,6 +155,56 @@ def test_tender_data(params, | ||
| 151 | return munchify(data) | 155 | return munchify(data) |
| 152 | 156 | ||
| 153 | 157 | ||
| 158 | +def test_tender_data_planning(params): | ||
| 159 | + data = { | ||
| 160 | + "budget": { | ||
| 161 | + "amountNet": round(random.uniform(3000, 999999999.99), 2), | ||
| 162 | + "description": fake.description(), | ||
| 163 | + "project": { | ||
| 164 | + "id": str(fake.random_int(min=1, max=999)), | ||
| 165 | + "name": fake.description(), | ||
| 166 | + }, | ||
| 167 | + "currency": "UAH", | ||
| 168 | + "amount": round(random.uniform(3000, 99999999999.99), 2), | ||
| 169 | + "id": str(fake.random_int(min=1, max=99999999999)) + "-" + str(fake.random_int(min=1, max=9)), | ||
| 170 | + }, | ||
| 171 | + "procuringEntity": { | ||
| 172 | + "identifier": { | ||
| 173 | + "scheme": "UA-EDR", | ||
| 174 | + "id": str(fake.random_int(min=1, max=999)), | ||
| 175 | + "legalName": fake.description(), | ||
| 176 | + }, | ||
| 177 | + "name": fake.description(), | ||
| 178 | + }, | ||
| 179 | + "tender": { | ||
| 180 | + "procurementMethod": "open", | ||
| 181 | + "procurementMethodType": "belowThreshold", | ||
| 182 | + "tenderPeriod": { | ||
| 183 | + "startDate": (get_now().isoformat()) | ||
| 184 | + } | ||
| 185 | + }, | ||
| 186 | + "items": [] | ||
| 187 | + } | ||
| 188 | + id_cpv=fake.cpv()[:4] | ||
| 189 | + cpv_data=test_item_data(id_cpv) | ||
| 190 | + data.update(cpv_data) | ||
| 191 | + del data['deliveryDate'] | ||
| 192 | + del data['description'] | ||
| 193 | + del data['description_en'] | ||
| 194 | + del data['description_ru'] | ||
| 195 | + del data['deliveryAddress'] | ||
| 196 | + del data['deliveryLocation'] | ||
| 197 | + del data['quantity'] | ||
| 198 | + del data['unit'] | ||
| 199 | + for i in range(params['number_of_items']): | ||
| 200 | + item_data=test_item_data(id_cpv) | ||
| 201 | + del item_data['deliveryAddress'] | ||
| 202 | + del item_data['deliveryLocation'] | ||
| 203 | + del item_data['deliveryDate']['startDate'] | ||
| 204 | + data['items'].append(item_data) | ||
| 205 | + return munchify(data) | ||
| 206 | + | ||
| 207 | + | ||
| 154 | def test_tender_data_limited(params): | 208 | def test_tender_data_limited(params): |
| 155 | data = test_tender_data(params) | 209 | data = test_tender_data(params) |
| 156 | del data["submissionMethodDetails"] | 210 | del data["submissionMethodDetails"] |
| @@ -222,6 +222,15 @@ Get Broker Property By Username | @@ -222,6 +222,15 @@ Get Broker Property By Username | ||
| 222 | [Return] ${item} | 222 | [Return] ${item} |
| 223 | 223 | ||
| 224 | 224 | ||
| 225 | +Підготувати дані для створення предмету закупівлі плану | ||
| 226 | + [Arguments] ${cpv} | ||
| 227 | + ${item}= test_item_data ${cpv[0:4]} | ||
| 228 | + Remove From Dictionary ${item} deliveryAddress | ||
| 229 | + Remove From Dictionary ${item} deliveryLocation | ||
| 230 | + Remove From Dictionary ${item} deliveryDate.startDate | ||
| 231 | + [Return] ${item} | ||
| 232 | + | ||
| 233 | + | ||
| 225 | Підготувати дані для створення лоту | 234 | Підготувати дані для створення лоту |
| 226 | [Arguments] ${max_lot_value_amount} | 235 | [Arguments] ${max_lot_value_amount} |
| 227 | ${lot}= test_lot_data ${max_lot_value_amount} | 236 | ${lot}= test_lot_data ${max_lot_value_amount} |
| @@ -408,8 +417,9 @@ Log differences between dicts | @@ -408,8 +417,9 @@ Log differences between dicts | ||
| 408 | ... ${last_modification_date_corrected} | 417 | ... ${last_modification_date_corrected} |
| 409 | ... ${USERS.users['${username}']['LAST_REFRESH_DATE']} | 418 | ... ${USERS.users['${username}']['LAST_REFRESH_DATE']} |
| 410 | ${LAST_REFRESH_DATE}= Get Current TZdate | 419 | ${LAST_REFRESH_DATE}= Get Current TZdate |
| 411 | - Run Keyword If ${time_diff} > 0 Run keywords | ||
| 412 | - ... Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | 420 | + Run Keyword If ${time_diff} > 0 Run Keyword If '${MODE}' == 'planning' |
| 421 | + ... Run As ${username} Оновити сторінку з планом ${TENDER['TENDER_UAID']} | ||
| 422 | + ... ELSE Run As ${username} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | ||
| 413 | ... AND | 423 | ... AND |
| 414 | ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE} | 424 | ... Set To Dictionary ${USERS.users['${username}']} LAST_REFRESH_DATE=${LAST_REFRESH_DATE} |
| 415 | 425 | ||
| @@ -420,6 +430,18 @@ Log differences between dicts | @@ -420,6 +430,18 @@ Log differences between dicts | ||
| 420 | Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field} | 430 | Звірити поле тендера із значенням ${username} ${tender_uaid} ${left} ${field} |
| 421 | 431 | ||
| 422 | 432 | ||
| 433 | +Звірити поле плану | ||
| 434 | + [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} | ||
| 435 | + ${left}= get_from_object ${tender_data.data} ${field} | ||
| 436 | + Звірити поле плану із значенням ${username} ${tender_uaid} ${left} ${field} | ||
| 437 | + | ||
| 438 | + | ||
| 439 | +Звірити поле плану із значенням | ||
| 440 | + [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} | ||
| 441 | + ${right}= Отримати дані із плану ${username} ${tender_uaid} ${field} ${object_id} | ||
| 442 | + Порівняти об'єкти ${left} ${right} | ||
| 443 | + | ||
| 444 | + | ||
| 423 | Звірити поле тендера із значенням | 445 | Звірити поле тендера із значенням |
| 424 | [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} | 446 | [Arguments] ${username} ${tender_uaid} ${left} ${field} ${object_id}=${Empty} |
| 425 | ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} | 447 | ${right}= Отримати дані із тендера ${username} ${tender_uaid} ${field} ${object_id} |
| @@ -534,6 +556,26 @@ Log differences between dicts | @@ -534,6 +556,26 @@ Log differences between dicts | ||
| 534 | [return] ${field_value} | 556 | [return] ${field_value} |
| 535 | 557 | ||
| 536 | 558 | ||
| 559 | +Отримати дані із плану | ||
| 560 | + [Arguments] ${username} ${tender_uaid} ${field_name} ${object_id}=${Empty} | ||
| 561 | + ${field}= Run Keyword If '${object_id}' Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id} | ||
| 562 | + ... ELSE Set Variable ${field_name} | ||
| 563 | + ${status} ${field_value}= Run keyword and ignore error | ||
| 564 | + ... get_from_object | ||
| 565 | + ... ${USERS.users['${username}'].tender_data.data} | ||
| 566 | + ... ${field} | ||
| 567 | + # If field in cache, return its value | ||
| 568 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | ||
| 569 | + # Else call broker to find field | ||
| 570 | + ${field_value}= Run As ${username} Отримати інформацію із плану ${tender_uaid} ${field} | ||
| 571 | + # And caching its value before return | ||
| 572 | + Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value} | ||
| 573 | + ${data}= munch_dict arg=${USERS.users['${username}'].tender_data.data} | ||
| 574 | + Set To Dictionary ${USERS.users['${username}'].tender_data} data=${data} | ||
| 575 | + Log ${USERS.users['${username}'].tender_data.data} | ||
| 576 | + [return] ${field_value} | ||
| 577 | + | ||
| 578 | + | ||
| 537 | Отримати шлях до поля об’єкта | 579 | Отримати шлях до поля об’єкта |
| 538 | [Arguments] ${username} ${field_name} ${object_id} | 580 | [Arguments] ${username} ${field_name} ${object_id} |
| 539 | ${object_type}= get_object_type_by_id ${object_id} | 581 | ${object_type}= get_object_type_by_id ${object_id} |
| @@ -149,4 +149,4 @@ class OP_Provider(BaseProvider): | @@ -149,4 +149,4 @@ class OP_Provider(BaseProvider): | ||
| 149 | "description_ru": item_base_data["description_ru"], | 149 | "description_ru": item_base_data["description_ru"], |
| 150 | "description_en": item_base_data["description_en"] | 150 | "description_en": item_base_data["description_en"] |
| 151 | }) | 151 | }) |
| 152 | - return deepcopy(item) | 152 | + return deepcopy(item) |
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 | + | ||
| 11 | +*** Test Cases *** | ||
| 12 | +Можливість створити план закупівлі | ||
| 13 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення плану | ||
| 14 | + ... tender_owner | ||
| 15 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 16 | + ... create_plan | ||
| 17 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 18 | + Можливість створити план закупівлі | ||
| 19 | + | ||
| 20 | + | ||
| 21 | +Можливість знайти план по ідентифікатору | ||
| 22 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук плану | ||
| 23 | + ... viewer tender_owner | ||
| 24 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
| 25 | + ... find_plan | ||
| 26 | + Можливість знайти план по ідентифікатору | ||
| 27 | + | ||
| 28 | + | ||
| 29 | +Відображення суми бюджету | ||
| 30 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 31 | + ... viewer | ||
| 32 | + ... ${USERS.users['${viewer}'].broker} | ||
| 33 | + ... plan_view | ||
| 34 | + Звірити відображення поля budget.amount плану для користувача ${viewer} | ||
| 35 | + | ||
| 36 | + | ||
| 37 | +Відображення amountNet бюджету | ||
| 38 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 39 | + ... viewer | ||
| 40 | + ... ${USERS.users['${viewer}'].broker} | ||
| 41 | + ... plan_view | ||
| 42 | + Звірити відображення поля budget.amountNet плану для користувача ${viewer} | ||
| 43 | + | ||
| 44 | + | ||
| 45 | +Відображення опису бюджету | ||
| 46 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 47 | + ... viewer | ||
| 48 | + ... ${USERS.users['${viewer}'].broker} | ||
| 49 | + ... plan_view | ||
| 50 | + Звірити відображення поля budget.description плану для користувача ${viewer} | ||
| 51 | + | ||
| 52 | + | ||
| 53 | +Відображення валюти бюджету | ||
| 54 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 55 | + ... viewer | ||
| 56 | + ... ${USERS.users['${viewer}'].broker} | ||
| 57 | + ... plan_view | ||
| 58 | + Звірити відображення поля budget.currency плану для користувача ${viewer} | ||
| 59 | + | ||
| 60 | + | ||
| 61 | +Відображення id бюджету | ||
| 62 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 63 | + ... viewer | ||
| 64 | + ... ${USERS.users['${viewer}'].broker} | ||
| 65 | + ... plan_view | ||
| 66 | + Звірити відображення поля budget.id плану для користувача ${viewer} | ||
| 67 | + | ||
| 68 | + | ||
| 69 | +Відображення id проекту в бюджеті | ||
| 70 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 71 | + ... viewer | ||
| 72 | + ... ${USERS.users['${viewer}'].broker} | ||
| 73 | + ... plan_view | ||
| 74 | + Звірити відображення поля budget.project.id плану для користувача ${viewer} | ||
| 75 | + | ||
| 76 | + | ||
| 77 | +Відображення назви проекту в бюджеті | ||
| 78 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 79 | + ... viewer | ||
| 80 | + ... ${USERS.users['${viewer}'].broker} | ||
| 81 | + ... plan_view | ||
| 82 | + Звірити відображення поля budget.project.name плану для користувача ${viewer} | ||
| 83 | + | ||
| 84 | + | ||
| 85 | +Відображення назви організації | ||
| 86 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 87 | + ... viewer | ||
| 88 | + ... ${USERS.users['${viewer}'].broker} | ||
| 89 | + ... plan_view | ||
| 90 | + Звірити відображення поля procuringEntity.name плану для користувача ${viewer} | ||
| 91 | + | ||
| 92 | + | ||
| 93 | +Відображення схеми ідентифікатора організації | ||
| 94 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 95 | + ... viewer | ||
| 96 | + ... ${USERS.users['${viewer}'].broker} | ||
| 97 | + ... plan_view | ||
| 98 | + Звірити відображення поля procuringEntity.identifier.scheme плану для користувача ${viewer} | ||
| 99 | + | ||
| 100 | + | ||
| 101 | +Відображення ідентифікатора організації | ||
| 102 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 103 | + ... viewer | ||
| 104 | + ... ${USERS.users['${viewer}'].broker} | ||
| 105 | + ... plan_view | ||
| 106 | + Звірити відображення поля procuringEntity.identifier.id плану для користувача ${viewer} | ||
| 107 | + | ||
| 108 | + | ||
| 109 | +Відображення легально зареєстрованої назви організації | ||
| 110 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 111 | + ... viewer | ||
| 112 | + ... ${USERS.users['${viewer}'].broker} | ||
| 113 | + ... plan_view | ||
| 114 | + Звірити відображення поля procuringEntity.identifier.legalName плану для користувача ${viewer} | ||
| 115 | + | ||
| 116 | + | ||
| 117 | +Відображення опису класифікації | ||
| 118 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 119 | + ... viewer | ||
| 120 | + ... ${USERS.users['${viewer}'].broker} | ||
| 121 | + ... plan_view | ||
| 122 | + Звірити відображення поля classification.description плану для користувача ${viewer} | ||
| 123 | + | ||
| 124 | + | ||
| 125 | +Відображення схеми класифікації | ||
| 126 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 127 | + ... viewer | ||
| 128 | + ... ${USERS.users['${viewer}'].broker} | ||
| 129 | + ... plan_view | ||
| 130 | + Звірити відображення поля classification.scheme плану для користувача ${viewer} | ||
| 131 | + | ||
| 132 | + | ||
| 133 | +Відображення коду класифікації | ||
| 134 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 135 | + ... viewer | ||
| 136 | + ... ${USERS.users['${viewer}'].broker} | ||
| 137 | + ... plan_view | ||
| 138 | + Звірити відображення поля classification.id плану для користувача ${viewer} | ||
| 139 | + | ||
| 140 | + | ||
| 141 | +Відображення дати початку періоду подання пропозицій | ||
| 142 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 143 | + ... viewer | ||
| 144 | + ... ${USERS.users['${viewer}'].broker} | ||
| 145 | + ... plan_view | ||
| 146 | + Звірити відображення поля tender.tenderPeriod.startDate плану для користувача ${viewer} | ||
| 147 | + | ||
| 148 | + | ||
| 149 | +Відображення опису об'єкта | ||
| 150 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 151 | + ... viewer | ||
| 152 | + ... ${USERS.users['${viewer}'].broker} | ||
| 153 | + ... plan_view level2 | ||
| 154 | + Звірити відображення description усіх предметів плану для користувача ${viewer} | ||
| 155 | + | ||
| 156 | + | ||
| 157 | +Відображення кількості необхідних одиниць об'єкта | ||
| 158 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 159 | + ... viewer | ||
| 160 | + ... ${USERS.users['${viewer}'].broker} | ||
| 161 | + ... plan_view | ||
| 162 | + Звірити відображення quantity усіх предметів плану для користувача ${viewer} | ||
| 163 | + | ||
| 164 | + | ||
| 165 | +Відображення кінцевої дати доставки | ||
| 166 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 167 | + ... viewer | ||
| 168 | + ... ${USERS.users['${viewer}'].broker} | ||
| 169 | + ... plan_view | ||
| 170 | + Звірити відображення deliveryDate.endDate усіх предметів плану для користувача ${viewer} | ||
| 171 | + | ||
| 172 | + | ||
| 173 | +Відображення коду одиниці виміру | ||
| 174 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 175 | + ... viewer | ||
| 176 | + ... ${USERS.users['${viewer}'].broker} | ||
| 177 | + ... plan_view | ||
| 178 | + Звірити відображення unit.code усіх предметів плану для користувача ${viewer} | ||
| 179 | + | ||
| 180 | + | ||
| 181 | +Відображення назви одиниці виміру | ||
| 182 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 183 | + ... viewer | ||
| 184 | + ... ${USERS.users['${viewer}'].broker} | ||
| 185 | + ... plan_view | ||
| 186 | + Звірити відображення unit.name усіх предметів плану для користувача ${viewer} | ||
| 187 | + | ||
| 188 | + | ||
| 189 | +Відображення опису класифікації об'єкта | ||
| 190 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 191 | + ... viewer | ||
| 192 | + ... ${USERS.users['${viewer}'].broker} | ||
| 193 | + ... plan_view | ||
| 194 | + Звірити відображення classification.description усіх предметів плану для користувача ${viewer} | ||
| 195 | + | ||
| 196 | + | ||
| 197 | +Відображення схеми класифікації об'єкта | ||
| 198 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 199 | + ... viewer | ||
| 200 | + ... ${USERS.users['${viewer}'].broker} | ||
| 201 | + ... plan_view | ||
| 202 | + Звірити відображення classification.scheme усіх предметів плану для користувача ${viewer} | ||
| 203 | + | ||
| 204 | + | ||
| 205 | +Відображення коду класифікації об'єкта | ||
| 206 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних плану | ||
| 207 | + ... viewer | ||
| 208 | + ... ${USERS.users['${viewer}'].broker} | ||
| 209 | + ... plan_view | ||
| 210 | + Звірити відображення classification.id усіх предметів плану для користувача ${viewer} | ||
| 211 | + | ||
| 212 | + | ||
| 213 | +Можливість змінити опис бюджету | ||
| 214 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 215 | + ... tender_owner | ||
| 216 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 217 | + ... modify_plan | ||
| 218 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 219 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 220 | + ${new_description}= create_fake_sentence | ||
| 221 | + Можливість змінити поле budget.description плану на ${new_description} | ||
| 222 | + | ||
| 223 | + | ||
| 224 | +Можливість змінити суму бюджету | ||
| 225 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 226 | + ... tender_owner | ||
| 227 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 228 | + ... modify_plan | ||
| 229 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 230 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 231 | + ${new_amount}= create_fake_value_amount | ||
| 232 | + Можливість змінити поле budget.amount плану на ${new_amount} | ||
| 233 | + | ||
| 234 | + | ||
| 235 | +Можливість змінити кінцеву дату доставки | ||
| 236 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 237 | + ... tender_owner | ||
| 238 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 239 | + ... modify_plan | ||
| 240 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 241 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 242 | + ${new_date}= create_fake_date | ||
| 243 | + Можливість змінити поле items[0].deliveryDate.endDate плану на ${new_date} | ||
| 244 | + | ||
| 245 | + | ||
| 246 | +Можливість змінити кількість одиниць предмету закупівлі | ||
| 247 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 248 | + ... tender_owner | ||
| 249 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 250 | + ... modify_plan | ||
| 251 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
| 252 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 253 | + ${new_quantity}= create_fake_value_amount | ||
| 254 | + Можливість змінити поле items[0].quantity плану на ${new_quantity} | ||
| 255 | + | ||
| 256 | + | ||
| 257 | +Можливість додати предмет закупівлі | ||
| 258 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 259 | + ... tender_owner | ||
| 260 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 261 | + ... add_item | ||
| 262 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 263 | + Можливість додати предмет закупівлі в план | ||
| 264 | + | ||
| 265 | + | ||
| 266 | +Можливість видалити предмет закупівлі | ||
| 267 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування плану | ||
| 268 | + ... tender_owner | ||
| 269 | + ... ${USERS.users['${tender_owner}'].broker} | ||
| 270 | + ... delete_item | ||
| 271 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
| 272 | + Можливість видалити предмет закупівлі з плану |
| @@ -20,6 +20,7 @@ from .initial_data import ( | @@ -20,6 +20,7 @@ from .initial_data import ( | ||
| 20 | create_fake_doc, | 20 | create_fake_doc, |
| 21 | create_fake_sentence, | 21 | create_fake_sentence, |
| 22 | create_fake_amount, | 22 | create_fake_amount, |
| 23 | + create_fake_value_amount, | ||
| 23 | create_fake_date, | 24 | create_fake_date, |
| 24 | fake, | 25 | fake, |
| 25 | field_with_id, | 26 | field_with_id, |
| @@ -44,6 +45,7 @@ from .initial_data import ( | @@ -44,6 +45,7 @@ from .initial_data import ( | ||
| 44 | test_tender_data_limited, | 45 | test_tender_data_limited, |
| 45 | test_tender_data_openeu, | 46 | test_tender_data_openeu, |
| 46 | test_tender_data_openua, | 47 | test_tender_data_openua, |
| 48 | + test_tender_data_planning, | ||
| 47 | ) | 49 | ) |
| 48 | from barbecue import chef | 50 | from barbecue import chef |
| 49 | from restkit import request | 51 | from restkit import request |
| @@ -317,6 +319,9 @@ def prepare_test_tender_data(procedure_intervals, | @@ -317,6 +319,9 @@ def prepare_test_tender_data(procedure_intervals, | ||
| 317 | return munchify({'data': test_tender_data( | 319 | return munchify({'data': test_tender_data( |
| 318 | tender_parameters, | 320 | tender_parameters, |
| 319 | submissionMethodDetails=submissionMethodDetails)}) | 321 | submissionMethodDetails=submissionMethodDetails)}) |
| 322 | + elif mode == 'planning': | ||
| 323 | + return munchify({'data': test_tender_data_planning( | ||
| 324 | + tender_parameters)}) | ||
| 320 | # The previous line needs an explicit keyword argument because, | 325 | # The previous line needs an explicit keyword argument because, |
| 321 | # unlike previous functions, this one has three arguments. | 326 | # unlike previous functions, this one has three arguments. |
| 322 | raise ValueError("Invalid mode for prepare_test_tender_data") | 327 | raise ValueError("Invalid mode for prepare_test_tender_data") |
Please
register
or
login
to post a comment