From 93cf3ad880e3f52af680a112bad52d6604092bbd Mon Sep 17 00:00:00 2001 From: mykhaly <yurkamykhalchuk@gmail.com> Date: Thu, 4 Feb 2016 15:25:44 +0200 Subject: [PATCH] Added test suite for limited procurement procedure --- op_robot_tests/tests_files/brokers/openprocurement_client.robot | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ op_robot_tests/tests_files/initial_data.py | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ op_robot_tests/tests_files/limited.robot | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ op_robot_tests/tests_files/service_keywords.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 330 insertions(+), 1 deletion(-) create mode 100644 op_robot_tests/tests_files/limited.robot diff --git a/op_robot_tests/tests_files/brokers/openprocurement_client.robot b/op_robot_tests/tests_files/brokers/openprocurement_client.robot index a7a2d33..26acbfb 100644 --- a/op_robot_tests/tests_files/brokers/openprocurement_client.robot +++ b/op_robot_tests/tests_files/brokers/openprocurement_client.robot @@ -425,3 +425,105 @@ Library openprocurement_client_helper.py ${tender_lot}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_lot ${tender} ${ARGUMENTS[2]} Log ${tender_lot} [return] ${tender_lot} + + +Додати постачальника + [Arguments] ${username} ${tenderUAID} + log ${username} + log ${tenderUAID} + ${supplier_data}= test supplier data + log ${supplier_data} + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${username} ${tenderUAID} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${tenderID} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${reply}= Call Method ${USERS.users['${username}'].client} create_award ${tender} ${supplier_data} + [return] ${reply} + + +Підтвердити постачальника + [Arguments] ${username} ${tenderUAID} + log ${username} + log ${tenderUAID} + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${username} ${tenderUAID} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${tenderID} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + log ${tender} + ${award_data}= Confirm supplier ${tender['data']['awards'][0]['id']} + log ${award_data} + ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award_data} + [return] ${reply} + + +Додати запит на скасування + [Arguments] ${username} ${tenderUAID} + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${username} ${tenderUAID} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${tenderID} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${cancel_data}= Cancel tender prost :)) + log ${cancel_data} + ${reply}= Call Method ${USERS.users['${username}'].client} create_cancellation ${tender} ${cancel_data} + [return] ${reply} + + +Завантажити документацію до запиту на скасування + [Arguments] ${username} ${path} ${tenderid} + log ${username} + log ${path} + log ${tenderid} + ${internalid}= Отримати internal id по UAid ${username} ${tenderid} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${response}= Call Method ${USERS.users['${username}'].client} upload_cancellation_document ${path} ${tender} ${tender['data']['cancellations'][0]['id']} + log ${response} + ${uploaded_file} = Create Dictionary filepath ${path} upload_response ${response} + [return] ${uploaded_file} + + +Змінити опис документа в скасуванні + [Arguments] ${username} ${tenderUAID} + Log ${username} + Log ${tenderUAID} + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${username} ${tenderUAID} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${tenderID} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${data}= change_cancellation_document_field description test_description + log ${data} + ${reply}= Call Method ${USERS.users['${username}'].client} patch_cancellation_document ${tender} ${data} + [return] ${reply} + + +Завантажити нову версію документа до запиту на скасування + [Arguments] ${username} ${path} + ${internalid}= Отримати internal id по UAid ${username} ${TENDER['TENDER_UAID']} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${response}= Call Method ${USERS.users['${username}'].client} update_cancellation_document ${path} ${tender} ${tender['data']['cancellations'][0]['id']} ${tender['data']['cancellations'][0]['documents'][0]['id']} + ${uploaded_file} = Create Dictionary filepath ${path} upload_response ${response} + Log ${uploaded_file} + [return] ${uploaded_file} + + +Підтвердити скасування закупівлі + [Arguments] ${username} ${tenderUAID} + log ${username} + log ${tenderUAID} + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${username} ${tenderUAID} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${tenderID} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${data}= Confirm cancellation ${tender['data']['cancellations'][0]['id']} + log ${data} + ${reply}= Call Method ${USERS.users['${username}'].client} patch_cancellation ${tender} ${data} + [return] ${reply} + + +Підтвердити підписання контракту + [Arguments] ${username} ${tenderUAID} + log ${username} + log ${tenderUAID} + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${username} ${tenderUAID} + ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${tenderID} + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} + ${data}= confirm contract ${tender['data']['contracts'][0]['id']} + log ${data} + ${reply}= Call Method ${USERS.users['${username}'].client} patch_contract ${tender} ${data} + [return] ${reply} diff --git a/op_robot_tests/tests_files/initial_data.py b/op_robot_tests/tests_files/initial_data.py index 2a14bdc..e7a9eb1 100644 --- a/op_robot_tests/tests_files/initial_data.py +++ b/op_robot_tests/tests_files/initial_data.py @@ -112,6 +112,58 @@ def test_tender_data(intervals): return t_data +def test_tender_data_limited(intervals): + return { + "items": [ + { + "additionalClassifications": [ + { + "description": u"Послуги шкільних їдалень", + "id": "55.51.10.300", + "scheme": u"ДКПП" + } + ], + "classification": { + "description": u"Послуги з харчування у школах", + "id": "55523100-3", + "scheme": "CPV" + }, + "description": u"Послуги шкільних їдалень", + "id": "2dc54675d6364e2baffbc0f8e74432ac" + } + ], + "owner": "test.quintagroup.com", + "procurementMethod": "limited", + "procurementMethodType": "reporting", + "procuringEntity": { + "address": { + "countryName": u"Україна", + "locality": u"м. Вінниця", + "postalCode": "21027", + "region": u"м. Вінниця", + "streetAddress": u"вул. Стахурського. 22" + }, + "contactPoint": { + "name": u"Куца Світлана Валентинівна", + "telephone": "+380 (432) 46-53-02", + "url": "http://sch10.edu.vn.ua/" + }, + "identifier": { + "id": "21725150", + "legalName": u"Заклад \"Загальноосвітня школа І-ІІІ ступенів № 10 Вінницької міської ради\"", + "scheme": u"UA-EDR" + }, + "name": u"ЗОСШ #10 м.Вінниці" + }, + "value": { + "amount": 500000, + "currency": "UAH", + "valueAddedTaxIncluded": True + }, + "title": u"Послуги шкільних їдалень", + } + + def test_tender_data_multiple_items(intervals): now = get_now() t_data = test_tender_data(intervals) @@ -566,6 +618,41 @@ def auction_bid(): }) +def test_supplier_data(): + return { + "data": { + "suppliers": [ + { + "address": { + "countryName": u"Україна", + "locality": u"м. Вінниця", + "postalCode": "21100", + "region": u"м. Вінниця", + "streetAddress": u"вул. Островського, 33" + }, + "contactPoint": { + "email": "soleksuk@gmail.com", + "name": u"Сергій Олексюк", + "telephone": "+380 (432) 21-69-30" + }, + "identifier": { + "id": "13313462", + "legalName": u"Державне комунальне підприємство громадського харчування «Школяр»", + "scheme": "UA-EDR", + "uri": "http://sch10.edu.vn.ua/" + }, + "name": u"ДКП «Школяр»" + } + ], + "value": { + "amount": 475000, + "currency": "UAH", + "valueAddedTaxIncluded": True + } + } + } + + def test_award_data(): return munchify({'data': {}}) diff --git a/op_robot_tests/tests_files/limited.robot b/op_robot_tests/tests_files/limited.robot new file mode 100644 index 0000000..9a8dfa8 --- /dev/null +++ b/op_robot_tests/tests_files/limited.robot @@ -0,0 +1,91 @@ +*** Settings *** +Library op_robot_tests.tests_files.service_keywords +Library String +Library Collections +Library Selenium2Library +Library DebugLibrary +Resource keywords.robot +Resource resource.robot +Suite Setup TestSuiteSetup +Suite Teardown Close all browsers + + +*** Variables *** +${mode} limited +${role} viewer +${broker} Quinta + + +*** Test Cases *** +Можливість створити пряму закупівлю + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість створити тендер + ${tender_data}= Підготовка початкових даних + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} + ${LAST_MODIFICATION_DATE}= Get Current TZdate + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data} + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} + log ${TENDER} + log ${tender_data} + + +Пошук прямої закупівлі по ідентифікатору + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору + Дочекатись синхронізації з майданчиком ${viewer} + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} + Log ${TENDER['TENDER_UAID']} + + +Можливість додати документацію до прямої закупівлі + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документацію + [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі + ${filepath}= create_fake_doc + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']} + ${file_upload_process_data}= Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply} + log ${file_upload_process_data} + Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data} + Log ${USERS.users['${tender_owner}']} + + +Можливість зареєструвати і підтвердити постачальника + ${award_response}= Викликати для учасника ${tender_owner} Додати постачальника ${TENDER['TENDER_UAID']} + Log ${award_response} + ${award_confirmation_response}= Викликати для учасника ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} + log ${award_confirmation_response} + + +Можливість укласти угоду + ${contract_confirmation_response}= Викликати для учасника ${tender_owner} Підтвердити підписання контракту shouldfail ${TENDER['TENDER_UAID']} + log ${contract_confirmation_response} + + +Можливість сформувати запит на скасування + ${cancellation_response}= Викликати для учасника ${tender_owner} Додати запит на скасування ${TENDER['TENDER_UAID']} + log ${cancellation_response} + Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_response_field ${cancellation_response} + log ${USERS.users['${tender_owner}']['cancellation_response_field']} + + +Можливість додати документацію до запиту на скасування + ${filepath}= create_fake_doc + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документацію до запиту на скасування ${filepath} ${TENDER['TENDER_UAID']} + log ${doc_upload_reply} + ${file_upload_process_data}= Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply} + log ${file_upload_process_data} + Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data} + + +Можливість змінити опис процедури і інші поля + ${cancellation_document_updated_data}= Викликати для учасника ${tender_owner} Змінити опис документа в скасуванні ${TENDER['TENDER_UAID']} + log ${cancellation_document_updated_data} + + +Можливість завантажити нову версію документа до запиту на скасування + ${filepath}= create_fake_doc + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити нову версію документа до запиту на скасування ${filepath} + log ${doc_upload_reply} + + +Можливість активувати скасування закупівлі + ${cancellation_confirmation_response}= Викликати для учасника ${tender_owner} Підтвердити скасування закупівлі ${TENDER['TENDER_UAID']} + log ${cancellation_confirmation_response} diff --git a/op_robot_tests/tests_files/service_keywords.py b/op_robot_tests/tests_files/service_keywords.py index 004b0b9..49e5b66 100644 --- a/op_robot_tests/tests_files/service_keywords.py +++ b/op_robot_tests/tests_files/service_keywords.py @@ -19,7 +19,8 @@ from .initial_data import ( test_invalid_features_data, test_item_data, test_lot_complaint_data, test_lot_data, test_lot_document_data, test_lot_question_data, test_lots_bid_data, test_meat_tender_data, test_question_answer_data, - test_question_data, test_tender_data, test_tender_data_multiple_items, + test_question_data, test_supplier_data, test_tender_data, + test_tender_data_limited, test_tender_data_multiple_items, test_tender_data_multiple_lots ) from .local_time import get_now, TZ @@ -106,6 +107,8 @@ def prepare_test_tender_data(period_intervals, mode): return munchify({'data': test_tender_data(period_intervals)}) elif mode == 'multi': return munchify({'data': test_tender_data_multiple_items(period_intervals)}) + elif mode == 'limited': + return munchify({'data': test_tender_data_limited(period_intervals)}) raise ValueError('Invalid mode for test_tender_data') @@ -179,6 +182,52 @@ def merge_dicts(left, right): return new +def cancel_tender(cancellation_reason): + return { + 'data': { + 'reason': cancellation_reason + } + } + + +def confirm_supplier(supplier_id): + return { + "data": { + "status": "active", + "id": supplier_id + } + } + + +def change_cancellation_document_field(key, value): + data = { + "data": { + key: value + } + } + return data + + +def confirm_cancellation(cancellation_id): + data = { + "data": { + "status": "active", + "id": cancellation_id + } + } + return data + + +def confirm_contract(contract_id): + data = { + "data": { + "id": contract_id, + "status": "active" + } + } + return data + + # GUI Frontends common def add_data_for_gui_frontends(tender_data): now = get_now() -- libgit2 0.24.0