Commit 225bcf9a1a54fabf6a7d8d05d996202446ff61f6
1 parent
224dd45b
Add tendering contract amountNet tests
Showing
6 changed files
with
170 additions
and
29 deletions
| ... | ... | @@ -20,6 +20,7 @@ Resource resource.robot |
| 20 | 20 | ... item_meat=${${ITEM_MEAT}} |
| 21 | 21 | ... api_host_url=${API_HOST_URL} |
| 22 | 22 | ... moz_integration=${${MOZ_INTEGRATION}} |
| 23 | + ... vat_included=${${VAT_INCLUDED}} | |
| 23 | 24 | ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} |
| 24 | 25 | ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND} |
| 25 | 26 | Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} | ... | ... |
| ... | ... | @@ -44,43 +44,145 @@ Suite Teardown Test Suite Teardown |
| 44 | 44 | Дочекатись дати ${standstillEnd} |
| 45 | 45 | |
| 46 | 46 | |
| 47 | -Відображення вартості угоди | |
| 48 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
| 47 | +Відображення вартості угоди без урахування ПДВ | |
| 48 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 49 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 50 | + [Tags] ${viewer_data.broker}: Відображення основних даних угоди | |
| 49 | 51 | ... viewer |
| 50 | - ... ${USERS.users['${viewer}'].broker} | |
| 52 | + ... ${viewer_data.broker} | |
| 51 | 53 | ... contract_view |
| 52 | 54 | ... non-critical |
| 53 | 55 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
| 54 | 56 | ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer} |
| 55 | - Отримати дані із поля awards[${award_index}].value.amount тендера для користувача ${viewer} | |
| 57 | + ${award}= Get From List ${viewer_data.tender_data.data.awards} ${award_index} | |
| 58 | + ${award_amount}= Get From Dictionary ${award.value} amount | |
| 59 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
| 60 | + ${amount_net_field}= Set Variable contracts[${contract_index}].value.amountNet | |
| 61 | + Звірити відображення поля ${amount_net_field} тендера із ${award_amount} для користувача ${viewer} | |
| 62 | + | |
| 63 | + | |
| 64 | +Можливість редагувати вартість угоди без урахування ПДВ | |
| 65 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 66 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 67 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
| 68 | + ... tender_owner | |
| 69 | + ... ${tender_owner_data.broker} | |
| 70 | + ... modify_contract | |
| 71 | + ... critical | |
| 72 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
| 73 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
| 74 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
| 75 | + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} | |
| 76 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
| 77 | + Set to dictionary ${tender_owner_data} new_amount_net=${amount_net} | |
| 78 | + Run As ${tender_owner} Редагувати угоду | |
| 79 | + ... ${TENDER['TENDER_UAID']} | |
| 80 | + ... ${contract_index} | |
| 81 | + ... value.amountNet | |
| 82 | + ... ${amount_net} | |
| 83 | + | |
| 84 | + | |
| 85 | +Відображення відредагованої вартості угоди без урахування ПДВ | |
| 86 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 87 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 88 | + [Tags] ${viewer_data.broker}: Відображення основних даних угоди | |
| 89 | + ... viewer | |
| 90 | + ... ${viewer_data.broker} | |
| 91 | + ... contract_view | |
| 92 | + ... non-critical | |
| 93 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
| 94 | + ${amount_net}= Get Variable Value ${tender_owner_data.new_amount_net} | |
| 95 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
| 96 | + ${amount_net_field}= Set Variable contracts[${contract_index}].value.amountNet | |
| 97 | + Звірити відображення поля ${amount_net_field} тендера із ${amount_net} для користувача ${viewer} | |
| 98 | + | |
| 99 | + | |
| 100 | +Відображення вартості угоди | |
| 101 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 102 | + [Tags] ${viewer_data.broker}: Відображення основних даних угоди | |
| 103 | + ... viewer | |
| 104 | + ... ${viewer_data.broker} | |
| 105 | + ... contract_view | |
| 106 | + ... non-critical | |
| 107 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
| 108 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
| 109 | + ${amount_field}= Set Variable contracts[${contract_index}].value.amount | |
| 110 | + Отримати дані із поля ${amount_field} тендера для користувача ${viewer} | |
| 56 | 111 | |
| 57 | 112 | |
| 58 | 113 | Можливість редагувати вартість угоди |
| 59 | - [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
| 114 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 115 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 116 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
| 60 | 117 | ... tender_owner |
| 61 | - ... ${USERS.users['${tender_owner}'].broker} | |
| 118 | + ... ${tender_owner_data.broker} | |
| 62 | 119 | ... modify_contract_value |
| 63 | 120 | ... critical |
| 64 | 121 | [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} |
| 65 | 122 | [Teardown] Оновити LAST_MODIFICATION_DATE |
| 66 | - ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer} | |
| 123 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
| 124 | + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} | |
| 67 | 125 | ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} |
| 68 | - ${award_amount}= Get From Dictionary ${USERS.users['${viewer}'].tender_data.data.awards[${award_index}].value} amount | |
| 69 | - ${amount}= create_fake_amount ${award_amount} | |
| 70 | - Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
| 71 | - Run As ${tender_owner} Редагувати угоду ${TENDER['TENDER_UAID']} ${contract_index} value.amount ${amount} | |
| 126 | + Set to dictionary ${tender_owner_data} new_amount=${amount} | |
| 127 | + Run As ${tender_owner} Редагувати угоду | |
| 128 | + ... ${TENDER['TENDER_UAID']} | |
| 129 | + ... ${contract_index} | |
| 130 | + ... value.amount | |
| 131 | + ... ${amount} | |
| 72 | 132 | |
| 73 | 133 | |
| 74 | 134 | Відображення відредагованої вартості угоди |
| 75 | - [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
| 135 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 136 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 137 | + [Tags] ${viewer_data.broker}: Відображення основних даних угоди | |
| 76 | 138 | ... viewer |
| 77 | - ... ${USERS.users['${viewer}'].broker} | |
| 139 | + ... ${viewer_data.broker} | |
| 78 | 140 | ... modify_contract_value |
| 79 | 141 | ... non-critical |
| 80 | 142 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
| 143 | + ${amount}= Get Variable Value ${tender_owner_data.new_amount} | |
| 144 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
| 145 | + ${amount_field}= Set Variable contracts[${contract_index}].value.amount | |
| 146 | + Звірити відображення поля ${amount_field} тендера із ${amount} для користувача ${viewer} | |
| 147 | + | |
| 148 | + | |
| 149 | +Неможливість встановити вартість угоди без ПДВ більше ніж вартість угоди | |
| 150 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 151 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 152 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
| 153 | + ... tender_owner | |
| 154 | + ... ${tender_owner_data.broker} | |
| 155 | + ... modify_contract | |
| 156 | + ... critical | |
| 157 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
| 158 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
| 159 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
| 160 | + ${amount_net}= Evaluate ${award.value.amount} + 1 | |
| 161 | + ${value}= Require Failure ${tender_owner} Редагувати угоду | |
| 162 | + ... ${TENDER['TENDER_UAID']} | |
| 163 | + ... ${contract_index} | |
| 164 | + ... value.amountNet | |
| 165 | + ... ${amount_net} | |
| 166 | + Should Contain ${value} Value amountNet should be less or equal to amount | |
| 167 | + | |
| 168 | + | |
| 169 | +Неможливість встановити вартість угоди без ПДВ нижче ніж вартість угоди більше ніж на 20 відсотків | |
| 170 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
| 171 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
| 172 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
| 173 | + ... tender_owner | |
| 174 | + ... ${tender_owner_data.broker} | |
| 175 | + ... modify_contract | |
| 176 | + ... critical | |
| 177 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
| 178 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
| 81 | 179 | ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} |
| 82 | - Run Keyword And Ignore Error Remove From Dictionary ${USERS.users['${viewer}'].tender_data.data.contracts[${contract_index}].value} amount | |
| 83 | - Звірити відображення поля contracts[${contract_index}].value.amount тендера із ${USERS.users['${tender_owner}'].new_amount} для користувача ${viewer} | |
| 180 | + ${value}= Require Failure ${tender_owner} Редагувати угоду | |
| 181 | + ... ${TENDER['TENDER_UAID']} | |
| 182 | + ... ${contract_index} | |
| 183 | + ... value.amountNet | |
| 184 | + ... 0 | |
| 185 | + Should Contain ${value} for 20.0% | |
| 84 | 186 | |
| 85 | 187 | |
| 86 | 188 | Можливість встановити дату підписання угоди | ... | ... |
| ... | ... | @@ -44,8 +44,23 @@ def get_fake_funder_scheme(): |
| 44 | 44 | return fake.funder_scheme() |
| 45 | 45 | |
| 46 | 46 | |
| 47 | -def create_fake_amount(award_amount): | |
| 48 | - return round(random.uniform(1, award_amount), 2) | |
| 47 | +def create_fake_amount(award_amount, value_added_tax_included): | |
| 48 | + half_min_amount_net = award_amount - award_amount * 0.2 | |
| 49 | + if value_added_tax_included: | |
| 50 | + return round(random.uniform(half_min_amount_net, award_amount), 2) | |
| 51 | + else: | |
| 52 | + min_amount_net = award_amount - award_amount * 0.2 | |
| 53 | + range_amount_net = award_amount - min_amount_net | |
| 54 | + return round(random.uniform(award_amount, award_amount + range_amount_net / 2), 2) | |
| 55 | + | |
| 56 | + | |
| 57 | +def create_fake_amount_net(award_amount, value_added_tax_included): | |
| 58 | + half_min_amount_net = award_amount - award_amount * 0.2 | |
| 59 | + if value_added_tax_included: | |
| 60 | + min_amount_net = award_amount - award_amount * 0.2 | |
| 61 | + return round(random.uniform(min_amount_net, half_min_amount_net), 2) | |
| 62 | + else: | |
| 63 | + return round(random.uniform(half_min_amount_net, award_amount), 2) | |
| 49 | 64 | |
| 50 | 65 | |
| 51 | 66 | def create_fake_number(min_number, max_number): |
| ... | ... | @@ -135,6 +150,7 @@ def test_tender_data(params, |
| 135 | 150 | if submissionMethodDetails else "quick" |
| 136 | 151 | now = get_now() |
| 137 | 152 | value_amount = round(random.uniform(3000, 99999999.99), 2) # max value equals to budget of Ukraine in hryvnias |
| 153 | + vat_included = params.get('vat_included', True) | |
| 138 | 154 | data = { |
| 139 | 155 | "mode": "test", |
| 140 | 156 | "submissionMethodDetails": submissionMethodDetails, |
| ... | ... | @@ -149,7 +165,7 @@ def test_tender_data(params, |
| 149 | 165 | "value": { |
| 150 | 166 | "amount": value_amount, |
| 151 | 167 | "currency": u"UAH", |
| 152 | - "valueAddedTaxIncluded": True | |
| 168 | + "valueAddedTaxIncluded": vat_included | |
| 153 | 169 | }, |
| 154 | 170 | "minimalStep": { |
| 155 | 171 | "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), |
| ... | ... | @@ -183,7 +199,7 @@ def test_tender_data(params, |
| 183 | 199 | data['lots'] = [] |
| 184 | 200 | for lot_number in range(params['number_of_lots']): |
| 185 | 201 | lot_id = uuid4().hex |
| 186 | - new_lot = test_lot_data(data['value']['amount']) | |
| 202 | + new_lot = test_lot_data(data['value']['amount'], vat_included) | |
| 187 | 203 | data['lots'].append(new_lot) |
| 188 | 204 | data['lots'][lot_number]['id'] = lot_id |
| 189 | 205 | for i in range(params['number_of_items']): |
| ... | ... | @@ -564,7 +580,7 @@ def test_invalid_features_data(): |
| 564 | 580 | ] |
| 565 | 581 | |
| 566 | 582 | |
| 567 | -def test_lot_data(max_value_amount): | |
| 583 | +def test_lot_data(max_value_amount, vat_included=True): | |
| 568 | 584 | value_amount = round(random.uniform(1, max_value_amount), 2) |
| 569 | 585 | return munchify( |
| 570 | 586 | { |
| ... | ... | @@ -575,12 +591,12 @@ def test_lot_data(max_value_amount): |
| 575 | 591 | "value": { |
| 576 | 592 | "currency": "UAH", |
| 577 | 593 | "amount": value_amount, |
| 578 | - "valueAddedTaxIncluded": True | |
| 594 | + "valueAddedTaxIncluded": vat_included | |
| 579 | 595 | }, |
| 580 | 596 | "minimalStep": { |
| 581 | 597 | "currency": "UAH", |
| 582 | 598 | "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), |
| 583 | - "valueAddedTaxIncluded": True | |
| 599 | + "valueAddedTaxIncluded": vat_included | |
| 584 | 600 | }, |
| 585 | 601 | "status": "active" |
| 586 | 602 | }) | ... | ... |
| ... | ... | @@ -1189,19 +1189,39 @@ Require Failure |
| 1189 | 1189 | Run Keyword If '${status}' == 'PASS' Set To Dictionary ${MONITORING} DASU_LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE} |
| 1190 | 1190 | |
| 1191 | 1191 | |
| 1192 | -Отримати останній індекс | |
| 1193 | - [Arguments] ${object} @{username} | |
| 1194 | - :FOR ${role} IN @{username} | |
| 1192 | +Отримати користувача з доступом до поля за пріорітетом | |
| 1193 | + [Arguments] ${field} @{usernames} | |
| 1194 | + :FOR ${username} IN @{usernames} | |
| 1195 | + \ ${user_data}= Get From Dictionary ${USERS.users} ${username} | |
| 1195 | 1196 | \ ${status} ${field_value}= Run Keyword And Ignore Error |
| 1196 | 1197 | ... get_from_object |
| 1197 | - ... ${USERS.users['${role}'].tender_data.data} | |
| 1198 | - ... ${object} | |
| 1198 | + ... ${user_data.tender_data.data} | |
| 1199 | + ... ${field} | |
| 1199 | 1200 | \ Run Keyword If '${status}' == 'PASS' Exit For Loop |
| 1200 | - ${len_of_object}= Run Keyword If '${status}' == 'PASS' Get Length ${USERS.users['${role}'].tender_data.data.${object}} | |
| 1201 | - ${index}= Run Keyword If '${status}' == 'PASS' subtraction ${len_of_object} 1 | |
| 1201 | + Run Keyword If '${status}' == 'FAIL' Fail ${object} not found for usernames @{usernames} | |
| 1202 | + [Return] ${username} | |
| 1203 | + | |
| 1204 | + | |
| 1205 | +Отримати останній індекс | |
| 1206 | + [Arguments] ${field} @{usernames} | |
| 1207 | + ${username}= Отримати користувача з доступом до поля за пріорітетом ${field} @{usernames} | |
| 1208 | + ${user_data}= Get From Dictionary ${USERS.users} ${username} | |
| 1209 | + ${object}= Get From Dictionary ${user_data.tender_data.data} ${field} | |
| 1210 | + ${len}= Get Length ${object} | |
| 1211 | + ${index}= Evaluate ${len} - 1 | |
| 1202 | 1212 | [Return] ${index} |
| 1203 | 1213 | |
| 1204 | 1214 | |
| 1215 | +Отримати останній элемент | |
| 1216 | + [Arguments] ${field} @{usernames} | |
| 1217 | + ${username}= Отримати користувача з доступом до поля за пріорітетом ${field} @{usernames} | |
| 1218 | + ${index}= Отримати останній індекс ${field} @{usernames} | |
| 1219 | + ${user_data}= Get From Dictionary ${USERS.users} ${username} | |
| 1220 | + ${object}= Get From Dictionary ${user_data.tender_data.data} ${field} | |
| 1221 | + ${item}= Get From List ${object} ${index} | |
| 1222 | + [Return] ${item} | |
| 1223 | + | |
| 1224 | + | |
| 1205 | 1225 | Розрахувати ціну для ${contract_number} контракту |
| 1206 | 1226 | ${contract_data}= Create Dictionary data=${USERS.users['${tender_owner}'].tender_data.data.agreements[0].contracts[${contract_number}]} |
| 1207 | 1227 | ${quantity}= Set Variable ${0} | ... | ... |
Please
register
or
login
to post a comment