playtender.robot 7.77 KB
*** Settings ***

Resource                                                        playtender_common.robot
Resource                                                        playtender_plan.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}

Створити план
    [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}