Commit f451e93abf997c640da029f63d718ab2f1ac491a
1 parent
601fbee2
Додано метод local_path_to_file у service_keyword.py, Переписано задати питання …
…і відповісти на питання
Showing
12 changed files
with
993 additions
and
510 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,21 +5,8 @@ Library DateTime |
| 5 | 5 | |
| 6 | 6 | *** Variables *** |
| 7 | 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 | 8 | |
| 18 | 9 | *** Keywords *** |
| 19 | -Підготувати дані для оголошення тендера | |
| 20 | - ${INITIAL_TENDER_DATA}= prepare_test_tender_data | |
| 21 | - [return] ${INITIAL_TENDER_DATA} | |
| 22 | - | |
| 23 | 10 | Підготувати клієнт для користувача |
| 24 | 11 | [Arguments] @{ARGUMENTS} |
| 25 | 12 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
| ... | ... | @@ -27,7 +14,6 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 27 | 14 | Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} |
| 28 | 15 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
| 29 | 16 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} |
| 30 | - | |
| 31 | 17 | # login |
| 32 | 18 | Wait Until Page Contains Element id=inputUsername 100 |
| 33 | 19 | Input text id=inputUsername ${USERS.users['${username}'].login} |
| ... | ... | @@ -40,32 +26,30 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 40 | 26 | [Documentation] |
| 41 | 27 | ... ${ARGUMENTS[0]} == username |
| 42 | 28 | ... ${ARGUMENTS[1]} == tender_data |
| 43 | - | |
| 44 | - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
| 45 | - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
| 46 | - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
| 47 | - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
| 48 | - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
| 49 | - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
| 29 | + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
| 30 | + ${items}= Get From Dictionary ${tender_data.data} items | |
| 31 | + ${title}= Get From Dictionary ${tender_data.data} title | |
| 32 | + ${description}= Get From Dictionary ${tender_data.data} description | |
| 33 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
| 34 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
| 35 | + ${items_description}= Get From Dictionary ${tender_data.data} description | |
| 50 | 36 | ${quantity}= Get From Dictionary ${items[0]} quantity |
| 51 | 37 | ${cpv}= Get From Dictionary ${items[0].classification} id |
| 52 | - ${cpv_id}= Get From Dictionary ${items[0].classification} id | |
| 53 | 38 | ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description |
| 54 | 39 | ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id |
| 55 | 40 | ${unit}= Get From Dictionary ${items[0].unit} name |
| 56 | - ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | |
| 41 | + ${start_date}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate | |
| 57 | 42 | ${start_date}= convert_date_to_etender_format ${start_date} |
| 58 | - ${start_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | |
| 43 | + ${start_time}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate | |
| 59 | 44 | ${start_time}= convert_time_to_etender_format ${start_time} |
| 60 | - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
| 45 | + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
| 61 | 46 | ${end_date}= convert_date_to_etender_format ${end_date} |
| 62 | - ${end_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
| 47 | + ${end_time}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
| 63 | 48 | ${end_time}= convert_time_to_etender_format ${end_time} |
| 64 | - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
| 49 | + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
| 65 | 50 | ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date} |
| 66 | - ${enquiry_end_time}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
| 51 | + ${enquiry_end_time}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
| 67 | 52 | ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time} |
| 68 | - | |
| 69 | 53 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
| 70 | 54 | Wait Until Page Contains Мої закупівлі 100 |
| 71 | 55 | Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі'] |
| ... | ... | @@ -79,6 +63,7 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 79 | 63 | Input text id=minimalStep ${step_rate} |
| 80 | 64 | Input text id=itemsDescription ${items_description} |
| 81 | 65 | Input text id=itemsQuantity ${quantity} |
| 66 | + Wait Until Page Contains Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] 100 | |
| 82 | 67 | Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] |
| 83 | 68 | Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date} |
| 84 | 69 | 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} |
| ... | ... | @@ -105,27 +90,33 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 105 | 90 | Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a |
| 106 | 91 | ${tender_UAid}= Wait Until Keyword Succeeds 240sec 2sec get tender UAid |
| 107 | 92 | ### harcode Idis bacause issues on the E-tender side, to remove, 1 line: |
| 108 | - ${tender_UAid}= Convert To String UA-2015-06-30-000012 | |
| 109 | - ${id}= Oтримати internal id по UAid ${ARGUMENTS[0]} ${tender_UAid} | |
| 110 | - ${Ids} Create List ${tender_UAid} ${id} | |
| 93 | + ${tender_UAid}= Convert To String UA-2015-08-03-000025 | |
| 94 | + ${Ids}= Convert To String ${tender_UAid} | |
| 95 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid} | |
| 111 | 96 | [return] ${Ids} |
| 112 | 97 | |
| 98 | +Set Multi Ids | |
| 99 | + [Arguments] @{ARGUMENTS} | |
| 100 | + [Documentation] | |
| 101 | + ... ${ARGUMENTS[0]} == username | |
| 102 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
| 103 | + ${id}= Oтримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 104 | + ${Ids}= Create List ${tender_UAid} ${id} | |
| 105 | + | |
| 113 | 106 | get tender UAid |
| 114 | 107 | ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")] |
| 115 | 108 | ${tender_UAid}= Get Substring ${tender_UAid} 7 27 |
| 116 | 109 | |
| 117 | - | |
| 118 | 110 | Oтримати internal id по UAid |
| 119 | 111 | [Arguments] @{ARGUMENTS} |
| 120 | 112 | [Documentation] |
| 121 | 113 | ... ${ARGUMENTS[0]} == username |
| 122 | - ... ${ARGUMENTS[1]} == tenderid | |
| 114 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
| 123 | 115 | etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 124 | 116 | ${current_location}= Get Location |
| 125 | 117 | ${tender_id}= Fetch From Right ${current_location} / |
| 126 | -### harcode Idis bacause issues on the E-tender side, to remove, 1 line: | |
| 118 | +## harcode Idis bacause issues on the E-tender side, to remove, 1 line: | |
| 127 | 119 | ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2 |
| 128 | - log ${tender_id} | |
| 129 | 120 | [return] ${tender_id} |
| 130 | 121 | |
| 131 | 122 | Додати предмет |
| ... | ... | @@ -142,31 +133,24 @@ Oтримати internal id по UAid |
| 142 | 133 | Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100 |
| 143 | 134 | Click Element xpath=.//*[@id='myform']/tender-form/div/button |
| 144 | 135 | Sleep 2 |
| 145 | - Wait Until Page Contains Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[2] 100 | |
| 146 | 136 | Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[2] |
| 147 | 137 | Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] |
| 148 | 138 | Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc1} |
| 149 | 139 | Wait Until Page Contains ${dkpp_id1} |
| 150 | 140 | Click Element xpath=//td[contains(., '${dkpp_id1}')] |
| 151 | 141 | Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] |
| 152 | - | |
| 153 | 142 | Sleep 2 |
| 154 | - Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100 | |
| 155 | 143 | Click Element xpath=.//*[@id='myform']/tender-form/div/button |
| 156 | 144 | Sleep 2 |
| 157 | - Wait Until Page Contains Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[3] 100 | |
| 158 | 145 | Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[3] |
| 159 | 146 | Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] |
| 160 | 147 | Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc2} |
| 161 | 148 | Wait Until Page Contains ${dkpp_id2} |
| 162 | 149 | Click Element xpath=//td[contains(., '${dkpp_id2}')] |
| 163 | 150 | Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] |
| 164 | - | |
| 165 | 151 | Sleep 2 |
| 166 | - Wait Until Page Contains Element xpath=.//*[@id='myform']/tender-form/div/button 100 | |
| 167 | 152 | Click Element xpath=.//*[@id='myform']/tender-form/div/button |
| 168 | 153 | Sleep 2 |
| 169 | - Wait Until Page Contains Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[4] 100 | |
| 170 | 154 | Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[4] |
| 171 | 155 | Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] |
| 172 | 156 | Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc3} |
| ... | ... | @@ -174,13 +158,11 @@ Oтримати internal id по UAid |
| 174 | 158 | Click Element xpath=//td[contains(., '${dkpp_id3}')] |
| 175 | 159 | Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] |
| 176 | 160 | |
| 177 | - | |
| 178 | 161 | Пошук тендера по ідентифікатору |
| 179 | 162 | [Arguments] @{ARGUMENTS} |
| 180 | 163 | [Documentation] |
| 181 | 164 | ... ${ARGUMENTS[0]} == username |
| 182 | - ... ${ARGUMENTS[1]} == tenderId | |
| 183 | - | |
| 165 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
| 184 | 166 | Switch browser ${ARGUMENTS[0]} |
| 185 | 167 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
| 186 | 168 | Wait Until Page Contains Список закупівель 10 |
| ... | ... | @@ -193,6 +175,57 @@ Oтримати internal id по UAid |
| 193 | 175 | sleep 1 |
| 194 | 176 | Capture Page Screenshot |
| 195 | 177 | |
| 178 | +Подати цінову пропозицію | |
| 179 | + [Arguments] @{ARGUMENTS} | |
| 180 | + [Documentation] | |
| 181 | + ... ${ARGUMENTS[0]} == username | |
| 182 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
| 183 | + ... ${ARGUMENTS[2]} == test_bid_data | |
| 184 | + | |
| 185 | + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
| 186 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 187 | + Wait Until Page Contains Інформація про процедуру закупівлі 100 | |
| 188 | + Wait Until Page Contains Element id=amount 10 | |
| 189 | + Input text id=amount ${bid} | |
| 190 | + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
| 191 | + | |
| 192 | +Задати питання | |
| 193 | + [Arguments] @{ARGUMENTS} | |
| 194 | + [Documentation] | |
| 195 | + ... ${ARGUMENTS[0]} = username | |
| 196 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
| 197 | + ... ${ARGUMENTS[2]} = question_data | |
| 198 | + | |
| 199 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
| 200 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
| 201 | + | |
| 202 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 203 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 204 | + | |
| 205 | + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | |
| 206 | + Click Element jquery=a[href^="#/addQuestion/"] | |
| 207 | + Wait Until Page Contains Element id=title | |
| 208 | + Input text id=title ${title} | |
| 209 | + Input text id=description ${description} | |
| 210 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
| 211 | + | |
| 212 | +Відповісти на питання | |
| 213 | + [Arguments] @{ARGUMENTS} | |
| 214 | + [Documentation] | |
| 215 | + ... ${ARGUMENTS[0]} = username | |
| 216 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
| 217 | + ... ${ARGUMENTS[2]} = 0 | |
| 218 | + ... ${ARGUMENTS[3]} = answer_data | |
| 219 | + | |
| 220 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
| 221 | + | |
| 222 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 223 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 224 | + | |
| 225 | + Click Element xpath=//div[div/pre[1]]/div[1] | |
| 226 | + Input text xpath=//div[textarea]/textarea ${answer} | |
| 227 | + Click Element xpath=//div[textarea]/span/button[1] | |
| 228 | + | |
| 196 | 229 | обновити сторінку з тендером |
| 197 | 230 | [Arguments] @{ARGUMENTS} |
| 198 | 231 | [Documentation] |
| ... | ... | @@ -327,54 +360,3 @@ Oтримати internal id по UAid |
| 327 | 360 | відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> |
| 328 | 361 | ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> |
| 329 | 362 | [return] ${return_value} |
| 330 | - | |
| 331 | -Подати цінову пропозицію | |
| 332 | - [Arguments] @{ARGUMENTS} | |
| 333 | - [Documentation] | |
| 334 | - ... ${ARGUMENTS[0]} == username | |
| 335 | - ... ${ARGUMENTS[1]} == ${INTERNAL_TENDER_ID} | |
| 336 | - ... ${ARGUMENTS[2]} == test_bid_data | |
| 337 | - | |
| 338 | - ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
| 339 | - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 340 | - Wait Until Page Contains Інформація про процедуру закупівлі 100 | |
| 341 | - Wait Until Page Contains Element id=amount 10 | |
| 342 | - Input text id=amount ${bid} | |
| 343 | - Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
| 344 | - | |
| 345 | -Задати питання | |
| 346 | - [Arguments] @{ARGUMENTS} | |
| 347 | - [Documentation] | |
| 348 | - ... ${ARGUMENTS[0]} = username | |
| 349 | - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
| 350 | - ... ${ARGUMENTS[2]} = question_data | |
| 351 | - | |
| 352 | - ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
| 353 | - ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
| 354 | - | |
| 355 | - Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 356 | - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
| 357 | - | |
| 358 | - Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | |
| 359 | - Click Element jquery=a[href^="#/addQuestion/"] | |
| 360 | - Wait Until Page Contains Element id=title | |
| 361 | - Input text id=title ${title} | |
| 362 | - Input text id=description ${description} | |
| 363 | - Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
| 364 | - | |
| 365 | -Відповісти на питання | |
| 366 | - [Arguments] @{ARGUMENTS} | |
| 367 | - [Documentation] | |
| 368 | - ... ${ARGUMENTS[0]} = username | |
| 369 | - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
| 370 | - ... ${ARGUMENTS[2]} = 0 | |
| 371 | - ... ${ARGUMENTS[3]} = answer_data | |
| 372 | - | |
| 373 | - ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
| 374 | - | |
| 375 | - Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 376 | - etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
| 377 | - | |
| 378 | - Click Element xpath=//div[div/pre[1]]/div[1] | |
| 379 | - Input text xpath=//div[textarea]/textarea ${answer} | |
| 380 | - Click Element xpath=//div[textarea]/span/button[1] | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -5,15 +5,7 @@ Library DateTime |
| 5 | 5 | |
| 6 | 6 | *** Variables *** |
| 7 | 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 | +${file_path} local_path_to_file("TestDocument.docx") | |
| 17 | 9 | |
| 18 | 10 | *** Keywords *** |
| 19 | 11 | Підготувати клієнт для користувача |
| ... | ... | @@ -23,16 +15,11 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 23 | 15 | Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]} |
| 24 | 16 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
| 25 | 17 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} |
| 26 | - | |
| 27 | -# login | |
| 28 | -# Wait Until Page Contains Element name=siteLogin 100 | |
| 29 | -# Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login} | |
| 30 | -# Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password} | |
| 31 | -# Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input | |
| 18 | + Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]} | |
| 32 | 19 | |
| 33 | 20 | Wait Until Page Contains Element jquery=a[href="/cabinet"] |
| 34 | 21 | Click Element jquery=a[href="/cabinet"] |
| 35 | - Wait Until Page Contains Element name=email 100 | |
| 22 | + Wait Until Page Contains Element name=email 10 | |
| 36 | 23 | # Input text name=email mail |
| 37 | 24 | Sleep 1 |
| 38 | 25 | Input text name=email ${USERS.users['${username}'].login} |
| ... | ... | @@ -41,20 +28,29 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 41 | 28 | Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 100 |
| 42 | 29 | Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] |
| 43 | 30 | |
| 31 | +Pre Login | |
| 32 | + [Arguments] @{ARGUMENTS} | |
| 33 | + [Documentation] | |
| 34 | + ... ${ARGUMENTS[0]} == username | |
| 35 | + Wait Until Page Contains Element name=siteLogin 10 | |
| 36 | + Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login} | |
| 37 | + Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password} | |
| 38 | + Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input | |
| 39 | + | |
| 44 | 40 | Створити тендер |
| 45 | 41 | [Arguments] @{ARGUMENTS} |
| 46 | 42 | [Documentation] |
| 47 | 43 | ... ${ARGUMENTS[0]} == username |
| 48 | 44 | ... ${ARGUMENTS[1]} == tender_data |
| 49 | - | |
| 50 | - ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
| 51 | - ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
| 52 | - ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
| 53 | - ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
| 54 | - ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
| 55 | - ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
| 45 | + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
| 46 | + ${items}= Get From Dictionary ${tender_data.data} items | |
| 47 | + ${title}= Get From Dictionary ${tender_data.data} title | |
| 48 | + ${description}= Get From Dictionary ${tender_data.data} description | |
| 49 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
| 50 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
| 51 | + ${items_description}= Get From Dictionary ${tender_data.data} description | |
| 56 | 52 | ${quantity}= Get From Dictionary ${items[0]} quantity |
| 57 | - ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName | |
| 53 | + ${countryName}= Get From Dictionary ${tender_data.data.procuringEntity.address} countryName | |
| 58 | 54 | ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate |
| 59 | 55 | ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date} |
| 60 | 56 | ${cpv}= Get From Dictionary ${items[0].classification} description_ua |
| ... | ... | @@ -63,9 +59,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 63 | 59 | ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description |
| 64 | 60 | ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id |
| 65 | 61 | ${dkpp_id1}= Replace String ${dkpp_id} - _ |
| 66 | - ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
| 62 | + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
| 67 | 63 | ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date} |
| 68 | - ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
| 64 | + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
| 69 | 65 | ${end_date}= convert_date_to_slash_format ${end_date} |
| 70 | 66 | |
| 71 | 67 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
| ... | ... | @@ -80,6 +76,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 80 | 76 | Input text name=items[0][item_quantity] ${quantity} |
| 81 | 77 | Input text name=items[0][item_deliveryAddress_countryName] ${countryName} |
| 82 | 78 | Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date} |
| 79 | + Click Element xpath=//a[@class ='uploadFile'] | |
| 80 | + Choose File xpath=//a[@class ='uploadFile'] ${file_path} | |
| 81 | + Debug | |
| 83 | 82 | Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'] |
| 84 | 83 | Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] |
| 85 | 84 | Input text id=search ${cpv} |
| ... | ... | @@ -102,11 +101,18 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 102 | 101 | Wait Until Page Contains Element xpath=//a[contains(@class, 'button pubBtn')] 100 |
| 103 | 102 | Click Element xpath=//a[contains(@class, 'button pubBtn')] |
| 104 | 103 | Wait Until Page Contains Тендер опубліковано 100 |
| 105 | - ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2] | |
| 106 | - ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2] | |
| 107 | - ${Ids} Create List ${tender_UAid} ${id} | |
| 104 | + ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2] | |
| 105 | + ${Ids}= Convert To String ${tender_UAid} | |
| 106 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
| 108 | 107 | [return] ${Ids} |
| 109 | 108 | |
| 109 | +Set Multi Ids | |
| 110 | + [Arguments] @{ARGUMENTS} | |
| 111 | + [Documentation] | |
| 112 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
| 113 | + ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2] | |
| 114 | + ${Ids}= Create List ${tender_UAid} ${id} | |
| 115 | + | |
| 110 | 116 | Додати предмет |
| 111 | 117 | [Arguments] @{ARGUMENTS} |
| 112 | 118 | [Documentation] |
| ... | ... | @@ -179,17 +185,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 179 | 185 | Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date} |
| 180 | 186 | Input text name=tender_tenderPeriod_endDate ${end_date} |
| 181 | 187 | |
| 182 | - | |
| 183 | 188 | Пошук тендера по ідентифікатору |
| 184 | 189 | [Arguments] @{ARGUMENTS} |
| 185 | 190 | [Documentation] |
| 186 | 191 | ... ${ARGUMENTS[0]} == username |
| 187 | 192 | ... ${ARGUMENTS[1]} == tenderId |
| 188 | - ... ${ARGUMENTS[2]} == id | |
| 189 | 193 | Switch browser ${ARGUMENTS[0]} |
| 190 | 194 | |
| 191 | - ${current_location}= Get Location | |
| 192 | - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | |
| 193 | 195 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
| 194 | 196 | Wait Until Page Contains Держзакупівлі.онлайн 10 |
| 195 | 197 | # sleep 1 |
| ... | ... | @@ -205,13 +207,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 205 | 207 | [Arguments] @{ARGUMENTS} |
| 206 | 208 | [Documentation] |
| 207 | 209 | ... ${ARGUMENTS[0]} == username |
| 208 | - ... ${ARGUMENTS[1]} == tenderId | |
| 209 | - ... ${ARGUMENTS[2]} == id | |
| 210 | + ... ${ARGUMENTS[1]} == tenderUaId | |
| 211 | + ... ${ARGUMENTS[2]} == questionId | |
| 210 | 212 | ${title}= Get From Dictionary ${ARGUMENTS[2].data} title |
| 211 | 213 | ${description}= Get From Dictionary ${ARGUMENTS[2].data} description |
| 212 | 214 | |
| 213 | 215 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
| 214 | - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
| 216 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 215 | 217 | |
| 216 | 218 | Click Element xpath=//a[@class='reverse tenderLink'] |
| 217 | 219 | Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20 |
| ... | ... | @@ -227,13 +229,13 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
| 227 | 229 | [Arguments] @{ARGUMENTS} |
| 228 | 230 | [Documentation] |
| 229 | 231 | ... ${ARGUMENTS[0]} = username |
| 230 | - ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
| 232 | + ... ${ARGUMENTS[1]} = tenderUaId | |
| 231 | 233 | ... ${ARGUMENTS[2]} = 0 |
| 232 | 234 | ... ${ARGUMENTS[3]} = answer_data |
| 233 | 235 | |
| 234 | 236 | ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer |
| 235 | 237 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
| 236 | - netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
| 238 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 237 | 239 | |
| 238 | 240 | Click Element xpath=//a[@class='reverse tenderLink'] |
| 239 | 241 | Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | ... | ... |
| 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 | + | |
| 19 | + Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
| 20 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
| 21 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
| 22 | + Wait Until Page Contains Element id=indexpage_login 100 | |
| 23 | + Click Element id=indexpage_login | |
| 24 | + Wait Until Page Contains Element id=password 100 | |
| 25 | + Input text id=login-email ${USERS.users['${username}'].login} | |
| 26 | + Input text id=password ${USERS.users['${username}'].password} | |
| 27 | + Click Element id=submit-login-button | |
| 28 | + Wait Until Page Contains Element xpath=//div[@class="introjs-overlay"] 100 | |
| 29 | + | |
| 30 | +Створити тендер | |
| 31 | + [Arguments] @{ARGUMENTS} | |
| 32 | + [Documentation] | |
| 33 | + ... ${ARGUMENTS[0]} == username | |
| 34 | + ... ${ARGUMENTS[1]} == tender_data | |
| 35 | + | |
| 36 | +## Inicialisation | |
| 37 | + ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
| 38 | + ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
| 39 | + ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
| 40 | + ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
| 41 | + ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
| 42 | + ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | |
| 43 | + ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
| 44 | + ${enquiry_start_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} startDate | |
| 45 | + ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
| 46 | + | |
| 47 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 48 | + Go To ${USERS.users['${username}'].homepage} | |
| 49 | + Wait Until Page Contains Element xpath=//a[@href="#/create-tender"] 100 | |
| 50 | + Click Link xpath=//a[@href="#/create-tender"] | |
| 51 | + Wait Until Page Contains Новый тендер 100 | |
| 52 | +# Input fields tender | |
| 53 | + Input text name=tenderName ${title} | |
| 54 | + Input text name=tenderDescription ${description} | |
| 55 | + Input text id=budget ${budget} | |
| 56 | + Click Element id=with-nds | |
| 57 | + Input text id=step ${step_rate} | |
| 58 | +# Add Item(s) | |
| 59 | + Додати придмет ${items[0]} 0 | |
| 60 | + Run Keyword If '${mode}' == 'multi' Додати багато придметів items | |
| 61 | +# Set tender datatimes | |
| 62 | + Set datetime start-date-registration ${start_date} | |
| 63 | + Set datetime end-date-registration ${end_date} | |
| 64 | + Set datetime end-date-qualification ${enquiry_end_date} | |
| 65 | + Set datetime start-date-qualification ${enquiry_start_date} | |
| 66 | +# Save | |
| 67 | + Click Element xpath=//button[@class="btn btn-lg btn-default cancel pull-right ng-binding"] | |
| 68 | + Wait Until Page Contains Element xpath=//div[@ng-click="goHome()"] 30 | |
| 69 | + Click Element xpath=//div[@ng-click="goHome()"] | |
| 70 | +# Get Ids | |
| 71 | + Wait Until Page Contains Element xpath=//div[@class="title"] 30 | |
| 72 | + ${tender_UAid}= Get Text xpath=//div[@class="title"] | |
| 73 | + ${Ids}= Convert To String ${tender_UAid} | |
| 74 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
| 75 | + [return] ${Ids} | |
| 76 | + | |
| 77 | +Set Multi Ids | |
| 78 | + [Arguments] @{ARGUMENTS} | |
| 79 | + [Documentation] | |
| 80 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
| 81 | + ${current_location}= Get Location | |
| 82 | + ${id}= Get Substring ${current_location} -41 -9 | |
| 83 | + ${Ids}= Create List ${tender_UAid} ${id} | |
| 84 | + | |
| 85 | +Set datetime | |
| 86 | + [Arguments] @{ARGUMENTS} | |
| 87 | + [Documentation] | |
| 88 | + ... ${ARGUMENTS[0]} == control_id | |
| 89 | + ... ${ARGUMENTS[1]} == date | |
| 90 | +#Pick Date | |
| 91 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/../span[@class="calendar-btn"] | |
| 92 | + Wait Until Page Contains Element xpath=//td[@class="text-center ng-scope"] 30 | |
| 93 | + ${datapicker_id}= Get Element Attribute xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@class="text-center ng-scope"]@id | |
| 94 | + ${datapicker_id}= Get Substring ${datapicker_id} 0 -1 | |
| 95 | + ${date_index}= newtend_date_picker_index ${ARGUMENTS[1]} | |
| 96 | + ${datapicker_id}= Convert To String ${datapicker_id}${date_index} | |
| 97 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@id="${datapicker_id}"]/button | |
| 98 | +#Set time | |
| 99 | + ${hous}= Get Substring ${ARGUMENTS[1]} 11 13 | |
| 100 | + ${minutes}= Get Substring ${ARGUMENTS[1]} 14 16 | |
| 101 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="hours"] ${hous} | |
| 102 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="minutes"] ${minutes} | |
| 103 | + | |
| 104 | +Додати придмет | |
| 105 | + [Arguments] @{ARGUMENTS} | |
| 106 | + [Documentation] | |
| 107 | + ... ${ARGUMENTS[0]} == items_n | |
| 108 | + ... ${ARGUMENTS[1]} == index | |
| 109 | +## Get values for item | |
| 110 | + ${items_description}= Get From Dictionary ${ARGUMENTS[0]} description | |
| 111 | + ${quantity}= Get From Dictionary ${ARGUMENTS[0]} quantity | |
| 112 | + ${cpv}= Get From Dictionary ${ARGUMENTS[0].classification} description_ua | |
| 113 | + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | |
| 114 | + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | |
| 115 | + ${unit}= Get From Dictionary ${ARGUMENTS[0].unit} name | |
| 116 | + ${deliverydate_end_date}= Get From Dictionary ${ARGUMENTS[0].deliveryDate} endDate | |
| 117 | + ${countryName}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} countryName | |
| 118 | + ${ZIP}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} postalCode | |
| 119 | + ${region}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} region | |
| 120 | + ${locality}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} locality | |
| 121 | + ${streetAddress}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} streetAddress | |
| 122 | +# Add item | |
| 123 | + Input text id=itemDescription${ARGUMENTS[1]} ${items_description} | |
| 124 | + Input text id=quantity${ARGUMENTS[1]} ${quantity} | |
| 125 | + Click Element xpath=//a[contains(text(), "единицы измерения")] | |
| 126 | + Click Element xpath=//a[contains(text(), "единицы измерения")]/..//a[contains(text(), '${unit}')] | |
| 127 | +# Set CPV | |
| 128 | + Click Element id=classifier1${ARGUMENTS[1]} | |
| 129 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | |
| 130 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${cpv} | |
| 131 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${cpv}')] 20 | |
| 132 | + Click Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] | |
| 133 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | |
| 134 | +# Set ДКПП | |
| 135 | + Click Element id=classifier2${ARGUMENTS[1]} | |
| 136 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | |
| 137 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${dkpp_desc} | |
| 138 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${dkpp_id}')] 100 | |
| 139 | + Click Element xpath=//span[contains(text(),'${dkpp_id}')]/../..//input[@class="ng-pristine ng-untouched ng-valid"] | |
| 140 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | |
| 141 | +# Set Delivery Address | |
| 142 | + Click Element id=deliveryAddress${ARGUMENTS[1]} | |
| 143 | + Wait Until Page Contains Element xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] 100 | |
| 144 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${countryName} | |
| 145 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${ZIP} | |
| 146 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${region} | |
| 147 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${locality} | |
| 148 | + Input text xpath=//input[1][@class="form-control ng-pristine ng-untouched ng-valid"] ${streetAddress} | |
| 149 | + Click Element xpath=//button[@class="btn btn-lg single-btn ng-binding"] | |
| 150 | +# Set Item Datetime | |
| 151 | + Set datetime end-date-delivery${ARGUMENTS[1]} ${deliverydate_end_date} | |
| 152 | + | |
| 153 | +Додати багато придметів | |
| 154 | + [Arguments] @{ARGUMENTS} | |
| 155 | + [Documentation] | |
| 156 | + ... ${ARGUMENTS[0]} == items | |
| 157 | + ${Items_length}= Get Length ${items} | |
| 158 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | |
| 159 | + \ Click Element xpath=//a[@class="icon-black plus-black remove-field ng-scope"] | |
| 160 | + \ Додати придмет ${items[${INDEX}]} ${INDEX} | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | +#### Not reworked for Newtend #### | |
| 169 | + | |
| 170 | +Oтримати internal id по UAid | |
| 171 | + [Arguments] @{ARGUMENTS} | |
| 172 | + [Documentation] | |
| 173 | + ... ${ARGUMENTS[0]} == username | |
| 174 | + ... ${ARGUMENTS[1]} == tenderid | |
| 175 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 176 | + ${current_location}= Get Location | |
| 177 | + ${tender_id}= Fetch From Right ${current_location} / | |
| 178 | +### harcode Idis bacause issues on the E-tender side, to remove, 1 line: | |
| 179 | + ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2 | |
| 180 | + log ${internal_id} | |
| 181 | + [return] ${internal_id} | |
| 182 | + | |
| 183 | +Пошук тендера по ідентифікатору | |
| 184 | + [Arguments] @{ARGUMENTS} | |
| 185 | + [Documentation] | |
| 186 | + ... ${ARGUMENTS[0]} == username | |
| 187 | + ... ${ARGUMENTS[1]} == tenderId | |
| 188 | + | |
| 189 | + Switch browser ${ARGUMENTS[0]} | |
| 190 | + Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} | |
| 191 | + Wait Until Page Contains Список закупівель 10 | |
| 192 | + sleep 1 | |
| 193 | + Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} | |
| 194 | + Click Link jquery=a[ng-click='search()'] | |
| 195 | + sleep 2 | |
| 196 | + Click Link jquery=a[href^="#/tenderDetailes"] | |
| 197 | + Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
| 198 | + sleep 1 | |
| 199 | + Capture Page Screenshot | |
| 200 | + | |
| 201 | +обновити сторінку з тендером | |
| 202 | + [Arguments] @{ARGUMENTS} | |
| 203 | + [Documentation] | |
| 204 | + ... ${ARGUMENTS[0]} == username | |
| 205 | + ... ${ARGUMENTS[1]} == tenderId | |
| 206 | + ... ${ARGUMENTS[2]} == id | |
| 207 | + ${current_location}= Get Location | |
| 208 | + Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | |
| 209 | + Run keyword unless '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Пошук тендера по ідентифікатору @{ARGUMENTS} | |
| 210 | + Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
| 211 | + sleep 1 | |
| 212 | + | |
| 213 | +отримати інформацію із тендера | |
| 214 | + [Arguments] @{ARGUMENTS} | |
| 215 | + [Documentation] | |
| 216 | + ... ${ARGUMENTS[0]} == username | |
| 217 | + ... ${ARGUMENTS[1]} == fieldname | |
| 218 | + Switch browser ${ARGUMENTS[0]} | |
| 219 | + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} | |
| 220 | + [return] ${return_value} | |
| 221 | + | |
| 222 | +Відмітити на сторінці поле з тендера | |
| 223 | + [Arguments] ${fieldname} ${locator} | |
| 224 | + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom | |
| 225 | + Align elements horizontally ${locator} ${last_note_id} | |
| 226 | + sleep 1 | |
| 227 | + Remove element ${last_note_id} | |
| 228 | + | |
| 229 | +Отримати тест із поля і показати на сторінці | |
| 230 | + [Arguments] ${fieldname} | |
| 231 | + sleep 3 | |
| 232 | +# відмітити на сторінці поле з тендера ${fieldname} ${locator.${fieldname}} | |
| 233 | + ${return_value}= Get Text ${locator.${fieldname}} | |
| 234 | + [return] ${return_value} | |
| 235 | + | |
| 236 | +отримати інформацію про tenderId | |
| 237 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderId | |
| 238 | + [return] ${return_value.split(' ')[1]} | |
| 239 | + | |
| 240 | +отримати інформацію про title | |
| 241 | + ${return_value}= Отримати тест із поля і показати на сторінці title | |
| 242 | + [return] ${return_value} | |
| 243 | + | |
| 244 | +отримати інформацію про description | |
| 245 | + ${return_value}= Отримати тест із поля і показати на сторінці description | |
| 246 | + [return] ${return_value} | |
| 247 | + | |
| 248 | +отримати інформацію про minimalStep.amount | |
| 249 | + ${return_value}= Отримати тест із поля і показати на сторінці minimalStep.amount | |
| 250 | + ${return_value}= Convert To Number ${return_value.split(' ')[0]} | |
| 251 | + [return] ${return_value} | |
| 252 | + | |
| 253 | +отримати інформацію про procuringEntity.name | |
| 254 | + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | |
| 255 | + [return] ${return_value} | |
| 256 | + | |
| 257 | + | |
| 258 | +отримати інформацію про value.amount | |
| 259 | + ${return_value}= Отримати тест із поля і показати на сторінці value.amount | |
| 260 | + ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) | |
| 261 | + ${return_value}= Convert To Number ${return_value} | |
| 262 | + [return] ${return_value} | |
| 263 | + | |
| 264 | +отримати інформацію про tenderPeriod.startDate | |
| 265 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate | |
| 266 | + [return] ${return_value} | |
| 267 | + | |
| 268 | +отримати інформацію про tenderPeriod.endDate | |
| 269 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate | |
| 270 | + [return] ${return_value} | |
| 271 | + | |
| 272 | +отримати інформацію про enquiryPeriod.startDate | |
| 273 | + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate | |
| 274 | + [return] ${return_value} | |
| 275 | + | |
| 276 | +отримати інформацію про enquiryPeriod.endDate | |
| 277 | + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate | |
| 278 | + [return] ${return_value} | |
| 279 | + | |
| 280 | + | |
| 281 | +отримати інформацію про items[${item_id}].description | |
| 282 | + відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | |
| 283 | + ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | |
| 284 | + [return] ${return_value} | |
| 285 | + | |
| 286 | +отримати інформацію про items[${item_id}].quantity | |
| 287 | + відмітити на сторінці поле з тендера items[${item_id}].quantity jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)> | |
| 288 | + ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)> | |
| 289 | + ${return_value}= Convert To Number ${return_value} | |
| 290 | + [return] ${return_value} | |
| 291 | + | |
| 292 | +отримати інформацію про items[${item_id}].classification.id | |
| 293 | + відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
| 294 | + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
| 295 | + [return] ${return_value.split(' ')[0]} | |
| 296 | + | |
| 297 | +отримати інформацію про items[${item_id}].classification.scheme | |
| 298 | + відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)> | |
| 299 | + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)> | |
| 300 | + [return] ${return_value.split(' ')[0]} | |
| 301 | + | |
| 302 | +отримати інформацію про items[${item_id}].classification.description | |
| 303 | + відмітити на сторінці поле з тендера classification.description jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
| 304 | + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
| 305 | + ${return_value}= catenate @{return_value.split(' ')[1:]} | |
| 306 | + [return] ${return_value} | |
| 307 | + | |
| 308 | +отримати інформацію про items[${item_id}].deliveryAddress | |
| 309 | + ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryAddress | |
| 310 | + [return] ${return_value} | |
| 311 | + | |
| 312 | +отримати інформацію про items[${item_id}].deliveryDate | |
| 313 | + ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryDate | |
| 314 | + [return] ${return_value} | |
| 315 | + | |
| 316 | +отримати інформацію про questions[${question_id}].title | |
| 317 | + відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)> | |
| 318 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)> | |
| 319 | + [return] ${return_value} | |
| 320 | + | |
| 321 | +отримати інформацію про questions[${question_id}].description | |
| 322 | + відмітити на сторінці поле з тендера questions description jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | |
| 323 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | |
| 324 | + [return] ${return_value} | |
| 325 | + | |
| 326 | +отримати інформацію про questions[${question_id}].date | |
| 327 | + відмітити на сторінці поле з тендера question date jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | |
| 328 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | |
| 329 | + [return] ${return_value} | |
| 330 | + | |
| 331 | +отримати інформацію про questions[${question_id}].answer | |
| 332 | + відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> | |
| 333 | + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> | |
| 334 | + [return] ${return_value} | |
| 335 | + | |
| 336 | +Подати цінову пропозицію | |
| 337 | + [Arguments] @{ARGUMENTS} | |
| 338 | + [Documentation] | |
| 339 | + ... ${ARGUMENTS[0]} == username | |
| 340 | + ... ${ARGUMENTS[1]} == ${INTERNAL_TENDER_ID} | |
| 341 | + ... ${ARGUMENTS[2]} == test_bid_data | |
| 342 | + | |
| 343 | + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
| 344 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
| 345 | + Wait Until Page Contains Інформація про процедуру закупівлі 100 | |
| 346 | + Wait Until Page Contains Element id=amount 10 | |
| 347 | + Input text id=amount ${bid} | |
| 348 | + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
| 349 | + | |
| 350 | +Задати питання | |
| 351 | + [Arguments] @{ARGUMENTS} | |
| 352 | + [Documentation] | |
| 353 | + ... ${ARGUMENTS[0]} = username | |
| 354 | + ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
| 355 | + ... ${ARGUMENTS[2]} = question_data | |
| 356 | + | |
| 357 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
| 358 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
| 359 | + | |
| 360 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 361 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
| 362 | + | |
| 363 | + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100 | |
| 364 | + Click Element jquery=a[href^="#/addQuestion/"] | |
| 365 | + Wait Until Page Contains Element id=title | |
| 366 | + Input text id=title ${title} | |
| 367 | + Input text id=description ${description} | |
| 368 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
| 369 | + | |
| 370 | +Відповісти на питання | |
| 371 | + [Arguments] @{ARGUMENTS} | |
| 372 | + [Documentation] | |
| 373 | + ... ${ARGUMENTS[0]} = username | |
| 374 | + ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID} | |
| 375 | + ... ${ARGUMENTS[2]} = 0 | |
| 376 | + ... ${ARGUMENTS[3]} = answer_data | |
| 377 | + | |
| 378 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
| 379 | + | |
| 380 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 381 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID} | |
| 382 | + | |
| 383 | + Click Element xpath=//div[div/pre[1]]/div[1] | |
| 384 | + Input text xpath=//div[textarea]/textarea ${answer} | |
| 385 | + Click Element xpath=//div[textarea]/span/button[1] | ... | ... |
| ... | ... | @@ -9,7 +9,7 @@ ${question_id} 0 |
| 9 | 9 | *** Keywords *** |
| 10 | 10 | отримати internal id по UAid |
| 11 | 11 | [Arguments] @{ARGUMENTS} |
| 12 | - [Documentation] | |
| 12 | + [Documentation] | |
| 13 | 13 | ... ${ARGUMENTS[0]} == username |
| 14 | 14 | ... ${ARGUMENTS[1]} == tenderid |
| 15 | 15 | log many @{ARGUMENTS} |
| ... | ... | @@ -42,10 +42,11 @@ ${question_id} 0 |
| 42 | 42 | Log object data ${TENDER_DATA} cteated_tender |
| 43 | 43 | ${access_token}= Get Variable Value ${TENDER_DATA.access.token} |
| 44 | 44 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} access_token ${access_token} |
| 45 | - Log access_token: ${access_token} | |
| 46 | - Log tender_id: ${TENDER_DATA.data.id} | |
| 47 | - Set Global Variable ${TENDER_DATA} | |
| 48 | - [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} | |
| 49 | 50 | |
| 50 | 51 | Створити багатопредметний тендер |
| 51 | 52 | [Arguments] @{ARGUMENTS} |
| ... | ... | @@ -66,19 +67,16 @@ ${question_id} 0 |
| 66 | 67 | [Documentation] |
| 67 | 68 | ... ${ARGUMENTS[0]} == username |
| 68 | 69 | ... ${ARGUMENTS[1]} == tenderId |
| 69 | - ... ${ARGUMENTS[2]} == id | |
| 70 | 70 | ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| 71 | 71 | ${tender_data}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} |
| 72 | 72 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} tender_data ${tender_data} |
| 73 | 73 | [return] ${tender_data} |
| 74 | 74 | |
| 75 | - | |
| 76 | 75 | Обновити сторінку з тендером |
| 77 | 76 | [Arguments] @{ARGUMENTS} |
| 78 | 77 | [Documentation] |
| 79 | 78 | ... ${ARGUMENTS[0]} == username |
| 80 | 79 | ... ${ARGUMENTS[1]} == tenderId |
| 81 | - ... ${ARGUMENTS[2]} == id | |
| 82 | 80 | openprocurement_client.Пошук тендера по ідентифікатору @{ARGUMENTS} |
| 83 | 81 | |
| 84 | 82 | отримати інформацію із тендера |
| ... | ... | @@ -149,13 +147,13 @@ ${question_id} 0 |
| 149 | 147 | Set_To_Object ${TENDER_DATA.data} items ${items} |
| 150 | 148 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 151 | 149 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} |
| 152 | - | |
| 150 | + | |
| 153 | 151 | |
| 154 | 152 | Задати питання |
| 155 | 153 | [Documentation] |
| 156 | 154 | ... ${ARGUMENTS[0]} == username |
| 157 | 155 | ... ${ARGUMENTS[1]} == tender_uid |
| 158 | - ... ${ARGUMENTS[2]} == bid | |
| 156 | + ... ${ARGUMENTS[2]} == question | |
| 159 | 157 | [Arguments] @{ARGUMENTS} |
| 160 | 158 | log many @{ARGUMENTS} |
| 161 | 159 | ${internalid}= отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
| ... | ... | @@ -163,7 +161,7 @@ ${question_id} 0 |
| 163 | 161 | log ${USERS.users['${ARGUMENTS[0]}']} |
| 164 | 162 | ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_question ${tender} ${ARGUMENTS[2]} |
| 165 | 163 | [return] ${biddingresponce} |
| 166 | - | |
| 164 | + | |
| 167 | 165 | Відповісти на питання |
| 168 | 166 | [Documentation] |
| 169 | 167 | ... ${ARGUMENTS[0]} == username |
| ... | ... | @@ -192,7 +190,7 @@ ${question_id} 0 |
| 192 | 190 | ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${internalid} |
| 193 | 191 | ${complaint}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} _create_tender_resource_item ${tender} ${ARGUMENTS[2]} complaints |
| 194 | 192 | Log object data ${complaint} complaint |
| 195 | - | |
| 193 | + | |
| 196 | 194 | порівняти скаргу |
| 197 | 195 | [Documentation] |
| 198 | 196 | ... ${ARGUMENTS[0]} == username |
| ... | ... | @@ -209,7 +207,7 @@ ${question_id} 0 |
| 209 | 207 | #:FOR ${element} IN ${ARGUMENTS[2].data} |
| 210 | 208 | #\ log ${element} |
| 211 | 209 | #\ Dictionary Should Contain Value ${complaint} ${element} |
| 212 | - | |
| 210 | + | |
| 213 | 211 | Обробити скаргу |
| 214 | 212 | [Documentation] |
| 215 | 213 | ... ${ARGUMENTS[0]} == username |
| ... | ... | @@ -238,7 +236,7 @@ ${question_id} 0 |
| 238 | 236 | log ${tender}отримати |
| 239 | 237 | ${biddingresponce}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_bid ${tender} ${ARGUMENTS[2]} |
| 240 | 238 | [return] ${biddingresponce} |
| 241 | - | |
| 239 | + | |
| 242 | 240 | Змінити цінову пропозицію |
| 243 | 241 | [Documentation] |
| 244 | 242 | ... ${ARGUMENTS[0]} == username |
| ... | ... | @@ -264,7 +262,7 @@ ${question_id} 0 |
| 264 | 262 | ${changed_bid}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_bid ${tender} ${ARGUMENTS[2]} |
| 265 | 263 | Log ${changed_bid} |
| 266 | 264 | [return] ${changed_bid} |
| 267 | - | |
| 265 | + | |
| 268 | 266 | Прийняти цінову пропозицію |
| 269 | 267 | [Documentation] |
| 270 | 268 | ... ${ARGUMENTS[0]} == username |
| ... | ... | @@ -281,42 +279,49 @@ ${question_id} 0 |
| 281 | 279 | Завантажити документ в ставку |
| 282 | 280 | [Documentation] |
| 283 | 281 | ... ${ARGUMENTS[0]} == username |
| 284 | - ... ${ARGUMENTS[1]} == token | |
| 285 | - ... ${ARGUMENTS[2]} == bid_id | |
| 282 | + ... ${ARGUMENTS[1]} == path | |
| 283 | + ... ${ARGUMENTS[2]} == tenderid | |
| 286 | 284 | [Arguments] @{ARGUMENTS} |
| 287 | 285 | log ${ARGUMENTS[0]} |
| 288 | 286 | log ${ARGUMENTS[1]} |
| 289 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | |
| 290 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | |
| 291 | - ${filename}= Set Variable file.txt | |
| 292 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | |
| 293 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_bid_document ${filename} ${tender} ${ARGUMENTS[2]} | |
| 294 | - Log object data ${reply} reply | |
| 295 | - [return] ${reply} | |
| 296 | - | |
| 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 | + | |
| 297 | 298 | Змінити документ в ставці |
| 298 | 299 | [Documentation] |
| 299 | 300 | ... ${ARGUMENTS[0]} == username |
| 300 | - ... ${ARGUMENTS[1]} == token | |
| 301 | - ... ${ARGUMENTS[2]} == bid_id | |
| 302 | - ... ${ARGUMENTS[3]} == file_id | |
| 301 | + ... ${ARGUMENTS[1]} == path | |
| 302 | + ... ${ARGUMENTS[2]} == bidid | |
| 303 | + ... ${ARGUMENTS[3]} == docid | |
| 303 | 304 | [Arguments] @{ARGUMENTS} |
| 304 | 305 | log ${ARGUMENTS[0]} |
| 305 | 306 | log ${ARGUMENTS[1]} |
| 306 | 307 | log ${ARGUMENTS[2]} |
| 307 | - log ${ARGUMENTS[3]} | |
| 308 | - ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${TENDER_DATA.data.id} | |
| 309 | - ${tender}= set_access_key ${tender} ${ARGUMENTS[1]} | |
| 310 | - ${filename}= Set Variable newfile.txt | |
| 311 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | |
| 312 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} update_bid_document ${filename} ${tender} ${ARGUMENTS[2]} ${ARGUMENTS[3]} | |
| 313 | - 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 | + | |
| 314 | 319 | |
| 315 | -Завантажити документ | |
| 320 | +Завантажити документ | |
| 316 | 321 | [Documentation] |
| 317 | 322 | ... ${ARGUMENTS[0]} == username |
| 318 | - ... ${ARGUMENTS[1]} == filename | |
| 319 | - ... ${ARGUMENTS[2]} == tenderID | |
| 323 | + ... ${ARGUMENTS[1]} == filepath | |
| 324 | + ... ${ARGUMENTS[2]} == tenderUAID | |
| 320 | 325 | [Arguments] @{ARGUMENTS} |
| 321 | 326 | log ${ARGUMENTS[0]} |
| 322 | 327 | log ${ARGUMENTS[1]} |
| ... | ... | @@ -324,7 +329,36 @@ ${question_id} 0 |
| 324 | 329 | ${tenderID}= openprocurement_client.отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} |
| 325 | 330 | ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} |
| 326 | 331 | ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
| 327 | - Set_To_Object ${TENDER_DATA.data} documents.title ${filename} | |
| 328 | - ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_tender_document ${filename} ${tender} | |
| 332 | + ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} upload_document ${tender} ${ARGUMENTS[1]} | |
| 329 | 333 | Log object data ${reply} reply |
| 330 | - | |
| \ No newline at end of file | ||
| 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} | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -3,14 +3,152 @@ Library Selenium2Screenshots |
| 3 | 3 | Library String |
| 4 | 4 | Library DateTime |
| 5 | 5 | |
| 6 | +*** Variables *** | |
| 7 | +${file_path} local_path_to_file("TestDocument.docx") | |
| 8 | +# ${file_path} /home/vbilos/openprocurement.robottests.buildout/Document.docx | |
| 9 | +${mail} test@mail.com | |
| 10 | +${telephone} +380976535447 | |
| 11 | + | |
| 6 | 12 | *** Keywords *** |
| 7 | 13 | Підготувати клієнт для користувача |
| 8 | - [Arguments] ${username} | |
| 14 | + [Arguments] @{ARGUMENTS} | |
| 9 | 15 | [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 | |
| 16 | + ... ${ARGUMENTS[0]} == username | |
| 17 | + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
| 18 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
| 19 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
| 20 | + | |
| 21 | +# login | |
| 22 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:j_idt54 10 | |
| 23 | + Click Element id=mForm:j_idt54 | |
| 24 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:email 10 | |
| 25 | + Input text id=mForm:email ${USERS.users['${username}'].login} | |
| 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 | + ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
| 35 | + ${items}= Get From Dictionary ${tender_data.data} items | |
| 36 | + ${title}= Get From Dictionary ${tender_data.data} title | |
| 37 | + ${description}= Get From Dictionary ${tender_data.data} description | |
| 38 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
| 39 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
| 40 | + ${countryName}= Get From Dictionary ${tender_data.data.procuringEntity.address} countryName | |
| 41 | + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | |
| 42 | + ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date} | |
| 43 | + ${cpv}= Get From Dictionary ${items[0].classification} description_ua | |
| 44 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | |
| 45 | + ${cpv_id_1}= Get Substring ${cpv_id} 0 3 | |
| 46 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | |
| 47 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | |
| 48 | + ${code}= Get From Dictionary ${items[0].unit} code | |
| 49 | + ${quantity}= Get From Dictionary ${items[0]} quantity | |
| 50 | + ${name}= Get From Dictionary ${tender_data.data.procuringEntity.contactPoint} name | |
| 51 | + | |
| 52 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
| 53 | + Wait Until Page Contains Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] 10 | |
| 54 | + Click Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] | |
| 55 | + Wait Until Page Contains Element id=mForm:data:name | |
| 56 | + Input text id=mForm:data:name ${title} | |
| 57 | + Input text id=mForm:data:desc ${description} | |
| 58 | + Input text id=mForm:data:budget ${budget} | |
| 59 | + Input text id=mForm:data:step ${step_rate} | |
| 60 | + Click Element xpath=//*[@id='mForm:data:vat']/tbody/tr/td[1]//span | |
| 61 | + Input text id=mForm:data:dEPr_input ${delivery_end_date} | |
| 62 | + Click Element id=mForm:data:cKind_label | |
| 63 | + Click Element xpath=//div[@id='mForm:data:cKind_panel']//li[3] | |
| 64 | + Input text id=mForm:data:cCpvGr_input ${cpv_id_1} | |
| 65 | + Wait Until Page Contains Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span 10 | |
| 66 | + Click Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span | |
| 67 | + Input text id=mForm:data:subject0 ${dkpp_desc} | |
| 68 | + Input text id=mForm:data:cCpv0_input ${cpv_id} | |
| 69 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span 10 | |
| 70 | + Click Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span | |
| 71 | + Input text id=mForm:data:unit0_input ${code} | |
| 72 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] 10 | |
| 73 | + Click Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] | |
| 74 | + Input text id=mForm:data:amount0 ${quantity} | |
| 75 | + Input text id=mForm:data:cDkpp0_input ${dkpp_id} | |
| 76 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span 10 | |
| 77 | + Click Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span | |
| 78 | + Input text id=mForm:data:rName ${name} | |
| 79 | + Input text id=mForm:data:rPhone ${telephone} | |
| 80 | + Input text id=mForm:data:rMail ${mail} | |
| 81 | + Choose File id=mForm:data:docFile_input ${file_path} | |
| 82 | + Run Keyword if '${mode}' == 'multi' Додати предмет items | |
| 83 | + Click Element id=mForm:bSave | |
| 84 | + Sleep 5 | |
| 85 | + ${tender_UAid}= Get Text id=mForm:nBid | |
| 86 | + ${tender_UAid}= Get Substring ${tender_UAid} 19 | |
| 87 | + ${Ids} Convert To String ${tender_UAid} | |
| 88 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
| 89 | + [return] ${Ids} | |
| 90 | + | |
| 91 | +Set Multi Ids | |
| 92 | + [Arguments] @{ARGUMENTS} | |
| 93 | + [Documentation] | |
| 94 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
| 95 | + ${id}= Get Text id=mForm:nBid | |
| 96 | + ${Ids} Create List ${tender_UAid} ${id} | |
| 97 | + | |
| 98 | +Додати предмет | |
| 99 | + [Arguments] @{ARGUMENTS} | |
| 100 | + [Documentation] | |
| 101 | + ... ${ARGUMENTS[0]} == items | |
| 102 | + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description | |
| 103 | + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id | |
| 104 | + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description | |
| 105 | + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id | |
| 106 | + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description | |
| 107 | + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id | |
| 108 | + | |
| 109 | + Wait Until Page Contains Element xpath=//button[@class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"] 10 | |
| 110 | + Wait Until Page Contains Element xpath=//button[contains(@class, 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only')] 10 | |
| 111 | + Wait Until Page Contains Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] 10 | |
| 112 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
| 113 | + Wait Until Page Contains Element id=mForm:data:subject1 10 | |
| 114 | + Input text id=mForm:data:subject1 ${dkpp_desc1} | |
| 115 | + Input text id=mForm:data:cCpv1_input ${cpv_id} | |
| 116 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span 10 | |
| 117 | + Click Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span | |
| 118 | + Input text id=mForm:data:unit1_input ${code} | |
| 119 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] 10 | |
| 120 | + Click Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] | |
| 121 | + Input text id=mForm:data:amount1 ${quantity} | |
| 122 | + Input text id=mForm:data:cDkpp1_input ${dkpp_id11} | |
| 123 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span 10 | |
| 124 | + Click Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span | |
| 125 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
| 126 | + Wait Until Page Contains Element id=mForm:data:subject2 10 | |
| 127 | + Input text id=mForm:data:subject2 ${dkpp_desc2} | |
| 128 | + Input text id=mForm:data:cCpv2_input ${cpv_id} | |
| 129 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span 10 | |
| 130 | + Click Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span | |
| 131 | + Input text id=mForm:data:unit2_input ${code} | |
| 132 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] 10 | |
| 133 | + Click Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] | |
| 134 | + Input text id=mForm:data:amount2 ${quantity} | |
| 135 | + Input text id=mForm:data:cDkpp2_input ${dkpp_id2} | |
| 136 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span 10 | |
| 137 | + Click Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span | |
| 138 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
| 139 | + Wait Until Page Contains Element id=mForm:data:subject3 10 | |
| 140 | + Input text id=mForm:data:subject3 ${dkpp_desc3} | |
| 141 | + Input text id=mForm:data:cCpv3_input ${cpv_id} | |
| 142 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span 10 | |
| 143 | + Click Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span | |
| 144 | + Input text id=mForm:data:unit3_input ${code} | |
| 145 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] 10 | |
| 146 | + Click Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] | |
| 147 | + Input text id=mForm:data:amount3 ${quantity} | |
| 148 | + Input text id=mForm:data:cDkpp3_input ${dkpp_id3} | |
| 149 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span 10 | |
| 150 | + Click Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span | |
| 151 | + | |
| 14 | 152 | |
| 15 | 153 | Пошук тендера по ідентифікатору |
| 16 | 154 | [Arguments] @{ARGUMENTS} | ... | ... |
| ... | ... | @@ -29,3 +29,15 @@ Netcast: |
| 29 | 29 | password: uStudio |
| 30 | 30 | timout_on_wait: 15 |
| 31 | 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 | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -27,7 +27,7 @@ users: |
| 27 | 27 | login: st_org |
| 28 | 28 | password: 12345678 |
| 29 | 29 | browser: firefox |
| 30 | - position: [0, 0] | |
| 30 | + position: [700, 0] | |
| 31 | 31 | size: [640, 450] |
| 32 | 32 | E-tender_Provider2: |
| 33 | 33 | broker: E-tender |
| ... | ... | @@ -41,7 +41,7 @@ users: |
| 41 | 41 | E-tender_Viewer: |
| 42 | 42 | broker: E-tender |
| 43 | 43 | username: E-tendertest |
| 44 | - browser: chrome | |
| 44 | + browser: firefox | |
| 45 | 45 | position: [0, 0] |
| 46 | 46 | size: [640, 450] |
| 47 | 47 | Prom_Owner: |
| ... | ... | @@ -74,6 +74,15 @@ users: |
| 74 | 74 | browser: chrome |
| 75 | 75 | position: [0, 450] |
| 76 | 76 | size: [640, 450] |
| 77 | + Newtend_Owner: | |
| 78 | + broker: Newtend | |
| 79 | + username: Newtendtest | |
| 80 | + homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1" | |
| 81 | + login: openprocurement@mailinator.com | |
| 82 | + password: 123123 | |
| 83 | + browser: firefox | |
| 84 | + position: [0, 0] | |
| 85 | + size: [640, 450] | |
| 77 | 86 | Netcast_Owner: |
| 78 | 87 | broker: Netcast |
| 79 | 88 | username: Netcasttest |
| ... | ... | @@ -81,7 +90,7 @@ users: |
| 81 | 90 | login: ovramet.s@gmail.com |
| 82 | 91 | password: Password1 |
| 83 | 92 | browser: firefox |
| 84 | - position: [0, 1080] | |
| 93 | + position: [0, 0] | |
| 85 | 94 | size: [1920, 1080] |
| 86 | 95 | Netcast_Provider1: |
| 87 | 96 | broker: Netcast |
| ... | ... | @@ -90,5 +99,29 @@ users: |
| 90 | 99 | login: halyna.khimka@gmail.com |
| 91 | 100 | password: JHO5VUp5n |
| 92 | 101 | browser: firefox |
| 93 | - position: [0, 1080] | |
| 94 | - size: [1920, 1080] | |
| \ No newline at end of file | ||
| 102 | + position: [0, 450] | |
| 103 | + size: [1920, 1080] | |
| 104 | + Publicbid_Owner: | |
| 105 | + broker: Publicbid | |
| 106 | + username: Publicbid | |
| 107 | + homepage: "https://public-bid.com.ua/test/" | |
| 108 | + login: yaroslav1boyko@gmail.com | |
| 109 | + password: Password1 | |
| 110 | + browser: firefox | |
| 111 | + position: [0, 0] | |
| 112 | + size: [740, 550] | |
| 113 | + Newtend_Provider2: | |
| 114 | + broker: Newtend | |
| 115 | + username: Newtendtest | |
| 116 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | |
| 117 | + login: openprocboss@mailinator.com | |
| 118 | + password: 123123 | |
| 119 | + browser: firefox | |
| 120 | + position: [700, 0] | |
| 121 | + size: [640, 450] | |
| 122 | + Newtend_Viewer: | |
| 123 | + broker: Newtend | |
| 124 | + username: Newtendtest | |
| 125 | + browser: firefox | |
| 126 | + position: [0, 0] | |
| 127 | + size: [640, 450] | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -6,6 +6,14 @@ from faker import Factory |
| 6 | 6 | fake = Factory.create('uk_UA') |
| 7 | 7 | fake_ru = Factory.create('ru') |
| 8 | 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 | 18 | def test_tender_data(period_interval=2): |
| 11 | 19 | now = datetime.now() |
| ... | ... | @@ -83,8 +91,8 @@ def test_tender_data(period_interval=2): |
| 83 | 91 | } |
| 84 | 92 | ], |
| 85 | 93 | "enquiryPeriod": { |
| 86 | - "startDate": (now + timedelta(minutes=2)).isoformat(), | |
| 87 | - "endDate": (now + timedelta(minutes=3)).isoformat() | |
| 94 | + "startDate": (now).isoformat(), | |
| 95 | + "endDate": (now + timedelta(minutes=1)).isoformat() | |
| 88 | 96 | }, |
| 89 | 97 | "tenderPeriod": { |
| 90 | 98 | "startDate": (now + timedelta(minutes=2)).isoformat(), |
| ... | ... | @@ -134,7 +142,7 @@ def prom_test_tender_data(): |
| 134 | 142 | { |
| 135 | 143 | "description": fake.catch_phrase(), |
| 136 | 144 | "deliveryDate": { |
| 137 | - "startDate": (now + timedelta(days=4)).isoformat(), | |
| 145 | + "startDate": (now + timedelta(days=4)).isoformat(), | |
| 138 | 146 | "endDate": (now + timedelta(days=5)).isoformat() |
| 139 | 147 | }, |
| 140 | 148 | "deliveryLocation": { |
| ... | ... | @@ -151,7 +159,7 @@ def prom_test_tender_data(): |
| 151 | 159 | "classification": { |
| 152 | 160 | "scheme": u"CPV", |
| 153 | 161 | "id": u"44617100-9", |
| 154 | - "description": u"Cartons" | |
| 162 | + "description": u"Cartons", | |
| 155 | 163 | }, |
| 156 | 164 | "additionalClassifications": [ |
| 157 | 165 | { |
| ... | ... | @@ -180,40 +188,40 @@ def prom_test_tender_data(): |
| 180 | 188 | def test_tender_data_multiple_lots(period_interval=2): |
| 181 | 189 | now = datetime.now() |
| 182 | 190 | return { |
| 183 | - "title": fake.catch_phrase(), | |
| 184 | - "mode": "test", | |
| 185 | - "submissionMethodDetails": "quick", | |
| 186 | - "description": u"Тестовий тендер", | |
| 187 | - "description_en": "Test tender", | |
| 188 | - "description_ru": "Тестовый тендер", | |
| 189 | - "procuringEntity": { | |
| 190 | - "name": fake.company(), | |
| 191 | - "name_ru": fake_ru.company(), | |
| 192 | - "name_en": fake_en.company(), | |
| 193 | - "identifier": { | |
| 194 | - "scheme": u"UA-EDR", | |
| 195 | - "id": u"0000{}".format(fake.pyint()), | |
| 196 | - "uri": fake.image_url(width=None, height=None) | |
| 197 | - }, | |
| 198 | - "address": { | |
| 199 | - "countryName": u"Україна", | |
| 200 | - "postalCode": fake.postalcode(), | |
| 201 | - "region": u"м. Київ", | |
| 202 | - "locality": u"м. Київ", | |
| 203 | - "streetAddress": fake.street_address() | |
| 204 | - }, | |
| 205 | - "contactPoint": { | |
| 206 | - "name": fake.name(), | |
| 207 | - "telephone": fake.phone_number() | |
| 208 | - } | |
| 191 | + "title": fake.catch_phrase(), | |
| 192 | + "mode": "test", | |
| 193 | + "submissionMethodDetails": "quick", | |
| 194 | + "description": u"Тестовий тендер", | |
| 195 | + "description_en": "Test tender", | |
| 196 | + "description_ru": "Тестовый тендер", | |
| 197 | + "procuringEntity": { | |
| 198 | + "name": fake.company(), | |
| 199 | + "name_ru": fake_ru.company(), | |
| 200 | + "name_en": fake_en.company(), | |
| 201 | + "identifier": { | |
| 202 | + "scheme": u"UA-EDR", | |
| 203 | + "id": u"0000{}".format(fake.pyint()), | |
| 204 | + "uri": fake.image_url(width=None, height=None) | |
| 205 | + }, | |
| 206 | + "address": { | |
| 207 | + "countryName": u"Україна", | |
| 208 | + "postalCode": fake.postalcode(), | |
| 209 | + "region": u"м. Київ", | |
| 210 | + "locality": u"м. Київ", | |
| 211 | + "streetAddress": fake.street_address() | |
| 212 | + }, | |
| 213 | + "contactPoint": { | |
| 214 | + "name": fake.name(), | |
| 215 | + "telephone": fake.phone_number() | |
| 216 | + } | |
| 209 | 217 | }, |
| 210 | 218 | "value": { |
| 211 | - "amount": 50000, | |
| 212 | - "currency": u"UAH" | |
| 213 | - }, | |
| 214 | - "minimalStep": { | |
| 215 | - "amount": 100, | |
| 216 | - "currency": u"UAH" | |
| 219 | + "amount": 50000, | |
| 220 | + "currency": u"UAH" | |
| 221 | + }, | |
| 222 | + "minimalStep": { | |
| 223 | + "amount": 100, | |
| 224 | + "currency": u"UAH" | |
| 217 | 225 | }, |
| 218 | 226 | "items": [ |
| 219 | 227 | { |
| ... | ... | @@ -270,7 +278,8 @@ def test_tender_data_multiple_lots(period_interval=2): |
| 270 | 278 | "classification": { |
| 271 | 279 | "scheme": u"CPV", |
| 272 | 280 | "id": u"44617100-9", |
| 273 | - "description": u"Cartons" | |
| 281 | + "description": u"Cartons", | |
| 282 | + "description_ua": u"Картонки" | |
| 274 | 283 | }, |
| 275 | 284 | "additionalClassifications": [ |
| 276 | 285 | { |
| ... | ... | @@ -304,7 +313,8 @@ def test_tender_data_multiple_lots(period_interval=2): |
| 304 | 313 | "classification": { |
| 305 | 314 | "scheme": u"CPV", |
| 306 | 315 | "id": u"44617100-9", |
| 307 | - "description": u"Cartons" | |
| 316 | + "description": u"Cartons", | |
| 317 | + "description_ua": u"Картонки" | |
| 308 | 318 | }, |
| 309 | 319 | "additionalClassifications": [ |
| 310 | 320 | { |
| ... | ... | @@ -338,7 +348,8 @@ def test_tender_data_multiple_lots(period_interval=2): |
| 338 | 348 | "classification": { |
| 339 | 349 | "scheme": u"CPV", |
| 340 | 350 | "id": u"44617100-9", |
| 341 | - "description": u"Cartons" | |
| 351 | + "description": u"Cartons", | |
| 352 | + "description_ua": u"Картонки" | |
| 342 | 353 | }, |
| 343 | 354 | "additionalClassifications": [ |
| 344 | 355 | { |
| ... | ... | @@ -355,12 +366,12 @@ def test_tender_data_multiple_lots(period_interval=2): |
| 355 | 366 | } |
| 356 | 367 | ], |
| 357 | 368 | "enquiryPeriod": { |
| 358 | - "startDate": (now + timedelta(minutes=3)).isoformat(), | |
| 359 | - "endDate": (now + timedelta(minutes=4)).isoformat() | |
| 369 | + "startDate": (now).isoformat(), | |
| 370 | + "endDate": (now + timedelta(minutes=1)).isoformat() | |
| 360 | 371 | }, |
| 361 | 372 | "tenderPeriod": { |
| 362 | - "startDate": (now + timedelta(minutes=4)).isoformat(), | |
| 363 | - "endDate": (now + timedelta(minutes=(5+period_interval))).isoformat() | |
| 373 | + "startDate": (now + timedelta(minutes=2)).isoformat(), | |
| 374 | + "endDate": (now + timedelta(minutes=(2+period_interval))).isoformat() | |
| 364 | 375 | } |
| 365 | 376 | } |
| 366 | 377 | |
| ... | ... | @@ -462,7 +473,7 @@ def test_bid_data(): |
| 462 | 473 | } |
| 463 | 474 | } |
| 464 | 475 | }) |
| 465 | - | |
| 476 | + | |
| 466 | 477 | def auction_bid(): |
| 467 | 478 | return munchify({ |
| 468 | 479 | "data": {"value": { | ... | ... |
| ... | ... | @@ -56,6 +56,9 @@ TestSuiteSetup |
| 56 | 56 | Set Global Variable ${REPLIES} |
| 57 | 57 | ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} ${mode} |
| 58 | 58 | Set Global Variable ${INITIAL_TENDER_DATA} |
| 59 | + ${TENDER}= Create Dictionary | |
| 60 | + Set Global Variable ${TENDER} | |
| 61 | + Log ${TENDER} | |
| 59 | 62 | Log ${INITIAL_TENDER_DATA} |
| 60 | 63 | |
| 61 | 64 | Завантажуємо бібліотеку з реалізацією ${keywords_file} площадки |
| ... | ... | @@ -71,7 +74,7 @@ TestSuiteSetup |
| 71 | 74 | ... ${ARGUMENTS[2]} == id |
| 72 | 75 | |
| 73 | 76 | ${now}= Get Current Date |
| 74 | - ${delta}= Subtract Date From Date ${now} ${LAST_MODIFICATION_DATE} | |
| 77 | + ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} | |
| 75 | 78 | ${wait_timout}= Subtract Time From Time ${BROKERS['${USERS.users['${username}'].broker}'].timout_on_wait} ${delta} |
| 76 | 79 | Run Keyword If ${wait_timout}>0 Sleep ${wait_timout} |
| 77 | 80 | |
| ... | ... | @@ -83,23 +86,29 @@ TestSuiteSetup |
| 83 | 86 | Звірити поле |
| 84 | 87 | [Arguments] ${username} ${field} ${subject} |
| 85 | 88 | ${field_response}= Викликати для учасника ${username} отримати інформацію із тендера ${field} |
| 89 | + Should Not Be Equal ${field_response} ${None} | |
| 86 | 90 | Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker} |
| 87 | 91 | |
| 88 | 92 | Звірити поле створеного тендера |
| 89 | 93 | [Arguments] ${initial} ${tender_data} ${field} |
| 90 | 94 | ${field_value}= Get_From_Object ${initial} ${field} |
| 91 | 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} | |
| 92 | 98 | Should Be Equal ${field_value} ${field_response} |
| 93 | 99 | |
| 94 | 100 | Звірити дату тендера |
| 95 | 101 | [Arguments] ${username} ${field} |
| 96 | 102 | ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} |
| 103 | + Should Not Be Equal ${isodate} ${None} | |
| 97 | 104 | Звірити дату ${username} ${field} ${isodate} |
| 98 | 105 | |
| 99 | 106 | Звірити дату |
| 100 | 107 | [Arguments] ${username} ${field} ${subject} |
| 101 | 108 | ${field_date}= Викликати для учасника ${username} отримати інформацію із тендера ${field} |
| 102 | 109 | ${returned}= compare_date ${subject} ${field_date} |
| 110 | + Should Not Be Equal ${field_date} ${None} | |
| 111 | + Should Not Be Equal ${returned} ${None} | |
| 103 | 112 | Should Be True '${returned}' == 'True' |
| 104 | 113 | |
| 105 | 114 | Звірити поля предметів закупівлі багатопредметного тендера | ... | ... |
| 1 | +#!/usr/bin/env python | |
| 1 | 2 | # -*- coding: utf-8 - |
| 2 | 3 | import os |
| 3 | 4 | from munch import munchify, Munch, fromYAML |
| ... | ... | @@ -17,8 +18,9 @@ import time |
| 17 | 18 | from .initial_data import ( |
| 18 | 19 | test_tender_data, test_question_data, test_question_answer_data, |
| 19 | 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 | 25 | TIMEZONE = timezone('Europe/Kiev') |
| 24 | 26 | |
| ... | ... | @@ -161,4 +163,29 @@ def wait_to_date(date_stamp): |
| 161 | 163 | wait_seconds += 2 |
| 162 | 164 | if wait_seconds < 0: |
| 163 | 165 | return 0 |
| 164 | - return wait_seconds | |
| \ No newline at end of file | ||
| 166 | + return wait_seconds | |
| 167 | + | |
| 168 | +def newtend_date_picker_index(isodate): | |
| 169 | + now = datetime.today() | |
| 170 | + date_str = '01' + str(now.month) + str(now.year) | |
| 171 | + first_day_of_month = datetime.strptime(date_str, "%d%m%Y") | |
| 172 | + mod = first_day_of_month.isoweekday() - 2 | |
| 173 | + iso_dt=parse_date(isodate) | |
| 174 | + last_day_of_month = calendar.monthrange(now.year, now.month)[1] | |
| 175 | + #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO")) | |
| 176 | + if now.day>iso_dt.day: | |
| 177 | + mod = calendar.monthrange(now.year, now.month)[1] + mod | |
| 178 | + return mod + iso_dt.day | |
| 179 | + | |
| 180 | +def Add_time_for_GUI_FrontEnds(INITIAL_TENDER_DATA): | |
| 181 | + now = datetime.now() | |
| 182 | + INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | |
| 183 | + INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=3)).isoformat() | |
| 184 | + INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=4)).isoformat() | |
| 185 | + INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=5)).isoformat() | |
| 186 | + return INITIAL_TENDER_DATA | |
| 187 | + | |
| 188 | +def local_path_to_file( file_name ): | |
| 189 | + path = os.getcwd() | |
| 190 | + path = path.split("brokers", 1)[0] + "documents/" + file_name | |
| 191 | + return path | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -26,36 +26,43 @@ ${question_id} 0 |
| 26 | 26 | *** Test Cases *** |
| 27 | 27 | Можливість оголосити однопредметний тендер |
| 28 | 28 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 29 | - ${ids}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | |
| 30 | - ${TENDER_ID}= Get From List ${ids} 0 | |
| 31 | - Set Global Variable ${TENDER_ID} | |
| 29 | + [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), | |
| 30 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | |
| 32 | 31 | ${LAST_MODIFICATION_DATE}= Get Current Date |
| 33 | - 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} | |
| 34 | 35 | |
| 35 | 36 | Можливасть додати тендерну документацію |
| 36 | 37 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ |
| 37 | - ${filename}= Set Variable file.txt | |
| 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}']} | |
| 38 | 45 | |
| 39 | - Викликати для учасника ${tender_owner} Завантажити документ ${filename} ${TENDER_ID} | |
| 40 | 46 | |
| 41 | 47 | Можливість подати скаргу на умови |
| 42 | 48 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови |
| 43 | - Викликати для учасника ${provider} Подати скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 49 | + [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі | |
| 50 | + Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 44 | 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 | 55 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
| 49 | - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 56 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 50 | 57 | |
| 51 | 58 | можливість побачити скаргу анонімом |
| 52 | 59 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 53 | - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 60 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 54 | 61 | |
| 55 | 62 | Пошук однопредметного тендера по ідентифікатору |
| 56 | 63 | [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору |
| 57 | 64 | Дочекатись синхронізації з майданчиком ${viewer} |
| 58 | - Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER_ID} | |
| 65 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
| 59 | 66 | |
| 60 | 67 | ###### |
| 61 | 68 | #Відображення основних даних оголошеного тендера: |
| ... | ... | @@ -77,7 +84,7 @@ ${question_id} 0 |
| 77 | 84 | Відображення tenderID оголошеного тендера |
| 78 | 85 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 79 | 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 | 89 | Відображення procuringEntity.name оголошеного тендера |
| 83 | 90 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| ... | ... | @@ -103,26 +110,18 @@ ${question_id} 0 |
| 103 | 110 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 104 | 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 | 114 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
| 117 | - Викликати для учасника ${tender_owner} Внести зміни в тендер ${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} додати предмети закупівлі ${TENDER_ID} 3 | |
| 122 | -# | |
| 123 | -#Можливість видалити позиції закупівлі тендера | |
| 124 | -# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
| 125 | -# Викликати для учасника ${tender_owner} додати предмети закупівлі ${TENDER_ID} 2 | |
| 126 | 125 | |
| 127 | 126 | ####### |
| 128 | 127 | #Відображення однопредметного тендера |
| ... | ... | @@ -178,15 +177,15 @@ ${question_id} 0 |
| 178 | 177 | |
| 179 | 178 | Відображення схеми додаткової класифікації позицій закупівлі однопредметного тендера |
| 180 | 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 | 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 | 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 | 191 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів пердметів однопредметного тендера |
| ... | ... | @@ -205,14 +204,14 @@ ${question_id} 0 |
| 205 | 204 | |
| 206 | 205 | Задати питання |
| 207 | 206 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
| 208 | - Викликати для учасника ${provider} Задати питання ${TENDER_ID} ${QUESTIONS[${question_id}]} | |
| 207 | + Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} | |
| 209 | 208 | ${now}= Get Current Date |
| 210 | 209 | Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} |
| 211 | 210 | |
| 212 | 211 | Відображення заголовоку анонімного питання без відповіді |
| 213 | 212 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей |
| 214 | 213 | Дочекатись синхронізації з майданчиком ${viewer} |
| 215 | - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} | |
| 214 | + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
| 216 | 215 | Звірити поле ${viewer} questions[${question_id}].title ${QUESTIONS[${question_id}].data.title} |
| 217 | 216 | |
| 218 | 217 | Відображення опис анонімного питання без відповіді |
| ... | ... | @@ -227,183 +226,181 @@ ${question_id} 0 |
| 227 | 226 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
| 228 | 227 | ${bid}= test bid data |
| 229 | 228 | Log ${bid} |
| 230 | - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${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 | 239 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання |
| 237 | - Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER_ID} 0 ${ANSWERS[0]} | |
| 240 | + Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} | |
| 238 | 241 | ${now}= Get Current Date |
| 239 | 242 | Set To Dictionary ${ANSWERS[${question_id}].data} date ${now} |
| 240 | 243 | |
| 241 | 244 | Відображення відповіді на запитання |
| 242 | 245 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення відповіді на запитання |
| 243 | 246 | Дочекатись синхронізації з майданчиком ${viewer} |
| 244 | - Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER_ID} | |
| 247 | + Викликати для учасника ${viewer} обновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
| 245 | 248 | Звірити поле ${viewer} questions[${question_id}].answer ${ANSWERS[${question_id}].data.answer} |
| 246 | 249 | |
| 247 | 250 | Можливість побачити скаргу користувачем під час періоду уточнень |
| 248 | 251 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
| 249 | - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 252 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 250 | 253 | |
| 251 | 254 | можливість побачити скаргу анонімом під час періоду уточнень |
| 252 | 255 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 253 | - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 256 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 254 | 257 | |
| 255 | 258 | Подати цінову пропозицію bidder |
| 256 | 259 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
| 257 | 260 | Дочекатись дати початоку прийому пропозицій |
| 258 | 261 | ${bid}= test bid data |
| 259 | 262 | Log ${bid} |
| 260 | - ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_ID} ${bid} | |
| 263 | + ${biddingresponce0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
| 261 | 264 | Set Global Variable ${biddingresponce0} |
| 262 | 265 | log ${biddingresponce0} |
| 263 | 266 | |
| 264 | 267 | Можливість скасувати цінову пропозицію |
| 265 | 268 | [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію |
| 266 | - ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER_ID} ${biddingresponce0} | |
| 269 | + ${biddingresponce_0}= Викликати для учасника ${provider} скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponce0} | |
| 267 | 270 | |
| 268 | -Подати цінову пропозицію bidder1 | |
| 271 | +Подати повторно цінову пропозицію першим учасником | |
| 269 | 272 | [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію |
| 270 | 273 | Дочекатись дати початоку прийому пропозицій |
| 271 | 274 | ${bid}= test bid data |
| 272 | 275 | Log ${bid} |
| 273 | - ${biddingresponce1}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER_ID} ${bid} | |
| 274 | - Set Global Variable ${biddingresponce1} | |
| 275 | - log ${biddingresponce1} | |
| 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} | |
| 276 | 280 | |
| 277 | -Можливість змінити цінову пропозицію до 50000 | |
| 281 | +Можливість змінити повторну цінову пропозицію до 50000 | |
| 278 | 282 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
| 279 | - Set To Dictionary ${biddingresponce1.data.value} amount 50000 | |
| 280 | - Log ${biddingresponce1.data.value} | |
| 281 | - ${biddingresponce2}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER_ID} ${biddingresponce1} | |
| 282 | - Set Global Variable ${biddingresponce2} | |
| 283 | - 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} | |
| 284 | 288 | |
| 285 | -Можливість змінити цінову пропозицію до 1 | |
| 289 | +Можливість змінити повторну цінову пропозицію до 10 | |
| 286 | 290 | [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію |
| 287 | - Set To Dictionary ${biddingresponce1.data.value} amount 1 | |
| 288 | - Log ${biddingresponce1.data.value} | |
| 289 | - ${biddingresponce3}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER_ID} ${biddingresponce1} | |
| 290 | - Set Global Variable ${biddingresponce3} | |
| 291 | - 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} | |
| 292 | 296 | |
| 293 | -Завантажити документ першим учасником | |
| 297 | +Завантажити документ першим учасником в повторну пропозицію | |
| 294 | 298 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця |
| 295 | 299 | log ${USERS.users['${provider}'].broker} |
| 296 | - log ${biddingresponce1} | |
| 297 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | |
| 298 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
| 299 | - log ${token1} | |
| 300 | - ${upload_doc_responce}= Викликати для учасника ${provider} Завантажити документ в ставку ${token1} ${bid_id} | |
| 301 | - Set Global Variable ${upload_doc_responce} | |
| 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} | |
| 302 | 313 | |
| 303 | 314 | Можливість змінити документацію цінової пропозиції |
| 304 | 315 | [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця |
| 305 | 316 | log ${USERS.users['${provider}'].broker} |
| 306 | - log ${biddingresponce1} | |
| 307 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | |
| 308 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
| 309 | - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id} | |
| 310 | - log ${token1} | |
| 311 | - Викликати для учасника ${provider} Змінити документ в ставці ${token1} ${bid_id} ${upload_doc_responce_id} | |
| 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} | |
| 312 | 322 | |
| 313 | 323 | Неможливість задати запитання після закінчення періоду уточнень |
| 314 | 324 | [Documentation] |
| 315 | 325 | ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" |
| 316 | 326 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
| 317 | - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER_ID} ${questions[${question_id}]} | |
| 327 | + ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${questions[${question_id}]} | |
| 318 | 328 | |
| 319 | -Подати цінову пропозицію bidder2 | |
| 329 | +Подати цінову пропозицію другим учасником | |
| 320 | 330 | [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію |
| 321 | 331 | Дочекатись дати початоку прийому пропозицій |
| 322 | 332 | ${bid}= test bid data |
| 323 | 333 | Log ${bid} |
| 324 | - ${biddingresponce5}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER_ID} ${bid} | |
| 325 | - Set Global Variable ${biddingresponce5} | |
| 326 | - 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} | |
| 327 | 340 | |
| 328 | 341 | Неможливість побачити цінові пропозиції учасників під час прийому пропозицій |
| 329 | 342 | [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію |
| 330 | - ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера B | |
| 343 | + | |
| 344 | + FIXME: finish the keyword | |
| 345 | + | |
| 346 | + ${field_date}= Викликати для учасника ${viewer} отримати інформацію із тендера | |
| 331 | 347 | |
| 332 | 348 | Завантажити документ другим учасником |
| 333 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | |
| 349 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця | |
| 334 | 350 | log ${USERS.users['${provider1}'].broker} |
| 335 | - ${bid_id2}= get variable value ${biddingresponce5.data.id} | |
| 336 | - ${token2}= Get Variable Value ${biddingresponce5.access.token} | |
| 337 | - log ${token2} | |
| 338 | - Викликати для учасника ${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} | |
| 339 | 354 | |
| 340 | 355 | Можливість побачити скаргу користувачем під час подачі пропозицій |
| 341 | 356 | [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера |
| 342 | - Викликати для учасника ${provider} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 357 | + Викликати для учасника ${provider} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 343 | 358 | |
| 344 | 359 | можливість побачити скаргу анонімом під час подачі пропозицій |
| 345 | 360 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера |
| 346 | - Викликати для учасника ${viewer} порівняти скаргу ${TENDER_ID} ${COMPLAINTS[0]} | |
| 347 | - | |
| 361 | + Викликати для учасника ${viewer} порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]} | |
| 348 | 362 | |
| 349 | 363 | Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій |
| 350 | 364 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій |
| 351 | 365 | Дочекатись дати закінчення прийому пропозицій |
| 352 | - Set To Dictionary ${biddingresponce1.data.value} amount 50000 | |
| 353 | - Log ${biddingresponce5.data.value} | |
| 354 | - ${biddingresponce6}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
| 355 | - Set Global Variable ${biddingresponce6} | |
| 356 | - log ${biddingresponce6} | |
| 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} | |
| 357 | 371 | |
| 358 | 372 | Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
| 359 | 373 | [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій |
| 360 | - Set To Dictionary ${biddingresponce5.data.value} amount 1 | |
| 361 | - Log ${biddingresponce1.data.value} | |
| 362 | - ${biddingresponce7}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
| 363 | - Set Global Variable ${biddingresponce7} | |
| 364 | - 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} | |
| 365 | 379 | |
| 366 | 380 | Неможливість скасувати цінову пропозицію |
| 367 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | |
| 368 | - ${biddingresponce8}= Викликати для учасника ${provider} скасувати цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
| 381 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію | |
| 382 | + ${biddingresponce}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponces['resp']} | |
| 369 | 383 | |
| 370 | 384 | Неможливість завантажити документ другим учасником після закінчення прийому пропозицій |
| 371 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість документ першим учасником після закінчення прийому пропозицій | |
| 372 | - log ${USERS.users['${provider1}'].broker} | |
| 373 | - log ${biddingresponce5} | |
| 374 | - ${bid_id}= get variable value ${biddingresponce5.data.id} | |
| 375 | - ${token1}= Get Variable Value ${biddingresponce5.access.token} | |
| 376 | - log ${token1} | |
| 377 | - ${upload_doc_responce2}= Викликати для учасника ${provider1} Завантажити документ в ставку shouldfail ${token1} ${bid_id} | |
| 378 | - log ${upload_doc_responce_2} | |
| 379 | - Set Global Variable ${upload_doc_responce2} | |
| 380 | - | |
| 381 | -Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій | |
| 382 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість змінити документацію цінової пропозиції після закінчення прийому пропозицій | |
| 383 | - log ${USERS.users['${provider}'].broker} | |
| 384 | - log ${biddingresponce5} | |
| 385 | - ${bid_id}= get variable value ${biddingresponce5.data.id} | |
| 386 | - ${token1}= Get Variable Value ${biddingresponce5.access.token} | |
| 387 | - ${upload_doc_responce_id2}= get variable value ${upload_doc_responce2.data.id} | |
| 388 | - log ${upload_doc_responce_id2} | |
| 389 | - log ${token1} | |
| 390 | - Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id2} | |
| 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} | |
| 391 | 389 | |
| 392 | 390 | |
| 393 | 391 | Неможливість змінити існуючу документацію цінової пропозиції після закінчення прийому пропозицій |
| 394 | - [Tags] ${USERS.users['${provider}'].broker}: Можливість прийняти пропозицію переможця | |
| 395 | - log ${USERS.users['${provider}'].broker} | |
| 396 | - log ${biddingresponce1} | |
| 397 | - ${bid_id}= get variable value ${biddingresponce1.data.id} | |
| 398 | - ${token1}= Get Variable Value ${biddingresponce1.access.token} | |
| 399 | - ${upload_doc_responce_id}= get variable value ${upload_doc_responce.data.id} | |
| 400 | - log ${token1} | |
| 401 | - Викликати для учасника ${provider} Змінити документ в ставці shouldfail ${token1} ${bid_id} ${upload_doc_responce_id} | |
| 392 | + [Tags] ${USERS.users['${provider1}'].broker}: | |
| 393 | + ${filepath}= create_fake_doc | |
| 394 | + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id} | |
| 395 | + ${docid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['bid_doc_upload']['upload_responce'].data.id} | |
| 396 | + ${bid_doc_modified_failed}= Викликати для учасника ${provider1} Змінити документ в ставці shouldfail ${filepath} ${bidid} ${docid} | |
| 397 | + Set To Dictionary ${USERS.users['${provider}'].bidresponces} bid_doc_modified_failed ${bid_doc_modified_failed} | |
| 402 | 398 | |
| 403 | 399 | |
| 404 | -Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій | |
| 405 | - [Tags] ${USERS.users['${provider}'].broker}: Неможливість скасувати цінову пропозицію після закінчення прийому пропозицій | |
| 406 | - ${biddingresponce8}= Викликати для учасника ${provider1} скасувати цінову пропозицію shouldfail ${TENDER_ID} ${biddingresponce5} | |
| 407 | - Set Global Variable ${biddingresponce8} | |
| 408 | - log ${biddingresponce8} | |
| 409 | - | |
| 400 | +Вичитати цінову пропозицію | |
| 401 | +# sleep 120 | |
| 402 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | |
| 403 | + ${bidid}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].data.id} | |
| 404 | + ${token}= Get Variable Value ${USERS.users['${provider1}'].bidresponces['resp'].access.token} | |
| 405 | + ${bids}= Викликати для учасника ${provider1} Отримати пропозиції ${TENDER['TENDER_UAID']} ${bidid} ${token} | |
| 406 | + log ${bids} | |
| \ No newline at end of file | ... | ... |
Please
register
or
login
to post a comment