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,6 +473,71 @@ Resource resource.robot | ||
473 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | 473 | :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} |
474 | \ Remove From List ${USERS.users['${username}'].tender_data.data['features']} ${feature_index} | 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 | # QUESTIONS | 542 | # QUESTIONS |
478 | ############################################################################################## | 543 | ############################################################################################## |
@@ -56,6 +56,13 @@ Library openprocurement_client.utils | @@ -56,6 +56,13 @@ Library openprocurement_client.utils | ||
56 | Log ${EDR_VERSION} | 56 | Log ${EDR_VERSION} |
57 | ${edr_wrapper}= prepare_edr_wrapper ${EDR_HOST_URL} ${EDR_VERSION} ${USERS.users['${username}'].auth_edr[0]} ${USERS.users['${username}'].auth_edr[1]} | 57 | ${edr_wrapper}= prepare_edr_wrapper ${EDR_HOST_URL} ${EDR_VERSION} ${USERS.users['${username}'].auth_edr[0]} ${USERS.users['${username}'].auth_edr[1]} |
58 | Set To Dictionary ${USERS.users['${username}']} edr_client=${edr_wrapper} | 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,3 +1279,159 @@ Library openprocurement_client.utils | ||
1272 | Log ${data} | 1279 | Log ${data} |
1273 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} | 1280 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} |
1274 | Log ${reply} | 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,6 +2,7 @@ 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.plan import PlansClient |
5 | +from openprocurement_client.contract import ContractingClient | ||
5 | from openprocurement_client.exceptions import IdNotFound | 6 | from openprocurement_client.exceptions import IdNotFound |
6 | from restkit.errors import RequestFailed, BadStatusLine, ResourceError | 7 | from restkit.errors import RequestFailed, BadStatusLine, ResourceError |
7 | from retrying import retry | 8 | from retrying import retry |
@@ -43,6 +44,16 @@ def prepare_ds_api_wrapper(ds_host_url, auth_ds): | @@ -43,6 +44,16 @@ def prepare_ds_api_wrapper(ds_host_url, auth_ds): | ||
43 | return StableDsClient(ds_host_url, auth_ds) | 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 | class StableEDRClient(EDRClient): | 57 | class StableEDRClient(EDRClient): |
47 | @retry(stop_max_attempt_number=100, wait_random_min=500, | 58 | @retry(stop_max_attempt_number=100, wait_random_min=500, |
48 | wait_random_max=4000, retry_on_exception=retry_if_request_failed) | 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,6 +32,10 @@ def create_fake_amount(award_amount): | ||
32 | return round(random.uniform(1, award_amount), 2) | 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 | def create_fake_date(): | 39 | def create_fake_date(): |
36 | return get_now().isoformat() | 40 | return get_now().isoformat() |
37 | 41 | ||
@@ -436,6 +440,10 @@ def test_lot_document_data(document, lot_id): | @@ -436,6 +440,10 @@ def test_lot_document_data(document, lot_id): | ||
436 | document.data.update({"documentOf": "lot", "relatedItem": lot_id}) | 440 | document.data.update({"documentOf": "lot", "relatedItem": lot_id}) |
437 | return munchify(document) | 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 | def test_tender_data_openua(params, submissionMethodDetails): | 448 | def test_tender_data_openua(params, submissionMethodDetails): |
441 | # We should not provide any values for `enquiryPeriod` when creating | 449 | # We should not provide any values for `enquiryPeriod` when creating |
@@ -482,3 +490,17 @@ def test_tender_data_competitive_dialogue(params, submissionMethodDetails): | @@ -482,3 +490,17 @@ def test_tender_data_competitive_dialogue(params, submissionMethodDetails): | ||
482 | data['procuringEntity']['identifier']['legalName_en'] = fake_en.sentence(nb_words=10, variable_nb_words=True) | 490 | data['procuringEntity']['identifier']['legalName_en'] = fake_en.sentence(nb_words=10, variable_nb_words=True) |
483 | data['procuringEntity']['kind'] = 'general' | 491 | data['procuringEntity']['kind'] = 'general' |
484 | return data | 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,6 +310,14 @@ Get Broker Property By Username | ||
310 | [Return] ${cancellation_data} | 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 | [Arguments] ${tender_data} | 322 | [Arguments] ${tender_data} |
315 | # munchify is used to make deep copy of ${tender_data} | 323 | # munchify is used to make deep copy of ${tender_data} |
@@ -453,6 +461,31 @@ Log differences between dicts | @@ -453,6 +461,31 @@ Log differences between dicts | ||
453 | Порівняти об'єкти ${left} ${right} | 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 | [Arguments] ${left} ${right} | 490 | [Arguments] ${left} ${right} |
458 | Log ${left} | 491 | Log ${left} |
@@ -581,6 +614,24 @@ Log differences between dicts | @@ -581,6 +614,24 @@ Log differences between dicts | ||
581 | [return] ${field_value} | 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 | [Arguments] ${username} ${field_name} ${object_id} | 636 | [Arguments] ${username} ${field_name} ${object_id} |
586 | ${object_type}= get_object_type_by_id ${object_id} | 637 | ${object_type}= get_object_type_by_id ${object_id} |
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | from faker.providers import BaseProvider | 2 | from faker.providers import BaseProvider |
3 | +from faker.generator import random | ||
3 | from copy import deepcopy | 4 | from copy import deepcopy |
4 | from munch import Munch | 5 | from munch import Munch |
5 | from json import load | 6 | from json import load |
@@ -17,13 +18,14 @@ def load_data_from_file(file_name): | @@ -17,13 +18,14 @@ def load_data_from_file(file_name): | ||
17 | 18 | ||
18 | 19 | ||
19 | class OP_Provider(BaseProvider): | 20 | class OP_Provider(BaseProvider): |
20 | - __fake_data = load_data_from_file("op_faker_data.json") | ||
21 | - word_list = __fake_data.words | ||
22 | - procuringEntities = __fake_data.procuringEntities | ||
23 | - addresses = __fake_data.addresses | ||
24 | - classifications = __fake_data.classifications | ||
25 | - cpvs = __fake_data.cpvs | ||
26 | - items_base_data = __fake_data.items_base_data | 21 | + _fake_data = load_data_from_file("op_faker_data.json") |
22 | + word_list = _fake_data.words | ||
23 | + procuringEntities = _fake_data.procuringEntities | ||
24 | + addresses = _fake_data.addresses | ||
25 | + classifications = _fake_data.classifications | ||
26 | + cpvs = _fake_data.cpvs | ||
27 | + items_base_data = _fake_data.items_base_data | ||
28 | + rationale_types = _fake_data.rationale_types | ||
27 | 29 | ||
28 | @classmethod | 30 | @classmethod |
29 | def randomize_nb_elements(self, number=10, le=60, ge=140): | 31 | def randomize_nb_elements(self, number=10, le=60, ge=140): |
@@ -149,4 +151,8 @@ class OP_Provider(BaseProvider): | @@ -149,4 +151,8 @@ class OP_Provider(BaseProvider): | ||
149 | "description_ru": item_base_data["description_ru"], | 151 | "description_ru": item_base_data["description_ru"], |
150 | "description_en": item_base_data["description_en"] | 152 | "description_en": item_base_data["description_en"] |
151 | }) | 153 | }) |
152 | - return deepcopy(item) | ||
154 | + return deepcopy(item) | ||
155 | + | ||
156 | + @classmethod | ||
157 | + def rationaleTypes(self, amount=3): | ||
158 | + return random.sample(self.rationale_types, amount) |
@@ -8033,5 +8033,15 @@ | @@ -8033,5 +8033,15 @@ | ||
8033 | "name": "набір" | 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,4 +260,4 @@ ${award_index} ${0} | ||
260 | ... tender_owner | 260 | ... tender_owner |
261 | ... ${USERS.users['${tender_owner}'].broker} | 261 | ... ${USERS.users['${tender_owner}'].broker} |
262 | ... qualification_approve_second_award level1 | 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,12 +20,12 @@ 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, | ||
24 | create_fake_date, | 23 | create_fake_date, |
25 | fake, | 24 | fake, |
26 | field_with_id, | 25 | field_with_id, |
27 | test_bid_data, | 26 | test_bid_data, |
28 | test_bid_value, | 27 | test_bid_value, |
28 | + test_change_data, | ||
29 | test_claim_answer_data, | 29 | test_claim_answer_data, |
30 | test_claim_data, | 30 | test_claim_data, |
31 | test_complaint_data, | 31 | test_complaint_data, |
@@ -46,6 +46,9 @@ from .initial_data import ( | @@ -46,6 +46,9 @@ from .initial_data import ( | ||
46 | test_tender_data_openeu, | 46 | test_tender_data_openeu, |
47 | test_tender_data_openua, | 47 | test_tender_data_openua, |
48 | test_tender_data_planning, | 48 | test_tender_data_planning, |
49 | + create_fake_title, | ||
50 | + create_fake_value_amount, | ||
51 | + test_change_document_data, | ||
49 | ) | 52 | ) |
50 | from barbecue import chef | 53 | from barbecue import chef |
51 | from restkit import request | 54 | from restkit import request |
@@ -557,5 +560,11 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): | @@ -557,5 +560,11 @@ def generate_test_bid_data_second_stage(tender_data, index='0'): | ||
557 | bid.data.parameters.append(parameter) | 560 | bid.data.parameters.append(parameter) |
558 | return bid | 561 | return bid |
559 | 562 | ||
563 | + | ||
560 | def convert_amount_string_to_float(amount_string): | 564 | def convert_amount_string_to_float(amount_string): |
561 | return float(amount_string.replace(' ', '').replace(',', '.')) | 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,7 +81,19 @@ | ||
81 | -i qualification_add_doc_to_second_award | 81 | -i qualification_add_doc_to_second_award |
82 | -i qualification_approve_second_award | 82 | -i qualification_approve_second_award |
83 | 83 | ||
84 | --i contract_sign | ||
85 | -i contract_view | 84 | -i contract_view |
86 | -i modify_contract | 85 | -i modify_contract |
87 | --i add_doc_to_contract | ||
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 |
@@ -103,4 +103,19 @@ | @@ -103,4 +103,19 @@ | ||
103 | -i qualification_add_doc_to_second_award | 103 | -i qualification_add_doc_to_second_award |
104 | -i qualification_approve_second_award | 104 | -i qualification_approve_second_award |
105 | 105 | ||
106 | --i contract_sign | ||
106 | +-i contract_view | ||
107 | +-i modify_contract | ||
108 | +-i add_doc_to_contract | ||
109 | +-i contract_sign | ||
110 | + | ||
111 | +-i find_contract | ||
112 | +-i access_contract | ||
113 | +-i submit_change | ||
114 | +-i view_change | ||
115 | +-i upload_change_document | ||
116 | +-i modify_change | ||
117 | +-i apply_change | ||
118 | +-i add_contract_doc | ||
119 | +-i termination_reasons | ||
120 | +-i amount_paid | ||
121 | +-i contract_termination |
@@ -79,4 +79,19 @@ | @@ -79,4 +79,19 @@ | ||
79 | -i qualification_add_doc_to_second_award | 79 | -i qualification_add_doc_to_second_award |
80 | -i qualification_approve_second_award | 80 | -i qualification_approve_second_award |
81 | 81 | ||
82 | --i contract_sign | ||
82 | +-i contract_view | ||
83 | +-i modify_contract | ||
84 | +-i add_doc_to_contract | ||
85 | +-i contract_sign | ||
86 | + | ||
87 | +-i find_contract | ||
88 | +-i access_contract | ||
89 | +-i submit_change | ||
90 | +-i view_change | ||
91 | +-i upload_change_document | ||
92 | +-i modify_change | ||
93 | +-i apply_change | ||
94 | +-i add_contract_doc | ||
95 | +-i termination_reasons | ||
96 | +-i amount_paid | ||
97 | +-i contract_termination |
Please
register
or
login
to post a comment