Commit d78942d6f246092bd3a5c70bdb333280c4546af1
Merge branch 'master', remote-tracking branch 'w-be/master'
Showing
17 changed files
with
1499 additions
and
587 deletions
| 1 | -*** Setting *** | ||
| 2 | -Library op_robot_tests.tests_files.service_keywords | ||
| 3 | -Library String | ||
| 4 | -LIbrary Collections | ||
| 5 | -LIbrary Selenium2Library | ||
| 6 | -Library DebugLibrary | ||
| 7 | -Resource keywords.robot | ||
| 8 | -Resource resource.robot | ||
| 9 | -Suite Setup TestCaseSetup | ||
| 10 | -Suite Teardown Close all browsers | ||
| 11 | - | ||
| 12 | -*** Variables *** | ||
| 13 | -${tender_dump_id} 0 | ||
| 14 | -${tender_owner} Tender_Owner | ||
| 15 | -${provider} Tender_User | ||
| 16 | -${viewer} Tender_Viewer | ||
| 17 | - | ||
| 18 | -${LOAD_USERS} ["${tender_owner}", "${provider}"] | ||
| 19 | - | ||
| 20 | -${item_id} 0 | ||
| 21 | -${question_id} 0 | ||
| 22 | - | ||
| 23 | - | ||
| 24 | -*** Test Cases *** | ||
| 25 | -Можливість оголосити однопердметний тендер | ||
| 26 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Пошук тендера по ідентифікатору | ||
| 27 | - ${TENDER_ID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | ||
| 28 | - Set Global Variable ${TENDER_ID} | ||
| 29 | - ${LAST_MODIFICATION_DATE}= Get Current Date | ||
| 30 | - ${TENDER_DATA}= Get Variable Value ${INITIAL_TENDER_DATA} | ||
| 31 | - Set Global Variable ${TENDER_DATA} | ||
| 32 | - Set Global Variable ${LAST_MODIFICATION_DATE} | ||
| 33 | - | ||
| 34 | -Пошук однопредметного тендера по ідентифікатору | ||
| 35 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Пошук тендера по ідентифікатору | ||
| 36 | - Дочекатись синхронізації з майданчиком ${provider} | ||
| 37 | - Викликати для учасника ${provider} Пошук тендера по ідентифікатору ${TENDER_ID} ${TENDER_ID} | ||
| 38 | - | ||
| 39 | -Відображення заголовоку оголошеного тендера | ||
| 40 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 41 | - Звірити поле тендера ${provider} title | ||
| 42 | - | ||
| 43 | -Відображення опису оголошеного тендера | ||
| 44 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 45 | - Звірити поле тендера ${provider} description | ||
| 46 | - | ||
| 47 | -Відображення бюджету оголошеного тендера | ||
| 48 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 49 | - Звірити поле тендера ${provider} value.amount | ||
| 50 | - | ||
| 51 | -Відображення procuringEntity.name оголошеного тендера | ||
| 52 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 53 | - Звірити поле тендера ${provider} procuringEntity.name | ||
| 54 | - | ||
| 55 | -#Відображення початоку періоду уточнення оголошеного тендера | ||
| 56 | -# [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 57 | -# Звірити поле тендера ${provider} enquiryPeriod.startDate | ||
| 58 | - | ||
| 59 | -Відображення закінчення періоду уточнення оголошеного тендера | ||
| 60 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 61 | - Звірити дату ${provider} enquiryPeriod.endDate | ||
| 62 | - | ||
| 63 | -Відображення початоку періоду прийому пропозицій оголошеного тендера | ||
| 64 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 65 | - Звірити дату ${provider} tenderPeriod.startDate | ||
| 66 | - | ||
| 67 | -Відображення закінчення періоду прийому пропозицій оголошеного тендера | ||
| 68 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 69 | - Звірити дату ${provider} tenderPeriod.endDate | ||
| 70 | - | ||
| 71 | -Відображення мінімального кроку оголошеного тендера | ||
| 72 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис основних даних оголошеного тендера | ||
| 73 | - Звірити поле тендера ${provider} minimalStep.amount | ||
| 74 | - | ||
| 75 | -Відображення опису позицій закупівлі однопредметного тендера | ||
| 76 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 77 | - Звірити поле тендера ${provider} items[${item_id}].description | ||
| 78 | - | ||
| 79 | -Відображення дати доставки позицій закупівлі однопредметного тендера | ||
| 80 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 81 | - Звірити дату ${provider} items[${item_id}].deliveryDate.endDate | ||
| 82 | - | ||
| 83 | -Відображення координат широти доставки позицій закупівлі однопредметного тендера | ||
| 84 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 85 | - Звірити поле тендера ${provider} items[${item_id}].deliveryLocation.latitude | ||
| 86 | - | ||
| 87 | -Відображення координат довготи доставки позицій закупівлі однопредметного тендера | ||
| 88 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 89 | - Звірити поле тендера ${provider} items[${item_id}].deliveryLocation.longitude | ||
| 90 | - | ||
| 91 | -Відображення назви нас. пункту доставки позицій закупівлі однопредметного тендера | ||
| 92 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 93 | - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.countryName | ||
| 94 | - | ||
| 95 | -Відображення пошт коду доставки позицій закупівлі однопредметного тендера | ||
| 96 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 97 | - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.postalCode | ||
| 98 | - | ||
| 99 | -Відображення регіону доставки позицій закупівлі однопредметного тендера | ||
| 100 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 101 | - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.region | ||
| 102 | - | ||
| 103 | -Відображення locality адреси доставки позицій закупівлі однопредметного тендера | ||
| 104 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 105 | - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.locality | ||
| 106 | - | ||
| 107 | -Відображення вулиці доставки позицій закупівлі однопредметного тендера | ||
| 108 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 109 | - Звірити поле тендера ${provider} items[${item_id}].deliveryAddress.streetAddress | ||
| 110 | - | ||
| 111 | -Відображення схеми класифікації позицій закупівлі однопредметного тендера | ||
| 112 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 113 | - Звірити поле тендера ${provider} items[${item_id}].classification.scheme | ||
| 114 | - | ||
| 115 | -Відображення ідентифйікатора класифікації позицій закупівлі однопредметного тендера | ||
| 116 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 117 | - Звірити поле тендера ${provider} items[${item_id}].classification.id | ||
| 118 | - | ||
| 119 | -Відображення опису класифікації позицій закупівлі однопредметного тендера | ||
| 120 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 121 | - Звірити поле тендера ${provider} items[${item_id}].classification.description | ||
| 122 | - | ||
| 123 | -Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера | ||
| 124 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 125 | - Звірити поле тендера ${provider} items[${item_id}].additionalClassifications.scheme | ||
| 126 | - | ||
| 127 | -Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера | ||
| 128 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 129 | - Звірити поле тендера ${provider} items[${item_id}].additionalClassifications.id | ||
| 130 | - | ||
| 131 | -Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера | ||
| 132 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 133 | - Звірити поле тендера ${provider} items[${item_id}].additionalClassifications.description | ||
| 134 | - | ||
| 135 | -Відображення назви одиниці позицій закупівлі однопредметного тендера | ||
| 136 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 137 | - Звірити поле тендера ${provider} items[${item_id}].unit.name | ||
| 138 | - | ||
| 139 | -Відображення коду одиниці позицій закупівлі однопредметного тендера | ||
| 140 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 141 | - Звірити поле тендера ${provider} items[${item_id}].unit.code | ||
| 142 | - | ||
| 143 | -Відображення кількості позицій закупівлі однопредметного тендера | ||
| 144 | - [Tags] Owner_Tests ${USERS.users['${tender_owner}'].broker}: Запис полів пердметів однопредметного тендера | ||
| 145 | - Звірити поле тендера ${provider} items[${item_id}].quantity | ||
| 146 | - | ||
| 147 | - |
| @@ -5,57 +5,219 @@ Library DateTime | @@ -5,57 +5,219 @@ Library DateTime | ||
| 5 | 5 | ||
| 6 | *** Variables *** | 6 | *** Variables *** |
| 7 | ${locator.tenderId} jquery=h3 | 7 | ${locator.tenderId} jquery=h3 |
| 8 | -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | ||
| 9 | -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | ||
| 10 | -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)> | ||
| 11 | -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | ||
| 12 | -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)> | ||
| 13 | -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)> | ||
| 14 | -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)> | ||
| 15 | -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)> | ||
| 16 | -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)> | 8 | +##Використовую такий шлях у кожного буде мінятись /yboi/. Міняйте на сві шлях до файлу |
| 9 | +${file_add} /home/yboi/openprocurement.robottests.buildout/Document.docx | ||
| 10 | +${locator.title} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[6] | ||
| 11 | +${locator.description} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[7] | ||
| 12 | +${locator.minimalStep.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[9] | ||
| 13 | +${locator.value.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[8] | ||
| 17 | 14 | ||
| 18 | *** Keywords *** | 15 | *** Keywords *** |
| 19 | -Підготувати дані для задання питання | ||
| 20 | - ${QUESTIONS}= prepare_test_question_data | ||
| 21 | - [return] ${QUESTIONS} | ||
| 22 | - | ||
| 23 | Підготувати клієнт для користувача | 16 | Підготувати клієнт для користувача |
| 24 | [Arguments] @{ARGUMENTS} | 17 | [Arguments] @{ARGUMENTS} |
| 25 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 18 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
| 26 | ... ${ARGUMENTS[0]} == username | 19 | ... ${ARGUMENTS[0]} == username |
| 27 | - Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} alias=${ARGUMENTS[0]} | 20 | + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} |
| 28 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | 21 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
| 22 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | ||
| 23 | + Run Keyword If '${username}' != 'E-tender_Viewer' Login | ||
| 29 | 24 | ||
| 30 | Login | 25 | Login |
| 31 | Wait Until Page Contains Element id=inputUsername 100 | 26 | Wait Until Page Contains Element id=inputUsername 100 |
| 32 | Input text id=inputUsername ${USERS.users['${username}'].login} | 27 | Input text id=inputUsername ${USERS.users['${username}'].login} |
| 33 | - Input text id=inputPassword ${USERS.users['${username}'].password} | 28 | + Wait Until Page Contains Element id=inputPassword 100 |
| 29 | + Input text id=inputPassword ${USERS.users['${username}'].password} | ||
| 34 | Click Button id=btn_submit | 30 | Click Button id=btn_submit |
| 35 | 31 | ||
| 32 | +Створити тендер | ||
| 33 | + [Arguments] @{ARGUMENTS} | ||
| 34 | + [Documentation] | ||
| 35 | + ... ${ARGUMENTS[0]} == username | ||
| 36 | + ... ${ARGUMENTS[1]} == initial_tender_data | ||
| 37 | + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | ||
| 38 | + ${items}= Get From Dictionary ${prepared_tender_data.data} items | ||
| 39 | + ${title}= Get From Dictionary ${prepared_tender_data.data} title | ||
| 40 | + ${description}= Get From Dictionary ${prepared_tender_data.data} description | ||
| 41 | + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount | ||
| 42 | + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount | ||
| 43 | + ${items_description}= Get From Dictionary ${prepared_tender_data.data} description | ||
| 44 | + ${quantity}= Get From Dictionary ${items[0]} quantity | ||
| 45 | + ${cpv}= Get From Dictionary ${items[0].classification} id | ||
| 46 | + ${unit}= Get From Dictionary ${items[0].unit} name | ||
| 47 | + ${start_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate | ||
| 48 | + ${start_date}= convert_date_to_etender_format ${start_date} | ||
| 49 | + ${start_time}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate | ||
| 50 | + ${start_time}= convert_time_to_etender_format ${start_time} | ||
| 51 | + ${end_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate | ||
| 52 | + ${end_date}= convert_date_to_etender_format ${end_date} | ||
| 53 | + ${end_time}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate | ||
| 54 | + ${end_time}= convert_time_to_etender_format ${end_time} | ||
| 55 | + ${enquiry_end_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate | ||
| 56 | + ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date} | ||
| 57 | + ${enquiry_end_time}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate | ||
| 58 | + ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time} | ||
| 59 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 60 | + Wait Until Page Contains Мої закупівлі 100 | ||
| 61 | + Sleep 1 | ||
| 62 | + Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі'] | ||
| 63 | + Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')] | ||
| 64 | + Sleep 1 | ||
| 65 | + Click Element xpath=//a[contains(@class, 'btn btn-info')] | ||
| 66 | + Wait Until Page Contains Element id=title | ||
| 67 | + Input text id=title ${title} | ||
| 68 | + Input text id=description ${description} | ||
| 69 | + Input text id=value ${budget} | ||
| 70 | + Click Element xpath=//div[contains(@class, 'form-group col-sm-6')]//input[@type='checkbox'] | ||
| 71 | + Input text id=minimalStep ${step_rate} | ||
| 72 | + Input text id=itemsDescription ${items_description} | ||
| 73 | + Input text id=itemsQuantity ${quantity} | ||
| 74 | + Wait Until Page Contains Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] | ||
| 75 | + Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] | ||
| 76 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date} | ||
| 77 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.enquiryPeriod.endDate'] ${enquiry_end_time} | ||
| 78 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='startDate'] ${start_date} | ||
| 79 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.tenderPeriod.startDate'] ${start_time} | ||
| 80 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='endDate'] ${end_date} | ||
| 81 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.tenderPeriod.endDate'] ${end_time} | ||
| 82 | + Sleep 2 | ||
| 83 | + Click Element xpath=//div[contains(@class, 'col-sm-2')]//input[@data-target='#classification'] | ||
| 84 | + Sleep 1 | ||
| 85 | + Input text xpath=//div[contains(@class, 'modal-content')]//input[@ng-model='searchstring'] ${cpv} | ||
| 86 | + Sleep 2 | ||
| 87 | + Wait Until Page Contains ${cpv} | ||
| 88 | + Click Element xpath=//td[contains(., '${cpv}')] | ||
| 89 | + Sleep 1 | ||
| 90 | + Click Element xpath=//div[contains(@class, 'modal-content')]//button[@ng-click='choose()'] | ||
| 91 | + Sleep 1 | ||
| 92 | + Додати предмет ${items[0]} 0 | ||
| 93 | + Run Keyword if '${mode}' == 'multi' Додати багато предметів items | ||
| 94 | + Sleep 1 | ||
| 95 | + Wait Until Page Contains Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | ||
| 96 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | ||
| 97 | + Sleep 1 | ||
| 98 | + Wait Until Page Contains [ТЕСТУВАННЯ] 100 | ||
| 99 | + Sleep 20 | ||
| 100 | + Click Element xpath=//*[text()='${title}'] | ||
| 101 | + Sleep 5 | ||
| 102 | + ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")] | ||
| 103 | + ${tender_UAid}= Get Substring ${tender_UAid} 10 | ||
| 104 | + ${Ids}= Convert To String ${tender_UAid} | ||
| 105 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid} | ||
| 106 | + [return] ${Ids} | ||
| 107 | + | ||
| 108 | +Set Multi Ids | ||
| 109 | + [Arguments] @{ARGUMENTS} | ||
| 110 | + [Documentation] | ||
| 111 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | ||
| 112 | + ${current_location}= Get Location | ||
| 113 | + ${id}= Get Substring ${current_location} 10 | ||
| 114 | + ${Ids}= Create List ${tender_UAid} ${id} | ||
| 115 | + | ||
| 116 | +Oтримати internal id по UAid | ||
| 117 | + [Arguments] @{ARGUMENTS} | ||
| 118 | + [Documentation] | ||
| 119 | + ... ${ARGUMENTS[0]} == username | ||
| 120 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | ||
| 121 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 122 | + ${current_location}= Get Location | ||
| 123 | + ${tender_id}= Fetch From Right ${current_location} / | ||
| 124 | + [return] ${tender_id} | ||
| 125 | + | ||
| 126 | +Додати предмет | ||
| 127 | + [Arguments] @{ARGUMENTS} | ||
| 128 | + [Documentation] | ||
| 129 | + ... ${ARGUMENTS[0]} == items | ||
| 130 | + ... ${ARGUMENTS[1]} == ${INDEX} | ||
| 131 | + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | ||
| 132 | + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | ||
| 133 | + Sleep 2 | ||
| 134 | + Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[${ARGUMENTS[1]}+1] | ||
| 135 | + Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] | ||
| 136 | + Sleep 2 | ||
| 137 | + Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc} | ||
| 138 | + Wait Until Page Contains ${dkpp_id} | ||
| 139 | + Sleep 1 | ||
| 140 | + Click Element xpath=//td[contains(., '${dkpp_id}')] | ||
| 141 | + Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] | ||
| 142 | + Sleep 2 | ||
| 143 | + | ||
| 144 | +Додати багато предметів | ||
| 145 | + [Arguments] @{ARGUMENTS} | ||
| 146 | + [Documentation] | ||
| 147 | + ... ${ARGUMENTS[0]} == items | ||
| 148 | + ${Items_length}= Get Length ${items} | ||
| 149 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | ||
| 150 | + \ Click Element xpath=.//*[@id='myform']/tender-form/div/button | ||
| 151 | + \ Додати предмет ${items[${INDEX}]} ${INDEX} | ||
| 152 | + | ||
| 36 | Пошук тендера по ідентифікатору | 153 | Пошук тендера по ідентифікатору |
| 37 | [Arguments] @{ARGUMENTS} | 154 | [Arguments] @{ARGUMENTS} |
| 38 | [Documentation] | 155 | [Documentation] |
| 39 | ... ${ARGUMENTS[0]} == username | 156 | ... ${ARGUMENTS[0]} == username |
| 40 | - ... ${ARGUMENTS[1]} == tenderId | ||
| 41 | - ... ${ARGUMENTS[2]} == id | 157 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} |
| 42 | Switch browser ${ARGUMENTS[0]} | 158 | Switch browser ${ARGUMENTS[0]} |
| 43 | - ${current_location}= Get Location | ||
| 44 | - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | ||
| 45 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} | 159 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
| 46 | - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10 | 160 | + Wait Until Page Contains Список закупівель 10 |
| 47 | sleep 1 | 161 | sleep 1 |
| 48 | Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} | 162 | Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} |
| 49 | Click Link jquery=a[ng-click='search()'] | 163 | Click Link jquery=a[ng-click='search()'] |
| 50 | sleep 2 | 164 | sleep 2 |
| 51 | -# ${last_note_id}= Add pointy note jquery=a[href^="#/tenderDetailes"] Found tender with tenderID "${ARGUMENTS[1]}" width=200 position=bottom | ||
| 52 | -# sleep 1 | ||
| 53 | -# Remove element ${last_note_id} | ||
| 54 | Click Link jquery=a[href^="#/tenderDetailes"] | 165 | Click Link jquery=a[href^="#/tenderDetailes"] |
| 55 | Wait Until Page Contains ${ARGUMENTS[1]} 10 | 166 | Wait Until Page Contains ${ARGUMENTS[1]} 10 |
| 56 | sleep 1 | 167 | sleep 1 |
| 57 | Capture Page Screenshot | 168 | Capture Page Screenshot |
| 58 | 169 | ||
| 170 | +Подати цінову пропозицію | ||
| 171 | + [Arguments] @{ARGUMENTS} | ||
| 172 | + [Documentation] | ||
| 173 | + ... ${ARGUMENTS[0]} == username | ||
| 174 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | ||
| 175 | + ... ${ARGUMENTS[2]} == test_bid_data | ||
| 176 | + | ||
| 177 | + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | ||
| 178 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 179 | + Wait Until Page Contains Інформація про процедуру закупівлі 100 | ||
| 180 | + Wait Until Page Contains Element id=amount 10 | ||
| 181 | + Input text id=amount ${bid} | ||
| 182 | + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | ||
| 183 | + | ||
| 184 | +Задати питання | ||
| 185 | + [Arguments] @{ARGUMENTS} | ||
| 186 | + [Documentation] | ||
| 187 | + ... ${ARGUMENTS[0]} = username | ||
| 188 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | ||
| 189 | + ... ${ARGUMENTS[2]} = question_data | ||
| 190 | + | ||
| 191 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | ||
| 192 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | ||
| 193 | + | ||
| 194 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 195 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 196 | + | ||
| 197 | + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | ||
| 198 | + Click Element jquery=a[href^="#/addQuestion/"] | ||
| 199 | + Wait Until Page Contains Element id=title | ||
| 200 | + Input text id=title ${title} | ||
| 201 | + Input text id=description ${description} | ||
| 202 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | ||
| 203 | + | ||
| 204 | +Відповісти на питання | ||
| 205 | + [Arguments] @{ARGUMENTS} | ||
| 206 | + [Documentation] | ||
| 207 | + ... ${ARGUMENTS[0]} = username | ||
| 208 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | ||
| 209 | + ... ${ARGUMENTS[2]} = 0 | ||
| 210 | + ... ${ARGUMENTS[3]} = answer_data | ||
| 211 | + | ||
| 212 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | ||
| 213 | + | ||
| 214 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 215 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 216 | + | ||
| 217 | + Click Element xpath=//div[div/pre[1]]/div[1] | ||
| 218 | + Input text xpath=//div[textarea]/textarea ${answer} | ||
| 219 | + Click Element xpath=//div[textarea]/span/button[1] | ||
| 220 | + | ||
| 59 | обновити сторінку з тендером | 221 | обновити сторінку з тендером |
| 60 | [Arguments] @{ARGUMENTS} | 222 | [Arguments] @{ARGUMENTS} |
| 61 | [Documentation] | 223 | [Documentation] |
| @@ -68,6 +230,61 @@ Login | @@ -68,6 +230,61 @@ Login | ||
| 68 | Wait Until Page Contains ${ARGUMENTS[1]} 10 | 230 | Wait Until Page Contains ${ARGUMENTS[1]} 10 |
| 69 | sleep 1 | 231 | sleep 1 |
| 70 | 232 | ||
| 233 | +Внести зміни в тендер | ||
| 234 | + [Arguments] @{ARGUMENTS} | ||
| 235 | + [Documentation] | ||
| 236 | + ... ${ARGUMENTS[0]} = username | ||
| 237 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | ||
| 238 | + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} single | ||
| 239 | + ${tender_data}= Add_data_for_GUI_FrontEnds ${ADDITIONAL_DATA} | ||
| 240 | + ${items}= Get From Dictionary ${tender_data.data} items | ||
| 241 | + ${description}= Get From Dictionary ${tender_data.data} description | ||
| 242 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 243 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 244 | + Wait Until Page Contains Element xpath=//a[@class='btn btn-primary ng-scope'] 10 | ||
| 245 | + Click Element xpath=//a[@class='btn btn-primary ng-scope'] | ||
| 246 | + Sleep 2 | ||
| 247 | + Input text id=description ${description} | ||
| 248 | + Click Element xpath=//button[@class='btn btn-info ng-isolate-scope'] | ||
| 249 | + Capture Page Screenshot | ||
| 250 | + | ||
| 251 | +додати предмети закупівлі | ||
| 252 | + [Arguments] @{ARGUMENTS} | ||
| 253 | + [Documentation] | ||
| 254 | + ... ${ARGUMENTS[0]} = username | ||
| 255 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | ||
| 256 | + ... ${ARGUMENTS[2]} = 3 | ||
| 257 | + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} multi | ||
| 258 | + ${tender_data}= Add_data_for_GUI_FrontEnds ${ADDITIONAL_DATA} | ||
| 259 | + ${items}= Get From Dictionary ${tender_data.data} items | ||
| 260 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 261 | + Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію | ||
| 262 | + Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' видалити позиції | ||
| 263 | + | ||
| 264 | +додати позицію | ||
| 265 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 266 | + Sleep 2 | ||
| 267 | + Click Element xpath=//a[@class='btn btn-primary ng-scope'] | ||
| 268 | + Sleep 2 | ||
| 269 | + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1 | ||
| 270 | + \ Click Element xpath=.//*[@id='myform']/tender-form/div/button | ||
| 271 | + \ Додати предмет ${items[${INDEX}]} ${INDEX} | ||
| 272 | + Sleep 2 | ||
| 273 | + Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] | ||
| 274 | + Wait Until Page Contains [ТЕСТУВАННЯ] 100 | ||
| 275 | + | ||
| 276 | +видалити позиції | ||
| 277 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 278 | + Click Element xpath=//a[@class='btn btn-primary ng-scope'] | ||
| 279 | + Sleep 2 | ||
| 280 | + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1 | ||
| 281 | + \ Click Element xpath=(//button[@class='btn btn-danger ng-scope'])[last()] | ||
| 282 | + \ Sleep 1 | ||
| 283 | + Sleep 2 | ||
| 284 | + Wait Until Page Contains Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] 10 | ||
| 285 | + Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] | ||
| 286 | + Wait Until Page Contains [ТЕСТУВАННЯ] 100 | ||
| 287 | + | ||
| 71 | отримати інформацію із тендера | 288 | отримати інформацію із тендера |
| 72 | [Arguments] @{ARGUMENTS} | 289 | [Arguments] @{ARGUMENTS} |
| 73 | [Documentation] | 290 | [Documentation] |
| @@ -75,15 +292,9 @@ Login | @@ -75,15 +292,9 @@ Login | ||
| 75 | ... ${ARGUMENTS[1]} == fieldname | 292 | ... ${ARGUMENTS[1]} == fieldname |
| 76 | Switch browser ${ARGUMENTS[0]} | 293 | Switch browser ${ARGUMENTS[0]} |
| 77 | ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} | 294 | ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} |
| 295 | + Log ${return_value} | ||
| 78 | [return] ${return_value} | 296 | [return] ${return_value} |
| 79 | 297 | ||
| 80 | -Відмітити на сторінці поле з тендера | ||
| 81 | - [Arguments] ${fieldname} ${locator} | ||
| 82 | - ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom | ||
| 83 | - Align elements horizontally ${locator} ${last_note_id} | ||
| 84 | - sleep 1 | ||
| 85 | - Remove element ${last_note_id} | ||
| 86 | - | ||
| 87 | Отримати тест із поля і показати на сторінці | 298 | Отримати тест із поля і показати на сторінці |
| 88 | [Arguments] ${fieldname} | 299 | [Arguments] ${fieldname} |
| 89 | sleep 3 | 300 | sleep 3 |
| @@ -91,16 +302,12 @@ Login | @@ -91,16 +302,12 @@ Login | ||
| 91 | ${return_value}= Get Text ${locator.${fieldname}} | 302 | ${return_value}= Get Text ${locator.${fieldname}} |
| 92 | [return] ${return_value} | 303 | [return] ${return_value} |
| 93 | 304 | ||
| 94 | -отримати інформацію про tenderId | ||
| 95 | - ${return_value}= Отримати тест із поля і показати на сторінці tenderId | ||
| 96 | - [return] ${return_value.split(' ')[1]} | ||
| 97 | - | ||
| 98 | отримати інформацію про title | 305 | отримати інформацію про title |
| 99 | ${return_value}= Отримати тест із поля і показати на сторінці title | 306 | ${return_value}= Отримати тест із поля і показати на сторінці title |
| 100 | [return] ${return_value} | 307 | [return] ${return_value} |
| 101 | 308 | ||
| 102 | отримати інформацію про description | 309 | отримати інформацію про description |
| 103 | - ${return_value}= Отримати тест із поля і показати на сторінці description | 310 | + ${return_value}= Отримати тест із поля і показати на сторінці description |
| 104 | [return] ${return_value} | 311 | [return] ${return_value} |
| 105 | 312 | ||
| 106 | отримати інформацію про minimalStep.amount | 313 | отримати інформацію про minimalStep.amount |
| @@ -108,17 +315,28 @@ Login | @@ -108,17 +315,28 @@ Login | ||
| 108 | ${return_value}= Convert To Number ${return_value.split(' ')[0]} | 315 | ${return_value}= Convert To Number ${return_value.split(' ')[0]} |
| 109 | [return] ${return_value} | 316 | [return] ${return_value} |
| 110 | 317 | ||
| 111 | -отримати інформацію про procuringEntity.name | ||
| 112 | - ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | ||
| 113 | - [return] ${return_value} | ||
| 114 | - | ||
| 115 | - | ||
| 116 | отримати інформацію про value.amount | 318 | отримати інформацію про value.amount |
| 117 | - ${return_value}= Отримати тест із поля і показати на сторінці value.amount | 319 | + ${return_value}= Отримати тест із поля і показати на сторінці value.amount |
| 118 | ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) | 320 | ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) |
| 119 | ${return_value}= Convert To Number ${return_value} | 321 | ${return_value}= Convert To Number ${return_value} |
| 120 | [return] ${return_value} | 322 | [return] ${return_value} |
| 121 | 323 | ||
| 324 | +Відмітити на сторінці поле з тендера | ||
| 325 | + [Arguments] ${fieldname} ${locator} | ||
| 326 | + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom | ||
| 327 | + Align elements horizontally ${locator} ${last_note_id} | ||
| 328 | + sleep 1 | ||
| 329 | + Remove element ${last_note_id} | ||
| 330 | + | ||
| 331 | +отримати інформацію про tenderId | ||
| 332 | + ${return_value}= отримати тест із поля і показати на сторінці tenderId | ||
| 333 | + ${return_value}= Get Substring ${return_value} 10 | ||
| 334 | + [return] ${return_value} | ||
| 335 | + | ||
| 336 | +отримати інформацію про procuringEntity.name | ||
| 337 | + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | ||
| 338 | + [return] ${return_value} | ||
| 339 | + | ||
| 122 | отримати інформацію про tenderPeriod.startDate | 340 | отримати інформацію про tenderPeriod.startDate |
| 123 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate | 341 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate |
| 124 | [return] ${return_value} | 342 | [return] ${return_value} |
| @@ -135,7 +353,6 @@ Login | @@ -135,7 +353,6 @@ Login | ||
| 135 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate | 353 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate |
| 136 | [return] ${return_value} | 354 | [return] ${return_value} |
| 137 | 355 | ||
| 138 | - | ||
| 139 | отримати інформацію про items[${item_id}].description | 356 | отримати інформацію про items[${item_id}].description |
| 140 | відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | 357 | відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> |
| 141 | ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | 358 | ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> |
| @@ -190,25 +407,3 @@ Login | @@ -190,25 +407,3 @@ Login | ||
| 190 | відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> | 407 | відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> |
| 191 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> | 408 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> |
| 192 | [return] ${return_value} | 409 | [return] ${return_value} |
| 193 | - | ||
| 194 | -Задати питання | ||
| 195 | - [Arguments] @{QUESTIONS} | ||
| 196 | - [Documentation] | ||
| 197 | - ... ${QUESTIONS[0]} == question_data | ||
| 198 | - Login | ||
| 199 | - ${title}= Get From Dictionary ${QUESTIONS[0].data} title | ||
| 200 | - ${description}= Get From Dictionary ${QUESTIONS[0].data} description | ||
| 201 | - Wait Until Page Contains Element jquery=a[href="#/"] | ||
| 202 | - Click Element jquery=a[href="#/"] | ||
| 203 | - Wait Until Page Contains Element jquery=input[ng-change='search()'] | ||
| 204 | - Input Text jquery=input[ng-change='search()'] UA-2015-06-30-000012 #Так як немає попередніх тестів, використовую хард-код | ||
| 205 | - Wait Until Page Contains Element jquery=a[ng-click="search()"] | ||
| 206 | - Click Element jquery=a[ng-click="search()"] | ||
| 207 | - Wait Until Page Contains [ТЕСТУВАННЯ] 100 | ||
| 208 | - Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a | ||
| 209 | - Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] | ||
| 210 | - Click Link jquery=a[href^="#/addQuestion/"] | ||
| 211 | - Wait Until Page Contains Element id=title | ||
| 212 | - Input text id=title ${title} | ||
| 213 | - Input text id=description ${description} | ||
| 214 | - Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] |
| @@ -3,47 +3,372 @@ Library Selenium2Screenshots | @@ -3,47 +3,372 @@ Library Selenium2Screenshots | ||
| 3 | Library String | 3 | Library String |
| 4 | Library DateTime | 4 | Library DateTime |
| 5 | 5 | ||
| 6 | -*** Variables *** | ||
| 7 | -${locator.tenderId} jquery=h3 | ||
| 8 | -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | ||
| 9 | -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | ||
| 10 | -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)> | ||
| 11 | -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | ||
| 12 | -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)> | ||
| 13 | -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)> | ||
| 14 | -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)> | ||
| 15 | -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)> | ||
| 16 | -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)> | ||
| 17 | 6 | ||
| 7 | +*** Variables *** | ||
| 8 | +${file_path} local_path_to_file("TestDocument.docx") | ||
| 9 | +${locator.tenderId} xpath=//td[./text()='TenderID']/following-sibling::td[1] | ||
| 10 | +${locator.title} xpath=//td[./text()='Загальна назва закупівлі']/following-sibling::td[1] | ||
| 11 | +${locator.description} xpath=//td[./text()='Предмет закупівлі']/following-sibling::td[1] | ||
| 12 | +${locator.value.amount} xpath=//td[./text()='Максимальний бюджет']/following-sibling::td[1] | ||
| 13 | +${locator.minimalStep.amount} xpath=//td[./text()='Крок зменшення ціни']/following-sibling::td[1] | ||
| 14 | +${locator.enquiryPeriod.endDate} xpath=//td[./text()='Завершення періоду обговорення']/following-sibling::td[1] | ||
| 15 | +${locator.tenderPeriod.endDate} xpath=//td[./text()='Завершення періоду прийому пропозицій']/following-sibling::td[1] | ||
| 16 | +${locator.items[0].deliveryAddress.countryName} xpath=//td[@class='nameField'][./text()='Адреса поставки']/following-sibling::td[1] | ||
| 17 | +${locator.items[0].deliveryDate} xpath=//td[./text()='Кінцева дата поставки']/following-sibling::td[1] | ||
| 18 | +${locator.items[0].classification.scheme} xpath=//td[@class = 'nameField'][./text()='Клас CPV'] | ||
| 19 | +${locator.items[0].additionalClassifications[0].scheme} xpath=//td[@class = 'nameField'][./text()='Клас ДКПП'] | ||
| 18 | 20 | ||
| 19 | *** Keywords *** | 21 | *** Keywords *** |
| 20 | Підготувати клієнт для користувача | 22 | Підготувати клієнт для користувача |
| 21 | - [Arguments] ${username} | ||
| 22 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | ||
| 23 | - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username} | ||
| 24 | - Set Window Position @{USERS.users['${username}'].position} | ||
| 25 | - Set Window Size @{USERS.users['${username}'].size} | ||
| 26 | - Log Variables | 23 | + [Arguments] @{ARGUMENTS} |
| 24 | + [Documentation] Відкрити брaузер, створити обєкт api wrapper, тощо | ||
| 25 | + ... ${ARGUMENTS[0]} == username | ||
| 26 | + Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]} | ||
| 27 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | ||
| 28 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | ||
| 29 | + Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]} | ||
| 30 | + Wait Until Page Contains Element jquery=a[href="/cabinet"] | ||
| 31 | + Click Element jquery=a[href="/cabinet"] | ||
| 32 | + Run Keyword If '${username}' != 'Netcast_Viewer' Login | ||
| 33 | + | ||
| 34 | +Login | ||
| 35 | + [Arguments] @{ARGUMENTS} | ||
| 36 | + Wait Until Page Contains Element name=email 10 | ||
| 37 | + Input text name=email mail | ||
| 38 | + Sleep 1 | ||
| 39 | + Input text name=email ${USERS.users['${username}'].login} | ||
| 40 | + Sleep 2 | ||
| 41 | + Input text name=psw ${USERS.users['${username}'].password} | ||
| 42 | + Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 20 | ||
| 43 | + Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] | ||
| 44 | + | ||
| 45 | +Pre Login | ||
| 46 | + [Arguments] @{ARGUMENTS} | ||
| 47 | + [Documentation] | ||
| 48 | + ... ${ARGUMENTS[0]} == username | ||
| 49 | + Wait Until Page Contains Element name=siteLogin 10 | ||
| 50 | + Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login} | ||
| 51 | + Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password} | ||
| 52 | + Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input | ||
| 53 | + | ||
| 54 | +Створити тендер | ||
| 55 | + [Arguments] @{ARGUMENTS} | ||
| 56 | + [Documentation] | ||
| 57 | + ... ${ARGUMENTS[0]} == username | ||
| 58 | + ... ${ARGUMENTS[1]} == tender_data | ||
| 59 | + #{tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | ||
| 60 | + ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | ||
| 61 | + ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | ||
| 62 | + ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | ||
| 63 | + ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | ||
| 64 | + ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | ||
| 65 | + ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description | ||
| 66 | + ${quantity}= Get From Dictionary ${items[0]} quantity | ||
| 67 | + ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName | ||
| 68 | + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | ||
| 69 | + ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date} | ||
| 70 | + ${cpv}= Convert To String Картонки | ||
| 71 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | ||
| 72 | + ${cpv_id1}= Replace String ${cpv_id} - _ | ||
| 73 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | ||
| 74 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | ||
| 75 | + ${dkpp_id1}= Replace String ${dkpp_id} - _ | ||
| 76 | + ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | ||
| 77 | + ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date} | ||
| 78 | + ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | ||
| 79 | + ${end_date}= convert_date_to_slash_format ${end_date} | ||
| 80 | + | ||
| 81 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 82 | + Wait Until Page Contains Element jquery=a[href="/tenders/new"] 100 | ||
| 83 | + Click Element jquery=a[href="/tenders/new"] | ||
| 84 | + Wait Until Page Contains Element name=tender_title 100 | ||
| 85 | + Input text name=tender_title ${title} | ||
| 86 | + Input text name=tender_description ${description} | ||
| 87 | + Input text name=tender_value_amount ${budget} | ||
| 88 | + Input text name=tender_minimalStep_amount ${step_rate} | ||
| 89 | + Input text name=items[0][item_description] ${items_description} | ||
| 90 | + Input text name=items[0][item_quantity] ${quantity} | ||
| 91 | + Input text name=items[0][item_deliveryAddress_countryName] ${countryName} | ||
| 92 | + Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date} | ||
| 93 | + Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'] | ||
| 94 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] | ||
| 95 | + Input text id=search ${cpv} | ||
| 96 | + Wait Until Page Contains ${cpv_id} | ||
| 97 | + Click Element xpath=//a[contains(@id,'${cpv_id1}')] | ||
| 98 | + Click Element xpath=.//*[@id='select'] | ||
| 99 | + Unselect Frame | ||
| 100 | + Click Element xpath=//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'] | ||
| 101 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')] | ||
| 102 | + Input text id=search ${dkpp_desc} | ||
| 103 | + Wait Until Page Contains ${dkpp_id} | ||
| 104 | + Click Element xpath=//a[contains(@id,'${dkpp_id1}')] | ||
| 105 | + Click Element xpath=.//*[@id='select'] | ||
| 106 | + Unselect Frame | ||
| 107 | + Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date} | ||
| 108 | + Input text name=tender_tenderPeriod_endDate ${end_date} | ||
| 109 | + Run Keyword if '${mode}' == 'multi' Додати предмет items | ||
| 110 | + Wait Until Page Contains Element name=do 100 | ||
| 111 | + Click Element name=do | ||
| 112 | + Wait Until Page Contains Element xpath=//a[contains(@class, 'button pubBtn')] 100 | ||
| 113 | + Click Element xpath=//a[contains(@class, 'button pubBtn')] | ||
| 114 | + Wait Until Page Contains Тендер опубліковано 100 | ||
| 115 | + ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2] | ||
| 116 | + ${Ids}= Convert To String ${tender_UAid} | ||
| 117 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | ||
| 118 | + [return] ${Ids} | ||
| 119 | + | ||
| 120 | +Set Multi Ids | ||
| 121 | + [Arguments] @{ARGUMENTS} | ||
| 122 | + [Documentation] | ||
| 123 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | ||
| 124 | + ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2] | ||
| 125 | + ${Ids}= Create List ${tender_UAid} ${id} | ||
| 126 | + | ||
| 127 | +Додати предмет | ||
| 128 | + [Arguments] @{ARGUMENTS} | ||
| 129 | + [Documentation] | ||
| 130 | + ... ${ARGUMENTS[0]} == items | ||
| 131 | + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description | ||
| 132 | + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id | ||
| 133 | + ${dkpp_1id}= Replace String ${dkpp_id11} - _ | ||
| 134 | + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description | ||
| 135 | + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id | ||
| 136 | + ${dkpp_id2_1}= Replace String ${dkpp_id2} - _ | ||
| 137 | + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description | ||
| 138 | + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id | ||
| 139 | + ${dkpp_id3_1}= Replace String ${dkpp_id3} - _ | ||
| 140 | + | ||
| 141 | + Wait Until Page Contains Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі'] | ||
| 142 | + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі'] | ||
| 143 | + Wait Until Page Contains Element name=items[1][item_description] 100 | ||
| 144 | + Input text name=items[1][item_description] ${description} | ||
| 145 | + Input text name=items[1][item_quantity] ${quantity} | ||
| 146 | + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[2] | ||
| 147 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] | ||
| 148 | + Input text id=search ${cpv} | ||
| 149 | + Wait Until Page Contains ${cpv_id} | ||
| 150 | + Click Element xpath=//a[contains(@id,'${cpv_id1}')] | ||
| 151 | + Click Element xpath=.//*[@id='select'] | ||
| 152 | + Unselect Frame | ||
| 153 | + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[2] | ||
| 154 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')] | ||
| 155 | + Input text id=search ${dkpp_desc1} | ||
| 156 | + Wait Until Page Contains ${dkpp_id11} | ||
| 157 | + Click Element xpath=//a[contains(@id,'${dkpp_1id}')] | ||
| 158 | + Click Element xpath=.//*[@id='select'] | ||
| 159 | + Unselect Frame | ||
| 160 | + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі'] | ||
| 161 | + Wait Until Page Contains Element name=items[2][item_description] 100 | ||
| 162 | + Input text name=items[2][item_description] ${description} | ||
| 163 | + Input text name=items[2][item_quantity] ${quantity} | ||
| 164 | + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[3] | ||
| 165 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] | ||
| 166 | + Input text id=search ${cpv} | ||
| 167 | + Wait Until Page Contains ${cpv_id} | ||
| 168 | + Click Element xpath=//a[contains(@id,'${cpv_id1}')] | ||
| 169 | + Click Element xpath=.//*[@id='select'] | ||
| 170 | + Unselect Frame | ||
| 171 | + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[3] | ||
| 172 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')] | ||
| 173 | + Input text id=search ${dkpp_desc2} | ||
| 174 | + Wait Until Page Contains ${dkpp_id2} | ||
| 175 | + Click Element xpath=//a[contains(@id,'${dkpp_id2_1}')] | ||
| 176 | + Click Element xpath=.//*[@id='select'] | ||
| 177 | + Unselect Frame | ||
| 178 | + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі'] | ||
| 179 | + Wait Until Page Contains Element name=items[3][item_description] 100 | ||
| 180 | + Input text name=items[3][item_description] ${description} | ||
| 181 | + Input text name=items[3][item_quantity] ${quantity} | ||
| 182 | + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[4] | ||
| 183 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] | ||
| 184 | + Input text id=search ${cpv} | ||
| 185 | + Wait Until Page Contains ${cpv_id} | ||
| 186 | + Click Element xpath=//a[contains(@id,'${cpv_id1}')] | ||
| 187 | + Click Element xpath=.//*[@id='select'] | ||
| 188 | + Unselect Frame | ||
| 189 | + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[4] | ||
| 190 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')] | ||
| 191 | + Input text id=search ${dkpp_desc3} | ||
| 192 | + Wait Until Page Contains ${dkpp_id3} | ||
| 193 | + Click Element xpath=//a[contains(@id,'${dkpp_id3_1}')] | ||
| 194 | + Click Element xpath=.//*[@id='select'] | ||
| 195 | + Unselect Frame | ||
| 196 | + Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date} | ||
| 197 | + Input text name=tender_tenderPeriod_endDate ${end_date} | ||
| 27 | 198 | ||
| 28 | Пошук тендера по ідентифікатору | 199 | Пошук тендера по ідентифікатору |
| 29 | [Arguments] @{ARGUMENTS} | 200 | [Arguments] @{ARGUMENTS} |
| 30 | [Documentation] | 201 | [Documentation] |
| 31 | ... ${ARGUMENTS[0]} == username | 202 | ... ${ARGUMENTS[0]} == username |
| 32 | ... ${ARGUMENTS[1]} == tenderId | 203 | ... ${ARGUMENTS[1]} == tenderId |
| 33 | - ... ${ARGUMENTS[2]} == id | ||
| 34 | Switch browser ${ARGUMENTS[0]} | 204 | Switch browser ${ARGUMENTS[0]} |
| 35 | - ${current_location}= Get Location | ||
| 36 | - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | ||
| 37 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} | 205 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
| 38 | - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10 | 206 | + Wait Until Page Contains Держзакупівлі.онлайн 10 |
| 207 | + Click Element xpath=//a[text()='Закупівлі'] | ||
| 39 | sleep 1 | 208 | sleep 1 |
| 40 | - Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} | ||
| 41 | - Click Link jquery=a[ng-click='search()'] | ||
| 42 | - sleep 2 | ||
| 43 | - ${last_note_id}= Add pointy note jquery=a[href^="#/tenderDetailes"] Found tender with tenderID "${ARGUMENTS[1]}" width=200 position=bottom | 209 | + Click Element xpath=//select[@name='filter[object]']/option[@value='tenderID'] |
| 210 | + Input text xpath=//input[@name='filter[search]'] ${ARGUMENTS[1]} | ||
| 211 | + Click Element xpath=//button[@class='btn'][./text()='Пошук'] | ||
| 212 | + Wait Until Page Contains ${ARGUMENTS[1]} 10 | ||
| 213 | + Capture Page Screenshot | ||
| 44 | sleep 1 | 214 | sleep 1 |
| 45 | - Remove element ${last_note_id} | ||
| 46 | - Click Link jquery=a[href^="#/tenderDetailes"] | ||
| 47 | - Wait Until Page Contains ${ARGUMENTS[1]} 10 | 215 | + Click Element xpath=//a[@class='reverse tenderLink'] |
| 216 | + | ||
| 217 | +Задати питання | ||
| 218 | + [Arguments] @{ARGUMENTS} | ||
| 219 | + [Documentation] | ||
| 220 | + ... ${ARGUMENTS[0]} == username | ||
| 221 | + ... ${ARGUMENTS[1]} == tenderUaId | ||
| 222 | + ... ${ARGUMENTS[2]} == questionId | ||
| 223 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | ||
| 224 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | ||
| 225 | + | ||
| 226 | + | ||
| 227 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 228 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 229 | + | ||
| 230 | + Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20 | ||
| 231 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | ||
| 232 | + Wait Until Page Contains Element name=title 20 | ||
| 233 | + Input text name=title ${title} | ||
| 234 | + Input text xpath=//textarea[@name='description'] ${description} | ||
| 235 | + Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit'] | ||
| 236 | + Wait Until Page Contains ${title} 30 | ||
| 237 | + Capture Page Screenshot | ||
| 238 | + | ||
| 239 | +Відповісти на питання | ||
| 240 | + [Arguments] @{ARGUMENTS} | ||
| 241 | + [Documentation] | ||
| 242 | + ... ${ARGUMENTS[0]} = username | ||
| 243 | + ... ${ARGUMENTS[1]} = tenderUaId | ||
| 244 | + ... ${ARGUMENTS[2]} = 0 | ||
| 245 | + ... ${ARGUMENTS[3]} = answer_data | ||
| 246 | + | ||
| 247 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | ||
| 248 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 249 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 250 | + | ||
| 251 | + Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20 | ||
| 252 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | ||
| 253 | + Wait Until Page Contains Element xpath=//textarea[@name='answer'] 20 | ||
| 254 | + Input text xpath=//textarea[@name='answer'] ${answer} | ||
| 255 | + Click Element xpath=//div[1]/div[3]/form/div/table/tbody/tr/td[2]/button | ||
| 256 | + Wait Until Page Contains ${answer} 30 | ||
| 257 | + Capture Page Screenshot | ||
| 258 | + | ||
| 259 | +Подати скаргу | ||
| 260 | + [Arguments] @{ARGUMENTS} | ||
| 261 | + [Documentation] | ||
| 262 | + ... ${ARGUMENTS[0]} = username | ||
| 263 | + ... ${ARGUMENTS[1]} = tenderUaId | ||
| 264 | + ... ${ARGUMENTS[2]} = complaintsId | ||
| 265 | + ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title | ||
| 266 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | ||
| 267 | + | ||
| 268 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 269 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 270 | + sleep 1 | ||
| 271 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']] | ||
| 272 | + Wait Until Page Contains Element name=title 20 | ||
| 273 | + Input text name=title ${complaint} | ||
| 274 | + Input text xpath=//textarea[@name='description'] ${description} | ||
| 275 | + Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit'] | ||
| 276 | + Wait Until Page Contains ${complaint} 30 | ||
| 277 | + Capture Page Screenshot | ||
| 278 | + | ||
| 279 | +Порівняти скаргу | ||
| 280 | + [Arguments] @{ARGUMENTS} | ||
| 281 | + [Documentation] | ||
| 282 | + ... ${ARGUMENTS[0]} = username | ||
| 283 | + ... ${ARGUMENTS[1]} = tenderUaId | ||
| 284 | + ... ${ARGUMENTS[2]} = complaintsData | ||
| 285 | + ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title | ||
| 286 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | ||
| 287 | + | ||
| 288 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 289 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 290 | + sleep 1 | ||
| 291 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']] | ||
| 292 | + Wait Until Page Contains ${complaint} 30 | ||
| 293 | + Capture Page Screenshot | ||
| 294 | + | ||
| 295 | + | ||
| 296 | + | ||
| 297 | +Внести зміни в тендер | ||
| 298 | + # Тест написано для уже існуючого тендеру, що знаходиться у чернетках користувача | ||
| 299 | + [Arguments] @{ARGUMENTS} | ||
| 300 | + [Documentation] | ||
| 301 | + ... ${ARGUMENTS[0]} = username | ||
| 302 | + ... ${ARGUMENTS[1]} = description | ||
| 303 | + | ||
| 304 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 305 | + Click Element xpath=//a[@class='reverse'][./text()='Мої закупівлі'] | ||
| 306 | + Wait Until Page Contains Element xpath=//a[@class='reverse'][./text()='Чернетки'] 30 | ||
| 307 | + Click Element xpath=//a[@class='reverse'][./text()='Чернетки'] | ||
| 308 | + Wait Until Page Contains Element xpath=//a[@class='reverse tenderLink'] 30 | ||
| 309 | + Click Element xpath=//a[@class='reverse tenderLink'] | ||
| 310 | + sleep 1 | ||
| 311 | + Click Element xpath=//a[@class='button save'][./text()='Редагувати'] | ||
| 312 | + sleep 1 | ||
| 313 | + Input text name=tender_title ${ARGUMENTS[1]} | ||
| 48 | sleep 1 | 314 | sleep 1 |
| 49 | - Capture Page Screenshot | ||
| 315 | + Click Element xpath=//button[@class='saveDraft'] | ||
| 316 | + Wait Until Page Contains ${ARGUMENTS[1]} 30 | ||
| 317 | + Capture Page Screenshot | ||
| 318 | + | ||
| 319 | +отримати інформацію із тендера | ||
| 320 | + [Arguments] @{ARGUMENTS} | ||
| 321 | + [Documentation] | ||
| 322 | + ... ${ARGUMENTS[0]} == username | ||
| 323 | + ... ${ARGUMENTS[1]} == fieldname | ||
| 324 | + Switch browser ${ARGUMENTS[0]} | ||
| 325 | + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} | ||
| 326 | + [return] ${return_value} | ||
| 327 | + | ||
| 328 | +отримати тест із поля і показати на сторінці | ||
| 329 | + [Arguments] ${fieldname} | ||
| 330 | + sleep 5 | ||
| 331 | + ${return_value}= Get Text ${locator.${fieldname}} | ||
| 332 | + [return] ${return_value} | ||
| 333 | + | ||
| 334 | +отримати інформацію про title | ||
| 335 | + ${title}= отримати тест із поля і показати на сторінці title | ||
| 336 | + [return] ${title} | ||
| 337 | + | ||
| 338 | +отримати інформацію про description | ||
| 339 | + ${description}= отримати тест із поля і показати на сторінці description | ||
| 340 | + [return] ${description} | ||
| 341 | + | ||
| 342 | +отримати інформацію про tenderId | ||
| 343 | + ${tenderId}= отримати тест із поля і показати на сторінці tenderId | ||
| 344 | + [return] ${tenderId} | ||
| 345 | + | ||
| 346 | +отримати інформацію про value.amount | ||
| 347 | + ${valueAmount}= отримати тест із поля і показати на сторінці value.amount | ||
| 348 | + ${valueAmount}= Convert To Number ${valueAmount.split(' ')[0]} | ||
| 349 | + [return] ${valueAmount} | ||
| 350 | + | ||
| 351 | +отримати інформацію про minimalStep.amount | ||
| 352 | + ${minimalStepAmount}= отримати тест із поля і показати на сторінці minimalStep.amount | ||
| 353 | + ${minimalStepAmount}= Convert To Number ${minimalStepAmount.split(' ')[0]} | ||
| 354 | + [return] ${minimalStepAmount} | ||
| 355 | + | ||
| 356 | +отримати інформацію про enquiryPeriod.endDate | ||
| 357 | + ${enquiryPeriodEndDate}= отримати тест із поля і показати на сторінці enquiryPeriod.endDate | ||
| 358 | + [return] ${enquiryPeriodEndDate} | ||
| 359 | + | ||
| 360 | +отримати інформацію про tenderPeriod.endDate | ||
| 361 | + ${tenderPeriodEndDate}= отримати тест із поля і показати на сторінці tenderPeriod.endDate | ||
| 362 | + [return] ${tenderPeriodEndDate} | ||
| 363 | + | ||
| 364 | +отримати інформацію про items[0].deliveryAddress.countryName | ||
| 365 | + ${countryName}= отримати тест із поля і показати на сторінці items[0].deliveryAddress.countryName | ||
| 366 | + [return] ${countryName} | ||
| 367 | + | ||
| 368 | +отримати інформацію про items[0].classification.scheme | ||
| 369 | + ${classificationScheme}= отримати тест із поля і показати на сторінці items[0].classification.scheme | ||
| 370 | + [return] ${classificationScheme.split(' ')[1]} | ||
| 371 | + | ||
| 372 | +отримати інформацію про items[0].additionalClassifications[0].scheme | ||
| 373 | + ${additionalClassificationsScheme}= отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].scheme | ||
| 374 | + [return] ${additionalClassificationsScheme.split(' ')[1]} |
| 1 | +*** Setting *** | ||
| 2 | +Library Selenium2Screenshots | ||
| 3 | +Library String | ||
| 4 | +Library DateTime | ||
| 5 | + | ||
| 6 | +*** Variables *** | ||
| 7 | +${locator.tenderId} jquery=h3 | ||
| 8 | + | ||
| 9 | +*** Keywords *** | ||
| 10 | +Підготувати дані для оголошення тендера | ||
| 11 | + ${INITIAL_TENDER_DATA}= prepare_test_tender_data | ||
| 12 | + [return] ${INITIAL_TENDER_DATA} | ||
| 13 | + | ||
| 14 | +Підготувати клієнт для користувача | ||
| 15 | + [Arguments] @{ARGUMENTS} | ||
| 16 | + [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | ||
| 17 | + ... ${ARGUMENTS[0]} == username | ||
| 18 | + Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | ||
| 19 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | ||
| 20 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | ||
| 21 | + | ||
| 22 | +# sleep 10 | ||
| 23 | + Run Keyword If '${username}' != 'Newtend_Viewer' Login | ||
| 24 | + | ||
| 25 | +Login | ||
| 26 | + Wait Until Page Contains Element id=indexpage_login 20 | ||
| 27 | + Click Element id=indexpage_login | ||
| 28 | + Wait Until Page Contains Element id=password 20 | ||
| 29 | + Input text id=login-email ${USERS.users['${username}'].login} | ||
| 30 | + Input text id=password ${USERS.users['${username}'].password} | ||
| 31 | + Click Element id=submit-login-button | ||
| 32 | + Wait Until Page Contains Element xpath =//a[@class="close-modal-dialog"] 20 | ||
| 33 | + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage} | ||
| 34 | +# Wait Until Page Contains Element xpath=//div[@class="introjs-overlay"] 20 | ||
| 35 | + | ||
| 36 | +Створити тендер | ||
| 37 | + [Arguments] @{ARGUMENTS} | ||
| 38 | + [Documentation] | ||
| 39 | + ... ${ARGUMENTS[0]} == username | ||
| 40 | + ... ${ARGUMENTS[1]} == initial_tender_data | ||
| 41 | +## Inicialisation | ||
| 42 | + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | ||
| 43 | + ${items}= Get From Dictionary ${prepared_tender_data.data} items | ||
| 44 | + ${title}= Get From Dictionary ${prepared_tender_data.data} title | ||
| 45 | + ${description}= Get From Dictionary ${prepared_tender_data.data} description | ||
| 46 | + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount | ||
| 47 | + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount | ||
| 48 | + ${start_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate | ||
| 49 | + ${end_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate | ||
| 50 | + ${enquiry_start_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} startDate | ||
| 51 | + ${enquiry_end_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate | ||
| 52 | + | ||
| 53 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 54 | + Go To ${USERS.users['${username}'].homepage} | ||
| 55 | + Wait Until Page Contains Element xpath=//a[@href="#/create-tender"] 100 | ||
| 56 | + Click Link xpath=//a[@href="#/create-tender"] | ||
| 57 | + Wait Until Page Contains Новый тендер 100 | ||
| 58 | +# Input fields tender | ||
| 59 | + Input text name=tenderName ${title} | ||
| 60 | + Input text name=tenderDescription ${description} | ||
| 61 | + Input text id=budget ${budget} | ||
| 62 | + Click Element id=with-nds | ||
| 63 | + Input text id=step ${step_rate} | ||
| 64 | +# Add Item(s) | ||
| 65 | + Додати придмет ${items[0]} 0 | ||
| 66 | + Run Keyword If '${mode}' == 'multi' Додати багато придметів items | ||
| 67 | +# Set tender datatimes | ||
| 68 | + Set datetime start-date-registration ${start_date} | ||
| 69 | + Set datetime end-date-registration ${end_date} | ||
| 70 | + Set datetime end-date-qualification ${enquiry_end_date} | ||
| 71 | + Set datetime start-date-qualification ${enquiry_start_date} | ||
| 72 | +# Save | ||
| 73 | + Click Element xpath=//button[@class="btn btn-lg btn-default cancel pull-right ng-binding"] | ||
| 74 | + Wait Until Page Contains Element xpath=//div[@ng-click="goHome()"] 30 | ||
| 75 | + Click Element xpath=//div[@ng-click="goHome()"] | ||
| 76 | +# Get Ids | ||
| 77 | + Wait Until Page Contains Element xpath=//div[@class="title"] 30 | ||
| 78 | + ${tender_UAid}= Get Text xpath=//div[@class="title"] | ||
| 79 | + ${Ids}= Convert To String ${tender_UAid} | ||
| 80 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | ||
| 81 | + [return] ${Ids} | ||
| 82 | + | ||
| 83 | +Set Multi Ids | ||
| 84 | + [Arguments] @{ARGUMENTS} | ||
| 85 | + [Documentation] | ||
| 86 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | ||
| 87 | + ${current_location}= Get Location | ||
| 88 | + ${id}= Get Substring ${current_location} -41 -9 | ||
| 89 | + ${Ids}= Create List ${tender_UAid} ${id} | ||
| 90 | + | ||
| 91 | +Set datetime | ||
| 92 | + [Arguments] @{ARGUMENTS} | ||
| 93 | + [Documentation] | ||
| 94 | + ... ${ARGUMENTS[0]} == control_id | ||
| 95 | + ... ${ARGUMENTS[1]} == date | ||
| 96 | +#Pick Date | ||
| 97 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/../span[@class="calendar-btn"] | ||
| 98 | + Wait Until Page Contains Element xpath=//td[@class="text-center ng-scope"] 30 | ||
| 99 | + ${datapicker_id}= Get Element Attribute xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@class="text-center ng-scope"]@id | ||
| 100 | + ${datapicker_id}= Get Substring ${datapicker_id} 0 -1 | ||
| 101 | + ${date_index}= newtend_date_picker_index ${ARGUMENTS[1]} | ||
| 102 | + ${datapicker_id}= Convert To String ${datapicker_id}${date_index} | ||
| 103 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@id="${datapicker_id}"]/button | ||
| 104 | +#Set time | ||
| 105 | + ${hous}= Get Substring ${ARGUMENTS[1]} 11 13 | ||
| 106 | + ${minutes}= Get Substring ${ARGUMENTS[1]} 14 16 | ||
| 107 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="hours"] ${hous} | ||
| 108 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="minutes"] ${minutes} | ||
| 109 | + | ||
| 110 | +Додати придмет | ||
| 111 | + [Arguments] @{ARGUMENTS} | ||
| 112 | + [Documentation] | ||
| 113 | + ... ${ARGUMENTS[0]} == items_n | ||
| 114 | + ... ${ARGUMENTS[1]} == index | ||
| 115 | +## Get values for item | ||
| 116 | + ${items_description}= Get From Dictionary ${ARGUMENTS[0]} description | ||
| 117 | + ${quantity}= Get From Dictionary ${ARGUMENTS[0]} quantity | ||
| 118 | + ${cpv}= Convert To String Картонки | ||
| 119 | + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | ||
| 120 | + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | ||
| 121 | + ${unit}= Get From Dictionary ${ARGUMENTS[0].unit} name | ||
| 122 | + ${deliverydate_end_date}= Get From Dictionary ${ARGUMENTS[0].deliveryDate} endDate | ||
| 123 | + ${countryName}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} countryName | ||
| 124 | + ${ZIP}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} postalCode | ||
| 125 | + ${region}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} region | ||
| 126 | + ${locality}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} locality | ||
| 127 | + ${streetAddress}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} streetAddress | ||
| 128 | +# Add item | ||
| 129 | + Input text id=itemDescription${ARGUMENTS[1]} ${items_description} | ||
| 130 | + Input text id=quantity${ARGUMENTS[1]} ${quantity} | ||
| 131 | + Click Element xpath=//a[contains(text(), "единицы измерения")] | ||
| 132 | + Click Element xpath=//a[contains(text(), "единицы измерения")]/..//a[contains(text(), '${unit}')] | ||
| 133 | +# Set CPV | ||
| 134 | + Click Element id=classifier1${ARGUMENTS[1]} | ||
| 135 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | ||
| 136 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${cpv} | ||
| 137 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${cpv}')] 20 | ||
| 138 | + Click Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] | ||
| 139 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | ||
| 140 | +# Set ДКПП | ||
| 141 | + Click Element id=classifier2${ARGUMENTS[1]} | ||
| 142 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | ||
| 143 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${dkpp_desc} | ||
| 144 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${dkpp_id}')] 100 | ||
| 145 | + Click Element xpath=//span[contains(text(),'${dkpp_id}')]/../..//input[@class="ng-pristine ng-untouched ng-valid"] | ||
| 146 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | ||
| 147 | +# Set Delivery Address | ||
| 148 | + Click Element id=deliveryAddress${ARGUMENTS[1]} | ||
| 149 | + Wait Until Page Contains Element xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] 100 | ||
| 150 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${countryName} | ||
| 151 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${ZIP} | ||
| 152 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${region} | ||
| 153 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${locality} | ||
| 154 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${streetAddress} | ||
| 155 | + Click Element xpath=//button[@class="btn btn-lg single-btn ng-binding"] | ||
| 156 | +# Set Item Datetime | ||
| 157 | + Set datetime end-date-delivery${ARGUMENTS[1]} ${deliverydate_end_date} | ||
| 158 | + | ||
| 159 | +Додати багато придметів | ||
| 160 | + [Arguments] @{ARGUMENTS} | ||
| 161 | + [Documentation] | ||
| 162 | + ... ${ARGUMENTS[0]} == items | ||
| 163 | + ${Items_length}= Get Length ${items} | ||
| 164 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | ||
| 165 | + \ Click Element xpath=//a[@class="icon-black plus-black remove-field ng-scope"] | ||
| 166 | + \ Додати придмет ${items[${INDEX}]} ${INDEX} | ||
| 167 | + | ||
| 168 | +Пошук тендера по ідентифікатору | ||
| 169 | + [Arguments] @{ARGUMENTS} | ||
| 170 | + [Documentation] | ||
| 171 | + ... ${ARGUMENTS[0]} == username | ||
| 172 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | ||
| 173 | + Switch browser ${ARGUMENTS[0]} | ||
| 174 | + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage} | ||
| 175 | + Wait Until Page Contains Element xpath=//div[@class="search-field"]/input 20 | ||
| 176 | +# ${ARGUMENTS[1]}= Convert To String UA-2015-06-08-000023 | ||
| 177 | + Input text xpath=//div[@class="search-field"]/input ${ARGUMENTS[1]} | ||
| 178 | + : FOR ${INDEX} IN RANGE 1 30 | ||
| 179 | + \ Log To Console . no_newline=true | ||
| 180 | +# \ sleep 1 | ||
| 181 | + \ ${count}= Get Matching Xpath Count xpath=//a[@class="row tender-info ng-scope"] | ||
| 182 | + \ Exit For Loop If '${count}' == '1' | ||
| 183 | + Click Element xpath=//a[@class="row tender-info ng-scope"] | ||
| 184 | + Wait Until Page Contains Element xpath=//a[@class="ng-binding ng-scope"] 30 | ||
| 185 | + ${fould_title}= Get Text xpath=//a[@class="ng-binding ng-scope"] | ||
| 186 | + Should Be Equal ${fould_title} ${ARGUMENTS[1]} |
| @@ -7,28 +7,46 @@ ${item_id} 0 | @@ -7,28 +7,46 @@ ${item_id} 0 | ||
| 7 | ${question_id} 0 | 7 | ${question_id} 0 |
| 8 | 8 | ||
| 9 | *** Keywords *** | 9 | *** Keywords *** |
| 10 | +отримати internal id по UAid | ||
| 11 | + [Arguments] @{ARGUMENTS} | ||
| 12 | + [Documentation] | ||
| 13 | + ... ${ARGUMENTS[0]} == username | ||
| 14 | + ... ${ARGUMENTS[1]} == tenderid | ||
| 15 | + log many @{ARGUMENTS} | ||
| 16 | + ${tenders}= get_internal_id ${USERS.users['${ARGUMENTS[0]}'].client.get_tenders} ${USERS.users['${ARGUMENTS[0]}'].creation_date} | ||
| 17 | + :FOR ${tender} IN @{tenders} | ||
| 18 | + \ log ${tender} | ||
| 19 | + \ ${internal_id}= Run Keyword And Return If '${tender.tenderID}' == '${ARGUMENTS[1]}' Get Variable Value ${tender.id} | ||
| 20 | + \ Exit For Loop If '${tender.tenderID}' == '${ARGUMENTS[1]}' | ||
| 21 | + log ${internal_id} | ||
| 22 | + log ${tenders} | ||
| 23 | + [return] ${internal_id} | ||
| 24 | + | ||
| 25 | + | ||
| 10 | Підготувати клієнт для користувача | 26 | Підготувати клієнт для користувача |
| 11 | [Arguments] @{ARGUMENTS} | 27 | [Arguments] @{ARGUMENTS} |
| 12 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 28 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
| 13 | - ${api_wrapper}= prepare_api_wrapper ${USERS.users['${ARGUMENTS[0]}'].api_key} ${API_HOST_URL} ${api_version} | 29 | + ${api_wrapper}= prepare_api_wrapper ${USERS.users['${ARGUMENTS[0]}'].api_key} ${API_HOST_URL} ${api_version} |
| 30 | + ${creation_date} = get_date | ||
| 31 | + Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} creation_date ${creation_date} | ||
| 14 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} client ${api_wrapper} | 32 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} client ${api_wrapper} |
| 15 | Log Variables | 33 | Log Variables |
| 16 | - | ||
| 17 | -Підготувати дані для оголошення тендера | 34 | + |
| 35 | +Підготувати дані для оголошення тендера | ||
| 18 | ${INITIAL_TENDER_DATA}= prepare_test_tender_data | 36 | ${INITIAL_TENDER_DATA}= prepare_test_tender_data |
| 19 | [return] ${INITIAL_TENDER_DATA} | 37 | [return] ${INITIAL_TENDER_DATA} |
| 20 | - | 38 | + |
| 21 | Створити тендер | 39 | Створити тендер |
| 22 | [Arguments] @{ARGUMENTS} | 40 | [Arguments] @{ARGUMENTS} |
| 23 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_tender ${ARGUMENTS[1]} | 41 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_tender ${ARGUMENTS[1]} |
| 24 | Log object data ${TENDER_DATA} cteated_tender | 42 | Log object data ${TENDER_DATA} cteated_tender |
| 25 | ${access_token}= Get Variable Value ${TENDER_DATA.access.token} | 43 | ${access_token}= Get Variable Value ${TENDER_DATA.access.token} |
| 26 | - Set Global Variable ${access_token} | ||
| 27 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} access_token ${access_token} | 44 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} access_token ${access_token} |
| 28 | - Log access_token: ${access_token} | ||
| 29 | - Log tender_id: ${TENDER_DATA.data.id} | ||
| 30 | - Set Global Variable ${TENDER_DATA} | ||
| 31 | - [return] ${TENDER_DATA.data.tenderID} ${TENDER_DATA.data.id} | 45 | + Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} TENDER_DATA ${TENDER_DATA} |
| 46 | + Log ${access_token} | ||
| 47 | + Log ${TENDER_DATA.data.id} | ||
| 48 | + Log ${USERS.users['${ARGUMENTS[0]}'].TENDER_DATA} | ||
| 49 | + [return] ${TENDER_DATA.data.tenderID} | ||
| 32 | 50 | ||
| 33 | Створити багатопредметний тендер | 51 | Створити багатопредметний тендер |
| 34 | [Arguments] @{ARGUMENTS} | 52 | [Arguments] @{ARGUMENTS} |
| @@ -43,27 +61,24 @@ ${question_id} 0 | @@ -43,27 +61,24 @@ ${question_id} 0 | ||
| 43 | Log tender_id: ${TENDER_DATA.data.id} | 61 | Log tender_id: ${TENDER_DATA.data.id} |
| 44 | Set Global Variable ${TENDER_DATA} | 62 | Set Global Variable ${TENDER_DATA} |
| 45 | [return] ${TENDER_DATA} | 63 | [return] ${TENDER_DATA} |
| 46 | - | 64 | + |
| 47 | Пошук тендера по ідентифікатору | 65 | Пошук тендера по ідентифікатору |
| 48 | [Arguments] @{ARGUMENTS} | 66 | [Arguments] @{ARGUMENTS} |
| 49 | [Documentation] | 67 | [Documentation] |
| 50 | ... ${ARGUMENTS[0]} == username | 68 | ... ${ARGUMENTS[0]} == username |
| 51 | ... ${ARGUMENTS[1]} == tenderId | 69 | ... ${ARGUMENTS[1]} == tenderId |
| 52 | - ... ${ARGUMENTS[2]} == id | ||
| 53 | - ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[2]} | 70 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 71 | + ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 54 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data} | 72 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data} |
| 55 | [return] ${tender_data} | 73 | [return] ${tender_data} |
| 56 | 74 | ||
| 57 | - | ||
| 58 | Обновити сторінку з тендером | 75 | Обновити сторінку з тендером |
| 59 | [Arguments] @{ARGUMENTS} | 76 | [Arguments] @{ARGUMENTS} |
| 60 | [Documentation] | 77 | [Documentation] |
| 61 | ... ${ARGUMENTS[0]} == username | 78 | ... ${ARGUMENTS[0]} == username |
| 62 | ... ${ARGUMENTS[1]} == tenderId | 79 | ... ${ARGUMENTS[1]} == tenderId |
| 63 | - ... ${ARGUMENTS[2]} == id | ||
| 64 | openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS} | 80 | openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS} |
| 65 | 81 | ||
| 66 | - | ||
| 67 | отримати інформацію із тендера | 82 | отримати інформацію із тендера |
| 68 | [Arguments] @{ARGUMENTS} | 83 | [Arguments] @{ARGUMENTS} |
| 69 | [Documentation] | 84 | [Documentation] |
| @@ -74,7 +89,6 @@ ${question_id} 0 | @@ -74,7 +89,6 @@ ${question_id} 0 | ||
| 74 | log ${field_value} | 89 | log ${field_value} |
| 75 | [return] ${field_value} | 90 | [return] ${field_value} |
| 76 | 91 | ||
| 77 | - | ||
| 78 | Внести зміни в тендер | 92 | Внести зміни в тендер |
| 79 | [Arguments] @{ARGUMENTS} | 93 | [Arguments] @{ARGUMENTS} |
| 80 | [Documentation] | 94 | [Documentation] |
| @@ -82,11 +96,11 @@ ${question_id} 0 | @@ -82,11 +96,11 @@ ${question_id} 0 | ||
| 82 | ... ${ARGUMENTS[1]} == id | 96 | ... ${ARGUMENTS[1]} == id |
| 83 | ... ${ARGUMENTS[2]} == fieldname | 97 | ... ${ARGUMENTS[2]} == fieldname |
| 84 | ... ${ARGUMENTS[3]} == fieldvalue | 98 | ... ${ARGUMENTS[3]} == fieldvalue |
| 85 | - отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]} | 99 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 100 | + отримати тендер ${ARGUMENTS[0]} ${internalid} | ||
| 86 | Set_To_Object ${TENDER_DATA.data} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | 101 | Set_To_Object ${TENDER_DATA.data} ${ARGUMENTS[2]} ${ARGUMENTS[3]} |
| 87 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 102 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 88 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} | 103 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} |
| 89 | - | ||
| 90 | Set Global Variable ${TENDER_DATA} | 104 | Set Global Variable ${TENDER_DATA} |
| 91 | 105 | ||
| 92 | отримати тендер | 106 | отримати тендер |
| @@ -105,7 +119,8 @@ ${question_id} 0 | @@ -105,7 +119,8 @@ ${question_id} 0 | ||
| 105 | ... ${ARGUMENTS[0]} == username | 119 | ... ${ARGUMENTS[0]} == username |
| 106 | ... ${ARGUMENTS[1]} == id | 120 | ... ${ARGUMENTS[1]} == id |
| 107 | ... ${ARGUMENTS[2]} == number | 121 | ... ${ARGUMENTS[2]} == number |
| 108 | - отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]} | 122 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 123 | + отримати тендер ${ARGUMENTS[0]} ${internalid} | ||
| 109 | ${items}= get from object ${TENDER_DATA.data} items | 124 | ${items}= get from object ${TENDER_DATA.data} items |
| 110 | log ${items} | 125 | log ${items} |
| 111 | :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]} | 126 | :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]} |
| @@ -121,7 +136,8 @@ ${question_id} 0 | @@ -121,7 +136,8 @@ ${question_id} 0 | ||
| 121 | ... ${ARGUMENTS[0]} == username | 136 | ... ${ARGUMENTS[0]} == username |
| 122 | ... ${ARGUMENTS[1]} == id | 137 | ... ${ARGUMENTS[1]} == id |
| 123 | ... ${ARGUMENTS[2]} == number | 138 | ... ${ARGUMENTS[2]} == number |
| 124 | - отримати тендер ${ARGUMENTS[0]} ${ARGUMENTS[1]} | 139 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 140 | + отримати тендер ${ARGUMENTS[0]} ${internalid} | ||
| 125 | ${items}= get from object ${TENDER_DATA.data} items | 141 | ${items}= get from object ${TENDER_DATA.data} items |
| 126 | ${item}= get variable value ${items[1]} | 142 | ${item}= get variable value ${items[1]} |
| 127 | log ${items} | 143 | log ${items} |
| @@ -131,20 +147,21 @@ ${question_id} 0 | @@ -131,20 +147,21 @@ ${question_id} 0 | ||
| 131 | Set_To_Object ${TENDER_DATA.data} items ${items} | 147 | Set_To_Object ${TENDER_DATA.data} items ${items} |
| 132 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 148 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 133 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} | 149 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} |
| 134 | - | 150 | + |
| 135 | 151 | ||
| 136 | Задати питання | 152 | Задати питання |
| 137 | [Documentation] | 153 | [Documentation] |
| 138 | ... ${ARGUMENTS[0]} == username | 154 | ... ${ARGUMENTS[0]} == username |
| 139 | ... ${ARGUMENTS[1]} == tender_uid | 155 | ... ${ARGUMENTS[1]} == tender_uid |
| 140 | - ... ${ARGUMENTS[2]} == bid | 156 | + ... ${ARGUMENTS[2]} == question |
| 141 | [Arguments] @{ARGUMENTS} | 157 | [Arguments] @{ARGUMENTS} |
| 142 | log many @{ARGUMENTS} | 158 | log many @{ARGUMENTS} |
| 143 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 159 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 160 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 144 | log ${USERS.users['${ARGUMENTS[0]}']} | 161 | log ${USERS.users['${ARGUMENTS[0]}']} |
| 145 | ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]} | 162 | ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]} |
| 146 | [return] ${biddingresponce} | 163 | [return] ${biddingresponce} |
| 147 | - | 164 | + |
| 148 | Відповісти на питання | 165 | Відповісти на питання |
| 149 | [Documentation] | 166 | [Documentation] |
| 150 | ... ${ARGUMENTS[0]} == username | 167 | ... ${ARGUMENTS[0]} == username |
| @@ -153,7 +170,8 @@ ${question_id} 0 | @@ -153,7 +170,8 @@ ${question_id} 0 | ||
| 153 | ... ${ARGUMENTS[3]} == answer_data | 170 | ... ${ARGUMENTS[3]} == answer_data |
| 154 | [Arguments] @{ARGUMENTS} | 171 | [Arguments] @{ARGUMENTS} |
| 155 | log many @{ARGUMENTS} | 172 | log many @{ARGUMENTS} |
| 156 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 173 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 174 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 157 | log many ${USERS.users['${ARGUMENTS[0]}']} | 175 | log many ${USERS.users['${ARGUMENTS[0]}']} |
| 158 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 176 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 159 | ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.questions[${ARGUMENTS[2]}].id} | 177 | ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.questions[${ARGUMENTS[2]}].id} |
| @@ -168,27 +186,28 @@ ${question_id} 0 | @@ -168,27 +186,28 @@ ${question_id} 0 | ||
| 168 | ... ${ARGUMENTS[2]} == complaint | 186 | ... ${ARGUMENTS[2]} == complaint |
| 169 | [Arguments] @{ARGUMENTS} | 187 | [Arguments] @{ARGUMENTS} |
| 170 | log many @{ARGUMENTS} | 188 | log many @{ARGUMENTS} |
| 171 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 189 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 190 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 172 | ${complaint}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _create_tender_resource_item ${tender} ${ARGUMENTS[2]} complaints | 191 | ${complaint}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _create_tender_resource_item ${tender} ${ARGUMENTS[2]} complaints |
| 173 | Log object data ${complaint} complaint | 192 | Log object data ${complaint} complaint |
| 174 | - | ||
| 175 | -порівняти скаргу | 193 | + |
| 194 | +порівняти скаргу | ||
| 176 | [Documentation] | 195 | [Documentation] |
| 177 | ... ${ARGUMENTS[0]} == username | 196 | ... ${ARGUMENTS[0]} == username |
| 178 | ... ${ARGUMENTS[1]} == tender_uid | 197 | ... ${ARGUMENTS[1]} == tender_uid |
| 179 | ... ${ARGUMENTS[2]} == complaint | 198 | ... ${ARGUMENTS[2]} == complaint |
| 180 | [Arguments] @{ARGUMENTS} | 199 | [Arguments] @{ARGUMENTS} |
| 181 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | ||
| 182 | - ${complaint}= Get Variable Value ${tender.data.complaints[0]} | 200 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 201 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 202 | + ${complaint}= Get Variable Value ${tender.data.complaints[0]} | ||
| 183 | log ${complaint} | 203 | log ${complaint} |
| 184 | log ${ARGUMENTS[2]} | 204 | log ${ARGUMENTS[2]} |
| 185 | - #TODO: COMPARE | 205 | + #TODO: COMPARE |
| 186 | #Dictionary Should Contain Sub Dictionary ${complaint} ${ARGUMENTS[2].data} | 206 | #Dictionary Should Contain Sub Dictionary ${complaint} ${ARGUMENTS[2].data} |
| 187 | #:FOR ${element} IN ${ARGUMENTS[2].data} | 207 | #:FOR ${element} IN ${ARGUMENTS[2].data} |
| 188 | #\ log ${element} | 208 | #\ log ${element} |
| 189 | #\ Dictionary Should Contain Value ${complaint} ${element} | 209 | #\ Dictionary Should Contain Value ${complaint} ${element} |
| 190 | - | ||
| 191 | - | 210 | + |
| 192 | Обробити скаргу | 211 | Обробити скаргу |
| 193 | [Documentation] | 212 | [Documentation] |
| 194 | ... ${ARGUMENTS[0]} == username | 213 | ... ${ARGUMENTS[0]} == username |
| @@ -197,14 +216,13 @@ ${question_id} 0 | @@ -197,14 +216,13 @@ ${question_id} 0 | ||
| 197 | ... ${ARGUMENTS[3]} == answer_data | 216 | ... ${ARGUMENTS[3]} == answer_data |
| 198 | [Arguments] @{ARGUMENTS} | 217 | [Arguments] @{ARGUMENTS} |
| 199 | log many @{ARGUMENTS} | 218 | log many @{ARGUMENTS} |
| 200 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 219 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 220 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 201 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 221 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 202 | ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.complaints[${ARGUMENTS[2]}].id} | 222 | ${ARGUMENTS[3].data.id}= Set Variable ${tender.data.complaints[${ARGUMENTS[2]}].id} |
| 203 | ${complaint_with_answer}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _patch_tender_resource_item ${tender} ${ARGUMENTS[3]} complaints | 223 | ${complaint_with_answer}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _patch_tender_resource_item ${tender} ${ARGUMENTS[3]} complaints |
| 204 | log many ${USERS.users['${ARGUMENTS[0]}'].client} ${tender} ${ARGUMENTS[3]} | 224 | log many ${USERS.users['${ARGUMENTS[0]}'].client} ${tender} ${ARGUMENTS[3]} |
| 205 | Log object data ${complaint_with_answer} complaint_with_answer | 225 | Log object data ${complaint_with_answer} complaint_with_answer |
| 206 | - | ||
| 207 | - | ||
| 208 | 226 | ||
| 209 | Подати цінову пропозицію | 227 | Подати цінову пропозицію |
| 210 | [Documentation] | 228 | [Documentation] |
| @@ -213,18 +231,20 @@ ${question_id} 0 | @@ -213,18 +231,20 @@ ${question_id} 0 | ||
| 213 | ... ${ARGUMENTS[2]} == bid | 231 | ... ${ARGUMENTS[2]} == bid |
| 214 | [Arguments] @{ARGUMENTS} | 232 | [Arguments] @{ARGUMENTS} |
| 215 | log many @{ARGUMENTS} | 233 | log many @{ARGUMENTS} |
| 216 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | ||
| 217 | - log ${tender} | 234 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 235 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 236 | + log ${tender}отримати | ||
| 218 | ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]} | 237 | ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]} |
| 219 | [return] ${biddingresponce} | 238 | [return] ${biddingresponce} |
| 220 | - | 239 | + |
| 221 | Змінити цінову пропозицію | 240 | Змінити цінову пропозицію |
| 222 | [Documentation] | 241 | [Documentation] |
| 223 | ... ${ARGUMENTS[0]} == username | 242 | ... ${ARGUMENTS[0]} == username |
| 224 | ... ${ARGUMENTS[1]} == tender_uid | 243 | ... ${ARGUMENTS[1]} == tender_uid |
| 225 | ... ${ARGUMENTS[2]} == bid | 244 | ... ${ARGUMENTS[2]} == bid |
| 226 | [Arguments] @{ARGUMENTS} | 245 | [Arguments] @{ARGUMENTS} |
| 227 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 246 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 247 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 228 | ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_bid ${tender} ${ARGUMENTS[2]} | 248 | ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_bid ${tender} ${ARGUMENTS[2]} |
| 229 | Log ${changed_bid} | 249 | Log ${changed_bid} |
| 230 | [return] ${changed_bid} | 250 | [return] ${changed_bid} |
| @@ -235,71 +255,110 @@ ${question_id} 0 | @@ -235,71 +255,110 @@ ${question_id} 0 | ||
| 235 | ... ${ARGUMENTS[1]} == tender_uid | 255 | ... ${ARGUMENTS[1]} == tender_uid |
| 236 | ... ${ARGUMENTS[2]} == bid | 256 | ... ${ARGUMENTS[2]} == bid |
| 237 | [Arguments] @{ARGUMENTS} | 257 | [Arguments] @{ARGUMENTS} |
| 238 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 258 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 259 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 239 | log ${tender} | 260 | log ${tender} |
| 240 | - log ${ARGUMENTS[2]} | 261 | + log ${ARGUMENTS[2]}отримати |
| 241 | ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_bid ${tender} ${ARGUMENTS[2]} | 262 | ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_bid ${tender} ${ARGUMENTS[2]} |
| 242 | Log ${changed_bid} | 263 | Log ${changed_bid} |
| 243 | [return] ${changed_bid} | 264 | [return] ${changed_bid} |
| 244 | - | 265 | + |
| 245 | Прийняти цінову пропозицію | 266 | Прийняти цінову пропозицію |
| 246 | [Documentation] | 267 | [Documentation] |
| 247 | ... ${ARGUMENTS[0]} == username | 268 | ... ${ARGUMENTS[0]} == username |
| 248 | ... ${ARGUMENTS[1]} == tender_uid | 269 | ... ${ARGUMENTS[1]} == tender_uid |
| 249 | ... ${ARGUMENTS[2]} == award | 270 | ... ${ARGUMENTS[2]} == award |
| 250 | [Arguments] @{ARGUMENTS} | 271 | [Arguments] @{ARGUMENTS} |
| 251 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${ARGUMENTS[1]} | 272 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 273 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 252 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 274 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 253 | ${award_activeted_response}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_award ${tender} ${ARGUMENTS[2]} | 275 | ${award_activeted_response}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_award ${tender} ${ARGUMENTS[2]} |
| 254 | Log ${award_activeted_response} | 276 | Log ${award_activeted_response} |
| 255 | [return] ${award_activeted_response} | 277 | [return] ${award_activeted_response} |
| 256 | 278 | ||
| 257 | - | ||
| 258 | Завантажити документ в ставку | 279 | Завантажити документ в ставку |
| 259 | [Documentation] | 280 | [Documentation] |
| 260 | ... ${ARGUMENTS[0]} == username | 281 | ... ${ARGUMENTS[0]} == username |
| 261 | - ... ${ARGUMENTS[1]} == token | ||
| 262 | - ... ${ARGUMENTS[2]} == bid_id | 282 | + ... ${ARGUMENTS[1]} == path |
| 283 | + ... ${ARGUMENTS[2]} == tenderid | ||
| 263 | [Arguments] @{ARGUMENTS} | 284 | [Arguments] @{ARGUMENTS} |
| 264 | log ${ARGUMENTS[0]} | 285 | log ${ARGUMENTS[0]} |
| 265 | log ${ARGUMENTS[1]} | 286 | log ${ARGUMENTS[1]} |
| 266 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | ||
| 267 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | ||
| 268 | - ${filename}= Set Variable file.txt | ||
| 269 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | ||
| 270 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${filename} ${tender} ${ARGUMENTS[2]} | ||
| 271 | - Log object data ${reply} reply | ||
| 272 | - [return] ${reply} | ||
| 273 | - | 287 | + log ${ARGUMENTS[2]} |
| 288 | + ${bid_id}= Get Variable Value ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].data.id} | ||
| 289 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} | ||
| 290 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 291 | + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].access.token} | ||
| 292 | + ${responce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${ARGUMENTS[1]} ${tender} ${bid_id} | ||
| 293 | + ${uploaded_file} = Create Dictionary filepath ${ARGUMENTS[1]} upload_responce ${responce} | ||
| 294 | + log ${responce} | ||
| 295 | + Log object data ${uploaded_file} | ||
| 296 | + [return] ${uploaded_file} | ||
| 297 | + | ||
| 274 | Змінити документ в ставці | 298 | Змінити документ в ставці |
| 275 | [Documentation] | 299 | [Documentation] |
| 276 | ... ${ARGUMENTS[0]} == username | 300 | ... ${ARGUMENTS[0]} == username |
| 277 | - ... ${ARGUMENTS[1]} == token | ||
| 278 | - ... ${ARGUMENTS[2]} == bid_id | ||
| 279 | - ... ${ARGUMENTS[3]} == file_id | 301 | + ... ${ARGUMENTS[1]} == path |
| 302 | + ... ${ARGUMENTS[2]} == bidid | ||
| 303 | + ... ${ARGUMENTS[3]} == docid | ||
| 280 | [Arguments] @{ARGUMENTS} | 304 | [Arguments] @{ARGUMENTS} |
| 281 | log ${ARGUMENTS[0]} | 305 | log ${ARGUMENTS[0]} |
| 282 | log ${ARGUMENTS[1]} | 306 | log ${ARGUMENTS[1]} |
| 283 | log ${ARGUMENTS[2]} | 307 | log ${ARGUMENTS[2]} |
| 284 | - log ${ARGUMENTS[3]} | ||
| 285 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | ||
| 286 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | ||
| 287 | - ${filename}= Set Variable newfile.txt | ||
| 288 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | ||
| 289 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${filename} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | ||
| 290 | - Log object data ${reply} reply | 308 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${TENDER['TENDER_UAID']} |
| 309 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 310 | + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].access.token} | ||
| 311 | + ${responce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${ARGUMENTS[1]} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | ||
| 312 | + ${uploaded_file} = Create Dictionary filepath ${ARGUMENTS[1]} upload_responce ${responce} | ||
| 313 | + log ${responce} | ||
| 314 | + Log object data ${uploaded_file} | ||
| 315 | + [return] ${uploaded_file} | ||
| 316 | + | ||
| 317 | + | ||
| 318 | + | ||
| 291 | 319 | ||
| 292 | Завантажити документ | 320 | Завантажити документ |
| 293 | [Documentation] | 321 | [Documentation] |
| 294 | ... ${ARGUMENTS[0]} == username | 322 | ... ${ARGUMENTS[0]} == username |
| 295 | - ... ${ARGUMENTS[1]} == token | 323 | + ... ${ARGUMENTS[1]} == filepath |
| 324 | + ... ${ARGUMENTS[2]} == tenderUAID | ||
| 296 | [Arguments] @{ARGUMENTS} | 325 | [Arguments] @{ARGUMENTS} |
| 297 | log ${ARGUMENTS[0]} | 326 | log ${ARGUMENTS[0]} |
| 298 | log ${ARGUMENTS[1]} | 327 | log ${ARGUMENTS[1]} |
| 299 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | ||
| 300 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | ||
| 301 | - ${filename}= Set Variable file.txt | ||
| 302 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | ||
| 303 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_tender_document ${filename} ${tender} | 328 | + log ${ARGUMENTS[2]} |
| 329 | + ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} | ||
| 330 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} | ||
| 331 | + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} | ||
| 332 | + ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_document ${tender} ${ARGUMENTS[1]} | ||
| 304 | Log object data ${reply} reply | 333 | Log object data ${reply} reply |
| 305 | - | ||
| 334 | + [return] ${reply} | ||
| 335 | + | ||
| 336 | +Отримати пропозиції | ||
| 337 | + [Documentation] | ||
| 338 | + ... ${ARGUMENTS[0]} == username | ||
| 339 | + ... ${ARGUMENTS[1]} == tender_uid | ||
| 340 | + ... ${ARGUMENTS[2]} == bid_id | ||
| 341 | + ... ${ARGUMENTS[3]} == token | ||
| 342 | + [Arguments] @{ARGUMENTS} | ||
| 343 | + ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 344 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} | ||
| 345 | + ${bids}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_bid ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | ||
| 346 | + Log ${bids} | ||
| 347 | + [return] ${bids} | ||
| 348 | + | ||
| 349 | +отримати документ | ||
| 350 | + [Documentation] | ||
| 351 | + ... ${ARGUMENTS[0]} == username | ||
| 352 | + ... ${ARGUMENTS[1]} == tenderUaID | ||
| 353 | + ... ${ARGUMENTS[2]} == url | ||
| 354 | + [Arguments] @{ARGUMENTS} | ||
| 355 | + log ${ARGUMENTS[0]} | ||
| 356 | + log ${ARGUMENTS[1]} | ||
| 357 | + log ${ARGUMENTS[2]} | ||
| 358 | + ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} | ||
| 359 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} | ||
| 360 | + ${token}= Get Variable Value ${USERS.users['${ARGUMENTS[0]}'].bidresponces['resp'].access.token} | ||
| 361 | + ${contents} ${filename}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_file ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | ||
| 362 | + log ${contents} | ||
| 363 | + log ${filename} | ||
| 364 | + [return] ${contents} ${filename} |
| 1 | from openprocurement_client.client import Client | 1 | from openprocurement_client.client import Client |
| 2 | +import sys | ||
| 2 | 3 | ||
| 3 | - | ||
| 4 | -def prepare_api_wrapper(key='', host_url="https://api-sandbox.openprocurement.org", api_version='0.7' ): | 4 | +def prepare_api_wrapper(key='', host_url="https://api-sandbox.openprocurement.org", api_version='0.8' ): |
| 5 | return Client(key, host_url, api_version ) | 5 | return Client(key, host_url, api_version ) |
| 6 | + | ||
| 7 | +def get_internal_id(get_tenders_function, date): | ||
| 8 | + result = get_tenders_function({"offset": date, "opt_fields": 'tenderID', }) | ||
| 9 | + #import pdb; pdb.Pdb(stdout=sys.__stdout__).set_trace() | ||
| 10 | + return result |
| @@ -3,14 +3,154 @@ Library Selenium2Screenshots | @@ -3,14 +3,154 @@ Library Selenium2Screenshots | ||
| 3 | Library String | 3 | Library String |
| 4 | Library DateTime | 4 | Library DateTime |
| 5 | 5 | ||
| 6 | +*** Variables *** | ||
| 7 | +${mail} test@mail.com | ||
| 8 | +${telephone} +380976535447 | ||
| 9 | + | ||
| 10 | + | ||
| 6 | *** Keywords *** | 11 | *** Keywords *** |
| 7 | Підготувати клієнт для користувача | 12 | Підготувати клієнт для користувача |
| 8 | - [Arguments] ${username} | 13 | + [Arguments] @{ARGUMENTS} |
| 9 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 14 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
| 10 | - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username} | ||
| 11 | - Set Window Position @{USERS.users['${username}'].position} | ||
| 12 | - Set Window Size @{USERS.users['${username}'].size} | ||
| 13 | - Log Variables | 15 | + ... ${ARGUMENTS[0]} == username |
| 16 | + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | ||
| 17 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | ||
| 18 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | ||
| 19 | + | ||
| 20 | +# login | ||
| 21 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:j_idt54 10 | ||
| 22 | + Click Element id=mForm:j_idt54 | ||
| 23 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:email 10 | ||
| 24 | + Input text id=mForm:email ${USERS.users['${username}'].login} | ||
| 25 | + Sleep 2 | ||
| 26 | + Input text id=mForm:pwd ${USERS.users['${username}'].password} | ||
| 27 | + Click Button id=mForm:login | ||
| 28 | + | ||
| 29 | +Створити тендер | ||
| 30 | + [Arguments] @{ARGUMENTS} | ||
| 31 | + [Documentation] | ||
| 32 | + ... ${ARGUMENTS[0]} == username | ||
| 33 | + ... ${ARGUMENTS[1]} == tender_data | ||
| 34 | + ${file_path}= local_path_to_file TestDocument.docx | ||
| 35 | + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | ||
| 36 | + ${items}= Get From Dictionary ${prepared_tender_data.data} items | ||
| 37 | + ${title}= Get From Dictionary ${prepared_tender_data.data} title | ||
| 38 | + ${description}= Get From Dictionary ${prepared_tender_data.data} description | ||
| 39 | + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount | ||
| 40 | + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount | ||
| 41 | + ${countryName}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.address} countryName | ||
| 42 | + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | ||
| 43 | + ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date} | ||
| 44 | + ${cpv}= Convert To String "Картонки" | ||
| 45 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | ||
| 46 | + ${cpv_id_1}= Get Substring ${cpv_id} 0 3 | ||
| 47 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | ||
| 48 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | ||
| 49 | + ${code}= Get From Dictionary ${items[0].unit} code | ||
| 50 | + ${quantity}= Get From Dictionary ${items[0]} quantity | ||
| 51 | + ${name}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.contactPoint} name | ||
| 52 | + | ||
| 53 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | ||
| 54 | + Wait Until Page Contains Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] 10 | ||
| 55 | + Click Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] | ||
| 56 | + Wait Until Page Contains Element id=mForm:data:name | ||
| 57 | + Input text id=mForm:data:name ${title} | ||
| 58 | + Input text id=mForm:data:desc ${description} | ||
| 59 | + Input text id=mForm:data:budget ${budget} | ||
| 60 | + Input text id=mForm:data:step ${step_rate} | ||
| 61 | + Click Element xpath=//*[@id='mForm:data:vat']/tbody/tr/td[1]//span | ||
| 62 | + Input text id=mForm:data:dEPr_input ${delivery_end_date} | ||
| 63 | + Click Element id=mForm:data:cKind_label | ||
| 64 | + Click Element xpath=//div[@id='mForm:data:cKind_panel']//li[3] | ||
| 65 | + Input text id=mForm:data:cCpvGr_input ${cpv_id_1} | ||
| 66 | + Wait Until Page Contains Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span 10 | ||
| 67 | + Click Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span | ||
| 68 | + Input text id=mForm:data:subject0 ${dkpp_desc} | ||
| 69 | + Input text id=mForm:data:cCpv0_input ${cpv_id} | ||
| 70 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span 10 | ||
| 71 | + Click Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span | ||
| 72 | + Input text id=mForm:data:unit0_input ${code} | ||
| 73 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] 10 | ||
| 74 | + Click Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] | ||
| 75 | + Input text id=mForm:data:amount0 ${quantity} | ||
| 76 | + Input text id=mForm:data:cDkpp0_input ${dkpp_id} | ||
| 77 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span 10 | ||
| 78 | + Click Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span | ||
| 79 | + Input text id=mForm:data:rName ${name} | ||
| 80 | + Input text id=mForm:data:rPhone ${telephone} | ||
| 81 | + Input text id=mForm:data:rMail ${mail} | ||
| 82 | + Choose File id=mForm:data:docFile_input ${file_path} | ||
| 83 | + Sleep 2 | ||
| 84 | + Run Keyword if '${mode}' == 'multi' Додати предмет items | ||
| 85 | + Click Element id=mForm:bSave | ||
| 86 | + # More smart wait for id is needed there. | ||
| 87 | + Sleep 25 | ||
| 88 | + ${tender_UAid}= Get Text id=mForm:nBid | ||
| 89 | + ${tender_UAid}= Get Substring ${tender_UAid} 19 | ||
| 90 | + ${Ids} Convert To String ${tender_UAid} | ||
| 91 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | ||
| 92 | + [return] ${Ids} | ||
| 93 | + | ||
| 94 | +Set Multi Ids | ||
| 95 | + [Arguments] @{ARGUMENTS} | ||
| 96 | + [Documentation] | ||
| 97 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | ||
| 98 | + ${id}= Get Text id=mForm:nBid | ||
| 99 | + ${Ids} Create List ${tender_UAid} ${id} | ||
| 100 | + | ||
| 101 | +Додати предмет | ||
| 102 | + [Arguments] @{ARGUMENTS} | ||
| 103 | + [Documentation] | ||
| 104 | + ... ${ARGUMENTS[0]} == items | ||
| 105 | + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description | ||
| 106 | + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id | ||
| 107 | + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description | ||
| 108 | + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id | ||
| 109 | + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description | ||
| 110 | + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id | ||
| 111 | + | ||
| 112 | + Wait Until Page Contains Element xpath=//button[@class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"] 10 | ||
| 113 | + Wait Until Page Contains Element xpath=//button[contains(@class, 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only')] 10 | ||
| 114 | + Wait Until Page Contains Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] 10 | ||
| 115 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | ||
| 116 | + Wait Until Page Contains Element id=mForm:data:subject1 10 | ||
| 117 | + Input text id=mForm:data:subject1 ${dkpp_desc1} | ||
| 118 | + Input text id=mForm:data:cCpv1_input ${cpv_id} | ||
| 119 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span 10 | ||
| 120 | + Click Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span | ||
| 121 | + Input text id=mForm:data:unit1_input ${code} | ||
| 122 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] 10 | ||
| 123 | + Click Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] | ||
| 124 | + Input text id=mForm:data:amount1 ${quantity} | ||
| 125 | + Input text id=mForm:data:cDkpp1_input ${dkpp_id11} | ||
| 126 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span 10 | ||
| 127 | + Click Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span | ||
| 128 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | ||
| 129 | + Wait Until Page Contains Element id=mForm:data:subject2 10 | ||
| 130 | + Input text id=mForm:data:subject2 ${dkpp_desc2} | ||
| 131 | + Input text id=mForm:data:cCpv2_input ${cpv_id} | ||
| 132 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span 10 | ||
| 133 | + Click Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span | ||
| 134 | + Input text id=mForm:data:unit2_input ${code} | ||
| 135 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] 10 | ||
| 136 | + Click Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] | ||
| 137 | + Input text id=mForm:data:amount2 ${quantity} | ||
| 138 | + Input text id=mForm:data:cDkpp2_input ${dkpp_id2} | ||
| 139 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span 10 | ||
| 140 | + Click Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span | ||
| 141 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | ||
| 142 | + Wait Until Page Contains Element id=mForm:data:subject3 10 | ||
| 143 | + Input text id=mForm:data:subject3 ${dkpp_desc3} | ||
| 144 | + Input text id=mForm:data:cCpv3_input ${cpv_id} | ||
| 145 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span 10 | ||
| 146 | + Click Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span | ||
| 147 | + Input text id=mForm:data:unit3_input ${code} | ||
| 148 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] 10 | ||
| 149 | + Click Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] | ||
| 150 | + Input text id=mForm:data:amount3 ${quantity} | ||
| 151 | + Input text id=mForm:data:cDkpp3_input ${dkpp_id3} | ||
| 152 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span 10 | ||
| 153 | + Click Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span | ||
| 14 | 154 | ||
| 15 | Пошук тендера по ідентифікатору | 155 | Пошук тендера по ідентифікатору |
| 16 | [Arguments] @{ARGUMENTS} | 156 | [Arguments] @{ARGUMENTS} |
| @@ -24,5 +24,20 @@ Publicbid: | @@ -24,5 +24,20 @@ Publicbid: | ||
| 24 | period_interval: 2 | 24 | period_interval: 2 |
| 25 | Netcast: | 25 | Netcast: |
| 26 | keywords_file: netcast | 26 | keywords_file: netcast |
| 27 | - url: http://dz2.byustudio.in.ua | 27 | + url: "http://dz2.byustudio.in.ua" |
| 28 | + login: admin | ||
| 29 | + password: uStudio | ||
| 28 | timout_on_wait: 15 | 30 | timout_on_wait: 15 |
| 31 | + period_interval: 2 | ||
| 32 | +Netcast: | ||
| 33 | + keywords_file: netcast | ||
| 34 | + url: "http://dz2.byustudio.in.ua" | ||
| 35 | + login: admin | ||
| 36 | + password: uStudio | ||
| 37 | + timout_on_wait: 15 | ||
| 38 | + period_interval: 2 | ||
| 39 | +Newtend: | ||
| 40 | + keywords_file: newtend | ||
| 41 | + url: http://openprocurement:test@dev23.newtend.com | ||
| 42 | + timout_on_wait: 15 | ||
| 43 | + period_interval: 2 |
| @@ -2,57 +2,130 @@ users: | @@ -2,57 +2,130 @@ users: | ||
| 2 | Tender_Owner: | 2 | Tender_Owner: |
| 3 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | 3 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
| 4 | broker: Quinta | 4 | broker: Quinta |
| 5 | - Prom_Owner: | ||
| 6 | - broker: Prom | ||
| 7 | - username: Promtest | 5 | + Tender_Viewer: |
| 6 | + broker: Quinta | ||
| 7 | + api_key: "" | ||
| 8 | + Tender_User: | ||
| 9 | + api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | ||
| 10 | + broker: Quinta | ||
| 11 | + Tender_User1: | ||
| 12 | + api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | ||
| 13 | + broker: Quinta | ||
| 14 | + E-tender_Owner: | ||
| 15 | + broker: E-tender | ||
| 16 | + username: E-tendertest | ||
| 17 | + homepage: "http://uat.e-tender.biz/#/profile" | ||
| 18 | + login: Misha2 | ||
| 19 | + password: Password1 | ||
| 8 | browser: chrome | 20 | browser: chrome |
| 9 | position: [0, 0] | 21 | position: [0, 0] |
| 22 | + size: [800, 800] | ||
| 23 | + E-tender_Provider1: | ||
| 24 | + broker: E-tender | ||
| 25 | + username: E-tendertest | ||
| 26 | + homepage: "http://uat.e-tender.biz/#/profile" | ||
| 27 | + login: st_org | ||
| 28 | + password: 12345678 | ||
| 29 | + browser: chrome | ||
| 30 | + position: [700, 0] | ||
| 31 | + size: [700, 800] | ||
| 32 | + E-tender_Provider2: | ||
| 33 | + broker: E-tender | ||
| 34 | + username: E-tendertest | ||
| 35 | + homepage: "http://uat.e-tender.biz/#/profile" | ||
| 36 | + login: provider2 | ||
| 37 | + password: Qa123456 | ||
| 38 | + browser: chrome | ||
| 39 | + position: [700, 0] | ||
| 10 | size: [640, 450] | 40 | size: [640, 450] |
| 11 | E-tender_Viewer: | 41 | E-tender_Viewer: |
| 12 | broker: E-tender | 42 | broker: E-tender |
| 13 | username: E-tendertest | 43 | username: E-tendertest |
| 44 | + homepage: "http://uat.e-tender.biz/#/profile" | ||
| 14 | browser: chrome | 45 | browser: chrome |
| 15 | position: [0, 0] | 46 | position: [0, 0] |
| 16 | size: [640, 450] | 47 | size: [640, 450] |
| 17 | - Prom_Viewer: | 48 | + Netcast_Owner: |
| 49 | + broker: Netcast | ||
| 50 | + username: Netcasttest | ||
| 51 | + homepage: "http://dz2.byustudio.in.ua" | ||
| 52 | + login: ovramet.s@gmail.com | ||
| 53 | + password: Password1 | ||
| 54 | + browser: chrome | ||
| 55 | + position: [0, 0] | ||
| 56 | + size: [700, 800] | ||
| 57 | + Netcast_Provider1: | ||
| 58 | + broker: Netcast | ||
| 59 | + username: Netcasttest | ||
| 60 | + homepage: "http://dz2.byustudio.in.ua" | ||
| 61 | + login: halyna.khimka@gmail.com | ||
| 62 | + password: JHO5VUp5n | ||
| 63 | + browser: chrome | ||
| 64 | + position: [0, 0] | ||
| 65 | + size: [600, 800] | ||
| 66 | + Netcast_Viewer: | ||
| 67 | + broker: Netcast | ||
| 68 | + username: Netcasttest | ||
| 69 | + homepage: "http://dz2.byustudio.in.ua" | ||
| 70 | + browser: chrome | ||
| 71 | + #browser: chrome | ||
| 72 | + position: [0, 0] | ||
| 73 | + size: [600, 800] | ||
| 74 | + Newtend_Owner: | ||
| 75 | + broker: Newtend | ||
| 76 | + username: Newtendtest | ||
| 77 | + homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1" | ||
| 78 | + login: openprocurement@mailinator.com | ||
| 79 | + password: 123123 | ||
| 80 | + browser: chrome | ||
| 81 | + position: [0, 0] | ||
| 82 | + size: [1000, 1100] | ||
| 83 | + Newtend_Provider1: | ||
| 84 | + broker: Newtend | ||
| 85 | + username: Newtendtest | ||
| 86 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | ||
| 87 | + login: openprocboss@mailinator.com | ||
| 88 | + password: 123123 | ||
| 89 | + browser: chrome | ||
| 90 | + position: [700, 0] | ||
| 91 | + size: [800, 700] | ||
| 92 | + Newtend_Viewer: | ||
| 93 | + broker: Newtend | ||
| 94 | + username: Newtendtest | ||
| 95 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | ||
| 96 | + browser: chrome | ||
| 97 | + position: [0, 0] | ||
| 98 | + size: [640, 450] | ||
| 99 | + Prom_Owner: | ||
| 18 | broker: Prom | 100 | broker: Prom |
| 19 | username: Promtest | 101 | username: Promtest |
| 20 | browser: chrome | 102 | browser: chrome |
| 21 | - position: [640, 0] | 103 | + position: [0, 0] |
| 22 | size: [640, 450] | 104 | size: [640, 450] |
| 23 | - SmartTender_Viewer: | ||
| 24 | - broker: SmartTender | ||
| 25 | - username: SmartTendertest | 105 | + Prom_Viewer: |
| 106 | + broker: Prom | ||
| 107 | + username: Promtest | ||
| 26 | browser: chrome | 108 | browser: chrome |
| 27 | - position: [0, 450] | 109 | + position: [640, 0] |
| 28 | size: [640, 450] | 110 | size: [640, 450] |
| 111 | + Publicbid_Owner: | ||
| 112 | + broker: Publicbid | ||
| 113 | + username: Publicbid | ||
| 114 | + homepage: "https://public-bid.com.ua/test/" | ||
| 115 | + login: yaroslav1boyko@gmail.com | ||
| 116 | + password: Password1 | ||
| 117 | + browser: chrome | ||
| 118 | + position: [0, 0] | ||
| 119 | + size: [740, 550] | ||
| 29 | Publicbid_Viewer: | 120 | Publicbid_Viewer: |
| 30 | broker: Publicbid | 121 | broker: Publicbid |
| 31 | username: Publicbid | 122 | username: Publicbid |
| 32 | browser: chrome | 123 | browser: chrome |
| 33 | position: [0, 450] | 124 | position: [0, 450] |
| 34 | - size: [640, 450] | ||
| 35 | - Netcast_Viewer: | ||
| 36 | - broker: Netcast | ||
| 37 | - username: TetcastTest | 125 | + size: [640, 450] |
| 126 | + SmartTender_Viewer: | ||
| 127 | + broker: SmartTender | ||
| 128 | + username: SmartTendertest | ||
| 38 | browser: chrome | 129 | browser: chrome |
| 39 | position: [0, 450] | 130 | position: [0, 450] |
| 40 | - size: [640, 450] | ||
| 41 | - Tender_Viewer: | ||
| 42 | - broker: Quinta | ||
| 43 | - api_key: "" | ||
| 44 | - Tender_User: | ||
| 45 | - api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | ||
| 46 | - broker: Quinta | ||
| 47 | - Tender_User1: | ||
| 48 | - api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | ||
| 49 | - broker: Quinta | ||
| 50 | - E-tender_Provider1: | ||
| 51 | - broker: E-tender | ||
| 52 | - username: E-tendertest | ||
| 53 | - homepage: "http://uat.e-tender.biz/#/profile" | ||
| 54 | - login: st_org | ||
| 55 | - password: 12345678 | ||
| 56 | - browser: firefox | ||
| 57 | - position: [0, 0] | ||
| 58 | - size: [640, 450] | ||
| 131 | + size: [640, 450] |
| 1 | +Some tesxt here |
| 1 | +from iso8601 import parse_date | ||
| 2 | +from robot.output import LOGGER | ||
| 3 | +from robot.output.loggerhelper import Message | ||
| 4 | +from robot.libraries.BuiltIn import BuiltIn | ||
| 5 | +from robot.errors import HandlerExecutionFailed | ||
| 6 | +from datetime import datetime, timedelta, date | ||
| 7 | +from dateutil.parser import parse | ||
| 8 | +from dateutil.tz import tzlocal | ||
| 9 | +from pytz import timezone | ||
| 10 | +from jsonpath_rw import parse as parse_path | ||
| 11 | +import time | ||
| 12 | +from op_robot_tests.tests_files.initial_data import ( | ||
| 13 | + test_tender_data | ||
| 14 | +) | ||
| 15 | + | ||
| 16 | +TIMEZONE = timezone('Europe/Kiev') | ||
| 17 | + | ||
| 18 | +def convert_date_to_etender_format(isodate): | ||
| 19 | + iso_dt=parse_date(isodate) | ||
| 20 | + date_string = iso_dt.strftime("%d-%m-%Y") | ||
| 21 | + return date_string | ||
| 22 | + | ||
| 23 | +def convert_time_to_etender_format(isodate): | ||
| 24 | + iso_dt=parse_date(isodate) | ||
| 25 | + time_string = iso_dt.strftime("%H:%M") | ||
| 26 | + return time_string |
| @@ -6,6 +6,14 @@ from faker import Factory | @@ -6,6 +6,14 @@ from faker import Factory | ||
| 6 | fake = Factory.create('uk_UA') | 6 | fake = Factory.create('uk_UA') |
| 7 | fake_ru = Factory.create('ru') | 7 | fake_ru = Factory.create('ru') |
| 8 | fake_en = Factory.create() | 8 | fake_en = Factory.create() |
| 9 | +from tempfile import NamedTemporaryFile | ||
| 10 | + | ||
| 11 | +def create_fake_doc(): | ||
| 12 | + content = fake.text() | ||
| 13 | + tf = NamedTemporaryFile(delete=False) | ||
| 14 | + tf.write(content) | ||
| 15 | + tf.close() | ||
| 16 | + return tf.name | ||
| 9 | 17 | ||
| 10 | def test_tender_data(period_interval=2): | 18 | def test_tender_data(period_interval=2): |
| 11 | now = datetime.now() | 19 | now = datetime.now() |
| @@ -133,7 +141,7 @@ def prom_test_tender_data(): | @@ -133,7 +141,7 @@ def prom_test_tender_data(): | ||
| 133 | { | 141 | { |
| 134 | "description": fake.catch_phrase(), | 142 | "description": fake.catch_phrase(), |
| 135 | "deliveryDate": { | 143 | "deliveryDate": { |
| 136 | - "startDate": (now + timedelta(days=4)).isoformat(), | 144 | + "startDate": (now + timedelta(days=4)).isoformat(), |
| 137 | "endDate": (now + timedelta(days=5)).isoformat() | 145 | "endDate": (now + timedelta(days=5)).isoformat() |
| 138 | }, | 146 | }, |
| 139 | "deliveryLocation": { | 147 | "deliveryLocation": { |
| @@ -150,7 +158,7 @@ def prom_test_tender_data(): | @@ -150,7 +158,7 @@ def prom_test_tender_data(): | ||
| 150 | "classification": { | 158 | "classification": { |
| 151 | "scheme": u"CPV", | 159 | "scheme": u"CPV", |
| 152 | "id": u"44617100-9", | 160 | "id": u"44617100-9", |
| 153 | - "description": u"Cartons" | 161 | + "description": u"Cartons", |
| 154 | }, | 162 | }, |
| 155 | "additionalClassifications": [ | 163 | "additionalClassifications": [ |
| 156 | { | 164 | { |
| @@ -205,15 +213,15 @@ def test_tender_data_multiple_lots(period_interval=2): | @@ -205,15 +213,15 @@ def test_tender_data_multiple_lots(period_interval=2): | ||
| 205 | "name": fake.name(), | 213 | "name": fake.name(), |
| 206 | "telephone": fake.phone_number() | 214 | "telephone": fake.phone_number() |
| 207 | } | 215 | } |
| 208 | - }, | ||
| 209 | - "value": { | ||
| 210 | - "amount": 50000.99, | 216 | + }, |
| 217 | + "value": { | ||
| 218 | + "amount": 50000, | ||
| 211 | "currency": u"UAH" | 219 | "currency": u"UAH" |
| 212 | }, | 220 | }, |
| 213 | "minimalStep": { | 221 | "minimalStep": { |
| 214 | - "amount": 100.1, | ||
| 215 | - "currency": u"UAH" | ||
| 216 | - }, | 222 | + "amount": 100, |
| 223 | + "currency": u"UAH" | ||
| 224 | + }, | ||
| 217 | "items": [ | 225 | "items": [ |
| 218 | { | 226 | { |
| 219 | "description": fake.catch_phrase(), | 227 | "description": fake.catch_phrase(), |
| @@ -229,7 +237,7 @@ def test_tender_data_multiple_lots(period_interval=2): | @@ -229,7 +237,7 @@ def test_tender_data_multiple_lots(period_interval=2): | ||
| 229 | "postalCode": "01008", | 237 | "postalCode": "01008", |
| 230 | "region": u"м. Київ", | 238 | "region": u"м. Київ", |
| 231 | "locality": u"м. Київ", | 239 | "locality": u"м. Київ", |
| 232 | - "streetAddress": "ул. Грушевского, 12/2" | 240 | + "streetAddress": u"ул. Грушевского, 12/2" |
| 233 | }, | 241 | }, |
| 234 | "classification": { | 242 | "classification": { |
| 235 | "scheme": u"CPV", | 243 | "scheme": u"CPV", |
| @@ -297,7 +305,7 @@ def test_tender_data_multiple_lots(period_interval=2): | @@ -297,7 +305,7 @@ def test_tender_data_multiple_lots(period_interval=2): | ||
| 297 | "postalCode": fake.postalcode(), | 305 | "postalCode": fake.postalcode(), |
| 298 | "region": u"м. Луганськ", | 306 | "region": u"м. Луганськ", |
| 299 | "locality": u"м. Луганськ", | 307 | "locality": u"м. Луганськ", |
| 300 | - "streetAddress": "Вул. Оборонна 28" | 308 | + "streetAddress": u"Вул. Оборонна 28" |
| 301 | }, | 309 | }, |
| 302 | "classification": { | 310 | "classification": { |
| 303 | "scheme": u"CPV", | 311 | "scheme": u"CPV", |
| @@ -460,7 +468,7 @@ def test_bid_data(): | @@ -460,7 +468,7 @@ def test_bid_data(): | ||
| 460 | } | 468 | } |
| 461 | } | 469 | } |
| 462 | }) | 470 | }) |
| 463 | - | 471 | + |
| 464 | def auction_bid(): | 472 | def auction_bid(): |
| 465 | return munchify({ | 473 | return munchify({ |
| 466 | "data": {"value": { | 474 | "data": {"value": { |
| @@ -18,7 +18,6 @@ TestSuiteSetup | @@ -18,7 +18,6 @@ TestSuiteSetup | ||
| 18 | 18 | ||
| 19 | Завантажуємо дані про корисувачів і площадки | 19 | Завантажуємо дані про корисувачів і площадки |
| 20 | [Arguments] ${active_users} | 20 | [Arguments] ${active_users} |
| 21 | - # Init Brokers | ||
| 22 | log ${active_users} | 21 | log ${active_users} |
| 23 | 22 | ||
| 24 | ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml | 23 | ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml |
| @@ -27,15 +26,14 @@ TestSuiteSetup | @@ -27,15 +26,14 @@ TestSuiteSetup | ||
| 27 | Set Global Variable ${BROKERS} | 26 | Set Global Variable ${BROKERS} |
| 28 | ${brokers_list}= Get Dictionary Items ${BROKERS} | 27 | ${brokers_list}= Get Dictionary Items ${BROKERS} |
| 29 | log ${brokers_list} | 28 | log ${brokers_list} |
| 30 | - # Init Users | ||
| 31 | ${file_path}= Get Variable Value ${USERS_FILE} users.yaml | 29 | ${file_path}= Get Variable Value ${USERS_FILE} users.yaml |
| 32 | ${USERS}= load_initial_data_from ${file_path} | 30 | ${USERS}= load_initial_data_from ${file_path} |
| 33 | Set Global Variable ${USERS} | 31 | Set Global Variable ${USERS} |
| 34 | ${users_list}= Get Dictionary Items ${USERS.users} | 32 | ${users_list}= Get Dictionary Items ${USERS.users} |
| 35 | :FOR ${username} ${user_data} IN @{users_list} | 33 | :FOR ${username} ${user_data} IN @{users_list} |
| 36 | - \ log ${active_users} | 34 | + \ log ${active_users} |
| 37 | \ log ${username} | 35 | \ log ${username} |
| 38 | - \ ${status}= Run Keyword And Return Status List Should Contain Value ${active_users} ${username} | 36 | + \ ${status}= Run Keyword And Return Status List Should Contain Value ${active_users} ${username} |
| 39 | \ Run Keyword If '${status}' == 'True' Завантажуємо бібліотеку з реалізацією ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file} площадки | 37 | \ Run Keyword If '${status}' == 'True' Завантажуємо бібліотеку з реалізацією ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file} площадки |
| 40 | \ Run Keyword If '${status}' == 'True' Викликати для учасника ${username} Підготувати клієнт для користувача | 38 | \ Run Keyword If '${status}' == 'True' Викликати для учасника ${username} Підготувати клієнт для користувача |
| 41 | 39 | ||
| @@ -58,6 +56,9 @@ TestSuiteSetup | @@ -58,6 +56,9 @@ TestSuiteSetup | ||
| 58 | Set Global Variable ${REPLIES} | 56 | Set Global Variable ${REPLIES} |
| 59 | ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode} | 57 | ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode} |
| 60 | Set Global Variable ${INITIAL_TENDER_DATA} | 58 | Set Global Variable ${INITIAL_TENDER_DATA} |
| 59 | + ${TENDER}= Create Dictionary | ||
| 60 | + Set Global Variable ${TENDER} | ||
| 61 | + Log ${TENDER} | ||
| 61 | Log ${INITIAL_TENDER_DATA} | 62 | Log ${INITIAL_TENDER_DATA} |
| 62 | 63 | ||
| 63 | Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки | 64 | Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки |
| @@ -73,46 +74,43 @@ TestSuiteSetup | @@ -73,46 +74,43 @@ TestSuiteSetup | ||
| 73 | ... ${ARGUMENTS[2]} == id | 74 | ... ${ARGUMENTS[2]} == id |
| 74 | 75 | ||
| 75 | ${now}= Get Current Date | 76 | ${now}= Get Current Date |
| 76 | - ${delta}= Subtract Date From Date ${now} ${LAST_MODIFICATION_DATE} | 77 | + ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} |
| 77 | ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta} | 78 | ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta} |
| 78 | Run Keyword If ${wait_timout}>0 Sleep ${wait_timout} | 79 | Run Keyword If ${wait_timout}>0 Sleep ${wait_timout} |
| 79 | 80 | ||
| 80 | -#отримати останні зміни в тендері | ||
| 81 | -# ${TENDER_DATA}= Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER_DATA.data.tenderID} ${TENDER_DATA.data.id} | ||
| 82 | -# Set To Dictionary ${TENDER_DATA} access_token ${access_token} | ||
| 83 | -# Set Global Variable ${TENDER_DATA} | ||
| 84 | -# ${now}= Get Current Date | ||
| 85 | -# Log object data ${TENDER_DATA} tender_${tender_dump_id} | ||
| 86 | -# ${tender_dump_id}= Evaluate ${tender_dump_id}+1 | ||
| 87 | -# Set Global Variable ${tender_dump_id} | ||
| 88 | - | ||
| 89 | Звірити поле тендера | 81 | Звірити поле тендера |
| 90 | [Arguments] ${username} ${field} | 82 | [Arguments] ${username} ${field} |
| 91 | ${field_value}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} | 83 | ${field_value}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} |
| 92 | Звірити поле ${username} ${field} ${field_value} | 84 | Звірити поле ${username} ${field} ${field_value} |
| 93 | 85 | ||
| 94 | -Звірити поле | ||
| 95 | - [Arguments] ${username} ${field} ${subject} | 86 | +Звірити поле |
| 87 | + [Arguments] ${username} ${field} ${subject} | ||
| 96 | ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field} | 88 | ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field} |
| 89 | + Should Not Be Equal ${field_response} ${None} | ||
| 97 | Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker} | 90 | Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker} |
| 98 | 91 | ||
| 99 | Звірити поле створеного тендера | 92 | Звірити поле створеного тендера |
| 100 | [Arguments] ${initial} ${tender_data} ${field} | 93 | [Arguments] ${initial} ${tender_data} ${field} |
| 101 | ${field_value}= Get_From_Object ${initial} ${field} | 94 | ${field_value}= Get_From_Object ${initial} ${field} |
| 102 | ${field_response}= Get_From_Object ${tender_data} ${field} | 95 | ${field_response}= Get_From_Object ${tender_data} ${field} |
| 96 | + Should Not Be Equal ${field_response} ${None} | ||
| 97 | + Should Not Be Equal ${field_value} ${None} | ||
| 103 | Should Be Equal ${field_value} ${field_response} | 98 | Should Be Equal ${field_value} ${field_response} |
| 104 | 99 | ||
| 105 | Звірити дату тендера | 100 | Звірити дату тендера |
| 106 | [Arguments] ${username} ${field} | 101 | [Arguments] ${username} ${field} |
| 107 | ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} | 102 | ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} |
| 103 | + Should Not Be Equal ${isodate} ${None} | ||
| 108 | Звірити дату ${username} ${field} ${isodate} | 104 | Звірити дату ${username} ${field} ${isodate} |
| 109 | 105 | ||
| 110 | Звірити дату | 106 | Звірити дату |
| 111 | - [Arguments] ${username} ${field} ${subject} | 107 | + [Arguments] ${username} ${field} ${subject} |
| 112 | ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field} | 108 | ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field} |
| 113 | ${returned}= compare_date ${subject} ${field_date} | 109 | ${returned}= compare_date ${subject} ${field_date} |
| 114 | - Should Be True '${returned}' == 'True' | ||
| 115 | - | 110 | + Should Not Be Equal ${field_date} ${None} |
| 111 | + Should Not Be Equal ${returned} ${None} | ||
| 112 | + Should Be True '${returned}' == 'True' | ||
| 113 | + | ||
| 116 | Звірити поля предметів закупівлі багатопредметного тендера | 114 | Звірити поля предметів закупівлі багатопредметного тендера |
| 117 | [Arguments] ${username} ${field} | 115 | [Arguments] ${username} ${field} |
| 118 | Дочекатись синхронізації з майданчиком ${username} | 116 | Дочекатись синхронізації з майданчиком ${username} |
| @@ -122,10 +120,18 @@ TestSuiteSetup | @@ -122,10 +120,18 @@ TestSuiteSetup | ||
| 122 | \ Log ${index} | 120 | \ Log ${index} |
| 123 | \ Звірити поле тендера ${viewer} items[${index}].${field} | 121 | \ Звірити поле тендера ${viewer} items[${index}].${field} |
| 124 | 122 | ||
| 125 | - | 123 | +Звірити дату предметів закупівлі багатопредметного тендера |
| 124 | + [Arguments] ${username} ${field} | ||
| 125 | + Дочекатись синхронізації з майданчиком ${username} | ||
| 126 | + @{items}= Get_From_Object ${INITIAL_TENDER_DATA.data} items | ||
| 127 | + ${len_of_items}= Get Length ${items} | ||
| 128 | + :FOR ${index} IN RANGE ${len_of_items} | ||
| 129 | + \ Log ${index} | ||
| 130 | + \ Звірити дату тендера ${viewer} items[${index}].${field} | ||
| 131 | + | ||
| 126 | Викликати для учасника | 132 | Викликати для учасника |
| 127 | [Documentation] | 133 | [Documentation] |
| 128 | - ... cause sometimes keyword SHOULD fail to pass the testcase, this keyword takes "shouldfail" argument as first one in @{arguments} and switches the behaviour of keyword and "shouldfail" | 134 | + ... cause sometimes keyword SHOULD fail to pass the testcase, this keyword takes "shouldfail" argument as first one in @{arguments} and switches the behaviour of keyword and "shouldfail" |
| 129 | [Arguments] ${username} ${command} @{arguments} | 135 | [Arguments] ${username} ${command} @{arguments} |
| 130 | log ${username} | 136 | log ${username} |
| 131 | log ${command} | 137 | log ${command} |
| @@ -153,7 +159,7 @@ switchsate | @@ -153,7 +159,7 @@ switchsate | ||
| 153 | ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments} | 159 | ${status} ${value}= run_keyword_and_ignore_keyword_definations ${BROKERS['${USERS.users['${username}'].broker}'].keywords_file}.${command} ${username} @{arguments} |
| 154 | Run keyword if '${status}' == 'PASS' Log Учасник ${username} зміг виконати "${command}" WARN | 160 | Run keyword if '${status}' == 'PASS' Log Учасник ${username} зміг виконати "${command}" WARN |
| 155 | [return] ${value} | 161 | [return] ${value} |
| 156 | - | 162 | + |
| 157 | Дочекатись дати | 163 | Дочекатись дати |
| 158 | [Arguments] ${date} | 164 | [Arguments] ${date} |
| 159 | ${wait_timout}= wait_to_date ${date} | 165 | ${wait_timout}= wait_to_date ${date} |
| @@ -161,12 +167,12 @@ switchsate | @@ -161,12 +167,12 @@ switchsate | ||
| 161 | 167 | ||
| 162 | Дочекатись дати початоку прийому пропозицій | 168 | Дочекатись дати початоку прийому пропозицій |
| 163 | Дочекатись дати ${TENDER_DATA.data.tenderPeriod.startDate} | 169 | Дочекатись дати ${TENDER_DATA.data.tenderPeriod.startDate} |
| 164 | - | 170 | + |
| 165 | Дочекатись дати закінчення прийому пропозицій | 171 | Дочекатись дати закінчення прийому пропозицій |
| 166 | Дочекатись дати ${TENDER_DATA.data.tenderPeriod.endDate} | 172 | Дочекатись дати ${TENDER_DATA.data.tenderPeriod.endDate} |
| 167 | - | 173 | + |
| 168 | Дочекатись дати початоку аукціону | 174 | Дочекатись дати початоку аукціону |
| 169 | Дочекатись дати ${TENDER_DATA.data.auctionPeriod.startDate} | 175 | Дочекатись дати ${TENDER_DATA.data.auctionPeriod.startDate} |
| 170 | 176 | ||
| 171 | Дочекатись дати закінчення аукціону | 177 | Дочекатись дати закінчення аукціону |
| 172 | - Дочекатись дати ${TENDER_DATA.data.auctionPeriod.endDate} | ||
| 178 | + Дочекатись дати ${TENDER_DATA.data.auctionPeriod.endDate} |
| @@ -25,9 +25,9 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] | @@ -25,9 +25,9 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] | ||
| 25 | 25 | ||
| 26 | Можливість оголосити багатопредметний тендер | 26 | Можливість оголосити багатопредметний тендер |
| 27 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 27 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 28 | - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | ||
| 29 | - ${TENDER_ID}= Get From List ${ids} 0 | ||
| 30 | - ${INTERNAL_TENDER_ID}= Get From List ${ids} 1 | 28 | + ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} |
| 29 | + ${TENDER_ID}= Get From List ${ids} 0 | ||
| 30 | + ${INTERNAL_TENDER_ID}= Get From List ${ids} 1 | ||
| 31 | Set Global Variable ${INTERNAL_TENDER_ID} | 31 | Set Global Variable ${INTERNAL_TENDER_ID} |
| 32 | Set Global Variable ${TENDER_ID} | 32 | Set Global Variable ${TENDER_ID} |
| 33 | ${LAST_MODIFICATION_DATE}= Get Current Date | 33 | ${LAST_MODIFICATION_DATE}= Get Current Date |
| @@ -36,24 +36,24 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] | @@ -36,24 +36,24 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] | ||
| 36 | Отримати багатопредметний тендер по ідентифікатору | 36 | Отримати багатопредметний тендер по ідентифікатору |
| 37 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | 37 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
| 38 | Дочекатись синхронізації з майданчиком ${viewer} | 38 | Дочекатись синхронізації з майданчиком ${viewer} |
| 39 | - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID} | ||
| 40 | - | 39 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID} |
| 40 | + | ||
| 41 | Відображення опису позицій закупівлі багатопредметного тендера | 41 | Відображення опису позицій закупівлі багатопредметного тендера |
| 42 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 42 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 43 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} description | 43 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} description |
| 44 | - | 44 | + |
| 45 | Відображення дати доставки позицій закупівлі багатопредметного тендера | 45 | Відображення дати доставки позицій закупівлі багатопредметного тендера |
| 46 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 46 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 47 | - Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryDate.endDate | 47 | + Звірити дату предметів закупівлі багатопредметного тендера ${viewer} deliveryDate.endDate |
| 48 | 48 | ||
| 49 | Відображення координат широти доставки позицій закупівлі багатопредметного тендера | 49 | Відображення координат широти доставки позицій закупівлі багатопредметного тендера |
| 50 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 50 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 51 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.latitude | 51 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.latitude |
| 52 | - | 52 | + |
| 53 | Відображення координат довготи доставки позицій закупівлі багатопредметного тендера | 53 | Відображення координат довготи доставки позицій закупівлі багатопредметного тендера |
| 54 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 54 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 55 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.longitude | 55 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryLocation.longitude |
| 56 | - | 56 | + |
| 57 | Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера | 57 | Відображення назви нас. пункту доставки позицій закупівлі багатопредметного тендера |
| 58 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 58 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 59 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.countryName | 59 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.countryName |
| @@ -61,53 +61,53 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] | @@ -61,53 +61,53 @@ ${LOAD_USERS} ["${tender_owner}", "${provider}", "${viewer}"] | ||
| 61 | Відображення пошт коду доставки позицій закупівлі багатопредметного тендера | 61 | Відображення пошт коду доставки позицій закупівлі багатопредметного тендера |
| 62 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 62 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 63 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.postalCode | 63 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.postalCode |
| 64 | - | 64 | + |
| 65 | Відображення регіону доставки позицій закупівлі багатопредметного тендера | 65 | Відображення регіону доставки позицій закупівлі багатопредметного тендера |
| 66 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 66 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 67 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.region | 67 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.region |
| 68 | - | 68 | + |
| 69 | Відображення locality адреси доставки позицій закупівлі багатопредметного тендера | 69 | Відображення locality адреси доставки позицій закупівлі багатопредметного тендера |
| 70 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 70 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 71 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.locality | 71 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.locality |
| 72 | - | 72 | + |
| 73 | Відображення вулиці доставки позицій закупівлі багатопредметного тендера | 73 | Відображення вулиці доставки позицій закупівлі багатопредметного тендера |
| 74 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 74 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 75 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.streetAddress | 75 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} deliveryAddress.streetAddress |
| 76 | - | 76 | + |
| 77 | Відображення схеми класифікації позицій закупівлі багатопредметного тендера | 77 | Відображення схеми класифікації позицій закупівлі багатопредметного тендера |
| 78 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 78 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 79 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.scheme | 79 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.scheme |
| 80 | - | 80 | + |
| 81 | Відображення ідентифйікатора класифікації позицій закупівлі багатопредметного тендера | 81 | Відображення ідентифйікатора класифікації позицій закупівлі багатопредметного тендера |
| 82 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 82 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 83 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.id | 83 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.id |
| 84 | - | 84 | + |
| 85 | Відображення опису класифікації позицій закупівлі багатопредметного тендера | 85 | Відображення опису класифікації позицій закупівлі багатопредметного тендера |
| 86 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 86 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 87 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.description | 87 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} classification.description |
| 88 | - | 88 | + |
| 89 | Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера | 89 | Відображення схеми додаткової класифікації позицій закупівлі багатопредметного тендера |
| 90 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 90 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 91 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.scheme | 91 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.scheme |
| 92 | - | 92 | + |
| 93 | Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера | 93 | Відображення ідентифікатора додаткової класифікації позицій закупівлі багатопредметного тендера |
| 94 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 94 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 95 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.id | 95 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.id |
| 96 | - | 96 | + |
| 97 | Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера | 97 | Відображення опису додаткової класифікації позицій закупівлі багатопредметного тендера |
| 98 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 98 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 99 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.description | 99 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} additionalClassifications.description |
| 100 | - | 100 | + |
| 101 | Відображення назви одиниці позицій закупівлі багатопредметного тендера | 101 | Відображення назви одиниці позицій закупівлі багатопредметного тендера |
| 102 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 102 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 103 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.name | 103 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.name |
| 104 | - | 104 | + |
| 105 | Відображення коду одиниці позицій закупівлі багатопредметного тендера | 105 | Відображення коду одиниці позицій закупівлі багатопредметного тендера |
| 106 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 106 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 107 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.code | 107 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} unit.code |
| 108 | - | 108 | + |
| 109 | Відображення кількості позицій закупівлі багатопредметного тендера | 109 | Відображення кількості позицій закупівлі багатопредметного тендера |
| 110 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера | 110 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів багатопредметного тендера |
| 111 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} quantity | 111 | Звірити поля предметів закупівлі багатопредметного тендера ${viewer} quantity |
| 112 | - | ||
| 113 | - | 112 | + |
| 113 | + |
| 1 | +#!/usr/bin/env python | ||
| 1 | # -*- coding: utf-8 - | 2 | # -*- coding: utf-8 - |
| 2 | import os | 3 | import os |
| 3 | from munch import munchify, Munch, fromYAML | 4 | from munch import munchify, Munch, fromYAML |
| @@ -17,11 +18,14 @@ import time | @@ -17,11 +18,14 @@ import time | ||
| 17 | from .initial_data import ( | 18 | from .initial_data import ( |
| 18 | test_tender_data, test_question_data, test_question_answer_data, | 19 | test_tender_data, test_question_data, test_question_answer_data, |
| 19 | test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, | 20 | test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, |
| 20 | - auction_bid, prom_test_tender_data | 21 | + auction_bid, prom_test_tender_data, create_fake_doc |
| 21 | ) | 22 | ) |
| 23 | +import calendar | ||
| 22 | 24 | ||
| 23 | TIMEZONE = timezone('Europe/Kiev') | 25 | TIMEZONE = timezone('Europe/Kiev') |
| 24 | 26 | ||
| 27 | +def get_date(): | ||
| 28 | + return datetime.now().isoformat() | ||
| 25 | 29 | ||
| 26 | def change_state(arguments): | 30 | def change_state(arguments): |
| 27 | try: | 31 | try: |
| @@ -34,9 +38,6 @@ def change_state(arguments): | @@ -34,9 +38,6 @@ def change_state(arguments): | ||
| 34 | def prepare_prom_test_tender_data(): | 38 | def prepare_prom_test_tender_data(): |
| 35 | return munchify({'data': prom_test_tender_data()}) | 39 | return munchify({'data': prom_test_tender_data()}) |
| 36 | 40 | ||
| 37 | -def prepare_test_question_data(): | ||
| 38 | - return munchify({'data': test_question_data()}) | ||
| 39 | - | ||
| 40 | def compare_date(data1, data2): | 41 | def compare_date(data1, data2): |
| 41 | data1=parse(data1) | 42 | data1=parse(data1) |
| 42 | data2=parse(data2) | 43 | data2=parse(data2) |
| @@ -44,7 +45,6 @@ def compare_date(data1, data2): | @@ -44,7 +45,6 @@ def compare_date(data1, data2): | ||
| 44 | data1 = TIMEZONE.localize(data1) | 45 | data1 = TIMEZONE.localize(data1) |
| 45 | if data2.tzinfo is None: | 46 | if data2.tzinfo is None: |
| 46 | data2 = TIMEZONE.localize(data2) | 47 | data2 = TIMEZONE.localize(data2) |
| 47 | - | ||
| 48 | delta = (data1-data2).total_seconds() | 48 | delta = (data1-data2).total_seconds() |
| 49 | if abs(delta) > 60: | 49 | if abs(delta) > 60: |
| 50 | return False | 50 | return False |
| @@ -78,7 +78,6 @@ def load_initial_data_from(file_name): | @@ -78,7 +78,6 @@ def load_initial_data_from(file_name): | ||
| 78 | elif file_name.endswith(".yaml"): | 78 | elif file_name.endswith(".yaml"): |
| 79 | return fromYAML(file_obj) | 79 | return fromYAML(file_obj) |
| 80 | 80 | ||
| 81 | - | ||
| 82 | def prepare_test_tender_data(period_interval=2, mode='single'): | 81 | def prepare_test_tender_data(period_interval=2, mode='single'): |
| 83 | if mode == 'single': | 82 | if mode == 'single': |
| 84 | return munchify({'data': test_tender_data(period_interval=period_interval)}) | 83 | return munchify({'data': test_tender_data(period_interval=period_interval)}) |
| @@ -86,21 +85,16 @@ def prepare_test_tender_data(period_interval=2, mode='single'): | @@ -86,21 +85,16 @@ def prepare_test_tender_data(period_interval=2, mode='single'): | ||
| 86 | return munchify({'data': test_tender_data_multiple_lots(period_interval=period_interval)}) | 85 | return munchify({'data': test_tender_data_multiple_lots(period_interval=period_interval)}) |
| 87 | raise ValueError('A very specific bad thing happened') | 86 | raise ValueError('A very specific bad thing happened') |
| 88 | 87 | ||
| 89 | - | ||
| 90 | def run_keyword_and_ignore_keyword_definations(name, *args): | 88 | def run_keyword_and_ignore_keyword_definations(name, *args): |
| 91 | """Runs the given keyword with given arguments and returns the status as a Boolean value. | 89 | """Runs the given keyword with given arguments and returns the status as a Boolean value. |
| 92 | - | ||
| 93 | This keyword returns `True` if the keyword that is executed succeeds and | 90 | This keyword returns `True` if the keyword that is executed succeeds and |
| 94 | `False` if it fails. This is useful, for example, in combination with | 91 | `False` if it fails. This is useful, for example, in combination with |
| 95 | `Run Keyword If`. If you are interested in the error message or return | 92 | `Run Keyword If`. If you are interested in the error message or return |
| 96 | value, use `Run Keyword And Ignore Error` instead. | 93 | value, use `Run Keyword And Ignore Error` instead. |
| 97 | - | ||
| 98 | The keyword name and arguments work as in `Run Keyword`. | 94 | The keyword name and arguments work as in `Run Keyword`. |
| 99 | - | ||
| 100 | Example: | 95 | Example: |
| 101 | | ${passed} = | `Run Keyword And Return Status` | Keyword | args | | 96 | | ${passed} = | `Run Keyword And Return Status` | Keyword | args | |
| 102 | | `Run Keyword If` | ${passed} | Another keyword | | 97 | | `Run Keyword If` | ${passed} | Another keyword | |
| 103 | - | ||
| 104 | New in Robot Framework 2.7.6. | 98 | New in Robot Framework 2.7.6. |
| 105 | """ | 99 | """ |
| 106 | try: | 100 | try: |
| @@ -110,7 +104,6 @@ def run_keyword_and_ignore_keyword_definations(name, *args): | @@ -110,7 +104,6 @@ def run_keyword_and_ignore_keyword_definations(name, *args): | ||
| 110 | return "FAIL", "" | 104 | return "FAIL", "" |
| 111 | return status, _ | 105 | return status, _ |
| 112 | 106 | ||
| 113 | - | ||
| 114 | def set_tender_periods(tender): | 107 | def set_tender_periods(tender): |
| 115 | now = datetime.now() | 108 | now = datetime.now() |
| 116 | tender.data.enquiryPeriod.endDate = (now + timedelta(minutes=2)).isoformat() | 109 | tender.data.enquiryPeriod.endDate = (now + timedelta(minutes=2)).isoformat() |
| @@ -118,17 +111,14 @@ def set_tender_periods(tender): | @@ -118,17 +111,14 @@ def set_tender_periods(tender): | ||
| 118 | tender.data.tenderPeriod.endDate = (now + timedelta(minutes=4)).isoformat() | 111 | tender.data.tenderPeriod.endDate = (now + timedelta(minutes=4)).isoformat() |
| 119 | return tender | 112 | return tender |
| 120 | 113 | ||
| 121 | - | ||
| 122 | def set_access_key(tender, access_token): | 114 | def set_access_key(tender, access_token): |
| 123 | tender.access = munchify({"token": access_token}) | 115 | tender.access = munchify({"token": access_token}) |
| 124 | return tender | 116 | return tender |
| 125 | 117 | ||
| 126 | - | ||
| 127 | def set_to_object(obj, attribute, value): | 118 | def set_to_object(obj, attribute, value): |
| 128 | xpathset(obj, attribute.replace('.', '/'), value) | 119 | xpathset(obj, attribute.replace('.', '/'), value) |
| 129 | return obj | 120 | return obj |
| 130 | 121 | ||
| 131 | - | ||
| 132 | def get_from_object(obj, attribute): | 122 | def get_from_object(obj, attribute): |
| 133 | """Gets data from a dictionary using a dotted accessor-string""" | 123 | """Gets data from a dictionary using a dotted accessor-string""" |
| 134 | jsonpath_expr = parse_path(attribute) | 124 | jsonpath_expr = parse_path(attribute) |
| @@ -137,7 +127,6 @@ def get_from_object(obj, attribute): | @@ -137,7 +127,6 @@ def get_from_object(obj, attribute): | ||
| 137 | return return_list[0] | 127 | return return_list[0] |
| 138 | return None | 128 | return None |
| 139 | 129 | ||
| 140 | - | ||
| 141 | def wait_to_date(date_stamp): | 130 | def wait_to_date(date_stamp): |
| 142 | date = parse(date_stamp) | 131 | date = parse(date_stamp) |
| 143 | LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO")) | 132 | LOGGER.log_message(Message("date: {}".format(date.isoformat()), "INFO")) |
| @@ -147,4 +136,44 @@ def wait_to_date(date_stamp): | @@ -147,4 +136,44 @@ def wait_to_date(date_stamp): | ||
| 147 | wait_seconds += 2 | 136 | wait_seconds += 2 |
| 148 | if wait_seconds < 0: | 137 | if wait_seconds < 0: |
| 149 | return 0 | 138 | return 0 |
| 150 | - return wait_seconds | ||
| 139 | + return wait_seconds | ||
| 140 | + | ||
| 141 | +def convert_date_to_slash_format(isodate): | ||
| 142 | + iso_dt=parse_date(isodate) | ||
| 143 | + date_string = iso_dt.strftime("%d/%m/%Y") | ||
| 144 | + return date_string | ||
| 145 | + | ||
| 146 | +def convert_date_to_etender_format(isodate): | ||
| 147 | + iso_dt=parse_date(isodate) | ||
| 148 | + date_string = iso_dt.strftime("%d-%m-%Y") | ||
| 149 | + return date_string | ||
| 150 | + | ||
| 151 | +def convert_time_to_etender_format(isodate): | ||
| 152 | + iso_dt=parse_date(isodate) | ||
| 153 | + time_string = iso_dt.strftime("%H:%M") | ||
| 154 | + return time_string | ||
| 155 | + | ||
| 156 | +def newtend_date_picker_index(isodate): | ||
| 157 | + now = datetime.today() | ||
| 158 | + date_str = '01' + str(now.month) + str(now.year) | ||
| 159 | + first_day_of_month = datetime.strptime(date_str, "%d%m%Y") | ||
| 160 | + mod = first_day_of_month.isoweekday() - 2 | ||
| 161 | + iso_dt=parse_date(isodate) | ||
| 162 | + last_day_of_month = calendar.monthrange(now.year, now.month)[1] | ||
| 163 | + #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO")) | ||
| 164 | + if now.day>iso_dt.day: | ||
| 165 | + mod = calendar.monthrange(now.year, now.month)[1] + mod | ||
| 166 | + return mod + iso_dt.day | ||
| 167 | + | ||
| 168 | +def Add_data_for_GUI_FrontEnds(INITIAL_TENDER_DATA): | ||
| 169 | + now = datetime.now() | ||
| 170 | + INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | ||
| 171 | + INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=3)).isoformat() | ||
| 172 | + INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=4)).isoformat() | ||
| 173 | + INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=5)).isoformat() | ||
| 174 | + return INITIAL_TENDER_DATA | ||
| 175 | + | ||
| 176 | +def local_path_to_file(file_name): | ||
| 177 | + path = os.getcwd() | ||
| 178 | + path = path.split("brokers", 1)[0] + "/src/op_robot_tests/op_robot_tests/tests_files/documents/" + file_name | ||
| 179 | + return path |
| @@ -24,42 +24,49 @@ ${item_id} 0 | @@ -24,42 +24,49 @@ ${item_id} 0 | ||
| 24 | ${question_id} 0 | 24 | ${question_id} 0 |
| 25 | 25 | ||
| 26 | *** Test Cases *** | 26 | *** Test Cases *** |
| 27 | -Можливість оголосити однопердметний тендер | 27 | +Можливість оголосити однопредметний тендер |
| 28 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 28 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 29 | - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | ||
| 30 | - ${TENDER_ID}= Get From List ${ids} 0 | ||
| 31 | - ${INTERNAL_TENDER_ID}= Get From List ${ids} 1 | ||
| 32 | - Set Global Variable ${INTERNAL_TENDER_ID} | ||
| 33 | - Set Global Variable ${TENDER_ID} | 29 | + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), |
| 30 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | ||
| 34 | ${LAST_MODIFICATION_DATE}= Get Current Date | 31 | ${LAST_MODIFICATION_DATE}= Get Current Date |
| 35 | - Set Global Variable ${LAST_MODIFICATION_DATE} | 32 | + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} |
| 33 | + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | ||
| 34 | + log ${TENDER} | ||
| 36 | 35 | ||
| 37 | Можливасть додати тендерну документацію | 36 | Можливасть додати тендерну документацію |
| 38 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ | 37 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ |
| 39 | - Викликати для учасника ${tender_owner} Завантажити документ ${INTERNAL_TENDER_ID} | 38 | + [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі |
| 39 | + ${filepath}= create_fake_doc | ||
| 40 | + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ ${filepath} ${TENDER['TENDER_UAID']} | ||
| 41 | + ${file_upload_process_data} = Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply} | ||
| 42 | + log ${file_upload_process_data} | ||
| 43 | + Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data} | ||
| 44 | + Log ${USERS.users['${tender_owner}']} | ||
| 45 | + | ||
| 40 | 46 | ||
| 41 | Можливість подати скаргу на умови | 47 | Можливість подати скаргу на умови |
| 42 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови | 48 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови |
| 43 | - Викликати для учасника ${provider} Подати скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | 49 | + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі |
| 50 | + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | ||
| 44 | ${LAST_MODIFICATION_DATE}= Get Current Date | 51 | ${LAST_MODIFICATION_DATE}= Get Current Date |
| 45 | - Set Global Variable ${LAST_MODIFICATION_DATE} | 52 | + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} |
| 46 | 53 | ||
| 47 | Можливість побачити скаргу користувачем | 54 | Можливість побачити скаргу користувачем |
| 48 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера | 55 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
| 49 | - Викликати для учасника ${provider} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | 56 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} |
| 50 | 57 | ||
| 51 | можливість побачити скаргу анонімом | 58 | можливість побачити скаргу анонімом |
| 52 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 59 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 53 | - Викликати для учасника ${viewer} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | 60 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} |
| 54 | 61 | ||
| 55 | Пошук однопредметного тендера по ідентифікатору | 62 | Пошук однопредметного тендера по ідентифікатору |
| 56 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | 63 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
| 57 | Дочекатись синхронізації з майданчиком ${viewer} | 64 | Дочекатись синхронізації з майданчиком ${viewer} |
| 58 | - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} ${INTERNAL_TENDER_ID} | ||
| 59 | - | 65 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
| 66 | + | ||
| 60 | ###### | 67 | ###### |
| 61 | #Відображення основних даних оголошеного тендера: | 68 | #Відображення основних даних оголошеного тендера: |
| 62 | -#заголовок, опис, бюджет, тендерна документація, | 69 | +#заголовок, опис, бюджет, тендерна документація, |
| 63 | #procuringEntity, періоди уточнень/прийому-пропозицій, мінімального кроку | 70 | #procuringEntity, періоди уточнень/прийому-пропозицій, мінімального кроку |
| 64 | 71 | ||
| 65 | Відображення заголовоку оголошеного тендера | 72 | Відображення заголовоку оголошеного тендера |
| @@ -77,7 +84,7 @@ ${question_id} 0 | @@ -77,7 +84,7 @@ ${question_id} 0 | ||
| 77 | Відображення tenderID оголошеного тендера | 84 | Відображення tenderID оголошеного тендера |
| 78 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 85 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 79 | ${field_response}= Викликати для учасника ${viewer} отримати інформацію із тендера tenderID | 86 | ${field_response}= Викликати для учасника ${viewer} отримати інформацію із тендера tenderID |
| 80 | - Should Be Equal ${TENDER_ID} ${field_response} Майданчик ${USERS.users['${viewer}'].broker} | 87 | + Should Be Equal ${TENDER['TENDER_UAID']} ${field_response} Майданчик ${USERS.users['${viewer}'].broker} |
| 81 | 88 | ||
| 82 | Відображення procuringEntity.name оголошеного тендера | 89 | Відображення procuringEntity.name оголошеного тендера |
| 83 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 90 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| @@ -103,26 +110,18 @@ ${question_id} 0 | @@ -103,26 +110,18 @@ ${question_id} 0 | ||
| 103 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 110 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 104 | Звірити поле тендера ${viewer} minimalStep.amount | 111 | Звірити поле тендера ${viewer} minimalStep.amount |
| 105 | 112 | ||
| 106 | -Відображення тендерної документації оголошеного тендера | ||
| 107 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | ||
| 108 | - Звірити поле тендера ${viewer} documents.title | ||
| 109 | - #documents.format | ||
| 110 | - #documents.url | ||
| 111 | - #documents.datePublished | ||
| 112 | - #documents.dateModified | ||
| 113 | - #documents.id | ||
| 114 | - | ||
| 115 | Можливість редагувати однопредметний тендер | 113 | Можливість редагувати однопредметний тендер |
| 116 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 114 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 117 | - Викликати для учасника ${tender_owner} Внести зміни в тендер ${INTERNAL_TENDER_ID} description description | 115 | + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} description description |
| 116 | + | ||
| 117 | +Можливість додати позицію закупівлі в тендер | ||
| 118 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 119 | + Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER['TENDER_UAID']} 3 | ||
| 120 | + | ||
| 121 | +Можливість видалити позиції закупівлі тендера | ||
| 122 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 123 | + Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER['TENDER_UAID']} 2 | ||
| 118 | 124 | ||
| 119 | -#Можливість додати позицію закупівлі в тендер | ||
| 120 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 121 | -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${INTERNAL_TENDER_ID} 3 | ||
| 122 | -# | ||
| 123 | -#Можливість видалити позиції закупівлі тендера | ||
| 124 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | ||
| 125 | -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${INTERNAL_TENDER_ID} 2 | ||
| 126 | 125 | ||
| 127 | ####### | 126 | ####### |
| 128 | #Відображення однопредметного тендера | 127 | #Відображення однопредметного тендера |
| @@ -178,15 +177,15 @@ ${question_id} 0 | @@ -178,15 +177,15 @@ ${question_id} 0 | ||
| 178 | 177 | ||
| 179 | Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера | 178 | Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера |
| 180 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера | 179 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
| 181 | - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.scheme | 180 | + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].scheme |
| 182 | 181 | ||
| 183 | Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера | 182 | Відображення ідентифікатора додаткової класифікації позицій закупівлі однопредметного тендера |
| 184 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера | 183 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
| 185 | - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.id | 184 | + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].id |
| 186 | 185 | ||
| 187 | Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера | 186 | Відображення опису додаткової класифікації позицій закупівлі однопредметного тендера |
| 188 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера | 187 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
| 189 | - Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications.description | 188 | + Звірити поле тендера ${viewer} items[${item_id}].additionalClassifications[0].description |
| 190 | 189 | ||
| 191 | Відображення назви одиниці позицій закупівлі однопредметного тендера | 190 | Відображення назви одиниці позицій закупівлі однопредметного тендера |
| 192 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера | 191 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
| @@ -205,14 +204,14 @@ ${question_id} 0 | @@ -205,14 +204,14 @@ ${question_id} 0 | ||
| 205 | 204 | ||
| 206 | Задати питання | 205 | Задати питання |
| 207 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання | 206 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
| 208 | - Викликати для учасника ${provider} Задати питання ${INTERNAL_TENDER_ID} ${QUESTIONS[${question_id}]} | 207 | + Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} |
| 209 | ${now}= Get Current Date | 208 | ${now}= Get Current Date |
| 210 | Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} | 209 | Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} |
| 211 | 210 | ||
| 212 | Відображення заголовоку анонімного питання без відповіді | 211 | Відображення заголовоку анонімного питання без відповіді |
| 213 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей | 212 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
| 214 | Дочекатись синхронізації з майданчиком ${viewer} | 213 | Дочекатись синхронізації з майданчиком ${viewer} |
| 215 | - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} ${INTERNAL_TENDER_ID} | 214 | + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']} |
| 216 | Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title} | 215 | Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title} |
| 217 | 216 | ||
| 218 | Відображення опис анонімного питання без відповіді | 217 | Відображення опис анонімного питання без відповіді |
| @@ -221,184 +220,185 @@ ${question_id} 0 | @@ -221,184 +220,185 @@ ${question_id} 0 | ||
| 221 | 220 | ||
| 222 | Відображення дати анонімного питання без відповіді | 221 | Відображення дати анонімного питання без відповіді |
| 223 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей | 222 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
| 224 | - Звірити дату ${viewer} questions[${question_id}].date ${QUESTIONS[${question_id}].data.date} | 223 | + Звірити дату ${viewer} questions[${question_id}].date ${QUESTIONS[${question_id}].data.date} |
| 225 | 224 | ||
| 226 | Неможливість подати цінову пропозицію до початку періоду подачі пропозицій bidder1 | 225 | Неможливість подати цінову пропозицію до початку періоду подачі пропозицій bidder1 |
| 227 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | 226 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
| 228 | ${bid}= test bid data | 227 | ${bid}= test bid data |
| 229 | Log ${bid} | 228 | Log ${bid} |
| 230 | - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${bid} | 229 | + ${bidresponces}= Create Dictionary |
| 230 | + ${bid_before_biddperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid} | ||
| 231 | + Set To Dictionary ${bidresponces} bid_before_biddperiod_resp ${bid_before_biddperiod_resp} | ||
| 232 | + Set To Dictionary ${USERS.users['${provider}']} bidresponces ${bidresponces} | ||
| 233 | + log ${USERS.users['${provider}']} | ||
| 231 | 234 | ||
| 232 | ####### | 235 | ####### |
| 233 | #Відображення відповіді на запитання | 236 | #Відображення відповіді на запитання |
| 234 | # | 237 | # |
| 235 | Відповісти на запитання | 238 | Відповісти на запитання |
| 236 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання | 239 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання |
| 237 | - Викликати для учасника ${tender_owner} Відповісти на питання ${INTERNAL_TENDER_ID} 0 ${ANSWERS[0]} | 240 | + Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} |
| 238 | ${now}= Get Current Date | 241 | ${now}= Get Current Date |
| 239 | Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} | 242 | Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} |
| 240 | 243 | ||
| 241 | Відображення відповіді на запитання | 244 | Відображення відповіді на запитання |
| 242 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання | 245 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання |
| 243 | Дочекатись синхронізації з майданчиком ${viewer} | 246 | Дочекатись синхронізації з майданчиком ${viewer} |
| 244 | - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} ${INTERNAL_TENDER_ID} | 247 | + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']} |
| 245 | Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer} | 248 | Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer} |
| 246 | 249 | ||
| 247 | Можливість побачити скаргу користувачем під час періоду уточнень | 250 | Можливість побачити скаргу користувачем під час періоду уточнень |
| 248 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера | 251 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
| 249 | - Викликати для учасника ${provider} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | 252 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} |
| 250 | 253 | ||
| 251 | можливість побачити скаргу анонімом під час періоду уточнень | 254 | можливість побачити скаргу анонімом під час періоду уточнень |
| 252 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 255 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 253 | - Викликати для учасника ${viewer} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | 256 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} |
| 254 | 257 | ||
| 255 | -Подати цінову пропозицію bidder1 | 258 | +Подати цінову пропозицію bidder |
| 256 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | 259 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
| 257 | Дочекатись дати початоку прийому пропозицій | 260 | Дочекатись дати початоку прийому пропозицій |
| 258 | ${bid}= test bid data | 261 | ${bid}= test bid data |
| 259 | Log ${bid} | 262 | Log ${bid} |
| 260 | - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію ${INTERNAL_TENDER_ID} ${bid} | ||
| 261 | - Set Global Variable ${biddingresponce1} | ||
| 262 | - log ${biddingresponce1} | 263 | + ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} |
| 264 | + Set Global Variable ${biddingresponce0} | ||
| 265 | + log ${biddingresponce0} | ||
| 263 | 266 | ||
| 264 | -Можливість змінити цінову пропозицію до 50000 | 267 | +Можливість скасувати цінову пропозицію |
| 268 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | ||
| 269 | + ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponce0} | ||
| 270 | + | ||
| 271 | +Подати повторно цінову пропозицію першим учасником | ||
| 272 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | ||
| 273 | + Дочекатись дати початоку прийому пропозицій | ||
| 274 | + ${bid}= test bid data | ||
| 275 | + Log ${bid} | ||
| 276 | + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | ||
| 277 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} resp ${resp} | ||
| 278 | + log ${resp} | ||
| 279 | + log ${USERS.users['${provider}'].bidresponces} | ||
| 280 | + | ||
| 281 | +Можливість змінити повторну цінову пропозицію до 50000 | ||
| 265 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | 282 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
| 266 | - Set To Dictionary ${biddingresponce1.data.value} amount 50000 | ||
| 267 | - Log ${biddingresponce1.data.value} | ||
| 268 | - ${biddingresponce2}= Викликати для учасника ${provider} Змінити цінову пропозицію ${INTERNAL_TENDER_ID} ${biddingresponce1} | ||
| 269 | - Set Global Variable ${biddingresponce2} | ||
| 270 | - log ${biddingresponce2} | 283 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces['resp'].data.value} amount 50000 |
| 284 | + Log ${USERS.users['${provider}'].bidresponces['resp'].data.value} | ||
| 285 | + ${fixbidto50000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponces['resp']} | ||
| 286 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} fixbidto50000resp ${fixbidto50000resp} | ||
| 287 | + log ${fixbidto50000resp} | ||
| 271 | 288 | ||
| 272 | -Можливість змінити цінову пропозицію до 1 | 289 | +Можливість змінити повторну цінову пропозицію до 10 |
| 273 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | 290 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
| 274 | - Set To Dictionary ${biddingresponce1.data.value} amount 1 | ||
| 275 | - Log ${biddingresponce1.data.value} | ||
| 276 | - ${biddingresponce3}= Викликати для учасника ${provider} Змінити цінову пропозицію ${INTERNAL_TENDER_ID} ${biddingresponce1} | ||
| 277 | - Set Global Variable ${biddingresponce3} | ||
| 278 | - log ${biddingresponce3} | 291 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces['resp'].data.value} amount 10 |
| 292 | + Log ${USERS.users['${provider}'].bidresponces['fixbidto50000resp'].data.value} | ||
| 293 | + ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponces['resp']} | ||
| 294 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} fixbidto10resp ${fixbidto10resp} | ||
| 295 | + log ${fixbidto10resp} | ||
| 279 | 296 | ||
| 280 | -Завантажити документ першим учасником | 297 | +Завантажити документ першим учасником в повторну пропозицію |
| 281 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | 298 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця |
| 282 | log ${USERS.users['${provider}'].broker} | 299 | log ${USERS.users['${provider}'].broker} |
| 283 | - log ${biddingresponce1} | ||
| 284 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | ||
| 285 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | ||
| 286 | - log ${token1} | ||
| 287 | - ${upload_doc_responce}= Викликати для учасника ${provider} Завантажити документ в ставку ${token1} ${bid_id} | ||
| 288 | - Set Global Variable ${upload_doc_responce} | ||
| 289 | - | 300 | + ${filepath}= create_fake_doc |
| 301 | + ${bid_doc_upload}= Викликати для учасника ${provider} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} | ||
| 302 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_upload ${bid_doc_upload} | ||
| 303 | + | ||
| 304 | +порівняти документ | ||
| 305 | + [Tags] ${USERS.users['${provider}'].broker}: вичитати документ | ||
| 306 | + ${url}= Get Variable Value ${USERS.users['${provider}'].bidresponces['bid_doc_upload']['upload_responce'].data.url} | ||
| 307 | + ${doc} ${flnnm}= Викликати для учасника ${provider} отримати документ ${TENDER['TENDER_UAID']} ${url} | ||
| 308 | + | ||
| 309 | + FIXME: finish the keyword | ||
| 310 | + | ||
| 311 | + Should Be Equal ${flcntnt} ${doc} | ||
| 312 | + Should Be Equal ${flpth} ${flnnm} | ||
| 313 | + | ||
| 290 | Можливість змінити документацію цінової пропозиції | 314 | Можливість змінити документацію цінової пропозиції |
| 291 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | 315 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця |
| 292 | log ${USERS.users['${provider}'].broker} | 316 | log ${USERS.users['${provider}'].broker} |
| 293 | - log ${biddingresponce1} | ||
| 294 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | ||
| 295 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | ||
| 296 | - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id} | ||
| 297 | - log ${token1} | ||
| 298 | - Викликати для учасника ${provider} Змінити документ в ставці ${token1} ${bid_id} ${upload_doc_responce_id} | ||
| 299 | - | ||
| 300 | -Можливість скасувати цінову пропозицію | ||
| 301 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | ||
| 302 | - ${biddingresponce4}= Викликати для учасника ${provider} скасувати цінову пропозицію ${INTERNAL_TENDER_ID} ${biddingresponce1} | ||
| 303 | - Set Global Variable ${biddingresponce4} | ||
| 304 | - log ${biddingresponce4} | 317 | + ${filepath}= create_fake_doc |
| 318 | + ${bidid}= Get Variable Value ${USERS.users['${provider}'].bidresponces['resp'].data.id} | ||
| 319 | + ${docid}= Get Variable Value ${USERS.users['${provider}'].bidresponces['bid_doc_upload']['upload_responce'].data.id} | ||
| 320 | + ${bid_doc_modified}= Викликати для учасника ${provider} Змінити документ в ставці ${filepath} ${bidid} ${docid} | ||
| 321 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_modified ${bid_doc_modified} | ||
| 305 | 322 | ||
| 306 | Неможливість задати запитання після закінчення періоду уточнень | 323 | Неможливість задати запитання після закінчення періоду уточнень |
| 307 | [Documentation] | 324 | [Documentation] |
| 308 | ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" | 325 | ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" |
| 309 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання | 326 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
| 310 | - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${INTERNAL_TENDER_ID} ${questions[${question_id}]} | 327 | + ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${questions[${question_id}]} |
| 311 | 328 | ||
| 312 | -Подати цінову пропозицію bidder2 | 329 | +Подати цінову пропозицію другим учасником |
| 313 | [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | 330 | [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію |
| 314 | Дочекатись дати початоку прийому пропозицій | 331 | Дочекатись дати початоку прийому пропозицій |
| 315 | ${bid}= test bid data | 332 | ${bid}= test bid data |
| 316 | Log ${bid} | 333 | Log ${bid} |
| 317 | - ${biddingresponce5}= Викликати для учасника ${provider1} Подати цінову пропозицію ${INTERNAL_TENDER_ID} ${bid} | ||
| 318 | - Set Global Variable ${biddingresponce5} | ||
| 319 | - log ${biddingresponce5} | 334 | + ${bidresponces}= Create Dictionary |
| 335 | + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | ||
| 336 | + Set To Dictionary ${bidresponces} resp ${resp} | ||
| 337 | + Set To Dictionary ${USERS.users['${provider1}']} bidresponces ${bidresponces} | ||
| 338 | + log ${resp} | ||
| 339 | + log ${USERS.users['${provider1}'].bidresponces} | ||
| 320 | 340 | ||
| 321 | Неможливість побачити цінові пропозиції учасників під час прийому пропозицій | 341 | Неможливість побачити цінові пропозиції учасників під час прийому пропозицій |
| 322 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію | 342 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію |
| 323 | - ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера B | 343 | + |
| 344 | + FIXME: finish the keyword | ||
| 345 | + | ||
| 346 | + ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера | ||
| 324 | 347 | ||
| 325 | Завантажити документ другим учасником | 348 | Завантажити документ другим учасником |
| 326 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | 349 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця |
| 327 | log ${USERS.users['${provider1}'].broker} | 350 | log ${USERS.users['${provider1}'].broker} |
| 328 | - ${bid_id2}= get variable value ${biddingresponce5.data.id} | ||
| 329 | - ${token2}= Get Variable Value ${biddingresponce5.access.token} | ||
| 330 | - log ${token2} | ||
| 331 | - Викликати для учасника ${provider1} Завантажити документ в ставку ${token2} ${bid_id2} | 351 | + ${filepath}= create_fake_doc |
| 352 | + ${bid_doc_upload}= Викликати для учасника ${provider1} Завантажити документ в ставку ${filepath} ${TENDER['TENDER_UAID']} | ||
| 353 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} bid_doc_upload ${bid_doc_upload} | ||
| 332 | 354 | ||
| 333 | Можливість побачити скаргу користувачем під час подачі пропозицій | 355 | Можливість побачити скаргу користувачем під час подачі пропозицій |
| 334 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера | 356 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
| 335 | - Викликати для учасника ${provider} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | 357 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} |
| 336 | 358 | ||
| 337 | можливість побачити скаргу анонімом під час подачі пропозицій | 359 | можливість побачити скаргу анонімом під час подачі пропозицій |
| 338 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | 360 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 339 | - Викликати для учасника ${viewer} порівняти скаргу ${INTERNAL_TENDER_ID} ${COMPLAINTS[0]} | ||
| 340 | - | 361 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} |
| 341 | 362 | ||
| 342 | Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій | 363 | Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій |
| 343 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій | 364 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій |
| 344 | Дочекатись дати закінчення прийому пропозицій | 365 | Дочекатись дати закінчення прийому пропозицій |
| 345 | - Set To Dictionary ${biddingresponce1.data.value} amount 50000 | ||
| 346 | - Log ${biddingresponce5.data.value} | ||
| 347 | - ${biddingresponce6}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5} | ||
| 348 | - Set Global Variable ${biddingresponce6} | ||
| 349 | - log ${biddingresponce6} | ||
| 350 | - | 366 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces['resp'].data.value} amount 50000 |
| 367 | + Log ${USERS.users['${provider1}'].bidresponces['resp'].data.value} | ||
| 368 | + ${failfixbidto50000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | ||
| 369 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} failfixbidto50000resp ${failfixbidto50000resp} | ||
| 370 | + log ${failfixbidto50000resp} | ||
| 371 | + | ||
| 351 | Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій | 372 | Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
| 352 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій | 373 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
| 353 | - Set To Dictionary ${biddingresponce5.data.value} amount 1 | ||
| 354 | - Log ${biddingresponce1.data.value} | ||
| 355 | - ${biddingresponce7}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5} | ||
| 356 | - Set Global Variable ${biddingresponce7} | ||
| 357 | - log ${biddingresponce3} | 374 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces['resp'].data.value} amount 1 |
| 375 | + Log ${USERS.users['${provider1}'].bidresponces['resp'].data.value} | ||
| 376 | + ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | ||
| 377 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} failfixbidto1resp ${failfixbidto1resp} | ||
| 378 | + log ${failfixbidto1resp} | ||
| 358 | 379 | ||
| 359 | Неможливість скасувати цінову пропозицію | 380 | Неможливість скасувати цінову пропозицію |
| 360 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | ||
| 361 | - ${biddingresponce8}= Викликати для учасника ${provider} скасувати цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5} | ||
| 362 | - Set Global Variable ${biddingresponce4} | ||
| 363 | - log ${biddingresponce8} | 381 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію |
| 382 | + ${biddingresponce}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | ||
| 364 | 383 | ||
| 365 | Неможливість завантажити документ другим учасником після закінчення прийому пропозицій | 384 | Неможливість завантажити документ другим учасником після закінчення прийому пропозицій |
| 366 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій | ||
| 367 | - log ${USERS.users['${provider1}'].broker} | ||
| 368 | - log ${biddingresponce5} | ||
| 369 | - ${bid_id}= get variable value ${biddingresponce5.data.id} | ||
| 370 | - ${token1}= Get Variable Value ${biddingresponce5.access.token} | ||
| 371 | - log ${token1} | ||
| 372 | - ${upload_doc_responce2}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${token1} ${bid_id} | ||
| 373 | - log ${upload_doc_responce_id2} | ||
| 374 | - Set Global Variable ${upload_doc_responce2} | ||
| 375 | - | ||
| 376 | -Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій | ||
| 377 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій | ||
| 378 | - log ${USERS.users['${provider}'].broker} | ||
| 379 | - log ${biddingresponce5} | ||
| 380 | - ${bid_id}= get variable value ${biddingresponce5.data.id} | ||
| 381 | - ${token1}= Get Variable Value ${biddingresponce5.access.token} | ||
| 382 | - ${upload_doc_responce_id2}= get variable value ${upload_doc_responce2.data.id} | ||
| 383 | - log ${upload_doc_responce_id2} | ||
| 384 | - log ${token1} | ||
| 385 | - Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id2} | ||
| 386 | - | ||
| 387 | - | ||
| 388 | -Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій | ||
| 389 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | ||
| 390 | - log ${USERS.users['${provider}'].broker} | ||
| 391 | - log ${biddingresponce1} | ||
| 392 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | ||
| 393 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | ||
| 394 | - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id} | ||
| 395 | - log ${token1} | ||
| 396 | - Викликати для учасника ${provider} Змінити документ в ставці ${token1} ${bid_id} ${upload_doc_responce_id} | ||
| 397 | - | ||
| 398 | - | ||
| 399 | -Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій | ||
| 400 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій | ||
| 401 | - ${biddingresponce8}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${INTERNAL_TENDER_ID} ${biddingresponce5} | ||
| 402 | - Set Global Variable ${biddingresponce8} | ||
| 403 | - log ${biddingresponce8} | 385 | + [Tags] ${USERS.users['${provider1}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій |
| 386 | + ${filepath}= create_fake_doc | ||
| 387 | + ${bid_doc_upload_fail}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${filepath} ${TENDER['TENDER_UAID']} | ||
| 388 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponces} bid_doc_upload_fail ${bid_doc_upload_fail} | ||
| 404 | 389 | ||
| 390 | +Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій | ||
| 391 | + [Tags] ${USERS.users['${provider1}'].broker}: | ||
| 392 | + ${filepath}= create_fake_doc | ||
| 393 | + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id} | ||
| 394 | + ${docid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['bid_doc_upload']['upload_responce'].data.id} | ||
| 395 | + ${bid_doc_modified_failed}= Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${filepath} ${bidid} ${docid} | ||
| 396 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_modified_failed ${bid_doc_modified_failed} | ||
| 397 | + | ||
| 398 | +Вичитати цінову пропозицію | ||
| 399 | + #sleep 120 | ||
| 400 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | ||
| 401 | + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id} | ||
| 402 | + ${token}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].access.token} | ||
| 403 | + ${bids}= Викликати для учасника ${provider1} Отримати пропозиції ${TENDER['TENDER_UAID']} ${bidid} ${token} | ||
| 404 | + log ${bids} |
| @@ -11,9 +11,7 @@ Suite Teardown Close all browsers | @@ -11,9 +11,7 @@ Suite Teardown Close all browsers | ||
| 11 | 11 | ||
| 12 | *** Variables *** | 12 | *** Variables *** |
| 13 | ${tender_dump_id} 0 | 13 | ${tender_dump_id} 0 |
| 14 | -${item_id} 0 | ||
| 15 | -${question_id} 0 | ||
| 16 | - | 14 | +${mode} single |
| 17 | 15 | ||
| 18 | ${tender_owner} Tender_Owner | 16 | ${tender_owner} Tender_Owner |
| 19 | ${provider} Tender_User | 17 | ${provider} Tender_User |
| @@ -21,16 +19,9 @@ ${provider1} Tender_User1 | @@ -21,16 +19,9 @@ ${provider1} Tender_User1 | ||
| 21 | ${viewer} Tender_Viewer | 19 | ${viewer} Tender_Viewer |
| 22 | 20 | ||
| 23 | ${LOAD_USERS} ["${tender_owner}", "${provider}", "${provider1}", "${viewer}"] | 21 | ${LOAD_USERS} ["${tender_owner}", "${provider}", "${provider1}", "${viewer}"] |
| 24 | -#Avalable roles and users | ||
| 25 | 22 | ||
| 26 | -#roles: Owner, User, Viewer | ||
| 27 | - | ||
| 28 | -#palyers: | ||
| 29 | - #E-tender | ||
| 30 | - #Prom | ||
| 31 | - #SmartTender | ||
| 32 | - #Publicbid | ||
| 33 | - #Netcast | 23 | +${item_id} 0 |
| 24 | +${question_id} 0 | ||
| 34 | 25 | ||
| 35 | *** Test Cases *** | 26 | *** Test Cases *** |
| 36 | Можливість оголосити однопердметний тендер | 27 | Можливість оголосити однопердметний тендер |
Please
register
or
login
to post a comment