Commit 225bcf9a1a54fabf6a7d8d05d996202446ff61f6

Authored by smithumble
1 parent 224dd45b

Add tendering contract amountNet tests

@@ -20,6 +20,7 @@ Resource resource.robot @@ -20,6 +20,7 @@ Resource resource.robot
20 ... item_meat=${${ITEM_MEAT}} 20 ... item_meat=${${ITEM_MEAT}}
21 ... api_host_url=${API_HOST_URL} 21 ... api_host_url=${API_HOST_URL}
22 ... moz_integration=${${MOZ_INTEGRATION}} 22 ... moz_integration=${${MOZ_INTEGRATION}}
  23 + ... vat_included=${${VAT_INCLUDED}}
23 ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} 24 ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE}
24 ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND} 25 ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND}
25 Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} 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,43 +44,145 @@ Suite Teardown Test Suite Teardown
44 Дочекатись дати ${standstillEnd} 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 ... viewer 51 ... viewer
50 - ... ${USERS.users['${viewer}'].broker} 52 + ... ${viewer_data.broker}
51 ... contract_view 53 ... contract_view
52 ... non-critical 54 ... non-critical
53 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 55 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
54 ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer} 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 ... tender_owner 117 ... tender_owner
61 - ... ${USERS.users['${tender_owner}'].broker} 118 + ... ${tender_owner_data.broker}
62 ... modify_contract_value 119 ... modify_contract_value
63 ... critical 120 ... critical
64 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} 121 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
65 [Teardown] Оновити LAST_MODIFICATION_DATE 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 ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} 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 ... viewer 138 ... viewer
77 - ... ${USERS.users['${viewer}'].broker} 139 + ... ${viewer_data.broker}
78 ... modify_contract_value 140 ... modify_contract_value
79 ... non-critical 141 ... non-critical
80 [Setup] Дочекатись синхронізації з майданчиком ${viewer} 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 ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} 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,8 +44,23 @@ def get_fake_funder_scheme():
44 return fake.funder_scheme() 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 def create_fake_number(min_number, max_number): 66 def create_fake_number(min_number, max_number):
@@ -135,6 +150,7 @@ def test_tender_data(params, @@ -135,6 +150,7 @@ def test_tender_data(params,
135 if submissionMethodDetails else "quick" 150 if submissionMethodDetails else "quick"
136 now = get_now() 151 now = get_now()
137 value_amount = round(random.uniform(3000, 99999999.99), 2) # max value equals to budget of Ukraine in hryvnias 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 data = { 154 data = {
139 "mode": "test", 155 "mode": "test",
140 "submissionMethodDetails": submissionMethodDetails, 156 "submissionMethodDetails": submissionMethodDetails,
@@ -149,7 +165,7 @@ def test_tender_data(params, @@ -149,7 +165,7 @@ def test_tender_data(params,
149 "value": { 165 "value": {
150 "amount": value_amount, 166 "amount": value_amount,
151 "currency": u"UAH", 167 "currency": u"UAH",
152 - "valueAddedTaxIncluded": True 168 + "valueAddedTaxIncluded": vat_included
153 }, 169 },
154 "minimalStep": { 170 "minimalStep": {
155 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), 171 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2),
@@ -183,7 +199,7 @@ def test_tender_data(params, @@ -183,7 +199,7 @@ def test_tender_data(params,
183 data['lots'] = [] 199 data['lots'] = []
184 for lot_number in range(params['number_of_lots']): 200 for lot_number in range(params['number_of_lots']):
185 lot_id = uuid4().hex 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 data['lots'].append(new_lot) 203 data['lots'].append(new_lot)
188 data['lots'][lot_number]['id'] = lot_id 204 data['lots'][lot_number]['id'] = lot_id
189 for i in range(params['number_of_items']): 205 for i in range(params['number_of_items']):
@@ -564,7 +580,7 @@ def test_invalid_features_data(): @@ -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 value_amount = round(random.uniform(1, max_value_amount), 2) 584 value_amount = round(random.uniform(1, max_value_amount), 2)
569 return munchify( 585 return munchify(
570 { 586 {
@@ -575,12 +591,12 @@ def test_lot_data(max_value_amount): @@ -575,12 +591,12 @@ def test_lot_data(max_value_amount):
575 "value": { 591 "value": {
576 "currency": "UAH", 592 "currency": "UAH",
577 "amount": value_amount, 593 "amount": value_amount,
578 - "valueAddedTaxIncluded": True 594 + "valueAddedTaxIncluded": vat_included
579 }, 595 },
580 "minimalStep": { 596 "minimalStep": {
581 "currency": "UAH", 597 "currency": "UAH",
582 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2), 598 "amount": round(random.uniform(0.005, 0.03) * value_amount, 2),
583 - "valueAddedTaxIncluded": True 599 + "valueAddedTaxIncluded": vat_included
584 }, 600 },
585 "status": "active" 601 "status": "active"
586 }) 602 })
@@ -1189,19 +1189,39 @@ Require Failure @@ -1189,19 +1189,39 @@ Require Failure
1189 Run Keyword If '${status}' == 'PASS' Set To Dictionary ${MONITORING} DASU_LAST_MODIFICATION_DATE=${LAST_MODIFICATION_DATE} 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 \ ${status} ${field_value}= Run Keyword And Ignore Error 1196 \ ${status} ${field_value}= Run Keyword And Ignore Error
1196 ... get_from_object 1197 ... get_from_object
1197 - ... ${USERS.users['${role}'].tender_data.data}  
1198 - ... ${object} 1198 + ... ${user_data.tender_data.data}
  1199 + ... ${field}
1199 \ Run Keyword If '${status}' == 'PASS' Exit For Loop 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 [Return] ${index} 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 Розрахувати ціну для ${contract_number} контракту 1225 Розрахувати ціну для ${contract_number} контракту
1206 ${contract_data}= Create Dictionary data=${USERS.users['${tender_owner}'].tender_data.data.agreements[0].contracts[${contract_number}]} 1226 ${contract_data}= Create Dictionary data=${USERS.users['${tender_owner}'].tender_data.data.agreements[0].contracts[${contract_number}]}
1207 ${quantity}= Set Variable ${0} 1227 ${quantity}= Set Variable ${0}
@@ -17,6 +17,7 @@ ${TENDER_MEAT} ${True} @@ -17,6 +17,7 @@ ${TENDER_MEAT} ${True}
17 ${LOT_MEAT} ${True} 17 ${LOT_MEAT} ${True}
18 ${ITEM_MEAT} ${True} 18 ${ITEM_MEAT} ${True}
19 ${MOZ_INTEGRATION} ${False} 19 ${MOZ_INTEGRATION} ${False}
  20 +${VAT_INCLUDED} ${True}
20 21
21 *** Test Cases *** 22 *** Test Cases ***
22 Можливість оголосити тендер 23 Можливість оголосити тендер
@@ -20,6 +20,7 @@ from .initial_data import ( @@ -20,6 +20,7 @@ from .initial_data import (
20 create_fake_doc, 20 create_fake_doc,
21 create_fake_sentence, 21 create_fake_sentence,
22 create_fake_amount, 22 create_fake_amount,
  23 + create_fake_amount_net,
23 create_fake_number, 24 create_fake_number,
24 create_fake_number_float, 25 create_fake_number_float,
25 create_fake_date, 26 create_fake_date,
Please register or login to post a comment