Commit 005d844e204e29fcce80db143ceb9fa5bdc4deea
Committed by
GitHub
Merge pull request #536 from OrysiaDrabych/contracts2
Contract management procedure
Showing
13 changed files
with
854 additions
and
14 deletions
| ... | ... | @@ -473,6 +473,71 @@ Resource resource.robot |
| 473 | 473 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} |
| 474 | 474 | \ Remove From List ${USERS.users['${username}'].tender_data.data['features']} ${feature_index} |
| 475 | 475 | |
| 476 | + | |
| 477 | +Звірити відображення поля ${field} зміни до договору для користувача ${username} | |
| 478 | + Звірити поле зміни до договору ${username} ${CONTRACT_UAID} | |
| 479 | + ... ${USERS.users['${tender_owner}'].change_data} | |
| 480 | + ... ${field} | |
| 481 | + | |
| 482 | + | |
| 483 | +Звірити відображення поля ${field} договору із ${left} для користувача ${username} | |
| 484 | + ${right}= Run As ${username} Отримати інформацію із договору ${CONTRACT_UAID} ${field} | |
| 485 | + Порівняти об'єкти ${left} ${right} | |
| 486 | + | |
| 487 | + | |
| 488 | +Звірити відображення поля ${field} документа ${doc_id} до договору з ${left} для користувача ${username} | |
| 489 | + ${right}= Run As ${username} Отримати інформацію із документа до договору ${CONTRACT_UAID} ${doc_id} ${field} | |
| 490 | + Порівняти об'єкти ${left} ${right} | |
| 491 | + | |
| 492 | + | |
| 493 | +Звірити відображення вмісту документа ${doc_id} до договору з ${left} для користувача ${username} | |
| 494 | + ${file_name}= Run As ${username} Отримати документ до договору ${CONTRACT_UAID} ${doc_id} | |
| 495 | + ${right}= Get File ${OUTPUT_DIR}${/}${file_name} | |
| 496 | + Порівняти об'єкти ${left} ${right} | |
| 497 | + | |
| 498 | + | |
| 499 | +Звірити відображення причин зміни договору | |
| 500 | + ${rationale_types_from_broker}= Run as ${viewer} Отримати інформацію із договору ${CONTRACT_UAID} changes[0].rationaleTypes | |
| 501 | + ${rationale_types_from_robot}= Get variable value ${USERS.users['${tender_owner}'].change_data.data.rationaleTypes} | |
| 502 | + Log ${rationale_types_from_broker} | |
| 503 | + Log ${rationale_types_from_robot} | |
| 504 | + ${result}= compare_rationale_types ${rationale_types_from_broker} ${rationale_types_from_robot} | |
| 505 | + Run keyword if ${result} == ${False} Fail Rationale types are not equal | |
| 506 | + | |
| 507 | + | |
| 508 | +Додати документацію до зміни договору | |
| 509 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | |
| 510 | + ${doc_id}= get_id_from_string ${file_name} | |
| 511 | + ${doc}= Create Dictionary | |
| 512 | + ... id=${doc_id} | |
| 513 | + ... name=${file_name} | |
| 514 | + ... content=${file_content} | |
| 515 | + Set to dictionary ${USERS.users['${tender_owner}']} change_doc=${doc} | |
| 516 | + Run As ${tender_owner} Додати документацію до зміни в договорі ${CONTRACT_UAID} ${file_path} | |
| 517 | + Remove File ${file_path} | |
| 518 | + | |
| 519 | + | |
| 520 | +Додати документацію до договору | |
| 521 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | |
| 522 | + ${doc_id}= get_id_from_string ${file_name} | |
| 523 | + ${doc}= Create Dictionary | |
| 524 | + ... id=${doc_id} | |
| 525 | + ... name=${file_name} | |
| 526 | + ... content=${file_content} | |
| 527 | + Set to dictionary ${USERS.users['${tender_owner}']} contract_doc=${doc} | |
| 528 | + Run As ${tender_owner} Завантажити документацію до договору ${CONTRACT_UAID} ${file_path} | |
| 529 | + Remove File ${file_path} | |
| 530 | + | |
| 531 | + | |
| 532 | +Вказати дійсно оплачену суму | |
| 533 | + ${amount}= Get variable value ${USERS.users['${tender_owner}'].contract_data.data.value.amount} | |
| 534 | + ${amountPaid}= Create Dictionary amount=${amount} valueAddedTaxIncluded=${True} currency=UAH | |
| 535 | + ${data}= Create Dictionary amountPaid=${amountPaid} | |
| 536 | + ${data}= Create Dictionary data=${data} | |
| 537 | + Set to dictionary ${USERS.users['${tender_owner}']} terminating_data=${data} | |
| 538 | + Run As ${tender_owner} Внести зміни в договір ${CONTRACT_UAID} ${data} | |
| 539 | + | |
| 540 | + | |
| 476 | 541 | ############################################################################################## |
| 477 | 542 | # QUESTIONS |
| 478 | 543 | ############################################################################################## | ... | ... |
| ... | ... | @@ -56,6 +56,13 @@ Library openprocurement_client.utils |
| 56 | 56 | Log ${EDR_VERSION} |
| 57 | 57 | ${edr_wrapper}= prepare_edr_wrapper ${EDR_HOST_URL} ${EDR_VERSION} ${USERS.users['${username}'].auth_edr[0]} ${USERS.users['${username}'].auth_edr[1]} |
| 58 | 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} | |
| 65 | + Log Variables | |
| 59 | 66 | |
| 60 | 67 | |
| 61 | 68 | Завантажити документ |
| ... | ... | @@ -1272,3 +1279,159 @@ Library openprocurement_client.utils |
| 1272 | 1279 | Log ${data} |
| 1273 | 1280 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} |
| 1274 | 1281 | Log ${reply} |
| 1282 | + [Return] ${reply} | |
| 1283 | + | |
| 1284 | +############################################################################## | |
| 1285 | +# CONTRACT MANAGEMENT | |
| 1286 | +############################################################################## | |
| 1287 | + | |
| 1288 | +Отримати internal id по UAid для договору | |
| 1289 | + [Arguments] ${username} ${contract_uaid} | |
| 1290 | + Log ${contract_uaid} | |
| 1291 | + Log ${USERS.users['${username}'].contracts_id_map} | |
| 1292 | + ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].contracts_id_map} ${contract_uaid} | |
| 1293 | + Run Keyword and Return If ${status} Get From Dictionary ${USERS.users['${username}'].contracts_id_map} ${contract_uaid} | |
| 1294 | + Call Method ${USERS.users['${username}'].contracting_client} get_contracts | |
| 1295 | + ${contract_id}= Wait Until Keyword Succeeds 15x 10 sec get_contract_id_by_uaid ${contract_uaid} ${USERS.users['${username}'].contracting_client} | |
| 1296 | + Set To Dictionary ${USERS.users['${username}'].contracts_id_map} ${contract_uaid} ${contract_id} | |
| 1297 | + [Return] ${contract_id} | |
| 1298 | + | |
| 1299 | + | |
| 1300 | +Оновити сторінку з договором | |
| 1301 | + [Arguments] ${username} ${contract_uaid} | |
| 1302 | + openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | |
| 1303 | + | |
| 1304 | + | |
| 1305 | +Пошук договору по ідентифікатору | |
| 1306 | + [Arguments] ${username} ${contract_uaid} | |
| 1307 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1308 | + ${contract}= Call Method ${USERS.users['${username}'].contracting_client} get_contract ${internalid} | |
| 1309 | + ${contract}= munch_dict arg=${contract} | |
| 1310 | + Set To Dictionary ${USERS.users['${username}']} contract_data=${contract} | |
| 1311 | + Log ${contract} | |
| 1312 | + [return] ${contract} | |
| 1313 | + | |
| 1314 | + | |
| 1315 | +Отримати доступ до договору | |
| 1316 | + [Arguments] ${username} ${contract_uaid} | |
| 1317 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1318 | + ${contract}= Call Method ${USERS.users['${username}'].contracting_client} retrieve_contract_credentials ${internalid} ${USERS.users['${username}'].access_token} | |
| 1319 | + ${contract}= munch_dict arg=${contract} | |
| 1320 | + Set To Dictionary ${USERS.users['${username}']} contract_data=${contract} | |
| 1321 | + Set To Dictionary ${USERS.users['${username}']} contract_access_token=${contract.access.token} | |
| 1322 | + Log ${contract} | |
| 1323 | + [return] ${contract} | |
| 1324 | + | |
| 1325 | + | |
| 1326 | +Внести зміну в договір | |
| 1327 | + [Arguments] ${username} ${contract_uaid} ${change_data} | |
| 1328 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1329 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} create_change ${internalid} ${USERS.users['${username}'].contract_access_token} ${change_data} | |
| 1330 | + # we need this to have change id in `Додати документацію до зміни в договорі` and `Застосувати зміну` keywords | |
| 1331 | + ${empty_list}= Create List | |
| 1332 | + ${changes}= Get variable value ${USERS.users['${username}'].changes} ${empty_list} | |
| 1333 | + Append to list ${changes} ${reply} | |
| 1334 | + Set to dictionary ${USERS.users['${username}']} changes=${changes} | |
| 1335 | + Log ${change_data} | |
| 1336 | + Log ${reply} | |
| 1337 | + | |
| 1338 | + | |
| 1339 | +Додати документацію до зміни в договорі | |
| 1340 | + [Arguments] ${username} ${contract_uaid} ${document} | |
| 1341 | + ${contract}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | |
| 1342 | + ${contract}= set_access_key ${contract} ${USERS.users['${username}'].contract_access_token} | |
| 1343 | + ${reply_doc_create}= Call Method ${USERS.users['${username}'].contracting_client} upload_document ${document} ${contract} | |
| 1344 | + ${change_document}= test_change_document_data ${reply_doc_create} ${USERS.users['${username}'].changes[0].data.id} | |
| 1345 | + ${reply_doc_patch}= Call Method ${USERS.users['${username}'].contracting_client} patch_document ${contract} ${change_document} | |
| 1346 | + Log ${reply_doc_create} | |
| 1347 | + Log ${reply_doc_patch} | |
| 1348 | + | |
| 1349 | + | |
| 1350 | +Редагувати поле договору | |
| 1351 | + [Arguments] ${username} ${contract_uaid} ${fieldname} ${fieldvalue} | |
| 1352 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1353 | + ${contract}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | |
| 1354 | + Set_To_Object ${contract.data} ${fieldname} ${fieldvalue} | |
| 1355 | + Log ${contract} | |
| 1356 | + ${contract}= Call Method ${USERS.users['${username}'].contracting_client} patch_contract ${internalid} ${USERS.users['${username}'].contract_access_token} ${contract} | |
| 1357 | + Log ${contract} | |
| 1358 | + | |
| 1359 | + | |
| 1360 | +Редагувати зміну | |
| 1361 | + [Arguments] ${username} ${contract_uaid} ${fieldname} ${fieldvalue} | |
| 1362 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1363 | + ${data}= Create Dictionary ${fieldname}=${fieldvalue} | |
| 1364 | + ${data}= Create Dictionary data=${data} | |
| 1365 | + ${changes}= Get variable value ${USERS.users['${username}'].changes} | |
| 1366 | + ${change}= munchify ${changes[-1]} | |
| 1367 | + Log ${change} | |
| 1368 | + ${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} | |
| 1369 | + Log ${data} | |
| 1370 | + Log ${reply} | |
| 1371 | + | |
| 1372 | + | |
| 1373 | +Застосувати зміну | |
| 1374 | + [Arguments] ${username} ${contract_uaid} ${dateSigned} | |
| 1375 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1376 | + ${data}= Create Dictionary status=active dateSigned=${dateSigned} | |
| 1377 | + ${data}= Create Dictionary data=${data} | |
| 1378 | + ${changes}= Get variable value ${USERS.users['${username}'].changes} | |
| 1379 | + ${change}= munchify ${changes[-1]} | |
| 1380 | + Log ${change} | |
| 1381 | + ${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} | |
| 1382 | + Log ${data} | |
| 1383 | + Log ${reply} | |
| 1384 | + | |
| 1385 | + | |
| 1386 | +Завантажити документацію до договору | |
| 1387 | + [Arguments] ${username} ${contract_uaid} ${document} | |
| 1388 | + ${contract}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | |
| 1389 | + ${contract}= set_access_key ${contract} ${USERS.users['${username}'].contract_access_token} | |
| 1390 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} upload_document ${document} ${contract} | |
| 1391 | + Log ${reply} | |
| 1392 | + | |
| 1393 | + | |
| 1394 | +Внести зміни в договір | |
| 1395 | + [Arguments] ${username} ${contract_uaid} ${data} | |
| 1396 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1397 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} patch_contract ${internalid} ${USERS.users['${username}'].contract_access_token} ${data} | |
| 1398 | + Log ${reply} | |
| 1399 | + | |
| 1400 | + | |
| 1401 | +Завершити договір | |
| 1402 | + [Arguments] ${username} ${contract_uaid} | |
| 1403 | + ${internalid}= openprocurement_client.Отримати internal id по UAid для договору ${username} ${contract_uaid} | |
| 1404 | + ${data}= Create Dictionary status=terminated | |
| 1405 | + ${data}= Create Dictionary data=${data} | |
| 1406 | + ${reply}= Call Method ${USERS.users['${username}'].contracting_client} patch_contract ${internalid} ${USERS.users['${username}'].contract_access_token} ${data} | |
| 1407 | + | |
| 1408 | + | |
| 1409 | +Отримати інформацію із договору | |
| 1410 | + [Arguments] ${username} ${contract_uaid} ${field_name} | |
| 1411 | + openprocurement_client.Пошук договору по ідентифікатору | |
| 1412 | + ... ${username} | |
| 1413 | + ... ${contract_uaid} | |
| 1414 | + | |
| 1415 | + ${status} ${field_value}= Run keyword and ignore error | |
| 1416 | + ... Get from object | |
| 1417 | + ... ${USERS.users['${username}'].contract_data.data} | |
| 1418 | + ... ${field_name} | |
| 1419 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | |
| 1420 | + | |
| 1421 | + Fail Field not found: ${field_name} | |
| 1422 | + | |
| 1423 | + | |
| 1424 | +Отримати інформацію із документа до договору | |
| 1425 | + [Arguments] ${username} ${contract_uaid} ${doc_id} ${field_name} | |
| 1426 | + ${tender}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | |
| 1427 | + ${document}= get_document_by_id ${tender.data} ${doc_id} | |
| 1428 | + Log ${document} | |
| 1429 | + [Return] ${document['${field_name}']} | |
| 1430 | + | |
| 1431 | + | |
| 1432 | +Отримати документ до договору | |
| 1433 | + [Arguments] ${username} ${contract_uaid} ${doc_id} | |
| 1434 | + ${tender}= openprocurement_client.Пошук договору по ідентифікатору ${username} ${contract_uaid} | |
| 1435 | + ${document}= get_document_by_id ${tender.data} ${doc_id} | |
| 1436 | + ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title} | |
| 1437 | + [return] ${filename} | ... | ... |
| ... | ... | @@ -2,6 +2,7 @@ from openprocurement_client.client import Client, EDRClient |
| 2 | 2 | from openprocurement_client.document_service_client \ |
| 3 | 3 | import DocumentServiceClient |
| 4 | 4 | from openprocurement_client.plan import PlansClient |
| 5 | +from openprocurement_client.contract import ContractingClient | |
| 5 | 6 | from openprocurement_client.exceptions import IdNotFound |
| 6 | 7 | from restkit.errors import RequestFailed, BadStatusLine, ResourceError |
| 7 | 8 | from retrying import retry |
| ... | ... | @@ -43,6 +44,16 @@ def prepare_ds_api_wrapper(ds_host_url, auth_ds): |
| 43 | 44 | return StableDsClient(ds_host_url, auth_ds) |
| 44 | 45 | |
| 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 | + | |
| 46 | 57 | class StableEDRClient(EDRClient): |
| 47 | 58 | @retry(stop_max_attempt_number=100, wait_random_min=500, |
| 48 | 59 | wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ... | ... |
| 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 * Додати документацію до договору | ... | ... |
| ... | ... | @@ -32,6 +32,10 @@ def create_fake_amount(award_amount): |
| 32 | 32 | return round(random.uniform(1, award_amount), 2) |
| 33 | 33 | |
| 34 | 34 | |
| 35 | +def create_fake_title(): | |
| 36 | + return u"[ТЕСТУВАННЯ] {}".format(fake.title()) | |
| 37 | + | |
| 38 | + | |
| 35 | 39 | def create_fake_date(): |
| 36 | 40 | return get_now().isoformat() |
| 37 | 41 | |
| ... | ... | @@ -436,6 +440,10 @@ def test_lot_document_data(document, lot_id): |
| 436 | 440 | document.data.update({"documentOf": "lot", "relatedItem": lot_id}) |
| 437 | 441 | return munchify(document) |
| 438 | 442 | |
| 443 | +def test_change_document_data(document, change_id): | |
| 444 | + document.data.update({"documentOf": "change", "relatedItem": change_id}) | |
| 445 | + return munchify(document) | |
| 446 | + | |
| 439 | 447 | |
| 440 | 448 | def test_tender_data_openua(params, submissionMethodDetails): |
| 441 | 449 | # We should not provide any values for `enquiryPeriod` when creating |
| ... | ... | @@ -482,3 +490,17 @@ def test_tender_data_competitive_dialogue(params, submissionMethodDetails): |
| 482 | 490 | data['procuringEntity']['identifier']['legalName_en'] = fake_en.sentence(nb_words=10, variable_nb_words=True) |
| 483 | 491 | data['procuringEntity']['kind'] = 'general' |
| 484 | 492 | return data |
| 493 | + | |
| 494 | + | |
| 495 | +def test_change_data(): | |
| 496 | + return munchify( | |
| 497 | + { | |
| 498 | + "data": | |
| 499 | + { | |
| 500 | + "rationale": fake.description(), | |
| 501 | + "rationale_en": fake_en.sentence(nb_words=10, variable_nb_words=True), | |
| 502 | + "rationale_ru": fake_ru.sentence(nb_words=10, variable_nb_words=True), | |
| 503 | + "rationaleTypes": fake.rationaleTypes(amount=3), | |
| 504 | + "status": "pending" | |
| 505 | + } | |
| 506 | + }) | ... | ... |
| ... | ... | @@ -310,6 +310,14 @@ Get Broker Property By Username |
| 310 | 310 | [Return] ${cancellation_data} |
| 311 | 311 | |
| 312 | 312 | |
| 313 | +Підготувати дані про зміну до договору | |
| 314 | + [Arguments] ${username} | |
| 315 | + ${change_data}= test_change_data | |
| 316 | + Set To Dictionary ${USERS.users['${username}']} change_data=${change_data} | |
| 317 | + Log ${change_data} | |
| 318 | + [Return] ${change_data} | |
| 319 | + | |
| 320 | + | |
| 313 | 321 | Адаптувати дані для оголошення тендера |
| 314 | 322 | [Arguments] ${tender_data} |
| 315 | 323 | # munchify is used to make deep copy of ${tender_data} |
| ... | ... | @@ -453,6 +461,31 @@ Log differences between dicts |
| 453 | 461 | Порівняти об'єкти ${left} ${right} |
| 454 | 462 | |
| 455 | 463 | |
| 464 | +Звірити поле договору | |
| 465 | + [Arguments] ${username} ${contract_uaid} ${cotract_data} ${field} | |
| 466 | + ${left}= get_from_object ${contract_data.data} ${field} | |
| 467 | + Звірити поле договору із значенням ${username} ${contract_uaid} ${left} ${field} | |
| 468 | + | |
| 469 | + | |
| 470 | +Звірити поле договору із значенням | |
| 471 | + [Arguments] ${username} ${contract_uaid} ${left} ${field} | |
| 472 | + ${right}= Отримати дані із договору ${username} ${contract_uaid} ${field} | |
| 473 | + Порівняти об'єкти ${left} ${right} | |
| 474 | + | |
| 475 | + | |
| 476 | +Звірити поле зміни до договору | |
| 477 | + [Arguments] ${username} ${contract_uaid} ${change_data} ${field} | |
| 478 | + ${left}= get_from_object ${change_data.data} ${field} | |
| 479 | + Звірити поле зміни до договору із значенням ${username} ${contract_uaid} ${left} ${field} | |
| 480 | + | |
| 481 | + | |
| 482 | +Звірити поле зміни до договору із значенням | |
| 483 | + [Arguments] ${username} ${contract_uaid} ${left} ${field} | |
| 484 | + ${field}= Evaluate "{}{}".format('changes[0].', '${field}') | |
| 485 | + ${right}= Отримати дані із договору ${username} ${contract_uaid} ${field} | |
| 486 | + Порівняти об'єкти ${left} ${right} | |
| 487 | + | |
| 488 | + | |
| 456 | 489 | Порівняти об'єкти |
| 457 | 490 | [Arguments] ${left} ${right} |
| 458 | 491 | Log ${left} |
| ... | ... | @@ -581,6 +614,24 @@ Log differences between dicts |
| 581 | 614 | [return] ${field_value} |
| 582 | 615 | |
| 583 | 616 | |
| 617 | +Отримати дані із договору | |
| 618 | + [Arguments] ${username} ${contract_uaid} ${field} | |
| 619 | + ${status} ${field_value}= Run keyword and ignore error | |
| 620 | + ... get_from_object | |
| 621 | + ... ${USERS.users['${username}'].contract_data.data} | |
| 622 | + ... ${field} | |
| 623 | + # If field in cache, return its value | |
| 624 | + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value} | |
| 625 | + # Else call broker to find field | |
| 626 | + ${field_value}= Run As ${username} Отримати інформацію із договору ${contract_uaid} ${field} | |
| 627 | + # And caching its value before return | |
| 628 | + Set_To_Object ${USERS.users['${username}'].contract_data.data} ${field} ${field_value} | |
| 629 | + ${data}= munch_dict arg=${USERS.users['${username}'].contract_data.data} | |
| 630 | + Set To Dictionary ${USERS.users['${username}'].contract_data} data=${data} | |
| 631 | + Log ${USERS.users['${username}'].contract_data.data} | |
| 632 | + [return] ${field_value} | |
| 633 | + | |
| 634 | + | |
| 584 | 635 | Отримати шлях до поля об’єкта |
| 585 | 636 | [Arguments] ${username} ${field_name} ${object_id} |
| 586 | 637 | ${object_type}= get_object_type_by_id ${object_id} | ... | ... |
| 1 | 1 | # -*- coding: utf-8 -*- |
| 2 | 2 | from faker.providers import BaseProvider |
| 3 | +from faker.generator import random | |
| 3 | 4 | from copy import deepcopy |
| 4 | 5 | from munch import Munch |
| 5 | 6 | from json import load |
| ... | ... | @@ -17,13 +18,14 @@ def load_data_from_file(file_name): |
| 17 | 18 | |
| 18 | 19 | |
| 19 | 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 | 30 | @classmethod |
| 29 | 31 | def randomize_nb_elements(self, number=10, le=60, ge=140): |
| ... | ... | @@ -149,4 +151,8 @@ class OP_Provider(BaseProvider): |
| 149 | 151 | "description_ru": item_base_data["description_ru"], |
| 150 | 152 | "description_en": item_base_data["description_en"] |
| 151 | 153 | }) |
| 152 | - return deepcopy(item) | |
| \ No newline at end of file | ||
| 154 | + return deepcopy(item) | |
| 155 | + | |
| 156 | + @classmethod | |
| 157 | + def rationaleTypes(self, amount=3): | |
| 158 | + return random.sample(self.rationale_types, amount) | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -8033,5 +8033,15 @@ |
| 8033 | 8033 | "name": "набір" |
| 8034 | 8034 | } |
| 8035 | 8035 | } |
| 8036 | + ], | |
| 8037 | + "rationale_types": [ | |
| 8038 | + "volumeCuts", | |
| 8039 | + "itemPriceVariation", | |
| 8040 | + "qualityImprovement", | |
| 8041 | + "durationExtension", | |
| 8042 | + "priceReduction", | |
| 8043 | + "taxRate", | |
| 8044 | + "thirdParty", | |
| 8045 | + "fiscalYearExtension" | |
| 8036 | 8046 | ] |
| 8037 | 8047 | } | ... | ... |
| ... | ... | @@ -260,4 +260,4 @@ ${award_index} ${0} |
| 260 | 260 | ... tender_owner |
| 261 | 261 | ... ${USERS.users['${tender_owner}'].broker} |
| 262 | 262 | ... qualification_approve_second_award level1 |
| 263 | - Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} -1 | |
| 263 | + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1 | ... | ... |
| ... | ... | @@ -20,12 +20,12 @@ from .initial_data import ( |
| 20 | 20 | create_fake_doc, |
| 21 | 21 | create_fake_sentence, |
| 22 | 22 | create_fake_amount, |
| 23 | - create_fake_value_amount, | |
| 24 | 23 | create_fake_date, |
| 25 | 24 | fake, |
| 26 | 25 | field_with_id, |
| 27 | 26 | test_bid_data, |
| 28 | 27 | test_bid_value, |
| 28 | + test_change_data, | |
| 29 | 29 | test_claim_answer_data, |
| 30 | 30 | test_claim_data, |
| 31 | 31 | test_complaint_data, |
| ... | ... | @@ -46,6 +46,9 @@ from .initial_data import ( |
| 46 | 46 | test_tender_data_openeu, |
| 47 | 47 | test_tender_data_openua, |
| 48 | 48 | test_tender_data_planning, |
| 49 | + create_fake_title, | |
| 50 | + create_fake_value_amount, | |
| 51 | + test_change_document_data, | |
| 49 | 52 | ) |
| 50 | 53 | from barbecue import chef |
| 51 | 54 | from restkit import request |
| ... | ... | @@ -557,5 +560,11 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): |
| 557 | 560 | bid.data.parameters.append(parameter) |
| 558 | 561 | return bid |
| 559 | 562 | |
| 563 | + | |
| 560 | 564 | def convert_amount_string_to_float(amount_string): |
| 561 | 565 | return float(amount_string.replace(' ', '').replace(',', '.')) |
| 566 | + | |
| 567 | + | |
| 568 | +def compare_rationale_types(type1, type2): | |
| 569 | + return set(type1) == set(type2) | |
| 570 | + | ... | ... |
| ... | ... | @@ -81,7 +81,19 @@ |
| 81 | 81 | -i qualification_add_doc_to_second_award |
| 82 | 82 | -i qualification_approve_second_award |
| 83 | 83 | |
| 84 | --i contract_sign | |
| 85 | 84 | -i contract_view |
| 86 | 85 | -i modify_contract |
| 87 | --i add_doc_to_contract | |
| \ No newline at end of file | ||
| 86 | +-i add_doc_to_contract | |
| 87 | +-i contract_sign | |
| 88 | + | |
| 89 | +-i find_contract | |
| 90 | +-i access_contract | |
| 91 | +-i submit_change | |
| 92 | +-i view_change | |
| 93 | +-i upload_change_document | |
| 94 | +-i modify_change | |
| 95 | +-i apply_change | |
| 96 | +-i add_contract_doc | |
| 97 | +-i termination_reasons | |
| 98 | +-i amount_paid | |
| 99 | +-i contract_termination | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -103,4 +103,19 @@ |
| 103 | 103 | -i qualification_add_doc_to_second_award |
| 104 | 104 | -i qualification_approve_second_award |
| 105 | 105 | |
| 106 | --i contract_sign | |
| \ No newline at end of file | ||
| 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 | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -79,4 +79,19 @@ |
| 79 | 79 | -i qualification_add_doc_to_second_award |
| 80 | 80 | -i qualification_approve_second_award |
| 81 | 81 | |
| 82 | --i contract_sign | |
| \ No newline at end of file | ||
| 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 | |
| \ No newline at end of file | ... | ... |
Please
register
or
login
to post a comment