Commit ef5191f3d202bbdfab99516367df977ff0909d48
add PQ test cases
Showing
21 changed files
with
1772 additions
and
3 deletions
... | ... | @@ -217,6 +217,94 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status |
217 | 217 | Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} |
218 | 218 | |
219 | 219 | |
220 | +Можливість оголосити тендер з недоліками в параметрах | |
221 | + ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml | |
222 | + ${ARTIFACT}= load_data_from ${file_path} | |
223 | + Log ${ARTIFACT.tender_uaid} | |
224 | + ${NUMBER_OF_LOTS}= Convert To Integer ${NUMBER_OF_LOTS} | |
225 | + ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS} | |
226 | + ${NUMBER_OF_MILESTONES}= Convert To Integer ${NUMBER_OF_MILESTONES} | |
227 | + ${WRONG_TENDER_DATE} Get Variable Value ${WRONG_TENDER_DATE} ${False} | |
228 | + ${EMPTY_PROFILE} Get Variable Value ${EMPTY_PROFILE} ${False} | |
229 | + ${WRONG_PROFILE} Get Variable Value ${PROFILE} ${True} | |
230 | + ${PROFILES_HIDDEN_STATUS} Get Variable Value ${PROFILES_HIDDEN_STATUS} ${False} | |
231 | + ${PROFILES_SHORTLISTEDFIRMS_EMPTY} Get Variable Value ${PROFILES_SHORTLISTEDFIRMS_EMPTY} ${False} | |
232 | + ${UNKNOWN_PROFILE} Get Variable Value ${UNKNOWN_PROFILE} ${False} | |
233 | + ${tender_parameters}= Create Dictionary | |
234 | + ... mode=${MODE} | |
235 | + ... number_of_items=${NUMBER_OF_ITEMS} | |
236 | + ... number_of_lots=${NUMBER_OF_LOTS} | |
237 | + ... number_of_milestones=${NUMBER_OF_MILESTONES} | |
238 | + ... tender_meat=${${TENDER_MEAT}} | |
239 | + ... lot_meat=${${LOT_MEAT}} | |
240 | + ... item_meat=${${ITEM_MEAT}} | |
241 | + ... api_host_url=${API_HOST_URL} | |
242 | + ... moz_integration=${${MOZ_INTEGRATION}} | |
243 | + ... vat_included=${${VAT_INCLUDED}} | |
244 | + ... road_index=${${ROAD_INDEX}} | |
245 | + ... gmdn_index=${${GMDN_INDEX}} | |
246 | + ... plan_tender=${${PLAN_TENDER}} | |
247 | + ... wrong_tender_date=${${WRONG_TENDER_DATE}} | |
248 | + ... empty_profile=${${EMPTY_PROFILE}} | |
249 | + ... wrong_profile=${${WRONG_PROFILE}} | |
250 | + ... profiles_hidden_status=${${PROFILES_HIDDEN_STATUS}} | |
251 | + ... profiles_shortlistedfirms_empty=${${PROFILES_SHORTLISTEDFIRMS_EMPTY}} | |
252 | + ... unknown_profile=${${UNKNOWN_PROFILE}} | |
253 | + ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} | |
254 | + ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND} | |
255 | + Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} | |
256 | + Run keyword if '${FUNDING_KIND}' != '${None}' Set to dictionary ${tender_parameters} fundingKind=${FUNDING_KIND} | |
257 | + :FOR ${username} IN ${viewer} ${tender_owner} | |
258 | + \ ${status}= Run Keyword And Return Status List Should Contain Value ${USERS.users['${username}']} plan_client | |
259 | + \ Run Keyword If ${status} Exit For Loop | |
260 | + ${plan_data}= знайти план за ідентифікатором ${ARTIFACT.tender_uaid} ${username} | |
261 | + Log ${plan_data} | |
262 | + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters} ${plan_data} | |
263 | + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_data} | |
264 | + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data} ${ARTIFACT.tender_uaid} | |
265 | + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | |
266 | + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} | |
267 | + | |
268 | + | |
269 | +Можливість оголосити тендер без 2-ї фази commit-у | |
270 | + ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml | |
271 | + ${ARTIFACT}= load_data_from ${file_path} | |
272 | + Log ${ARTIFACT.tender_uaid} | |
273 | + ${NUMBER_OF_LOTS}= Convert To Integer ${NUMBER_OF_LOTS} | |
274 | + ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS} | |
275 | + ${NUMBER_OF_MILESTONES}= Convert To Integer ${NUMBER_OF_MILESTONES} | |
276 | + ${TENDER_WRONG_STATUS} Get Variable Value ${TENDER_WRONG_STATUS} ${False} | |
277 | + ${tender_parameters}= Create Dictionary | |
278 | + ... mode=${MODE} | |
279 | + ... number_of_items=${NUMBER_OF_ITEMS} | |
280 | + ... number_of_lots=${NUMBER_OF_LOTS} | |
281 | + ... number_of_milestones=${NUMBER_OF_MILESTONES} | |
282 | + ... tender_meat=${${TENDER_MEAT}} | |
283 | + ... lot_meat=${${LOT_MEAT}} | |
284 | + ... item_meat=${${ITEM_MEAT}} | |
285 | + ... api_host_url=${API_HOST_URL} | |
286 | + ... moz_integration=${${MOZ_INTEGRATION}} | |
287 | + ... vat_included=${${VAT_INCLUDED}} | |
288 | + ... road_index=${${ROAD_INDEX}} | |
289 | + ... gmdn_index=${${GMDN_INDEX}} | |
290 | + ... plan_tender=${${PLAN_TENDER}} | |
291 | + ... tender_wrong_status=${${TENDER_WRONG_STATUS}} | |
292 | + ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} | |
293 | + ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND} | |
294 | + Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} | |
295 | + Run keyword if '${FUNDING_KIND}' != '${None}' Set to dictionary ${tender_parameters} fundingKind=${FUNDING_KIND} | |
296 | + :FOR ${username} IN ${viewer} ${tender_owner} | |
297 | + \ ${status}= Run Keyword And Return Status List Should Contain Value ${USERS.users['${username}']} plan_client | |
298 | + \ Run Keyword If ${status} Exit For Loop | |
299 | + ${plan_data}= знайти план за ідентифікатором ${ARTIFACT.tender_uaid} ${username} | |
300 | + Log ${plan_data} | |
301 | + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters} ${plan_data} | |
302 | + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_data} | |
303 | + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер без 2-ї фази commit-у ${adapted_data} ${ARTIFACT.tender_uaid} | |
304 | + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | |
305 | + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} | |
306 | + | |
307 | + | |
220 | 308 | Можливість створити об'єкт моніторингу |
221 | 309 | ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} |
222 | 310 | ${accelerator}= Get Variable Value ${accelerator} |
... | ... | @@ -2084,6 +2172,17 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status |
2084 | 2172 | Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} |
2085 | 2173 | |
2086 | 2174 | |
2175 | +Можливість подати цінову пропозицію priceQuotation користувачем ${username} | |
2176 | + ${bid}= Підготувати дані для подання пропозиції priceQuotation ${username} | |
2177 | + ${bidresponses}= Create Dictionary bid=${bid} | |
2178 | + Set To Dictionary ${USERS.users['${username}']} bidresponses=${bidresponses} | |
2179 | + ${lots}= Get Variable Value ${USERS.users['${tender_owner}'].initial_data.data.lots} ${None} | |
2180 | + ${lots_ids}= Run Keyword IF ${lots} | |
2181 | + ... Отримати ідентифікатори об’єктів ${username} lots | |
2182 | + ... ELSE Set Variable ${None} | |
2183 | + Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} | |
2184 | + | |
2185 | + | |
2087 | 2186 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} |
2088 | 2187 | ${bid}= Підготувати дані для подання пропозиції |
2089 | 2188 | ${values}= Get Variable Value ${bid.data.lotValues[0]} |
... | ... |
... | ... | @@ -237,6 +237,7 @@ Library openprocurement_client.utils |
237 | 237 | ${status}= Set Variable If 'below' in '${MODE}' active.enquiries ${status} |
238 | 238 | ${status}= Set Variable If 'selection' in '${MODE}' draft.pending ${status} |
239 | 239 | ${status}= Set Variable If '${status}'=='${EMPTY}' active ${status} |
240 | + ${status}= Set Variable If 'priceQuotation' in '${MODE}' draft.publishing ${status} | |
240 | 241 | Set To Dictionary ${tender['data']} status=${status} |
241 | 242 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender |
242 | 243 | ... ${tender.data.id} |
... | ... | @@ -272,6 +273,29 @@ Library openprocurement_client.utils |
272 | 273 | [return] ${tender.data.tenderID} |
273 | 274 | |
274 | 275 | |
276 | +Створити тендер без 2-ї фази commit-у | |
277 | + [Arguments] ${username} ${tender_data} ${plan_uaid} | |
278 | + ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml | |
279 | + ${ARTIFACT}= load_data_from ${file_path} | |
280 | + Log ${ARTIFACT.tender_owner_access_token} | |
281 | + Log ${ARTIFACT.tender_id} | |
282 | + ${tender}= Call Method ${USERS.users['${username}'].tender_create_client} create_tender | |
283 | + ... ${ARTIFACT.tender_id} | |
284 | + ... ${tender_data} | |
285 | + ... access_token=${ARTIFACT.tender_owner_access_token} | |
286 | + Log ${tender} | |
287 | + ${access_token}= Get Variable Value ${tender.access.token} | |
288 | + ${tender_uaid}= Get Variable Value ${tender.data.tenderID} | |
289 | + ${tender_id}= Get Variable Value ${tender.data.id} | |
290 | + :FOR ${user} IN @{USED_ROLES} | |
291 | + \ Set To Dictionary ${USERS.users['${${user}}'].id_map} ${tender_uaid} ${tender_id} | |
292 | + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/tenders/${tender.data.id}${\n} WARN | |
293 | + Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} | |
294 | + Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} | |
295 | + Log ${USERS.users['${username}'].tender_data} | |
296 | + [return] ${tender.data.tenderID} | |
297 | + | |
298 | + | |
275 | 299 | Створити об'єкт моніторингу |
276 | 300 | [Arguments] ${username} ${monitoring_data} |
277 | 301 | ${monitoring}= Call Method ${USERS.users['${username}'].dasu_client} create_monitoring ${monitoring_data} |
... | ... | @@ -1963,6 +1987,15 @@ Library openprocurement_client.utils |
1963 | 1987 | ... access_token=${tender.access.token} |
1964 | 1988 | Log ${reply} |
1965 | 1989 | |
1990 | + | |
1991 | +Отримати інформацію із рішення | |
1992 | + [Arguments] ${username} ${tender_uaid} ${field_name} ${award_index}=${None} | |
1993 | + openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | |
1994 | + ${award}= Get Variable Value ${USERS.users['${username}'].tender_data.data.awards[${award_index}]} | |
1995 | + ${field_value}= Get Variable Value ${award['status']} | |
1996 | + [Return] ${field_value} | |
1997 | + | |
1998 | + | |
1966 | 1999 | ############################################################################## |
1967 | 2000 | # Limited procurement |
1968 | 2001 | ############################################################################## |
... | ... | @@ -2015,7 +2048,7 @@ Library openprocurement_client.utils |
2015 | 2048 | ... ${cancellation_id} |
2016 | 2049 | ... ${document_id} |
2017 | 2050 | ... ${new_description} |
2018 | - ${cancellation}= run keyword if '${procurementMethodType}' in ['belowThreshold', 'reporting', 'closeFrameworkAgreementSelectionUA', 'negotiation', 'negotiation.quick'] | |
2051 | + ${cancellation}= run keyword if '${procurementMethodType}' in ['belowThreshold', 'reporting', 'closeFrameworkAgreementSelectionUA', 'negotiation', 'negotiation.quick', 'priceQuotation'] | |
2019 | 2052 | ... openprocurement_client.Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id} |
2020 | 2053 | ... ELSE openprocurement_client.Перевести скасування закупівлі в період очікування ${username} ${tender_uaid} ${cancellation_id} |
2021 | 2054 | Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_data=${cancellation} |
... | ... |
... | ... | @@ -22,6 +22,7 @@ mode_open = ["belowThreshold", "aboveThresholdUA", "aboveThresholdEU", |
22 | 22 | "aboveThresholdUA.defense", "competitiveDialogueUA", "competitiveDialogueEU", "esco", |
23 | 23 | "closeFrameworkAgreementUA"] |
24 | 24 | mode_limited = ["reporting", "negotiation.quick", "negotiation"] |
25 | +mode_selective = ["priceQuotation"] | |
25 | 26 | violationType = ["corruptionDescription", "corruptionProcurementMethodType", "corruptionChanges", |
26 | 27 | "corruptionPublicDisclosure", "corruptionBiddingDocuments", "documentsForm", |
27 | 28 | "corruptionAwarded", "corruptionCancelled", "corruptionContracting"] |
... | ... | @@ -367,12 +368,20 @@ def test_tender_data_planning(params): |
367 | 368 | data["tender"]["procurementMethod"] = "open" |
368 | 369 | if params['mode'] in mode_limited: |
369 | 370 | data["tender"]["procurementMethod"] = "limited" |
371 | + if params['mode'] in mode_selective: | |
372 | + data["tender"]["procurementMethod"] = "selective" | |
370 | 373 | if params.get('number_of_breakdown'): |
371 | 374 | value_data = breakdown_value_generation(params['number_of_breakdown'], data['budget']['amount']) |
372 | 375 | for value in value_data: |
373 | 376 | breakdown_element = test_breakdown_data() |
374 | 377 | breakdown_element['value']['amount'] = value |
375 | 378 | data['budget']['breakdown'].append(breakdown_element) |
379 | + if params['mode'] == "priceQuotation": | |
380 | + for buyer in data['buyers']: | |
381 | + del buyer['kind'] | |
382 | + del buyer['address'] | |
383 | + del data['procuringEntity']['kind'] | |
384 | + del data['procuringEntity']['address'] | |
376 | 385 | return munchify(data) |
377 | 386 | |
378 | 387 | |
... | ... | @@ -704,6 +713,36 @@ def test_bid_data_selection(data, index): |
704 | 713 | return bid |
705 | 714 | |
706 | 715 | |
716 | +def test_bid_data_pq(data, over_limit=False, missing_criteria=False, more_than_two_requirements=False, invalid_expected_value=False): | |
717 | + bid = test_bid_data() | |
718 | + bid.data.requirementResponses = [] | |
719 | + if 'criteria' in data: | |
720 | + for criteria in data['criteria']: | |
721 | + for requirements in criteria['requirementGroups']: | |
722 | + for requirement in requirements['requirements']: | |
723 | + if requirement.get('expectedValue'): | |
724 | + value = requirement.get('expectedValue') | |
725 | + if invalid_expected_value: | |
726 | + value = "invalid_value" | |
727 | + else: | |
728 | + value = fake.random_int(min=int(requirement.get('minValue')), max=int(data['value']['amount'])) | |
729 | + requirement = { | |
730 | + "requirement": {"id": requirement['id']}, | |
731 | + "value": value | |
732 | + } | |
733 | + bid.data.requirementResponses.append(requirement) | |
734 | + if not more_than_two_requirements: | |
735 | + break | |
736 | + bid.data['status'] = 'draft' | |
737 | + bid.data.update(test_bid_value(fake.random_int(min=1, max=int(data['value']['amount'])), | |
738 | + data['value']['valueAddedTaxIncluded'])) | |
739 | + if over_limit: | |
740 | + bid.data['value']['amount'] = int(data['value']['amount']) + fake.random_int(min=1, max=1000) | |
741 | + if missing_criteria: | |
742 | + del bid['data']['requirementResponses'][-1] | |
743 | + return bid | |
744 | + | |
745 | + | |
707 | 746 | def test_supplier_data(): |
708 | 747 | return munchify({ |
709 | 748 | "data": { |
... | ... | @@ -1033,6 +1072,33 @@ def test_tender_data_esco(params, submissionMethodDetails, plan_data): |
1033 | 1072 | return data |
1034 | 1073 | |
1035 | 1074 | |
1075 | +def test_tender_data_pq(params, submissionMethodDetails, plan_data): | |
1076 | + data = test_tender_data(params, plan_data, ('tender',), submissionMethodDetails) | |
1077 | + del data["minimalStep"] | |
1078 | + del data["title_en"] | |
1079 | + data['procurementMethodType'] = 'priceQuotation' | |
1080 | + data["procuringEntity"]["kind"] = random.choice(['authority', 'defense', 'general', 'other', 'social', 'special']) | |
1081 | + data['profile'] = fake.valid_profile() | |
1082 | + if params.get('wrong_profile'): | |
1083 | + data['profile'] = fake.invalid_profile() | |
1084 | + if params.get('wrong_tender_date'): | |
1085 | + start_date = data['tenderPeriod']['startDate'] | |
1086 | + from op_robot_tests.tests_files.service_keywords import add_minutes_to_date | |
1087 | + data['tenderPeriod']['endDate'] = add_minutes_to_date(start_date, 1) | |
1088 | + if params.get('empty_profile'): | |
1089 | + data['profile'] = "" | |
1090 | + if params.get('tender_wrong_status'): | |
1091 | + data['status'] = fake.wrong_status() | |
1092 | + if params.get('profiles_hidden_status'): | |
1093 | + data['profile'] = fake.profiles_hidden() | |
1094 | + if params.get('profiles_shortlistedfirms_empty'): | |
1095 | + data['profile'] = fake.shortlistedfirms_empty() | |
1096 | + if params.get('unknown_profile'): | |
1097 | + data['profile'] = fake.tender_unknown_profile() | |
1098 | + | |
1099 | + return munchify(data) | |
1100 | + | |
1101 | + | |
1036 | 1102 | def test_milestone_data(): |
1037 | 1103 | return munchify({ |
1038 | 1104 | "code": random.choice(["prepayment", "postpayment"]), |
... | ... |
... | ... | @@ -356,6 +356,20 @@ Get Broker Property By Username |
356 | 356 | [Return] ${bid} |
357 | 357 | |
358 | 358 | |
359 | +Підготувати дані для подання пропозиції priceQuotation | |
360 | + [Arguments] ${username} | |
361 | + ${BID_OVER_LIMIT}= Get Variable Value ${BID_OVER_LIMIT} ${False} | |
362 | + ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING}= Get Variable Value ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING} ${False} | |
363 | + ${BID_SAME_GROUPS_DIFFERENT_CRITERIA}= Get Variable Value ${BID_SAME_GROUPS_DIFFERENT_CRITERIA} ${False} | |
364 | + ${BID_INVALID_EXPECTED_VALUE}= Get Variable Value ${BID_INVALID_EXPECTED_VALUE} ${False} | |
365 | + ${bid}= test_bid_data_pq ${USERS.users['${username}'].tender_data.data} | |
366 | + ... ${BID_OVER_LIMIT} | |
367 | + ... ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING} | |
368 | + ... ${BID_SAME_GROUPS_DIFFERENT_CRITERIA} | |
369 | + ... ${BID_INVALID_EXPECTED_VALUE} | |
370 | + [Return] ${bid} | |
371 | + | |
372 | + | |
359 | 373 | Підготувати дані про постачальника |
360 | 374 | [Arguments] ${username} ${lotIndex}=${-1} |
361 | 375 | ${lotIndex}= Convert To Integer ${lotIndex} |
... | ... | @@ -1040,6 +1054,12 @@ Require Failure |
1040 | 1054 | Порівняти об'єкти ${left} ${right} |
1041 | 1055 | |
1042 | 1056 | |
1057 | +Звірити статус рішення | |
1058 | + [Arguments] ${username} ${tender_uaid} ${left} ${award_index}=${None} | |
1059 | + ${right}= Run as ${username} Отримати інформацію із рішення ${tender_uaid} status ${award_index} | |
1060 | + Порівняти об'єкти ${left} ${right} | |
1061 | + | |
1062 | + | |
1043 | 1063 | Звірити статус cancellations |
1044 | 1064 | [Arguments] ${username} ${tender_uaid} ${left} ${cancellation_index} |
1045 | 1065 | ${right}= Run as ${username} Отримати інформацію із cancellation ${tender_uaid} status ${cancellation_index} |
... | ... | @@ -1238,6 +1258,32 @@ Require Failure |
1238 | 1258 | ... active.qualification.stand-still |
1239 | 1259 | |
1240 | 1260 | |
1261 | +Дочекатись зміни статусу unsuccessful | |
1262 | + [Arguments] ${username} ${tender_uaid} | |
1263 | + Оновити LAST_MODIFICATION_DATE | |
1264 | + Дочекатись синхронізації з майданчиком ${username} | |
1265 | + Wait until keyword succeeds | |
1266 | + ... 40 min 15 sec | |
1267 | + ... 15 sec | |
1268 | + ... Звірити статус тендера | |
1269 | + ... ${username} | |
1270 | + ... ${tender_uaid} | |
1271 | + ... unsuccessful | |
1272 | + | |
1273 | + | |
1274 | +Дочекатись зміни статусу рішення | |
1275 | + [Arguments] ${username} ${status} ${award_index}=${None} | |
1276 | + Дочекатись синхронізації з майданчиком ${username} | |
1277 | + Wait until keyword succeeds | |
1278 | + ... 8 min 15 sec | |
1279 | + ... 15 sec | |
1280 | + ... Звірити статус рішення | |
1281 | + ... ${username} | |
1282 | + ... ${TENDER['TENDER_UAID']} | |
1283 | + ... ${status} | |
1284 | + ... ${award_index} | |
1285 | + | |
1286 | + | |
1241 | 1287 | Дочекатись дати закінчення періоду подання скарг |
1242 | 1288 | [Arguments] ${username} |
1243 | 1289 | Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate} |
... | ... | @@ -1343,4 +1389,17 @@ Require Failure |
1343 | 1389 | \ Set To Dictionary ${contract_data.data.unitPrices[${index}].value} amount=${value} |
1344 | 1390 | ${contract_data}= munch_dict arg=${contract_data} |
1345 | 1391 | Log ${contract_data} |
1346 | - [Return] ${contract_data} | |
\ No newline at end of file | ||
1392 | + [Return] ${contract_data} | |
1393 | + | |
1394 | + | |
1395 | +Дочекатися припинення процесу | |
1396 | + [Arguments] ${username} ${tender_uaid} | |
1397 | + Оновити LAST_MODIFICATION_DATE | |
1398 | + Дочекатись синхронізації з майданчиком ${username} | |
1399 | + Wait until keyword succeeds | |
1400 | + ... 10 min 15 sec | |
1401 | + ... 15 sec | |
1402 | + ... Звірити статус тендера | |
1403 | + ... ${username} | |
1404 | + ... ${tender_uaid} | |
1405 | + ... draft.unsuccessful | |
\ No newline at end of file | ||
... | ... |
... | ... | @@ -33,6 +33,12 @@ class OP_Provider(BaseProvider): |
33 | 33 | rationale_types = _fake_data.rationale_types |
34 | 34 | title_of_milestones = _fake_data.title_of_milestones |
35 | 35 | procuringTenderers = _fake_data.procuringTenderers |
36 | + valid_profile_ids = _fake_data.valid_profile_ids | |
37 | + invalid_profile_ids = _fake_data.invalid_profile_ids | |
38 | + tender_wrong_status = _fake_data.wrong_status_when_create_tender | |
39 | + profiles_hidden_status = _fake_data.profiles_hidden_status | |
40 | + profiles_shortlistedfirms_empty = _fake_data.profiles_shortlistedfirms_empty | |
41 | + unknown_profile = _fake_data.unknown_profiles | |
36 | 42 | |
37 | 43 | @classmethod |
38 | 44 | def randomize_nb_elements(self, number=10, le=60, ge=140): |
... | ... | @@ -223,4 +229,28 @@ class OP_Provider(BaseProvider): |
223 | 229 | |
224 | 230 | @classmethod |
225 | 231 | def milestone_title(self): |
226 | - return self.random_element(self.title_of_milestones) | |
\ No newline at end of file | ||
232 | + return self.random_element(self.title_of_milestones) | |
233 | + | |
234 | + @classmethod | |
235 | + def valid_profile(self): | |
236 | + return self.random_element(self.valid_profile_ids) | |
237 | + | |
238 | + @classmethod | |
239 | + def invalid_profile(self): | |
240 | + return self.random_element(self.invalid_profile_ids) | |
241 | + | |
242 | + @classmethod | |
243 | + def wrong_status(self): | |
244 | + return self.random_element(self.tender_wrong_status) | |
245 | + | |
246 | + @classmethod | |
247 | + def profiles_hidden(self): | |
248 | + return self.random_element(self.profiles_hidden_status) | |
249 | + | |
250 | + @classmethod | |
251 | + def shortlistedfirms_empty(self): | |
252 | + return self.random_element(self.profiles_shortlistedfirms_empty) | |
253 | + | |
254 | + @classmethod | |
255 | + def tender_unknown_profile(self): | |
256 | + return self.random_element(self.unknown_profile) | |
... | ... |
... | ... | @@ -8153,5 +8153,33 @@ |
8153 | 8153 | "dateOfInvoicing", |
8154 | 8154 | "endDateOfTheReportingPeriod", |
8155 | 8155 | "anotherEvent" |
8156 | + ], | |
8157 | + "valid_profile_ids": [ | |
8158 | + "999999-33140000-555666-42000111" | |
8159 | + ], | |
8160 | + "invalid_profile_ids": [ | |
8161 | + "333222-33140000-555666-42000111", | |
8162 | + "333222-33140000-999888-42000111", | |
8163 | + "999999-33140000-222111-42000111" | |
8164 | + ], | |
8165 | + "profiles_hidden_status": [ | |
8166 | + "333222-33140000-555666-42000111" | |
8167 | + ], | |
8168 | + "profiles_shortlistedfirms_empty": [ | |
8169 | + "333222-33140000-999888-42000111", | |
8170 | + "999999-33140000-222111-42000111" | |
8171 | + ], | |
8172 | + "unknown_profiles": [ | |
8173 | + "834922-33600000-555555-55555555" | |
8174 | + ], | |
8175 | + "wrong_status_when_create_tender": [ | |
8176 | + "draft.unsuccessful", | |
8177 | + "draft.publishing", | |
8178 | + "active.tendering", | |
8179 | + "active.qualification", | |
8180 | + "active.awarded", | |
8181 | + "cancelled", | |
8182 | + "unsuccessful", | |
8183 | + "complete" | |
8156 | 8184 | ] |
8157 | 8185 | } |
... | ... |
1 | +*** Settings *** | |
2 | +Resource base_keywords.robot | |
3 | +Suite Setup Test Suite Setup | |
4 | +Suite Teardown Test Suite Teardown | |
5 | + | |
6 | + | |
7 | +*** Variables *** | |
8 | +${MODE} priceQuotation | |
9 | +@{USED_ROLES} tender_owner provider provider1 provider2 viewer | |
10 | +@{USED_PROVIDERS} provider provider1 provider2 | |
11 | +${RESOURCE} tenders | |
12 | + | |
13 | +${NUMBER_OF_ITEMS} ${1} | |
14 | +${NUMBER_OF_LOTS} ${1} | |
15 | +${NUMBER_OF_MILESTONES} ${0} | |
16 | +${TENDER_MEAT} ${False} | |
17 | +${LOT_MEAT} ${False} | |
18 | +${ITEM_MEAT} ${False} | |
19 | +${MOZ_INTEGRATION} ${False} | |
20 | +${VAT_INCLUDED} ${True} | |
21 | +${ROAD_INDEX} ${False} | |
22 | +${GMDN_INDEX} ${False} | |
23 | +${PLAN_TENDER} ${True} | |
24 | + | |
25 | +*** Test Cases *** | |
26 | +Неможливість оголосити тендер з tenderPeriod:endDate < 2 робочих дні | |
27 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
28 | + ... tender_owner | |
29 | + ... ${USERS.users['${tender_owner}'].broker} | |
30 | + ... create_tender_wrong_date level1 | |
31 | + ... critical | |
32 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
33 | + Set Test Variable ${WRONG_TENDER_DATE} ${True} | |
34 | + ${value}= Run Keyword And Expect Error * Можливість оголосити тендер з недоліками в параметрах | |
35 | + ${value}= Convert To Lowercase ${value} | |
36 | + Should Contain ${value} the tenderperiod cannot end earlier than 2 business days after the start | |
37 | + | |
38 | + | |
39 | +Неможливість оголосити тендер з порожнім profile параметром | |
40 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
41 | + ... tender_owner | |
42 | + ... ${USERS.users['${tender_owner}'].broker} | |
43 | + ... create_tender_empty_profile level1 | |
44 | + ... critical | |
45 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
46 | + Set Test Variable ${EMPTY_PROFILE} ${True} | |
47 | + ${value}= Run Keyword And Expect Error * Можливість оголосити тендер з недоліками в параметрах | |
48 | + ${value}= Convert To Lowercase ${value} | |
49 | + Should Contain ${value} the profile value doesn't match id pattern | |
50 | + | |
51 | + | |
52 | +Неможливість явно оголосити тендер з доступних статусів за виключенням draft | |
53 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
54 | + ... tender_owner | |
55 | + ... ${USERS.users['${tender_owner}'].broker} | |
56 | + ... create_tender_without_2_phase_commit level1 | |
57 | + ... critical | |
58 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
59 | + Set Test Variable ${TENDER_WRONG_STATUS} ${True} | |
60 | + Можливість оголосити тендер без 2-ї фази commit-у | |
61 | + | |
62 | + | |
63 | +Відображення статуса тендера draft | |
64 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
65 | + ... viewer | |
66 | + ... ${USERS.users['${viewer}'].broker} | |
67 | + ... tender_view_status_draft | |
68 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
69 | + Звірити поле тендера із значенням ${tender_owner} ${TENDER['TENDER_UAID']} | |
70 | + ... draft | |
71 | + ... status | |
72 | + | |
73 | + | |
74 | +Неможливість змінити tenderPeriod:endDate < 2 робочих дні | |
75 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
76 | + ... tender_owner | |
77 | + ... ${USERS.users['${tender_owner}'].broker} | |
78 | + ... patch_tender_wrong_date level1 | |
79 | + ... critical | |
80 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
81 | + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.startDate} 1 | |
82 | + Перевірити неможливість зміни поля tenderPeriod.endDate тендера на значення ${endDate} для користувача ${tender_owner} | |
83 | + | |
84 | + | |
85 | +Неможливість змінити procuringEntity.kind на central | |
86 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
87 | + ... tender_owner | |
88 | + ... ${USERS.users['${tender_owner}'].broker} | |
89 | + ... patch_tender_wrong_procuringEntity_kind level1 | |
90 | + ... critical | |
91 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
92 | + Перевірити неможливість зміни поля procuringEntity.kind тендера на значення central для користувача ${tender_owner} | |
93 | + | |
94 | + | |
95 | +Неможливість змінити статус з draft на один із інших, крім draft.publishing | |
96 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера | |
97 | + ... tender_owner | |
98 | + ... ${USERS.users['${tender_owner}'].broker} | |
99 | + ... impossible_change_tender_status_form_draft_to_another_except_draft_publishing level1 | |
100 | + ... critical | |
101 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
102 | + @{statuses}= Create List | |
103 | + ... draft.unsuccessful | |
104 | + ... active.tendering | |
105 | + ... active.qualification | |
106 | + ... active.awarded | |
107 | + ... complete | |
108 | + ... cancelled | |
109 | + ... unsuccessful | |
110 | + :FOR ${status} IN @{statuses} | |
111 | + \ ${value}= Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} status ${status} | |
112 | + \ Convert To Lowercase ${value} | |
113 | + \ Should Contain ${value} can't switch tender from status (draft) to (${status}) | |
114 | + | |
115 | + | |
116 | +Можливість оголосити тендер з профайлом, статус якого hidden | |
117 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
118 | + ... tender_owner | |
119 | + ... ${USERS.users['${tender_owner}'].broker} | |
120 | + ... create_tender_hidden level1 | |
121 | + ... critical | |
122 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
123 | + Set Test Variable ${PROFILES_HIDDEN_STATUS} ${True} | |
124 | + Можливість оголосити тендер з недоліками в параметрах | |
125 | + | |
126 | + | |
127 | +Можливість оголосити тендер з пустим shortlistedfirms | |
128 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
129 | + ... tender_owner | |
130 | + ... ${USERS.users['${tender_owner}'].broker} | |
131 | + ... create_tender_shortlistedfirms_empty level1 | |
132 | + ... critical | |
133 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
134 | + Set Test Variable ${PROFILES_SHORTLISTEDFIRMS_EMPTY} ${True} | |
135 | + Можливість оголосити тендер з недоліками в параметрах | |
136 | + | |
137 | + | |
138 | +Можливість оголосити тендер з неіснуючим профайлом | |
139 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
140 | + ... tender_owner | |
141 | + ... ${USERS.users['${tender_owner}'].broker} | |
142 | + ... create_tender_unknown_profile level1 | |
143 | + ... critical | |
144 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
145 | + Set Test Variable ${UNKNOWN_PROFILE} ${True} | |
146 | + Можливість оголосити тендер з недоліками в параметрах | |
147 | + | |
148 | + | |
149 | +Можливість оголосити тендер | |
150 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
151 | + ... tender_owner | |
152 | + ... ${USERS.users['${tender_owner}'].broker} | |
153 | + ... create_tender level1 | |
154 | + ... critical | |
155 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
156 | + Можливість оголосити тендер | |
157 | + | |
158 | + | |
159 | +Можливість оголосити тендер з некоректним профайлом | |
160 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера | |
161 | + ... tender_owner | |
162 | + ... ${USERS.users['${tender_owner}'].broker} | |
163 | + ... create_tender_invalid_profile level1 | |
164 | + ... critical | |
165 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
166 | + Set Test Variable ${WROGN_PROFILE} ${True} | |
167 | + Можливість оголосити тендер з недоліками в параметрах | |
168 | + | |
169 | + | |
170 | +Неможливість змінити статус з draft.publishing на active.tendering | |
171 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Неможливість редагувати тендер | |
172 | + ... tender_owner | |
173 | + ... ${USERS.users['${tender_owner}'].broker} | |
174 | + ... impossible_change_tendering_status level1 | |
175 | + ... critical | |
176 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
177 | + ${value}= Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} status active.tendering | |
178 | + Convert To Lowercase ${value} | |
179 | + Should Contain ${value} can't switch tender from status (draft.publishing) to (active.tendering) | |
180 | + | |
181 | + | |
182 | +Можливість знайти тендер по ідентифікатору | |
183 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера | |
184 | + ... viewer tender_owner provider provider1 | |
185 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
186 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | |
187 | + ... find_tender level1 | |
188 | + ... critical | |
189 | + Можливість знайти тендер по ідентифікатору для усіх користувачів | |
190 | + | |
191 | + | |
192 | +Відображення заголовку тендера | |
193 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
194 | + ... viewer | |
195 | + ... ${USERS.users['${viewer}'].broker} | |
196 | + ... tender_view level1 | |
197 | + ... critical | |
198 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
199 | + Звірити відображення поля title тендера для користувача ${viewer} | |
200 | + | |
201 | + | |
202 | +Відображення заголовку тендера російською мовою | |
203 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
204 | + ... viewer | |
205 | + ... ${USERS.users['${viewer}'].broker} | |
206 | + ... tender_view level1 | |
207 | + ... non-critical | |
208 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
209 | + Звірити відображення поля title_ru тендера для користувача ${viewer} | |
210 | + | |
211 | + | |
212 | +Відсутнє відображення заголовку тендера англійською мовою якщо при створенні не вказувались дані | |
213 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
214 | + ... viewer | |
215 | + ... ${USERS.users['${viewer}'].broker} | |
216 | + ... tender_view level1 | |
217 | + ... non-critical | |
218 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
219 | + Run Keyword And Expect Error * Звірити відображення поля title_en тендера для користувача ${viewer} | |
220 | + | |
221 | + | |
222 | +Відображення опису тендера | |
223 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
224 | + ... viewer | |
225 | + ... ${USERS.users['${viewer}'].broker} | |
226 | + ... tender_view level2 | |
227 | + ... non-critical | |
228 | + Звірити відображення поля description тендера для користувача ${viewer} | |
229 | + | |
230 | + | |
231 | +Відображення бюджету тендера | |
232 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
233 | + ... viewer | |
234 | + ... ${USERS.users['${viewer}'].broker} | |
235 | + ... tender_view_value level1 | |
236 | + ... critical | |
237 | + Звірити відображення поля value.amount тендера для усіх користувачів | |
238 | + | |
239 | + | |
240 | +Відображення валюти тендера | |
241 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
242 | + ... viewer | |
243 | + ... ${USERS.users['${viewer}'].broker} | |
244 | + ... tender_view_value level2 | |
245 | + ... non-critical | |
246 | + Звірити відображення поля value.currency тендера для користувача ${viewer} | |
247 | + | |
248 | + | |
249 | +Відображення ПДВ в бюджеті тендера | |
250 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
251 | + ... viewer | |
252 | + ... ${USERS.users['${viewer}'].broker} | |
253 | + ... tender_view_value level2 | |
254 | + ... non-critical | |
255 | + Звірити відображення поля value.valueAddedTaxIncluded тендера для користувача ${viewer} | |
256 | + | |
257 | + | |
258 | +Відображення дати початку доставки номенклатур тендера | |
259 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера | |
260 | + ... viewer | |
261 | + ... ${USERS.users['${viewer}'].broker} | |
262 | + ... tender_view_deliveryDate level2 | |
263 | + ... non-critical | |
264 | + Звірити відображення дати deliveryDate.startDate усіх предметів для користувача ${viewer} | |
265 | + | |
266 | + | |
267 | +Відображення дати кінця доставки номенклатур тендера | |
268 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера | |
269 | + ... viewer | |
270 | + ... ${USERS.users['${viewer}'].broker} | |
271 | + ... tender_view_deliveryDate level2 | |
272 | + ... non-critical | |
273 | + Звірити відображення дати deliveryDate.endDate усіх предметів для користувача ${viewer} | |
274 | + | |
275 | + | |
276 | +Відображення кількості номенклатур тендера | |
277 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера | |
278 | + ... viewer | |
279 | + ... ${USERS.users['${viewer}'].broker} | |
280 | + ... tender_view_quantity level2 | |
281 | + ... non-critical | |
282 | + Звірити відображення поля quantity усіх предметів для користувача ${viewer} | |
283 | + | |
284 | + | |
285 | +Неможливість змінити дату закінчення періоду подання пропозиції на 1 день після публікації | |
286 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Неможливість редагувати тендер | |
287 | + ... tender_owner | |
288 | + ... ${USERS.users['${tender_owner}'].broker} | |
289 | + ... extend_tendering_period level3 | |
290 | + ... critical | |
291 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
292 | + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 1 | |
293 | + Перевірити неможливість зміни поля tenderPeriod.endDate тендера на значення ${endDate} для користувача ${tender_owner} | |
294 | + | |
295 | + | |
296 | +Відображення зміни закінчення періоду прийому пропозицій тендера | |
297 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера | |
298 | + ... viewer | |
299 | + ... ${USERS.users['${viewer}'].broker} | |
300 | + ... extend_tendering_period level2 | |
301 | + ... non-critical | |
302 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
303 | + Звірити відображення дати tenderPeriod.endDate тендера для усіх користувачів | |
304 | + | |
305 | + | |
306 | +Можливість пройти процедуру валідації | |
307 | + [Tags] ${USERS.users['${viewer}'].broker}: Валідація тендера | |
308 | + ... viewer tender_owner provider provider1 | |
309 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
310 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | |
311 | + ... successfully_tender_validation level1 | |
312 | + ... critical | |
313 | + Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']} | |
314 | + | |
315 | + | |
316 | +Неможливість змінити заголовок тендера під час прийому пропозицій | |
317 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера | |
318 | + ... tender_owner | |
319 | + ... ${USERS.users['${tender_owner}'].broker} | |
320 | + ... change_data_active_tendering | |
321 | + ... critical | |
322 | + ${new_title}= create_fake_title | |
323 | + Перевірити неможливість зміни поля title тендера на значення ${new_title} для користувача ${tender_owner} | |
324 | + Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data} title | |
325 | + | |
326 | + | |
327 | +Неможливість подати пропозицію з перевищеним лімітом | |
328 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
329 | + ... provider | |
330 | + ... ${USERS.users['${provider}'].broker} | |
331 | + ... impossible_make_bid_with_over_amount | |
332 | + ... non-critical | |
333 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | |
334 | + Set Test Variable ${BID_OVER_LIMIT} ${True} | |
335 | + Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
336 | + | |
337 | + | |
338 | +Неможливість подати пропозицію при відсутності однієї з характеристик | |
339 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
340 | + ... provider | |
341 | + ... ${USERS.users['${provider}'].broker} | |
342 | + ... impossible_make_bid | |
343 | + ... non-critical | |
344 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | |
345 | + Set Test Variable ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING} ${True} | |
346 | + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
347 | + ${value}= Convert To Lowercase ${value} | |
348 | + Should Contain ${value} missing references for criterias | |
349 | + | |
350 | + | |
351 | +Неможливість подати пропозицію, якщо більше однієї характеристики знаходяться в різних групах, але в одній критерії | |
352 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
353 | + ... provider | |
354 | + ... ${USERS.users['${provider}'].broker} | |
355 | + ... impossible_make_bid | |
356 | + ... non-critical | |
357 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | |
358 | + Set Test Variable ${BID_SAME_GROUPS_DIFFERENT_CRITERIA} ${True} | |
359 | + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
360 | + ${value}= Convert To Lowercase ${value} | |
361 | + Should Contain ${value} conflicting in criteria | |
362 | + | |
363 | + | |
364 | +Неможливість подати пропозицію, якщо характеристика не відповідає вимозі | |
365 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
366 | + ... provider | |
367 | + ... ${USERS.users['${provider}'].broker} | |
368 | + ... impossible_make_bid | |
369 | + ... non-critical | |
370 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | |
371 | + Set Test Variable ${BID_INVALID_EXPECTED_VALUE} ${True} | |
372 | + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
373 | + ${value}= Convert To Lowercase ${value} | |
374 | + Should Contain ${value} does not match expected value | |
375 | + | |
376 | + | |
377 | +Можливість подати пропозицію першим учасником | |
378 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
379 | + ... provider | |
380 | + ... ${USERS.users['${provider}'].broker} | |
381 | + ... make_bid_by_provider level1 | |
382 | + ... critical | |
383 | + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']} | |
384 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
385 | + Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
386 | + | |
387 | + | |
388 | +Можливість зменшити пропозицію на 5% першим учасником | |
389 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
390 | + ... provider | |
391 | + ... ${USERS.users['${provider}'].broker} | |
392 | + ... modify_bid_by_provider | |
393 | + ... critical | |
394 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
395 | + Можливість зменшити пропозицію до 95 відсотків користувачем ${provider} | |
396 | + | |
397 | + | |
398 | +Можливість завантажити документ в пропозицію першим учасником | |
399 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
400 | + ... provider | |
401 | + ... ${USERS.users['${provider}'].broker} | |
402 | + ... add_doc_to_bid_by_provider | |
403 | + ... critical | |
404 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
405 | + Можливість завантажити документ в пропозицію користувачем ${provider} | |
406 | + | |
407 | + | |
408 | +Можливість змінити документацію цінової пропозиції першим учасником | |
409 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
410 | + ... provider | |
411 | + ... ${USERS.users['${provider}'].broker} | |
412 | + ... add_doc_to_bid_by_provider | |
413 | + ... critical | |
414 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
415 | + Можливість змінити документацію цінової пропозиції користувачем ${provider} | |
416 | + | |
417 | + | |
418 | +Можливість подати пропозицію другим учасником | |
419 | + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції | |
420 | + ... provider1 | |
421 | + ... ${USERS.users['${provider1}'].broker} | |
422 | + ... make_bid_by_provider1 level1 | |
423 | + ... critical | |
424 | + [Setup] Дочекатись дати початку прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']} | |
425 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
426 | + Можливість подати цінову пропозицію priceQuotation користувачем ${provider1} | |
427 | + | |
428 | + | |
429 | +Можливість подати пропозицію третім учасником | |
430 | + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції | |
431 | + ... provider1 | |
432 | + ... ${USERS.users['${provider1}'].broker} | |
433 | + ... make_bid_by_provider2 level1 | |
434 | + ... critical | |
435 | + [Setup] Дочекатись дати початку прийому пропозицій ${provider2} ${TENDER['TENDER_UAID']} | |
436 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
437 | + Можливість подати цінову пропозицію priceQuotation користувачем ${provider2} | |
438 | + | |
439 | + | |
440 | +Неможливість видалити пропозицію першим учасником під час прийому пропозицій | |
441 | + [Tags] ${USERS.users['${provider1}'].broker}: Скасування пропозиції | |
442 | + ... provider | |
443 | + ... ${USERS.users['${provider1}'].broker} | |
444 | + ... delete_bid_while_tendering_period_by_provider | |
445 | + ... non-critical | |
446 | + ${value}= Run Keyword And Expect Error * Можливість скасувати цінову пропозицію користувачем ${provider} | |
447 | + ${value}= Convert To Lowercase ${value} | |
448 | + Should Contain ${value} can't delete bid in price quotation tender | |
449 | + | |
450 | + | |
451 | +Можливість дочекатись дати початку періоду кваліфікації | |
452 | + [Tags] ${USERS.users['${provider}'].broker}: Подання кваліфікації | |
453 | + ... provider | |
454 | + ... ${USERS.users['${provider}'].broker} | |
455 | + ... awardPeriod_startDate | |
456 | + ... critical | |
457 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
458 | + Дочекатись дати початку періоду кваліфікації ${provider} ${TENDER['TENDER_UAID']} | |
459 | + | |
460 | + | |
461 | +Відображення пропозиції з мінімальною ціною на розгляді | |
462 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
463 | + ... viewer | |
464 | + ... ${USERS.users['${viewer}'].broker} | |
465 | + ... award_view_min_amount | |
466 | + ... non-critical | |
467 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
468 | + ${min_bid_amount}= Отримати мінімальне значення amount з поданих пропозицій | |
469 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
470 | + Log ${min_bid_amount} | |
471 | + Log ${award} | |
472 | + Порівняти об'єкти ${min_bid_amount} ${award.value.amount} | |
473 | + | |
474 | + | |
475 | +Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження постачальника | |
476 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
477 | + ... tender_owner | |
478 | + ... ${USERS.users['${tender_owner}'].broker} | |
479 | + ... qualification_add_doc_to_first_award | |
480 | + ... critical | |
481 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | |
482 | + Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${file_path} ${TENDER['TENDER_UAID']} 0 | |
483 | + Remove File ${file_path} | |
484 | + | |
485 | + | |
486 | +Неможливість кваліфікуватися замовником | |
487 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
488 | + ... tender_owner | |
489 | + ... ${USERS.users['${tender_owner}'].broker} | |
490 | + ... impossible_approve_first_award_by_customer | |
491 | + ... critical | |
492 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
493 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
494 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | |
495 | + Run Keyword And Expect Error * Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${file_path} ${TENDER['TENDER_UAID']} 0 | |
496 | + Run Keyword And Expect Error * Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0 | |
497 | + Remove File ${file_path} | |
498 | + | |
499 | + | |
500 | +Неможливість скасувати своє рішення на етапі кваліфікації | |
501 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
502 | + ... provider | |
503 | + ... provider1 | |
504 | + ... provider2 | |
505 | + ... ${USERS.users['${tender_owner}'].broker} | |
506 | + ... impossible_cancel_1_award_qualification_by_provider | |
507 | + ... critical | |
508 | + ${user}= Пошук постачальника пропозиції з awards по індексу 0 | |
509 | + Run Keyword And Expect Error * Run As ${user} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 0 | |
510 | + | |
511 | + | |
512 | +Можливість дискваліфікуватися постачальником | |
513 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
514 | + ... provider | |
515 | + ... provider1 | |
516 | + ... provider2 | |
517 | + ... disqualification_first_award_by_provider | |
518 | + ... critical | |
519 | + ${user}= Пошук постачальника пропозиції з awards по індексу 0 | |
520 | + Run As ${user} Дискваліфікувати постачальника ${TENDER['TENDER_UAID']} 0 | |
521 | + | |
522 | + | |
523 | +Неможливість видалити пропозицію учасником після закінчення прийому пропозицій | |
524 | + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції | |
525 | + ... provider | |
526 | + ... ${USERS.users['${provider1}'].broker} | |
527 | + ... cancel_bid_after_tendering_period_by_provider | |
528 | + ... non-critical | |
529 | + ${value}= Run Keyword And Expect Error * Можливість скасувати цінову пропозицію користувачем ${provider} | |
530 | + ${value}= Convert To Lowercase ${value} | |
531 | + Should Contain ${value} can't delete bid in current (active.qualification) tender status | |
532 | + | |
533 | + | |
534 | +Можливість дискваліфікації другого постачальника, якщо 2 дні не було підтвердження | |
535 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
536 | + ... tender_owner | |
537 | + ... ${USERS.users['${tender_owner}'].broker} | |
538 | + ... qualification_reject_second_award_after_2_days | |
539 | + ... critical | |
540 | + Дочекатись зміни статусу рішення ${tender_owner} unsuccessful 1 | |
541 | + | |
542 | + | |
543 | +Можливість кваліфікувати постачальником першої пропозиції | |
544 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
545 | + ... provider | |
546 | + ... provider1 | |
547 | + ... provider2 | |
548 | + ... qualification_approve_first_award_by_provider | |
549 | + ... critical | |
550 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
551 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
552 | + ${user}= Пошук постачальника пропозиції з awards по індексу 0 | |
553 | + Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0 | |
554 | + | |
555 | + | |
556 | +Можливість кваліфікувати постачальником другої пропозиції | |
557 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
558 | + ... provider | |
559 | + ... provider1 | |
560 | + ... provider2 | |
561 | + ... qualification_approve_second_award_by_provider | |
562 | + ... critical | |
563 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
564 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
565 | + ${user}= Пошук постачальника пропозиції з awards по індексу 1 | |
566 | + Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1 | |
567 | + | |
568 | + | |
569 | +Можливість кваліфікувати третього постачальника | |
570 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
571 | + ... provider | |
572 | + ... provider1 | |
573 | + ... provider2 | |
574 | + ... qualification_approve_third_award_by_provider | |
575 | + ... critical | |
576 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
577 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
578 | + ${user}= Пошук постачальника пропозиції з awards по індексу 2 | |
579 | + Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 2 | |
580 | + | |
581 | + | |
582 | +Неможливість відмовитися постачальником від третього підтвердження | |
583 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
584 | + ... provider | |
585 | + ... provider1 | |
586 | + ... provider2 | |
587 | + ... ${USERS.users['${tender_owner}'].broker} | |
588 | + ... impossible_cancel_3_award_qualification_by_provider | |
589 | + ... critical | |
590 | + ${user}= Пошук постачальника пропозиції з awards по індексу 2 | |
591 | + Run Keyword And Expect Error * Run As ${user} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 2 | |
592 | + | |
593 | + | |
594 | +Можливість відмовитися замовником від третього підтвердження | |
595 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
596 | + ... tender_owner | |
597 | + ... ${USERS.users['${tender_owner}'].broker} | |
598 | + ... qualification_cancel_3_award_qualification_by_customer | |
599 | + ... critical | |
600 | + Run As ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 2 | |
601 | + | |
602 | + | |
603 | +Неможливість повторно кваліфікувати постачальником четверте підтвердження | |
604 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
605 | + ... provider | |
606 | + ... provider1 | |
607 | + ... provider2 | |
608 | + ... impossible_approve_fourth_award_by_provider | |
609 | + ... critical | |
610 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
611 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
612 | + ${user}= Пошук постачальника пропозиції з awards по індексу 3 | |
613 | + Run Keyword And Expect Error * Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 3 | |
614 | + | |
615 | + | |
616 | +Можливість підтвердженя постачальника замовником | |
617 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
618 | + ... tender_owner | |
619 | + ... ${USERS.users['${tender_owner}'].broker} | |
620 | + ... qualification_approve_4_award_by_customer | |
621 | + ... critical | |
622 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
623 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
624 | + ${file_path} ${file_name} ${file_content}= create_fake_doc | |
625 | + Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${file_path} ${TENDER['TENDER_UAID']} 3 | |
626 | + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 3 | |
627 | + Remove File ${file_path} | |
628 | + | |
629 | + | |
630 | +Можливість відмовитися замовником від четвертого підтвердження | |
631 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
632 | + ... tender_owner | |
633 | + ... ${USERS.users['${tender_owner}'].broker} | |
634 | + ... qualification_cancel_4_award_qualification_by_customer | |
635 | + ... critical | |
636 | + Run As ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 3 | |
637 | + | |
638 | + | |
639 | +Можливість відхилити постачальника замовником | |
640 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації | |
641 | + ... tender_owner | |
642 | + ... ${USERS.users['${tender_owner}'].broker} | |
643 | + ... qualification_reject_fifth_award | |
644 | + ... critical | |
645 | + Run As ${tender_owner} Дискваліфікувати постачальника ${TENDER['TENDER_UAID']} 4 | |
646 | + | |
647 | + | |
648 | +Відображення статусу завершення тендеру | |
649 | + [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера | |
650 | + ... viewer tender_owner provider provider1 | |
651 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
652 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | |
653 | + ... unsuccefully_tender level1 | |
654 | + ... critical | |
655 | + Дочекатись зміни статусу unsuccessful ${viewer} ${TENDER['TENDER_UAID']} | |
656 | + | |
657 | + | |
658 | +Відображення статусу завершення, якщо не було подано коректного профайлу | |
659 | + [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера | |
660 | + ... viewer tender_owner provider provider1 | |
661 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
662 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | |
663 | + ... unsuccessfully_tender_verification_wrong_profile level1 | |
664 | + ... critical | |
665 | + Дочекатися припинення процесу ${viewer} ${TENDER['TENDER_UAID']} | |
666 | + | |
667 | + | |
668 | +Відображення причини відхилення тендера, якщо профайл із hidden статусом | |
669 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
670 | + ... viewer | |
671 | + ... ${USERS.users['${viewer}'].broker} | |
672 | + ... tender_unsuccessfully_reason_profile_hidden | |
673 | + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | |
674 | + ... Обраний профіль неактивний в системі Prozorro.Market | |
675 | + ... unsuccessfulReason | |
676 | + | |
677 | + | |
678 | +Відображення причини відхилення тендера, якщо shortlistedfirms пустий | |
679 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
680 | + ... viewer | |
681 | + ... ${USERS.users['${viewer}'].broker} | |
682 | + ... tender_unsuccessfully_reason_shortlistedfirms_empty | |
683 | + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | |
684 | + ... В обраному профілі немає активних постачальників | |
685 | + ... unsuccessfulReason | |
686 | + | |
687 | + | |
688 | +Відображення причини відхилення тендера, якщо профайл неіснуючий | |
689 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
690 | + ... viewer | |
691 | + ... ${USERS.users['${viewer}'].broker} | |
692 | + ... tender_unsuccessfully_reason_unknown_profile | |
693 | + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | |
694 | + ... Обраний профіль не існує в системі Prozorro.Market | |
695 | + ... unsuccessfulReason | |
696 | + | |
697 | + | |
698 | + | |
699 | +Неможливість подати пропозицію в статусі draft | |
700 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
701 | + ... provider | |
702 | + ... ${USERS.users['${provider}'].broker} | |
703 | + ... impossible_make_bid_when_draft | |
704 | + ... non-critical | |
705 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | |
706 | + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
707 | + ${value}= Convert To Lowercase ${value} | |
708 | + Should Contain ${value} can't add bid in current (draft) tender status | |
709 | + | |
710 | + | |
711 | +Неможливість подати пропозицію в статусі draft.unsuccessful | |
712 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | |
713 | + ... provider | |
714 | + ... ${USERS.users['${provider}'].broker} | |
715 | + ... impossible_make_bid_when_draft_unsuccessful | |
716 | + ... non-critical | |
717 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | |
718 | + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider} | |
719 | + ${value}= Convert To Lowercase ${value} | |
720 | + Should Contain ${value} can't add bid in current (draft.unsuccessful) tender status | |
721 | + | |
722 | + | |
723 | +Відображення статусу завершення, якщо не було подано жодних пропозицій | |
724 | + [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера | |
725 | + ... viewer tender_owner provider provider1 | |
726 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
727 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | |
728 | + ... unsuccefully_tender_without_bids level1 | |
729 | + ... critical | |
730 | + Дочекатись зміни статусу unsuccessful ${viewer} ${TENDER['TENDER_UAID']} | |
731 | + | |
732 | + | |
733 | +Відображення вартості угоди без урахування ПДВ | |
734 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
735 | + ... viewer | |
736 | + ... ${USERS.users['${viewer}'].broker} | |
737 | + ... contract_view | |
738 | + ... non-critical | |
739 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
740 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
741 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
742 | + Log ${award} | |
743 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
744 | + Log ${contract} | |
745 | + Log ${award.value.amount} | |
746 | + Звірити відображення поля contracts[${contract_index}].value.amountNet тендера із ${award.value.amount} для користувача ${viewer} | |
747 | + | |
748 | + | |
749 | +Відображення вартості угоди | |
750 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
751 | + ... viewer | |
752 | + ... ${USERS.users['${viewer}'].broker} | |
753 | + ... contract_view | |
754 | + ... non-critical | |
755 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
756 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
757 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
758 | + Log ${award} | |
759 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
760 | + Log ${contract} | |
761 | + Log ${award.value.amount} | |
762 | + Звірити відображення поля contracts[${contract_index}].value.amount тендера із ${award.value.amount} для користувача ${viewer} | |
763 | + | |
764 | + | |
765 | +Неможливість зменшити ціну договору без ПДВ на суму більшу за 20% від ціни договору з ПДВ (закупівля з ПДВ) | |
766 | +# contract:value:amountNet can be <= contract:value:amount but no more than on contract:value:amount/1.2 if valueAddedTaxIncluded=ture | |
767 | +# lots:value:valueAddedTaxIncluded:true - contract:value:valueAddedTaxIncluded:true | |
768 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
769 | + ... tender_owner | |
770 | + ... ${USERS.users['${tender_owner}'].broker} | |
771 | + ... modify_contract_invalid_amountNet_tender_vat_true | |
772 | + ... critical | |
773 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
774 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
775 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
776 | + ${invalid_amountNet}= Evaluate ${award.value.amount} / 2 | |
777 | + ${value}= Require Failure ${tender_owner} Редагувати угоду | |
778 | + ... ${TENDER['TENDER_UAID']} | |
779 | + ... ${contract_index} | |
780 | + ... value.amountNet | |
781 | + ... ${invalid_amountNet} | |
782 | + Should Contain ${value} Amount should be greater than amountNet and differ by no more than 20.0% | |
783 | + | |
784 | + | |
785 | +Можливість редагувати вартість угоди без урахування ПДВ | |
786 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
787 | + ... tender_owner | |
788 | + ... ${USERS.users['${tender_owner}'].broker} | |
789 | + ... modify_contract_amount_net | |
790 | + ... critical | |
791 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
792 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
793 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
794 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
795 | + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
796 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
797 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net} | |
798 | + Run As ${tender_owner} Редагувати угоду | |
799 | + ... ${TENDER['TENDER_UAID']} | |
800 | + ... ${contract_index} | |
801 | + ... value.amountNet | |
802 | + ... ${amount_net} | |
803 | + | |
804 | + | |
805 | +Відображення відредагованої вартості угоди без урахування ПДВ | |
806 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
807 | + ... viewer | |
808 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
809 | + ... contract_view_new_amountNet | |
810 | + ... non-critical | |
811 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
812 | + ${amount_net}= Get Variable Value ${USERS.users['${tender_owner}'].new_amount_net} | |
813 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
814 | + ${amount_net_field}= Set Variable contracts[${contract_index}].value.amountNet | |
815 | + Звірити відображення поля ${amount_net_field} тендера із ${amount_net} для користувача ${viewer} | |
816 | + | |
817 | + | |
818 | +Можливість редагувати вартість угоди | |
819 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
820 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
821 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
822 | + ... tender_owner | |
823 | + ... ${tender_owner_data.broker} | |
824 | + ... modify_contract_value | |
825 | + ... critical | |
826 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
827 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
828 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
829 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
830 | + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
831 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
832 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
833 | + Run As ${tender_owner} Редагувати угоду | |
834 | + ... ${TENDER['TENDER_UAID']} | |
835 | + ... ${contract_index} | |
836 | + ... value.amount | |
837 | + ... ${amount} | |
838 | + | |
839 | + | |
840 | +Відображення відредагованої вартості угоди | |
841 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
842 | + ... viewer | |
843 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
844 | + ... contract_view_new_amount | |
845 | + ... non-critical | |
846 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
847 | + ${amount}= Get Variable Value ${USERS.users['${tender_owner}'].new_amount} | |
848 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
849 | + ${amount_field}= Set Variable contracts[${contract_index}].value.amount | |
850 | + Звірити відображення поля ${amount_field} тендера із ${amount} для користувача ${viewer} | |
851 | + | |
852 | + | |
853 | +Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону | |
854 | +# contract:value:amount should be <= award.value.amount if valueAddedTaxIncluded=ture | |
855 | +# lots:value:valueAddedTaxIncluded:true - contract:value:valueAddedTaxIncluded:true | |
856 | +# lots:value:valueAddedTaxIncluded:true - contract:value:valueAddedTaxIncluded:false | |
857 | +# lots:value:valueAddedTaxIncluded:false - contract:value:valueAddedTaxIncluded:false | |
858 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
859 | + ... tender_owner | |
860 | + ... ${USERS.users['${tender_owner}'].broker} | |
861 | + ... modify_contract_invalid_amount | |
862 | + ... critical | |
863 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
864 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
865 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
866 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
867 | + ${amount}= Evaluate ${award.value.amount} * 2 | |
868 | + ${value}= Require Failure ${tender_owner} Редагувати угоду | |
869 | + ... ${TENDER['TENDER_UAID']} | |
870 | + ... ${contract_index} | |
871 | + ... value.amount | |
872 | + ... ${amount} | |
873 | + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${True}' and '${MODE}' == 'open_esco' | |
874 | + ... Should Contain ${value} Can't update amount for contract value | |
875 | + ... ELSE | |
876 | + ... Should Contain ${value} Amount should be less or equal to awarded amount | |
877 | + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${False}' | |
878 | + ... Should Contain ${value} Amount should be less or equal to awarded amount | |
879 | + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${False}' and '${contract.value.valueAddedTaxIncluded}' == '${False}' | |
880 | + ... Should Contain ${value} Amount should be less or equal to awarded amount | |
881 | + | |
882 | + | |
883 | +Можливість встановити дату підписання угоди | |
884 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
885 | + ... tender_owner | |
886 | + ... ${USERS.users['${tender_owner}'].broker} | |
887 | + ... modify_contract | |
888 | + ... critical | |
889 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
890 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
891 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
892 | + ${dateSigned}= create_fake_date | |
893 | + Set to dictionary ${USERS.users['${tender_owner}']} dateSigned=${dateSigned} | |
894 | + Run As ${tender_owner} Встановити дату підписання угоди ${TENDER['TENDER_UAID']} ${contract_index} ${dateSigned} | |
895 | + | |
896 | + | |
897 | +Можливість вказати період дії угоди | |
898 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
899 | + ... tender_owner | |
900 | + ... ${USERS.users['${tender_owner}'].broker} | |
901 | + ... modify_contract | |
902 | + ... critical | |
903 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
904 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
905 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
906 | + ${startDate}= create_fake_date | |
907 | + ${endDate}= add_minutes_to_date ${startDate} 10 | |
908 | + Set to dictionary ${USERS.users['${tender_owner}']} contract_startDate=${startDate} contract_endDate=${endDate} | |
909 | + Run As ${tender_owner} Вказати період дії угоди ${TENDER['TENDER_UAID']} ${contract_index} ${startDate} ${endDate} | |
910 | + | |
911 | + | |
912 | +Можливість укласти угоду для закупівлі | |
913 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди | |
914 | + ... tender_owner | |
915 | + ... ${USERS.users['${tender_owner}'].broker} | |
916 | + ... contract_sign level1 | |
917 | + ... critical | |
918 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
919 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
920 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
921 | + Run As ${tender_owner} Підтвердити підписання контракту ${TENDER['TENDER_UAID']} ${contract_index} | |
922 | + | |
923 | + | |
924 | +Відображення статусу підписаної угоди з постачальником закупівлі | |
925 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
926 | + ... viewer | |
927 | + ... ${USERS.users['${viewer}'].broker} | |
928 | + ... contract_sign | |
929 | + ... critical | |
930 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
931 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
932 | + Run As ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
933 | + Звірити відображення поля contracts[${contract_index}].status тендера із active для користувача ${viewer} | |
934 | + | |
935 | + | |
936 | +Можливість знайти закупівлю по ідентифікатору | |
937 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера | |
938 | + ... ${USERS.users['${tender_owner}'].broker}: Пошук тендера | |
939 | + ... viewer tender_owner | |
940 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
941 | + ... find_tender_contract | |
942 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
943 | + ${CONTRACT_UAID}= Get variable value ${USERS.users['${tender_owner}'].tender_data.data.contracts[${contract_index}].contractID} | |
944 | + Set Suite Variable ${CONTRACT_UAID} | |
945 | + | |
946 | + | |
947 | +Можливість знайти договір по ідентифікатору | |
948 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук договору | |
949 | + ... ${USERS.users['${tender_owner}'].broker}: Пошук договору | |
950 | + ... viewer tender_owner | |
951 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | |
952 | + ... find_contract | |
953 | + :FOR ${username} IN @{used_roles} | |
954 | + \ Run As ${${username}} Пошук договору по ідентифікатору ${CONTRACT_UAID} | |
955 | + | |
956 | + | |
957 | +Можливість отримати доступ до договору | |
958 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Отримання прав доступу до договору | |
959 | + ... tender_owner | |
960 | + ... ${USERS.users['${tender_owner}'].broker} | |
961 | + ... access_contract | |
962 | + Run As ${tender_owner} Отримати доступ до договору ${CONTRACT_UAID} | |
963 | + | |
964 | + | |
965 | +Можливість внести зміну до умов договору | |
966 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Внесення зміни | |
967 | + ... tender_owner | |
968 | + ... ${USERS.users['${tender_owner}'].broker} | |
969 | + ... submit_change | |
970 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
971 | + ${change_data}= Підготувати дані про зміну до договору ${tender_owner} | |
972 | + Run As ${tender_owner} Внести зміну в договір ${CONTRACT_UAID} ${change_data} | |
973 | + | |
974 | + | |
975 | +Відображення опису причини зміни договору | |
976 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | |
977 | + ... tender_owner | |
978 | + ... ${USERS.users['${viewer}'].broker} | |
979 | + ... view_change | |
980 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
981 | + Звірити відображення поля rationale зміни до договору для користувача ${viewer} | |
982 | + | |
983 | + | |
984 | +Відображення причин зміни договору | |
985 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | |
986 | + ... tender_owner | |
987 | + ... ${USERS.users['${viewer}'].broker} | |
988 | + ... view_change | |
989 | + Звірити відображення причин зміни договору | |
990 | + | |
991 | + | |
992 | +Відображення непідтвердженого статусу зміни договору | |
993 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | |
994 | + ... tender_owner | |
995 | + ... ${USERS.users['${viewer}'].broker} | |
996 | + ... view_change | |
997 | + Звірити поле зміни до договору із значенням | |
998 | + ... ${viewer} | |
999 | + ... ${CONTRACT_UAID} | |
1000 | + ... pending | |
1001 | + ... status | |
1002 | + | |
1003 | + | |
1004 | +Можливість додати документацію до зміни договору | |
1005 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | |
1006 | + ... tender_owner | |
1007 | + ... ${USERS.users['${tender_owner}'].broker} | |
1008 | + ... upload_change_document | |
1009 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1010 | + Додати документацію до зміни договору | |
1011 | + | |
1012 | + | |
1013 | +Відображення заголовку документації до зміни договору | |
1014 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | |
1015 | + ... viewer | |
1016 | + ... ${USERS.users['${viewer}'].broker} | |
1017 | + ... upload_change_document | |
1018 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
1019 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з ${USERS.users['${tender_owner}']['change_doc']['name']} для користувача ${viewer} | |
1020 | + | |
1021 | + | |
1022 | +Відображення вмісту документації до зміни договору | |
1023 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | |
1024 | + ... viewer | |
1025 | + ... ${USERS.users['${viewer}'].broker} | |
1026 | + ... upload_change_document | |
1027 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з ${USERS.users['${tender_owner}']['change_doc']['content']} для користувача ${viewer} | |
1028 | + | |
1029 | + | |
1030 | +Можливість редагувати опис причини зміни договору | |
1031 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування зміни | |
1032 | + ... tender_owner | |
1033 | + ... ${USERS.users['${tender_owner}'].broker} | |
1034 | + ... modify_change | |
1035 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1036 | + ${new_rationale}= create_fake_sentence | |
1037 | + Set to dictionary ${USERS.users['${tender_owner}']} new_rationale=${new_rationale} | |
1038 | + Run As ${tender_owner} Редагувати зміну ${CONTRACT_UAID} rationale ${new_rationale} | |
1039 | + | |
1040 | + | |
1041 | +Можливість редагувати вартість договору без ПДВ | |
1042 | + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору | |
1043 | + ... tender_owner | |
1044 | + ... ${USERS.users['${tender_owner}']} | |
1045 | + ... change_contract_amountNet | |
1046 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1047 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
1048 | + ${amount_net}= create_fake_amount_net | |
1049 | + ... ${USERS.users['${tender_owner}'].contract_data.data.value.amount} | |
1050 | + ... ${award.value.valueAddedTaxIncluded} | |
1051 | + ... ${USERS.users['${tender_owner}'].contract_data.data.value.valueAddedTaxIncluded} | |
1052 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net} | |
1053 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amountNet ${amount_net} | |
1054 | + | |
1055 | + | |
1056 | +Можливість редагувати вартість договору | |
1057 | + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору | |
1058 | + ... tender_owner | |
1059 | + ... ${USERS.users['${tender_owner}']} | |
1060 | + ... change_contract_amount | |
1061 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1062 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
1063 | + ${amount}= create_fake_amount | |
1064 | + ... ${USERS.users['${tender_owner}'].contract_data.data.value.amount} | |
1065 | + ... ${award.value.valueAddedTaxIncluded} | |
1066 | + ... ${USERS.users['${tender_owner}'].contract_data.data.value.valueAddedTaxIncluded} | |
1067 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
1068 | + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amount ${amount} | |
1069 | + | |
1070 | + | |
1071 | +Можливість застосувати зміну договору | |
1072 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору | |
1073 | + ... tender_owner | |
1074 | + ... ${USERS.users['${tender_owner}'].broker} | |
1075 | + ... apply_change | |
1076 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1077 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
1078 | + ${dateSigned}= create_fake_date | |
1079 | + Run As ${tender_owner} Застосувати зміну ${CONTRACT_UAID} ${dateSigned} | |
1080 | + Set to dictionary ${USERS.users['${tender_owner}'].change_data.data} status=active | |
1081 | + | |
1082 | + | |
1083 | +Відображення підтвердженого статусу зміни договору | |
1084 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору | |
1085 | + ... tender_owner | |
1086 | + ... ${USERS.users['${viewer}'].broker} | |
1087 | + ... apply_change | |
1088 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
1089 | + Delete From Dictionary ${USERS.users['${viewer}'].contract_data.data.changes[0]} status | |
1090 | + Звірити поле зміни до договору із значенням | |
1091 | + ... ${viewer} | |
1092 | + ... ${CONTRACT_UAID} | |
1093 | + ... active | |
1094 | + ... status | |
1095 | + | |
1096 | + | |
1097 | +Можливість завантажити документацію до договору | |
1098 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації до договору | |
1099 | + ... tender_owner | |
1100 | + ... ${USERS.users['${tender_owner}'].broker} | |
1101 | + ... add_contract_doc | |
1102 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1103 | + Додати документацію до договору | |
1104 | + | |
1105 | + | |
1106 | +Відображення заголовку документації до договору | |
1107 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | |
1108 | + ... viewer | |
1109 | + ... ${USERS.users['${viewer}'].broker} | |
1110 | + ... add_contract_doc | |
1111 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
1112 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з ${USERS.users['${tender_owner}']['contract_doc']['name']} для користувача ${viewer} | |
1113 | + | |
1114 | + | |
1115 | +Відображення вмісту документації до договору | |
1116 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | |
1117 | + ... viewer | |
1118 | + ... ${USERS.users['${viewer}'].broker} | |
1119 | + ... add_contract_doc | |
1120 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з ${USERS.users['${tender_owner}']['contract_doc']['content']} для користувача ${viewer} | |
1121 | + | |
1122 | + | |
1123 | +Відображення належності документа до договору | |
1124 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації | |
1125 | + ... viewer | |
1126 | + ... ${USERS.users['${viewer}'].broker} | |
1127 | + ... add_contract_doc | |
1128 | + Звірити відображення поля documentOf документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з contract для користувача ${viewer} | |
1129 | + | |
1130 | + | |
1131 | +Відображення статусу успішного завершення тендера | |
1132 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди | |
1133 | + ... viewer | |
1134 | + ... ${USERS.users['${viewer}'].broker} | |
1135 | + ... agreement_registration | |
1136 | + ... critical | |
1137 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
1138 | + Звірити відображення поля status тендера із complete для користувача ${viewer} | |
1139 | + | |
1140 | + | |
1141 | +Можливість скасувати тендер | |
1142 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера | |
1143 | + ... tender_owner | |
1144 | + ... ${USERS.users['${tender_owner}'].broker} | |
1145 | + ... tender_cancellation | |
1146 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
1147 | + Можливість скасувати тендер | |
1148 | + | |
1149 | + | |
1150 | +Відображення активного статусу скасування тендера | |
1151 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
1152 | + ... viewer | |
1153 | + ... ${USERS.users['${viewer}'].broker} | |
1154 | + ... tender_cancellation | |
1155 | + [Setup] Дочекатись синхронізації з майданчиком ${viewer} | |
1156 | + ${cancellation_index}= Отримати останній індекс cancellations ${tender_owner} ${viewer} | |
1157 | + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | |
1158 | + ... active | |
1159 | + ... cancellations[${cancellation_index}].status | |
1160 | + | |
1161 | + | |
1162 | +Відображення причини скасування тендера | |
1163 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
1164 | + ... viewer | |
1165 | + ... ${USERS.users['${viewer}'].broker} | |
1166 | + ... tender_cancellation | |
1167 | + ${cancellation_index}= Отримати останній індекс cancellations ${tender_owner} ${viewer} | |
1168 | + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | |
1169 | + ... ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_reason']} | |
1170 | + ... cancellations[${cancellation_index}].reason | |
1171 | + | |
1172 | + | |
1173 | +Відображення опису документа до скасування тендера | |
1174 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера | |
1175 | + ... viewer | |
1176 | + ... ${USERS.users['${viewer}'].broker} | |
1177 | + ... tender_cancellation | |
1178 | + Звірити відображення поля description документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['description']} для користувача ${viewer} | |
1179 | + | |
1180 | + | |
1181 | +*** Keywords *** | |
1182 | +Пошук постачальника пропозиції з awards по індексу | |
1183 | + [Arguments] ${index} | |
1184 | + :FOR ${user_role} IN @{USED_PROVIDERS} | |
1185 | + \ ${user_name}= Get Variable Value ${BROKERS['${BROKER}'].roles['${user_role}']} | |
1186 | + \ ${bid_id}= Отримати дані із тендера ${user_name} ${TENDER['TENDER_UAID']} awards[${index}].bid_id | |
1187 | + \ ${bid_id_by_user}= Get Variable Value ${USERS.users['${user_name}'].bidresponses.bid.data.id} | |
1188 | + \ Exit For Loop If '${bid_id}' == '${bid_id_by_user}' | |
1189 | + [Return] ${user_name} | |
1190 | + | |
1191 | + | |
1192 | +Можливість скасувати тендер | |
1193 | + ${cancellation_data}= Підготувати дані про скасування ${USERS.users['${tender_owner}'].initial_data.data.procurementMethodType} | |
1194 | + Run As ${tender_owner} | |
1195 | + ... Скасувати закупівлю | |
1196 | + ... ${TENDER['TENDER_UAID']} | |
1197 | + ... ${cancellation_data['cancellation_reason']} | |
1198 | + ... ${cancellation_data['cancellation_reasonType']} | |
1199 | + ... ${cancellation_data['document']['doc_path']} | |
1200 | + ... ${cancellation_data['description']} | |
1201 | + Set To Dictionary ${USERS.users['${tender_owner}']} tender_cancellation_data=${cancellation_data} | |
1202 | + | |
1203 | + | |
1204 | +Звірити відображення поля ${field} документа ${doc_id} до скасування ${cancel_id} із ${left} для користувача ${username} | |
1205 | + ${right}= Run As ${username} Отримати інформацію із документа до скасування ${TENDER['TENDER_UAID']} ${cancel_id} ${doc_id} ${field} | |
1206 | + Порівняти об'єкти ${left} ${right} | |
1207 | + | |
1208 | + | |
1209 | +Отримати мінімальне значення amount з поданих пропозицій | |
1210 | + ${bids}= Отримати дані із тендера ${provider} ${TENDER['TENDER_UAID']} bids | |
1211 | + ${values}= Create List | |
1212 | + :FOR ${value} IN @{bids} | |
1213 | + \ ${item}= Get Variable Value ${value['value']['amount']} | |
1214 | + \ Append To List ${values} ${item} | |
1215 | + ${min_amount}= get_lowest_value_from_list ${values} | |
1216 | + [Return] ${min_amount} | |
... | ... |
... | ... | @@ -35,6 +35,7 @@ from .initial_data import ( |
35 | 35 | test_bid_value, |
36 | 36 | test_bid_value_esco, |
37 | 37 | test_bid_data_selection, |
38 | + test_bid_data_pq, | |
38 | 39 | test_change_data, |
39 | 40 | test_claim_answer_data, |
40 | 41 | test_claim_data, |
... | ... | @@ -58,6 +59,7 @@ from .initial_data import ( |
58 | 59 | test_tender_data_planning, |
59 | 60 | test_tender_data_openua_defense, |
60 | 61 | test_tender_data_framework_agreement, |
62 | + test_tender_data_pq, | |
61 | 63 | test_tender_data_selection, |
62 | 64 | test_bid_competitive_data, |
63 | 65 | test_monitoring_data, |
... | ... | @@ -379,6 +381,9 @@ def prepare_test_tender_data(procedure_intervals, |
379 | 381 | elif mode == 'open_esco': |
380 | 382 | return munchify({'data': test_tender_data_esco( |
381 | 383 | tender_parameters, submissionMethodDetails, plan_data)}) |
384 | + elif mode == 'priceQuotation': | |
385 | + return munchify({'data': test_tender_data_pq(tender_parameters, submissionMethodDetails, plan_data)}) | |
386 | + | |
382 | 387 | # The previous line needs an explicit keyword argument because, |
383 | 388 | # unlike previous functions, this one has three arguments. |
384 | 389 | raise ValueError("Invalid mode for prepare_test_tender_data") |
... | ... | @@ -774,3 +779,7 @@ def edit_tender_data_for_plan_tender(data, mode, data_version): |
774 | 779 | if data_version is 4: |
775 | 780 | dict_data['data']['procurementMethodType'] = plan_tedner_test_data[data_version] |
776 | 781 | return munchify(dict_data) |
782 | + | |
783 | + | |
784 | +def get_lowest_value_from_list(list_value): | |
785 | + return min(list_value) | |
... | ... |
robot_tests_arguments/priceQuotation.txt
0 → 100644
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender | |
11 | +-i find_tender | |
12 | +-i extend_tendering_period | |
13 | +-i tender_view | |
14 | +-i tender_view_value | |
15 | +-i tender_view_deliveryDate | |
16 | +-i tender_view_quantity | |
17 | + | |
18 | +-i successfully_tender_validation | |
19 | + | |
20 | +-i impossible_make_bid_with_over_amount | |
21 | +-i make_bid_by_provider | |
22 | +-i add_doc_to_bid_by_provider | |
23 | +-i add_doc_to_bid_by_provider | |
24 | +-i make_bid_by_provider1 | |
25 | +-i make_bid_by_provider2 | |
26 | + | |
27 | +-i awardPeriod_startDate | |
28 | +-i award_view_min_amount | |
29 | +-i disqualification_first_award_by_provider | |
30 | +-i qualification_approve_second_award_by_provider | |
31 | + | |
32 | +-i contract_view | |
33 | +-i modify_contract_invalid_amountNet_tender_vat_true | |
34 | +-i modify_contract_amount_net | |
35 | +-i contract_view_new_amountNet | |
36 | +-i modify_contract_value | |
37 | +-i contract_view_new_amount | |
38 | +-i modify_contract_invalid_amount | |
39 | +-i modify_contract | |
40 | +-i contract_sign | |
41 | +-i find_tender_contract | |
42 | +-i find_contract | |
43 | +-i access_contract | |
44 | +-i submit_change | |
45 | +-i view_change | |
46 | +-i upload_change_document | |
47 | +-i modify_change | |
48 | +-i change_contract_amountNet | |
49 | +-i change_contract_amount | |
50 | +-i apply_change | |
51 | +-i add_contract_doc | |
52 | +-i agreement_registration | |
53 | + | |
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender_invalid_profile | |
11 | +-i find_tender | |
12 | +-i unsuccessfully_tender_verification_wrong_profile | |
13 | +-i impossible_make_bid_when_draft_unsuccessful | |
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender_shortlistedfirms_empty | |
11 | +-i unsuccessfully_tender_verification_wrong_profile | |
12 | +-i tender_unsuccessfully_reason_shortlistedfirms_empty | |
\ No newline at end of file | ||
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender_unknown_profile | |
11 | +-i unsuccessfully_tender_verification_wrong_profile | |
12 | +-i tender_unsuccessfully_reason_unknown_profile | |
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender | |
11 | +-i find_tender | |
12 | +-i successfully_tender_validation | |
13 | +-i make_bid_by_provider | |
14 | +-i awardPeriod_startDate | |
15 | +-i qualification_approve_first_award_by_provider | |
16 | +-i tender_cancellation | |
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender | |
11 | +-i find_tender | |
12 | +-i succefully_tender_verification | |
13 | +-i make_bid_by_provider | |
14 | +-i awardPeriod_startDate | |
15 | +-i tender_cancellation | |
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender_wrong_date | |
11 | +-i create_tender_empty_profile | |
12 | +-i create_tender | |
13 | +-i impossible_change_tendering_status | |
14 | +-i successfully_tender_validation | |
15 | +-i change_data_active_tendering | |
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender_without_2_phase_commit | |
11 | +-i tender_view_status_draft | |
12 | +-i patch_tender_wrong_date | |
13 | +-i patch_tender_wrong_procuringEntity_kind | |
14 | +-i impossible_change_tender_status_form_draft_to_another_except_draft_publishing | |
15 | +-i impossible_make_bid_when_draft | |
\ No newline at end of file | ||
... | ... |
1 | +-v MODE:priceQuotation | |
2 | + | |
3 | +-v NUMBER_OF_ITEMS:1 | |
4 | +-v NUMBER_OF_LOTS:0 | |
5 | + | |
6 | +-v TENDER_MEAT:False | |
7 | +-v ITEM_MEAT:False | |
8 | +-v LOT_MEAT:False | |
9 | + | |
10 | +-i create_tender | |
11 | + | |
12 | +-i successfully_tender_validation | |
13 | +-i impossible_make_bid | |
14 | +-i make_bid_by_provider | |
15 | +-i make_bid_by_provider1 | |
16 | +-i delete_bid_while_tendering_period_by_provider | |
17 | +-i make_bid_by_provider2 | |
18 | + | |
19 | +-i awardPeriod_startDate | |
20 | +-i impossible_approve_first_award_by_customer | |
21 | +-i impossible_cancel_1_award_qualification_by_provider | |
22 | +-i disqualification_first_award_by_provider | |
23 | +-i cancel_bid_after_tendering_period_by_provider | |
24 | +-i qualification_reject_second_award_after_2_days | |
25 | + | |
26 | +-i qualification_approve_third_award_by_provider | |
27 | +-i impossible_cancel_3_award_qualification_by_provider | |
28 | +-i qualification_cancel_3_award_qualification_by_customer | |
29 | +-i impossible_approve_fourth_award_by_provider | |
30 | +-i qualification_approve_4_award_by_customer | |
31 | +-i qualification_cancel_4_award_qualification_by_customer | |
32 | +-i qualification_reject_fifth_award | |
33 | + | |
34 | +-i unsuccefully_tender | |
... | ... |
Please
register
or
login
to post a comment