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,6 +217,94 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status | ||
| 217 | Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} | 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 | ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} | 309 | ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} |
| 222 | ${accelerator}= Get Variable Value ${accelerator} | 310 | ${accelerator}= Get Variable Value ${accelerator} |
| @@ -2084,6 +2172,17 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status | @@ -2084,6 +2172,17 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status | ||
| 2084 | Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} | 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 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} | 2186 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} |
| 2088 | ${bid}= Підготувати дані для подання пропозиції | 2187 | ${bid}= Підготувати дані для подання пропозиції |
| 2089 | ${values}= Get Variable Value ${bid.data.lotValues[0]} | 2188 | ${values}= Get Variable Value ${bid.data.lotValues[0]} |
| @@ -237,6 +237,7 @@ Library openprocurement_client.utils | @@ -237,6 +237,7 @@ Library openprocurement_client.utils | ||
| 237 | ${status}= Set Variable If 'below' in '${MODE}' active.enquiries ${status} | 237 | ${status}= Set Variable If 'below' in '${MODE}' active.enquiries ${status} |
| 238 | ${status}= Set Variable If 'selection' in '${MODE}' draft.pending ${status} | 238 | ${status}= Set Variable If 'selection' in '${MODE}' draft.pending ${status} |
| 239 | ${status}= Set Variable If '${status}'=='${EMPTY}' active ${status} | 239 | ${status}= Set Variable If '${status}'=='${EMPTY}' active ${status} |
| 240 | + ${status}= Set Variable If 'priceQuotation' in '${MODE}' draft.publishing ${status} | ||
| 240 | Set To Dictionary ${tender['data']} status=${status} | 241 | Set To Dictionary ${tender['data']} status=${status} |
| 241 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender | 242 | ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender |
| 242 | ... ${tender.data.id} | 243 | ... ${tender.data.id} |
| @@ -272,6 +273,29 @@ Library openprocurement_client.utils | @@ -272,6 +273,29 @@ Library openprocurement_client.utils | ||
| 272 | [return] ${tender.data.tenderID} | 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 | [Arguments] ${username} ${monitoring_data} | 300 | [Arguments] ${username} ${monitoring_data} |
| 277 | ${monitoring}= Call Method ${USERS.users['${username}'].dasu_client} create_monitoring ${monitoring_data} | 301 | ${monitoring}= Call Method ${USERS.users['${username}'].dasu_client} create_monitoring ${monitoring_data} |
| @@ -1963,6 +1987,15 @@ Library openprocurement_client.utils | @@ -1963,6 +1987,15 @@ Library openprocurement_client.utils | ||
| 1963 | ... access_token=${tender.access.token} | 1987 | ... access_token=${tender.access.token} |
| 1964 | Log ${reply} | 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 | # Limited procurement | 2000 | # Limited procurement |
| 1968 | ############################################################################## | 2001 | ############################################################################## |
| @@ -2015,7 +2048,7 @@ Library openprocurement_client.utils | @@ -2015,7 +2048,7 @@ Library openprocurement_client.utils | ||
| 2015 | ... ${cancellation_id} | 2048 | ... ${cancellation_id} |
| 2016 | ... ${document_id} | 2049 | ... ${document_id} |
| 2017 | ... ${new_description} | 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 | ... openprocurement_client.Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id} | 2052 | ... openprocurement_client.Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id} |
| 2020 | ... ELSE openprocurement_client.Перевести скасування закупівлі в період очікування ${username} ${tender_uaid} ${cancellation_id} | 2053 | ... ELSE openprocurement_client.Перевести скасування закупівлі в період очікування ${username} ${tender_uaid} ${cancellation_id} |
| 2021 | Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_data=${cancellation} | 2054 | Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_data=${cancellation} |
| @@ -80,6 +80,9 @@ Quinta: | @@ -80,6 +80,9 @@ Quinta: | ||
| 80 | tender: [0, 30] | 80 | tender: [0, 30] |
| 81 | framework_selection: | 81 | framework_selection: |
| 82 | accelerator: 360 | 82 | accelerator: 360 |
| 83 | + priceQuotation: | ||
| 84 | + tender: [0, 15] | ||
| 85 | + accelerator: 1440 | ||
| 83 | keywords_file: openprocurement_client | 86 | keywords_file: openprocurement_client |
| 84 | roles: | 87 | roles: |
| 85 | provider: Tender_User | 88 | provider: Tender_User |
| @@ -22,6 +22,7 @@ mode_open = ["belowThreshold", "aboveThresholdUA", "aboveThresholdEU", | @@ -22,6 +22,7 @@ mode_open = ["belowThreshold", "aboveThresholdUA", "aboveThresholdEU", | ||
| 22 | "aboveThresholdUA.defense", "competitiveDialogueUA", "competitiveDialogueEU", "esco", | 22 | "aboveThresholdUA.defense", "competitiveDialogueUA", "competitiveDialogueEU", "esco", |
| 23 | "closeFrameworkAgreementUA"] | 23 | "closeFrameworkAgreementUA"] |
| 24 | mode_limited = ["reporting", "negotiation.quick", "negotiation"] | 24 | mode_limited = ["reporting", "negotiation.quick", "negotiation"] |
| 25 | +mode_selective = ["priceQuotation"] | ||
| 25 | violationType = ["corruptionDescription", "corruptionProcurementMethodType", "corruptionChanges", | 26 | violationType = ["corruptionDescription", "corruptionProcurementMethodType", "corruptionChanges", |
| 26 | "corruptionPublicDisclosure", "corruptionBiddingDocuments", "documentsForm", | 27 | "corruptionPublicDisclosure", "corruptionBiddingDocuments", "documentsForm", |
| 27 | "corruptionAwarded", "corruptionCancelled", "corruptionContracting"] | 28 | "corruptionAwarded", "corruptionCancelled", "corruptionContracting"] |
| @@ -367,12 +368,20 @@ def test_tender_data_planning(params): | @@ -367,12 +368,20 @@ def test_tender_data_planning(params): | ||
| 367 | data["tender"]["procurementMethod"] = "open" | 368 | data["tender"]["procurementMethod"] = "open" |
| 368 | if params['mode'] in mode_limited: | 369 | if params['mode'] in mode_limited: |
| 369 | data["tender"]["procurementMethod"] = "limited" | 370 | data["tender"]["procurementMethod"] = "limited" |
| 371 | + if params['mode'] in mode_selective: | ||
| 372 | + data["tender"]["procurementMethod"] = "selective" | ||
| 370 | if params.get('number_of_breakdown'): | 373 | if params.get('number_of_breakdown'): |
| 371 | value_data = breakdown_value_generation(params['number_of_breakdown'], data['budget']['amount']) | 374 | value_data = breakdown_value_generation(params['number_of_breakdown'], data['budget']['amount']) |
| 372 | for value in value_data: | 375 | for value in value_data: |
| 373 | breakdown_element = test_breakdown_data() | 376 | breakdown_element = test_breakdown_data() |
| 374 | breakdown_element['value']['amount'] = value | 377 | breakdown_element['value']['amount'] = value |
| 375 | data['budget']['breakdown'].append(breakdown_element) | 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 | return munchify(data) | 385 | return munchify(data) |
| 377 | 386 | ||
| 378 | 387 | ||
| @@ -704,6 +713,36 @@ def test_bid_data_selection(data, index): | @@ -704,6 +713,36 @@ def test_bid_data_selection(data, index): | ||
| 704 | return bid | 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 | def test_supplier_data(): | 746 | def test_supplier_data(): |
| 708 | return munchify({ | 747 | return munchify({ |
| 709 | "data": { | 748 | "data": { |
| @@ -1033,6 +1072,33 @@ def test_tender_data_esco(params, submissionMethodDetails, plan_data): | @@ -1033,6 +1072,33 @@ def test_tender_data_esco(params, submissionMethodDetails, plan_data): | ||
| 1033 | return data | 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 | def test_milestone_data(): | 1102 | def test_milestone_data(): |
| 1037 | return munchify({ | 1103 | return munchify({ |
| 1038 | "code": random.choice(["prepayment", "postpayment"]), | 1104 | "code": random.choice(["prepayment", "postpayment"]), |
| @@ -356,6 +356,20 @@ Get Broker Property By Username | @@ -356,6 +356,20 @@ Get Broker Property By Username | ||
| 356 | [Return] ${bid} | 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 | [Arguments] ${username} ${lotIndex}=${-1} | 374 | [Arguments] ${username} ${lotIndex}=${-1} |
| 361 | ${lotIndex}= Convert To Integer ${lotIndex} | 375 | ${lotIndex}= Convert To Integer ${lotIndex} |
| @@ -1040,6 +1054,12 @@ Require Failure | @@ -1040,6 +1054,12 @@ Require Failure | ||
| 1040 | Порівняти об'єкти ${left} ${right} | 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 | Звірити статус cancellations | 1063 | Звірити статус cancellations |
| 1044 | [Arguments] ${username} ${tender_uaid} ${left} ${cancellation_index} | 1064 | [Arguments] ${username} ${tender_uaid} ${left} ${cancellation_index} |
| 1045 | ${right}= Run as ${username} Отримати інформацію із cancellation ${tender_uaid} status ${cancellation_index} | 1065 | ${right}= Run as ${username} Отримати інформацію із cancellation ${tender_uaid} status ${cancellation_index} |
| @@ -1238,6 +1258,32 @@ Require Failure | @@ -1238,6 +1258,32 @@ Require Failure | ||
| 1238 | ... active.qualification.stand-still | 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 | [Arguments] ${username} | 1288 | [Arguments] ${username} |
| 1243 | Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate} | 1289 | Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate} |
| @@ -1343,4 +1389,17 @@ Require Failure | @@ -1343,4 +1389,17 @@ Require Failure | ||
| 1343 | \ Set To Dictionary ${contract_data.data.unitPrices[${index}].value} amount=${value} | 1389 | \ Set To Dictionary ${contract_data.data.unitPrices[${index}].value} amount=${value} |
| 1344 | ${contract_data}= munch_dict arg=${contract_data} | 1390 | ${contract_data}= munch_dict arg=${contract_data} |
| 1345 | Log ${contract_data} | 1391 | Log ${contract_data} |
| 1346 | - [Return] ${contract_data} | ||
| 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 |
| @@ -33,6 +33,12 @@ class OP_Provider(BaseProvider): | @@ -33,6 +33,12 @@ class OP_Provider(BaseProvider): | ||
| 33 | rationale_types = _fake_data.rationale_types | 33 | rationale_types = _fake_data.rationale_types |
| 34 | title_of_milestones = _fake_data.title_of_milestones | 34 | title_of_milestones = _fake_data.title_of_milestones |
| 35 | procuringTenderers = _fake_data.procuringTenderers | 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 | @classmethod | 43 | @classmethod |
| 38 | def randomize_nb_elements(self, number=10, le=60, ge=140): | 44 | def randomize_nb_elements(self, number=10, le=60, ge=140): |
| @@ -223,4 +229,28 @@ class OP_Provider(BaseProvider): | @@ -223,4 +229,28 @@ class OP_Provider(BaseProvider): | ||
| 223 | 229 | ||
| 224 | @classmethod | 230 | @classmethod |
| 225 | def milestone_title(self): | 231 | def milestone_title(self): |
| 226 | - return self.random_element(self.title_of_milestones) | ||
| 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,5 +8153,33 @@ | ||
| 8153 | "dateOfInvoicing", | 8153 | "dateOfInvoicing", |
| 8154 | "endDateOfTheReportingPeriod", | 8154 | "endDateOfTheReportingPeriod", |
| 8155 | "anotherEvent" | 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,6 +35,7 @@ from .initial_data import ( | ||
| 35 | test_bid_value, | 35 | test_bid_value, |
| 36 | test_bid_value_esco, | 36 | test_bid_value_esco, |
| 37 | test_bid_data_selection, | 37 | test_bid_data_selection, |
| 38 | + test_bid_data_pq, | ||
| 38 | test_change_data, | 39 | test_change_data, |
| 39 | test_claim_answer_data, | 40 | test_claim_answer_data, |
| 40 | test_claim_data, | 41 | test_claim_data, |
| @@ -58,6 +59,7 @@ from .initial_data import ( | @@ -58,6 +59,7 @@ from .initial_data import ( | ||
| 58 | test_tender_data_planning, | 59 | test_tender_data_planning, |
| 59 | test_tender_data_openua_defense, | 60 | test_tender_data_openua_defense, |
| 60 | test_tender_data_framework_agreement, | 61 | test_tender_data_framework_agreement, |
| 62 | + test_tender_data_pq, | ||
| 61 | test_tender_data_selection, | 63 | test_tender_data_selection, |
| 62 | test_bid_competitive_data, | 64 | test_bid_competitive_data, |
| 63 | test_monitoring_data, | 65 | test_monitoring_data, |
| @@ -379,6 +381,9 @@ def prepare_test_tender_data(procedure_intervals, | @@ -379,6 +381,9 @@ def prepare_test_tender_data(procedure_intervals, | ||
| 379 | elif mode == 'open_esco': | 381 | elif mode == 'open_esco': |
| 380 | return munchify({'data': test_tender_data_esco( | 382 | return munchify({'data': test_tender_data_esco( |
| 381 | tender_parameters, submissionMethodDetails, plan_data)}) | 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 | # The previous line needs an explicit keyword argument because, | 387 | # The previous line needs an explicit keyword argument because, |
| 383 | # unlike previous functions, this one has three arguments. | 388 | # unlike previous functions, this one has three arguments. |
| 384 | raise ValueError("Invalid mode for prepare_test_tender_data") | 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,3 +779,7 @@ def edit_tender_data_for_plan_tender(data, mode, data_version): | ||
| 774 | if data_version is 4: | 779 | if data_version is 4: |
| 775 | dict_data['data']['procurementMethodType'] = plan_tedner_test_data[data_version] | 780 | dict_data['data']['procurementMethodType'] = plan_tedner_test_data[data_version] |
| 776 | return munchify(dict_data) | 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 |
| 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 |
| 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