playtender.robot 31.3 KB
*** Settings ***

Resource                                                        playtender_common.robot
Resource                                                        playtender_plan.robot
Resource                                                        playtender_tender.robot

*** Variables ***

*** Keywords ***

Підготувати клієнт для користувача
    [Arguments]                                                 ${username}
    [Documentation]                                             Відкриває переглядач на потрібній сторінці, готує api wrapper, тощо.

    init environment                                            ${username}
    open browser                                                ${broker_baseurl}  ${broker_browser}  alias=${broker_username}
    add cookie                                                  robottest  1  # for detecting from site side
    set window size                                             @{browser_default_size}
    set window position                                         @{browser_default_position}
    set site language by code                                   ${broker_language_code}
    login to site                                               ${USERS.users['${broker_username}']}

Підготувати дані для оголошення тендера
    [Arguments]                                                 ${username}  ${tender_data}  ${role_name}
    [Documentation]                                             Адаптувати початкові дані для створення тендера. Наприклад, змінити дані про procuringEntity на дані
    ...                                                         про користувача tender_owner на майданчику. Перевіряючи значення аргументу role_name, можна адаптувати
    ...                                                         різні дані для різних ролей (наприклад, необхідно тільки для ролі tender_owner забрати з початкових
    ...                                                         даних поле mode: test, а для інших ролей не потрібно робити нічого). Це ключове слово викликається в
    ...                                                         циклі для кожної ролі, яка бере участь в поточному сценарії. З ключового слова потрібно повернути
    ...                                                         адаптовані дані tender_data. Різниця між початковими даними і кінцевими буде виведена в консоль під
    ...                                                         час запуску тесту.

    ${tender_data_keys} =                                       get dictionary keys  ${tender_data['data']}
    run keyword if                                              ${is_test_role_owner} and 'procuringEntity' in ${tender_data_keys}  prepare procuring entity data  ${tender_data['data']['procuringEntity']}
    #run keyword if                                              ${is_test_role_owner} and 'buyers' in ${tender_data_keys}  prepare buyers data  ${tender_data['data']['buyers']}
    [Return]                                                    ${tender_data}

########################################################################################################################
#################################################### PLAN KEYWORDS #####################################################
########################################################################################################################

Створити план
    [Arguments]                                                 ${user}  ${plan_data}
    [Documentation]                                             Створити план з початковими даними plan_data. Повернути uaid створеного плану.

    # check buyers
    ${buyers_count} =                                           get length  ${plan_data['data']['buyers']}
    run keyword if                                              ${buyers_count} != 1  fail  Buyer must be one

    open new plan form
    fill plan form                                              ${plan_data['data']}
    save plan form and wait synchronization
    ${plan_uaid} =                                              get text  ${plan_uaid_text_locator}
    [Return]                                                    ${plan_uaid}

Оновити сторінку з планом
    [Arguments]                                                 ${username}  ${plan_uaid}
    [Documentation]                                             Оновити сторінку з планом для отримання потенційно оновлених даних.

    open plan page by uaid                                      ${plan_uaid}

Пошук плану по ідентифікатору
    [Arguments]                                                 ${username}  ${plan_uaid}
    [Documentation]                                             Знайти план за зазначеним plan_uaid.

    open plan search form
    input to search form and wait results                       ${plan_search_form_query_input_locator}  ${plan_uaid}  ${plan_search_form_result_locator_tpl}

Внести зміни в план
    [Arguments]                                                 ${username}  ${plan_uaid}  ${fieldname}  ${fieldvalue}
    [Documentation]                                             Змінити значення поля fieldname на fieldvalue для плана із зазначеним plan_uaid.

    ${plan_data} =                                              generate dictionary from field path and value  ${fieldname}  ${fieldvalue}
    open plan form by uaid                                      ${plan_uaid}
    fill plan form                                              ${plan_data}
    save plan form and wait synchronization

Додати предмет закупівлі в план
    [Arguments]                                                 ${username}  ${plan_uaid}  ${item_data}
    [Documentation]                                             Додати дані про предмет item до плану plan_uaid.

    open plan form by uaid                                      ${plan_uaid}
    ${items} =                                                  create list  ${item_data}
    fill plan form items                                        ${items}
    save plan form and wait synchronization

Видалити предмет закупівлі плану
    [Arguments]                                                 ${username}  ${plan_uaid}  ${item_id}
    [Documentation]                                             Видалити з плану plan_uaid предмет з item_id в описі.

    open plan form by uaid                                      ${plan_uaid}
    ${delete_item_btn_locator} =                                replace string  ${plan_form_remove_item_btn_locator_tpl}  %title%  ${item_id}
    click removing form item and wait success result            ${delete_item_btn_locator}
    save plan form and wait synchronization

Отримати інформацію із плану
    [Arguments]                                                 ${username}  ${plan_uaid}  ${field_name}
    [Documentation]                                             Отримати інформацію із плану, користуючись ідентіфікатором плану та назвою поля ${field_name}.

    open plan page by uaid                                      ${plan_uaid}  ${False}
    ${field_name} =                                             set variable  plan.${field_name}.value
    ${value} =                                                  get field_value by field_name on opened page  ${field_name}
    [Return]                                                    ${value}

########################################################################################################################
################################################### TENDER KEYWORDS ####################################################
########################################################################################################################

Створити тендер
    [Arguments]                                                 ${user}  ${tender_data}
    [Documentation]                                             Створити тендер з початковими даними tender_data. Повернути
    ...                                                         uaid створеного тендера.

    ${tender_prepared_data} =                                   prepare tender data  ${tender_data['data']}
    log                                                         ${tender_prepared_data}
    Set Global Variable    ${td_railway_crutch}  ${tender_data}
    log many  ${td_railway_crutch}

    open new tender form
    fill tender form                                            ${tender_prepared_data}
    submit form and check result                                ${tender_form_submit_btn_locator}  ${tender_form_submit_success_msg}  ${tender_created_checker_element_locator}
    wait until page does not contain element with reloading     ${tender_sync_element_locator}
    wait until page contains element with reloading             ${tender_uaid_text_locator}
    ${tender_uaid} =                                            get text  ${tender_uaid_text_locator}
    [Return]                                                    ${tender_uaid}

Оновити сторінку з тендером
    [Arguments]                                                 ${username}  ${$tender_uaid}
    [Documentation]                                             Оновити сторінку з тендером для отримання потенційно оновлених даних.

    open tender page by uaid                                    ${$tender_uaid}

Пошук тендера по ідентифікатору
    [Arguments]                                                 ${username}  ${tender_uaid}
    [Documentation]                                             Знайти тендер з uaid рівним tender_uaid.

    open tender search form
    input to search form and wait results                       ${tender_search_form_query_input_locator}  ${tender_uaid}  ${tender_search_form_result_locator_tpl}

Отримати інформацію із тендера
    [Arguments]                                                 ${username}  ${tender_uaid}  ${field_name}
    [Documentation]                                             Отримати значення поля field_name для тендера tender_uaid.

    open tender page by uaid                                    ${tender_uaid}
    ${field_name} =                                             set variable  tender.${field_name}.value
    ${value} =                                                  get field_value by field_name on opened page  ${field_name}
#    ${value} =                                                  get tender field value by name  ${field_name}
    [Return]                                                    ${value}

Внести зміни в тендер
    [Arguments]                                                 ${username}  ${tender_uaid}  ${fieldname}  ${fieldvalue}
    [Documentation]                                             Змінити значення поля fieldname на fieldvalue для плана із зазначеним plan_uaid.

    ${tender_data} =                                            generate dictionary from field path and value  ${fieldname}  ${fieldvalue}
    open tender form by uaid                                    ${tender_uaid}
    fill tender form                                            ${tender_data}
    save tender form and wait synchronization

Завантажити документ
    [Arguments]                                                 ${username}  ${filepath}  ${tender_uaid}
    [Documentation]                                             Завантажити документ, який знаходиться по шляху filepath,
    ...                                                         до тендера tender_uaid.

    open tender form by uaid                                    ${tender_uaid}
    add document in tender                                      ${filepath}
    save tender form and wait synchronization

########################################################################################################################
################################################### ITEM KEYWORDS ####################################################
########################################################################################################################

Додати предмет закупівлі
    [Arguments]                                                 ${username}  ${tender_uaid}  ${item_data}
    [Documentation]                                             Додати дані про предмет item до тендера tender_uaid.

    open tender form by uaid                                    ${tender_uaid}
    ${items} =                                                  create list  ${item_data}
    fill tender form items                                      ${items}
    save tender form and wait synchronization

Отримати інформацію із предмету
    [Arguments]                                                 ${username}  ${tender_uaid}  ${item_id}  ${field_name}
    [Documentation]                                             Отримати значення поля field_name з предмету з item_id в описі для тендера tender_uaid.

    open tender page by uaid                                    ${tender_uaid}
    ${value} =                                                  get item field value by name  ${field_name}
    [Return]                                                    ${value}

Видалити предмет закупівлі
    [Arguments]                                                 ${username}  ${tender_uaid}  ${item_id}  ${lot_id}=Empty
    [Documentation]                                             Видалити з тендера tender_uaid предмет з item_id в описі
    ...                                                         (предмет може бути прив'язаним до лоту з lot_id в описі,
    ...                                                         якщо lot_id != Empty).


########################################################################################################################
################################################### END ITEM KEYWORDS #################################################
########################################################################################################################

########################################################################################################################
################################################### LOT KEYWORDS ####################################################
########################################################################################################################

Створити лот
    [Arguments]                                                 ${username}  ${tender_uaid}  ${lot}
    [Documentation]                                             Додати лот lot до тендера tender_uaid.

Отримати інформацію із лоту
    [Arguments]                                                 ${username}  ${tender_uaid}  ${lot_id}  ${field_name}
    [Documentation]                                             Отримати значення поля field_name з лоту з lot_id в описі для тендера tender_uaid.

    open tender page by uaid                                    ${tender_uaid}
    ${value} =                                                  get lot field value by name  ${field_name}
    [Return]                                                    ${value}

Завантажити документ в лот
    [Arguments]                                                 ${username}  ${filepath}  ${tender_uaid}  ${lot_id}
    [Documentation]                                             Завантажити документ, який знаходиться по шляху filepath,
    ...                                                         до лоту з lot_id в описі для тендера tender_uaid.

    open tender form by uaid                                    ${tender_uaid}
    add document in lot                                         ${filepath}  ${lot_id}
    save tender form and wait synchronization


########################################################################################################################
################################################### END LOT KEYWORDS #################################################
########################################################################################################################
########################################################################################################################
################################################### FEATIRE KEYWORDS #############################################
########################################################################################################################

########################################################################################################################
################################################### END FEATIRE KEYWORDS #############################################
########################################################################################################################

########################################################################################################################
################################################### QUESTION KEYWORDS #############################################
########################################################################################################################

Відповісти на запитання
    [Arguments]                                                 ${username}  ${tender_uaid}  ${answer_data}  ${question_id}
    [Documentation]                                             Дати відповідь answer_data на запитання з question_id
    ...                                                         в описі для тендера tender_uaid.

    open tender form by uaid                                    ${tender_uaid}
    answer question                                             ${answer_data}  ${question_id}

Задати запитання на предмет
    [Arguments]                                                 ${username}  ${tender_uaid}  ${item_id}  ${question}
    [Documentation]                                             Створити запитання з даними question до предмету з item_id
    ...                                                         в описі для тендера tender_uaid.

    add question                                                ${username}  ${tender_uaid}  item  ${item_id}  ${question}

Задати запитання на лот
    [Arguments]                                                 ${username}  ${tender_uaid}  ${lot_id}  ${question}
    [Documentation]                                             Створити запитання з даними question до лоту з lot_id
    ...                                                         в описі для тендера tender_uaid.

    add question                                                ${username}  ${tender_uaid}  lot  ${lot_id}  ${question}

Задати запитання на тендер
    [Arguments]                                                 ${username}  ${tender_uaid}  ${question}
    [Documentation]                                             Створити запитання з даними question для тендера tender_uaid.

    add question                                                ${username}  ${tender_uaid}  tender  null  ${question}

Отримати інформацію із запитання
    [Arguments]                                                 ${username}  ${tender_uaid}  ${question_id}  ${field_name}
    [Documentation]                                             Отримати значення поля field_name із запитання з question_id
    ...                                                         в описі для тендера tender_uaid.

    open tender page by uaid                                    ${tender_uaid}
    ${value} =                                                  get question information  ${question_id}  ${field_name}
    [Return]                                                    ${value}


########################################################################################################################
################################################### END QUESTION KEYWORDS #############################################
########################################################################################################################

########################################################################################################################
################################################### CLAIM KEYWORDS #############################################
########################################################################################################################
Створити вимогу про виправлення умов закупівлі
    [Arguments]                                                 ${username}  ${tender_uaid}  ${claim}  ${doc_name}
    [Documentation]                                             Створити запитання з даними question для тендера tender_uaid.
    Run Keyword And Return                                      Створити вимогу  ${username}  ${tender_uaid}  tender  null  ${claim}  ${doc_name}

Створити чернетку вимоги про виправлення умов закупівлі
    [Arguments]                                                 ${username}  ${tender_uaid}  ${claim}
    [Documentation]                                             Створює вимогу claim про виправлення умов закупівлі
    ...                                                         у статусі claim для тендера tender_uaid. Можна створити
    ...                                                         вимогу як з документом, який знаходиться за шляхом document,
    ...                                                         так і без нього.

    Run Keyword And Return                                      Створити вимогу  ${username}  ${tender_uaid}  tender  null  ${claim}  null

Створити вимогу про виправлення умов лоту
    [Arguments]                                                 ${username}  ${tender_uaid}  ${claim}  ${lot_id}  ${doc_name}
    [Documentation]                                             Створює вимогу claim про виправлення умов лоту
    ...                                                         у статусі draft для тендера tender_uaid.

    Run Keyword And Return                                      Створити вимогу  ${username}  ${tender_uaid}  lot  ${lot_id}  ${claim}  ${doc_name}

Створити чернетку вимоги про виправлення умов лоту
    [Arguments]                                                 ${username}  ${tender_uaid}  ${claim}  ${lot_id}
    [Documentation]                                             Створює вимогу claim про виправлення умов закупівлі
    ...                                                         у статусі draft для тендера tender_uaid.
    Run Keyword And Return                                      Створити вимогу  ${username}  ${tender_uaid}  lot  ${lot_id}  ${claim}  null

Створити вимогу про виправлення визначення переможця
    [Arguments]                                                 ${username}  ${tender_uaid}  ${claim}  ${proposal_id}  ${doc_name}
    [Documentation]                                             Створює вимогу claim про виправлення визначення переможця
    ...                                                         під номером award_index в статусі claim для тендера tender_uaid. Можна створити вимогу як з документом, який знаходиться за шляхом document, так і без нього.
    Run Keyword And Return                                      Створити вимогу  ${username}  ${tender_uaid}  winner  ${proposal_id}  ${claim}  ${doc_name}

Створити чернетку вимоги про виправлення визначення переможця
    [Arguments]                                                 ${username}  ${tender_uaid}  ${claim}  ${proposal_id}
    [Documentation]                                             Створює вимогу claim про виправлення визначення переможця
    ...                                                         під номером award_index в статусі draft для тендера tender_uaid.
    Run Keyword And Return                                      Створити вимогу  ${username}  ${tender_uaid}  winner  ${proposal_id}  ${claim}  null

########################################################################################################################
################################################### END CLAIM KEYWORDS #############################################
########################################################################################################################

########################################################################################################################
################################################### BID KEYWORDS #############################################
########################################################################################################################
Подати цінову пропозицію
    [Arguments]                                                 ${username}  ${tender_uaid}  ${bid}  ${lots_ids}  ${features_ids}
    [Documentation]                                             Подати цінову пропозицію bid для тендера tender_uaid
    ...                                                         на лоти lots_ids (якщо lots_ids != None) з неціновими
    ...                                                         показниками features_ids (якщо features_ids != None).

    open tender form by uaid                                    ${tender_uaid}
    fill bid form                                               ${tender_uaid}  ${bid}  ${lots_ids}  ${features_ids}
    submit form and check result                                ${bid_form_submit_btn_locator}  ${bid_form_submit_success_msg}  ${tender_created_checker_element_locator}
    wait until page does not contain element with reloading     ${tender_sync_element_locator}

Змінити цінову пропозицію
    [Arguments]                                                 ${username}  ${tender_uaid}  ${fieldname}  ${fieldvalue}
    [Documentation]                                             Змінити поле fieldname на fieldvalue цінової пропозиції користувача
    ...                                                         username для тендера tender_uaid.

    open tender form by uaid                                    ${tender_uaid}
    fill bid form edit                                          ${fieldname}  ${fieldvalue}
    submit form and check result                                ${bid_form_submit_btn_locator}  ${bid_form_submit_success_msg}  ${tender_created_checker_element_locator}
    wait until page does not contain element with reloading     ${tender_sync_element_locator}

########################################################################################################################
################################################### END BID KEYWORDS #############################################
########################################################################################################################
################################################### QUALIFICATION KEYWORDS #############################################
########################################################################################################################
########################################################################################################################
################################################### END QUALIFICATION KEYWORDS ########################################
########################################################################################################################

########################################################################################################################
################################################### LIMITED PROCUREMENT KEYWORDS ######################################
########################################################################################################################
########################################################################################################################
################################################### END LIMITED PROCUREMENT KEYWORDS ##################################
########################################################################################################################

########################################################################################################################
################################################### OPEN PROCUREMENT KEYWORDS ####################################
########################################################################################################################
########################################################################################################################
################################################### END OPEN PROCUREMENT KEYWORDS ###############################
########################################################################################################################