Commit 225bcf9a1a54fabf6a7d8d05d996202446ff61f6

Authored by smithumble
1 parent 224dd45b

Add tendering contract amountNet tests

... ... @@ -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}
... ...
... ... @@ -17,6 +17,7 @@ ${TENDER_MEAT} ${True}
17 17 ${LOT_MEAT} ${True}
18 18 ${ITEM_MEAT} ${True}
19 19 ${MOZ_INTEGRATION} ${False}
  20 +${VAT_INCLUDED} ${True}
20 21
21 22 *** Test Cases ***
22 23 Можливість оголосити тендер
... ...
... ... @@ -20,6 +20,7 @@ from .initial_data import (
20 20 create_fake_doc,
21 21 create_fake_sentence,
22 22 create_fake_amount,
  23 + create_fake_amount_net,
23 24 create_fake_number,
24 25 create_fake_number_float,
25 26 create_fake_date,
... ...
Please register or login to post a comment