Commit 5023887913dd10012e2e41e83d177568a150edd2

Authored by Myroslav Opyr
2 parents d5358ce9 ed6a4c72

Merge branch 'pq_july_20' into 'pq'

Pq july 20

See merge request pricequotation/robot_tests!3
Showing 53 changed files with 2445 additions and 60 deletions
... ... @@ -2,6 +2,9 @@
2 2 extensions = mr.developer
3 3 auto-checkout = *
4 4 always-checkout = true
  5 +eggs-directory = /home/jenkins-slave/.buildout/eggs
  6 +download-cache = /home/jenkins-slave/.buildout/download-cache
  7 +abi-tag-eggs = true
5 8 develop = .
6 9 find-links =
7 10 http://op:x9W3jZ@dist.quintagroup.com/op/
... ...
... ... @@ -18,8 +18,6 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
18 18 ${NUMBER_OF_LOTS}= Convert To Integer ${NUMBER_OF_LOTS}
19 19 ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS}
20 20 ${NUMBER_OF_MILESTONES}= Convert To Integer ${NUMBER_OF_MILESTONES}
21   - ${PROFILE} Get Variable Value ${PROFILE} ${True}
22   - ${WRONG_TENDER_DATE} Get Variable Value ${WRONG_TENDER_DATE} ${False}
23 21 ${tender_parameters}= Create Dictionary
24 22 ... mode=${MODE}
25 23 ... number_of_items=${NUMBER_OF_ITEMS}
... ... @@ -34,8 +32,6 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
34 32 ... road_index=${${ROAD_INDEX}}
35 33 ... gmdn_index=${${GMDN_INDEX}}
36 34 ... plan_tender=${${PLAN_TENDER}}
37   - ... profile=${${PROFILE}}
38   - ... wrong_tender_date=${${WRONG_TENDER_DATE}}
39 35 ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE}
40 36 ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND}
41 37 Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE}
... ... @@ -221,6 +217,94 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
221 217 Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}
222 218
223 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 +
224 308 Можливість створити об'єкт моніторингу
225 309 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers}
226 310 ${accelerator}= Get Variable Value ${accelerator}
... ... @@ -2127,6 +2211,21 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
2127 2211 Remove File ${file_path}
2128 2212
2129 2213
  2214 +Можливість завантажити обгрунтування аномально низької ціни до пропозиції учасником
  2215 + [Arguments] ${username} ${doc_name} ${doc_type}=${NONE}
  2216 + ${file_path} ${file_name} ${file_content}= create_fake_doc
  2217 + ${doc_id}= get_id_from_string ${file_name}
  2218 + ${bid_document_data}= Create Dictionary
  2219 + ... doc_name=${file_name}
  2220 + ... doc_content=${file_content}
  2221 + ... doc_id=${doc_id}
  2222 + Run As ${username} Завантажити документ в ставку обгрунтування аномально низької ціни ${file_path} ${TENDER['TENDER_UAID']} ${doc_name} ${doc_type}
  2223 + Set To Dictionary ${USERS.users['${username}']} bid_document=${bid_document_data}
  2224 + #Set To Dictionary ${USERS.users['${username}']} bidresponses=${bid_doc_upload}
  2225 + #Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_upload=${bid_doc_upload}
  2226 + Remove File ${file_path}
  2227 +
  2228 +
2130 2229 Можливість змінити документацію цінової пропозиції користувачем ${username}
2131 2230 ${file_path} ${file_name} ${file_content}= create_fake_doc
2132 2231 ${doc_id}= get_id_from_string ${file_name}
... ... @@ -2150,6 +2249,18 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
2150 2249 Set To Dictionary ${USERS.users['${username}']} bid_document_modified=${bid_document_modified_data}
2151 2250 Remove File ${file_path}
2152 2251
  2252 +
  2253 +Можливість змінити документацію обгрунтування аномально низької ціни користувачем ${username}
  2254 + ${file_path} ${file_name} ${file_content}= create_fake_doc
  2255 + ${doc_id}= get_id_from_string ${file_name}
  2256 + ${bid_document_modified_data}= Create Dictionary
  2257 + ... doc_name=${file_name}
  2258 + ... doc_content=${file_content}
  2259 + ... doc_id=${doc_id}
  2260 + Run As ${username} Змінити документ в ставці при обгрунтуванні аномально низької ціни ${TENDER['TENDER_UAID']} ${file_path} ${USERS.users['${username}']['bid_document']['doc_id']}
  2261 + Set To Dictionary ${USERS.users['${username}']} bid_document_modified=${bid_document_modified_data}
  2262 + Remove File ${file_path}
  2263 +
2153 2264 ##############################################################################################
2154 2265 # Cancellations
2155 2266 ##############################################################################################
... ...
... ... @@ -273,6 +273,29 @@ Library openprocurement_client.utils
273 273 [return] ${tender.data.tenderID}
274 274
275 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 +
276 299 Створити об'єкт моніторингу
277 300 [Arguments] ${username} ${monitoring_data}
278 301 ${monitoring}= Call Method ${USERS.users['${username}'].dasu_client} create_monitoring ${monitoring_data}
... ... @@ -1688,6 +1711,25 @@ Library openprocurement_client.utils
1688 1711 [Return] ${uploaded_file}
1689 1712
1690 1713
  1714 +Завантажити документ в ставку обгрунтування аномально низької ціни
  1715 + [Arguments] ${username} ${path} ${tender_uaid} ${doc_name}=documents ${doc_type}=${None}
  1716 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  1717 + ${bid_id}= set variable ${tender.data.awards[0].bid_id}
  1718 + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']}
  1719 + ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document
  1720 + ... ${path}
  1721 + ... ${tender.data.id}
  1722 + ... ${bid_id}
  1723 + ... doc_type=${doc_type}
  1724 + ... access_token=${tender.access.token}
  1725 + ... subitem_name=${doc_name}
  1726 + ${uploaded_file} = Create Dictionary
  1727 + ... filepath=${path}
  1728 + ... upload_response=${response}
  1729 + Log object data ${uploaded_file}
  1730 + [Return] ${uploaded_file}
  1731 +
  1732 +
1691 1733 Змінити документ в ставці
1692 1734 [Arguments] ${username} ${tender_uaid} ${path} ${doc_id} ${doc_type}=documents
1693 1735 ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id}
... ... @@ -1728,6 +1770,26 @@ Library openprocurement_client.utils
1728 1770 [Return] ${uploaded_file}
1729 1771
1730 1772
  1773 +Змінити документ в ставці при обгрунтуванні аномально низької ціни
  1774 + [Arguments] ${username} ${tender_uaid} ${path} ${doc_id} ${doc_type}=documents
  1775 + ${bid_id}= openprocurement_client.Отримати інформацію із пропозиції ${username} ${tender_uaid} id
  1776 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  1777 + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']}
  1778 + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid}
  1779 + ${bid_doc}= get_document_by_id ${bid.data} ${doc_id}
  1780 + ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document
  1781 + ... ${path}
  1782 + ... ${tender.data.id}
  1783 + ... ${bid_id}
  1784 + ... ${bid_doc['id']}
  1785 + ... access_token=${tender.access.token}
  1786 + ${uploaded_file} = Create Dictionary
  1787 + ... filepath=${path}
  1788 + ... upload_response=${response}
  1789 + Log object data ${uploaded_file}
  1790 + [Return] ${uploaded_file}
  1791 +
  1792 +
1731 1793 Змінити документацію в ставці
1732 1794 [Arguments] ${username} ${tender_uaid} ${doc_data} ${doc_id}
1733 1795 ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id}
... ... @@ -2265,6 +2327,7 @@ Library openprocurement_client.utils
2265 2327 ... ${tender}
2266 2328 ... access_token=${tender.access.token}
2267 2329 Log ${reply}
  2330 + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/tenders/${reply.data.id}${\n} WARN
2268 2331
2269 2332 ##############################################################################
2270 2333 # CONTRACT SIGNING
... ...
1 1 *** Settings ***
2 2 Resource base_keywords.robot
  3 +Resource aboveThreshold_keywords.robot
3 4 Suite Setup Test Suite Setup
4 5 Suite Teardown Test Suite Teardown
5 6
... ... @@ -22,14 +23,35 @@ ${PLAN_TENDER} ${True}
22 23 Можливість оголосити тендер
23 24
24 25
  26 +Можливість оголосити тендер другого етапу
  27 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  28 + ... tender_owner
  29 + ... ${USERS.users['${tender_owner}'].broker}
  30 + ... create_tender_stage2
  31 + ... critical
  32 + [Teardown] Оновити LAST_MODIFICATION_DATE
  33 + Завантажити дані про тендер
  34 + Можливість оголосити тендер другого етапу
  35 +
  36 +
  37 +Можливість знайти тендер по ідентифікатору для замовника
  38 + [Tags] ${USERS.users['${tender_owner}'].broker}: Пошук тендера
  39 + ... tender_owner
  40 + ... ${USERS.users['${tender_owner}'].broker}
  41 + ... find_tender_tender_owner
  42 + ... critical
  43 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  44 + Можливість знайти тендер по ідентифікатору для користувача ${tender_owner}
  45 +
  46 +
25 47 Можливість знайти тендер по ідентифікатору
26 48 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера
27   - ... viewer tender_owner
  49 + ... viewer tender_owner provider provider1
28 50 ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  51 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
29 52 ... find_tender
30   - [Teardown] Оновити LAST_MODIFICATION_DATE
31   - :FOR ${username} IN ${tender_owner} ${viewer}
32   - \ Можливість знайти тендер по ідентифікатору для користувача ${username}
  53 + ... critical
  54 + Можливість знайти тендер по ідентифікатору для усіх користувачів
33 55
34 56
35 57 Можливість подати пропозицію першим учасником
... ... @@ -43,6 +65,17 @@ ${PLAN_TENDER} ${True}
43 65 Можливість подати цінову пропозицію користувачем ${provider}
44 66
45 67
  68 +Можливість подати пропозицію першим учасником 2 етап рамкової угоди
  69 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  70 + ... provider
  71 + ... ${USERS.users['${provider}'].broker}
  72 + ... selection_make_bid_by_provider
  73 + ... critical
  74 + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  75 + [Teardown] Оновити LAST_MODIFICATION_DATE
  76 + Можливість подати цінову пропозицію на другому етапі рамкової угоди користувачем ${provider} ${0}
  77 +
  78 +
46 79 Можливість подати пропозицію другим учасником
47 80 [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
48 81 ... provider1
... ... @@ -54,6 +87,17 @@ ${PLAN_TENDER} ${True}
54 87 Можливість подати цінову пропозицію користувачем ${provider1}
55 88
56 89
  90 +Можливість подати пропозицію другим учасником 2 етап рамкової угоди
  91 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  92 + ... provider1
  93 + ... ${USERS.users['${provider1}'].broker}
  94 + ... selection_make_bid_by_provider1
  95 + ... critical
  96 + [Setup] Дочекатись дати початку прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']}
  97 + [Teardown] Оновити LAST_MODIFICATION_DATE
  98 + Можливість подати цінову пропозицію на другому етапі рамкової угоди користувачем ${provider1} ${1}
  99 +
  100 +
57 101 Можливість подати пропозицію третім учасником
58 102 [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
59 103 ... provider2
... ... @@ -76,6 +120,383 @@ ${PLAN_TENDER} ${True}
76 120 Оновити LAST_MODIFICATION_DATE
77 121
78 122 ##############################################################################################
  123 +# PRE-QUALIFICATION
  124 +##############################################################################################
  125 +
  126 +Дочекатись початку періоду пре-кваліфікації
  127 + [Tags] ${USERS.users['${tender_owner}'].broker}: Очікування початку періоду пре-кваліфікації учасників
  128 + ... tender_owner
  129 + ... ${USERS.users['${tender_owner}'].broker}
  130 + ... wait_active_pre-qualification_start
  131 + Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  132 +
  133 +
  134 +Відображення статусу першої пропозиції кваліфікації
  135 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  136 + ... tender_owner
  137 + ... ${USERS.users['${tender_owner}'].broker}
  138 + ... pre-qualification_view
  139 + ... non-critical
  140 + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  141 + Звірити відображення поля qualifications[0].status тендера із pending для користувача ${tender_owner}
  142 +
  143 +
  144 +Відображення статусу другої пропозиції кваліфікації
  145 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  146 + ... tender_owner
  147 + ... ${USERS.users['${tender_owner}'].broker}
  148 + ... pre-qualification_view
  149 + ... non-critical
  150 + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  151 + Звірити відображення поля qualifications[1].status тендера із pending для користувача ${tender_owner}
  152 +
  153 +
  154 +Відображення статусу третьої пропозиції кваліфікації
  155 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  156 + ... tender_owner
  157 + ... ${USERS.users['${tender_owner}'].broker}
  158 + ... pre-qualification_view
  159 + ... non-critical
  160 + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  161 + Звірити відображення поля qualifications[2].status тендера із pending для користувача ${tender_owner}
  162 +
  163 +
  164 +Можливість підтвердити першу пропозицію кваліфікації
  165 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  166 + ... tender_owner
  167 + ... ${USERS.users['${tender_owner}'].broker}
  168 + ... pre-qualification_approve_first_bid level1
  169 + ... critical
  170 + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  171 + [Teardown] Оновити LAST_MODIFICATION_DATE
  172 + Можливість підтвердити 0 пропозицію кваліфікації
  173 +
  174 +
  175 +Можливість підтвердити другу пропозицію кваліфікації
  176 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  177 + ... tender_owner
  178 + ... ${USERS.users['${tender_owner}'].broker}
  179 + ... pre-qualification_approve_second_bid level1
  180 + ... critical
  181 + [Teardown] Оновити LAST_MODIFICATION_DATE
  182 + Можливість підтвердити 1 пропозицію кваліфікації
  183 +
  184 +
  185 +Можливість підтвердити третю пропозицію кваліфікації
  186 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  187 + ... tender_owner
  188 + ... ${USERS.users['${tender_owner}'].broker}
  189 + ... pre-qualification_approve_third_bid level1
  190 + ... critical
  191 + [Teardown] Оновити LAST_MODIFICATION_DATE
  192 + Можливість підтвердити 2 пропозицію кваліфікації
  193 +
  194 +
  195 +Можливість підтвердити четверту пропозицію кваліфікації
  196 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  197 + ... tender_owner
  198 + ... ${USERS.users['${tender_owner}'].broker}
  199 + ... pre-qualification_approve_fourth_bid level1
  200 + ... critical
  201 + [Teardown] Оновити LAST_MODIFICATION_DATE
  202 + Можливість підтвердити 3 пропозицію кваліфікації
  203 +
  204 +
  205 +Можливість підтвердити п'яту пропозицію кваліфікації
  206 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  207 + ... tender_owner
  208 + ... ${USERS.users['${tender_owner}'].broker}
  209 + ... pre-qualification_approve_fifth_bid level1
  210 + ... critical
  211 + [Teardown] Оновити LAST_MODIFICATION_DATE
  212 + Можливість підтвердити 4 пропозицію кваліфікації
  213 +
  214 +
  215 +Можливість підтвердити шосту пропозицію кваліфікації
  216 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  217 + ... tender_owner
  218 + ... ${USERS.users['${tender_owner}'].broker}
  219 + ... pre-qualification_approve_sixth_bid level1
  220 + ... critical
  221 + [Teardown] Оновити LAST_MODIFICATION_DATE
  222 + Можливість підтвердити 5 пропозицію кваліфікації
  223 +
  224 +
  225 +Можливість затвердити остаточне рішення кваліфікації
  226 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  227 + ... tender_owner
  228 + ... ${USERS.users['${tender_owner}'].broker}
  229 + ... pre-qualification_approve_qualifications level1
  230 + ... critical
  231 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  232 + [Teardown] Оновити LAST_MODIFICATION_DATE
  233 + Можливість затвердити остаточне рішення кваліфікації
  234 +
  235 +
  236 +Відображення статусу блокування перед початком аукціону
  237 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  238 + ... tender_owner
  239 + ... ${USERS.users['${tender_owner}'].broker}
  240 + ... pre-qualification_view
  241 + ... non-critical
  242 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  243 + Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} active.pre-qualification.stand-still
  244 +
  245 +
  246 +Відображення дати закінчення періоду блокування перед початком аукціону
  247 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація
  248 + ... tender_owner
  249 + ... ${USERS.users['${tender_owner}'].broker}
  250 + ... pre-qualification_view
  251 + ... non-critical
  252 + [Teardown] Дочекатись дати закінчення періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  253 + Отримати дані із поля qualificationPeriod.endDate тендера для усіх користувачів
  254 +
  255 +##############################################################################################
  256 +# SECOND STAGE
  257 +##############################################################################################
  258 +
  259 +Можливість дочекатися початку періоду очікування
  260 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес очікування оскаржень
  261 + ... tender_owner
  262 + ... ${USERS.users['${tender_owner}'].broker}
  263 + ... stage2_pending_status_view
  264 + ... critical
  265 + Отримати дані із поля qualificationPeriod.endDate тендера для усіх користувачів
  266 + Дочекатись дати закінчення періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  267 + Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} active.stage2.pending
  268 +
  269 +
  270 +Можливість перевести тендер в статус очікування обробки мостом
  271 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес переведення статусу у active.stage2.waiting.
  272 + ... tender_owner
  273 + ... ${USERS.users['${tender_owner}'].broker}
  274 + ... stage2_pending_status_view
  275 + ... critical
  276 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  277 + [Teardown] Оновити LAST_MODIFICATION_DATE
  278 + Можливість перевести тендер на статус очікування обробки мостом
  279 +
  280 +
  281 +Можливість дочекатися завершення роботи мосту
  282 + [Tags] ${USERS.users['${viewer}'].broker}: Процес очікування обробки мостом
  283 + ... viewer
  284 + ... ${USERS.users['${viewer}'].broker}
  285 + ... wait_bridge_for_work
  286 + ... critical
  287 + Дочекатися створення нового етапу мостом ${tender_owner} ${TENDER['TENDER_UAID']}
  288 + Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} complete
  289 +
  290 +
  291 +Можливість активувати тендер другого етапу
  292 + [Tags] ${USERS.users['${viewer}'].broker}: Активувати тендер другого етапу
  293 + ... tender_owner
  294 + ... ${USERS.users['${tender_owner}'].broker}
  295 + ... activate_second_stage
  296 + ... critical
  297 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  298 + Активувати тендер другого етапу
  299 +
  300 +
  301 +Можливість знайти тендер другого етапу по ідентифікатору для усіх користувачів
  302 + [Tags] ${USERS.user['${tender_owner}'].broker}: Пошук тендера другого етапу
  303 + ... viewer tender_owner provider provider1
  304 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  305 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  306 + ... get_second_stage
  307 + ... critical
  308 + Можливість знайти тендер другого етапу по ідентифікатору для усіх користувачів
  309 +
  310 +
  311 +Відображення заголовку тендера другого етапу
  312 + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу
  313 + ... viewer tender_owner provider provider1
  314 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  315 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  316 + ... compare_stages
  317 + ... critical
  318 + Отримати дані із поля title тендера другого етапу для усіх користувачів
  319 +
  320 +
  321 +Відображення мінімального кроку закупівлі другого етапу
  322 + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу
  323 + ... viewer tender_owner provider provider1
  324 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  325 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  326 + ... compare_stages
  327 + ... critical
  328 + Отримати дані із поля minimalStep.amount тендера другого етапу для усіх користувачів
  329 +
  330 +
  331 +Відображення доступного бюджету закупівлі другого етапу
  332 + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу
  333 + ... viewer tender_owner provider provider1
  334 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  335 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  336 + ... compare_stages
  337 + ... critical
  338 + Отримати дані із поля value.amount тендера другого етапу для усіх користувачів
  339 +
  340 +
  341 +Відображення опису закупівлі другого етапу
  342 + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу
  343 + ... viewer tender_owner provider provider1
  344 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  345 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  346 + ... compare_stages
  347 + ... non-critical
  348 + Отримати дані із поля description тендера другого етапу для усіх користувачів
  349 +
  350 +
  351 +Відображення імені замовника тендера для другого етапу
  352 + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу
  353 + ... viewer tender_owner provider provider1
  354 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  355 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  356 + ... compare_stages
  357 + ... critical
  358 + Отримати дані із поля procuringEntity.name тендера другого етапу для усіх користувачів
  359 +
  360 +
  361 +Відображення початку періоду прийому пропозицій тендера другого етапу
  362 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера другого етапу
  363 + ... viewer tender_owner provider provider1
  364 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  365 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  366 + ... compare_stages
  367 + ... critical
  368 + Отримати дані із поля tenderPeriod.startDate тендера другого етапу для усіх користувачів
  369 +
  370 +
  371 +Відображення закінчення періоду прийому пропозицій тендера другого етапу
  372 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера другого етапу
  373 + ... viewer tender_owner provider provider1
  374 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  375 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  376 + ... compare_stages
  377 + ... critical
  378 + Отримати дані із поля tenderPeriod.endDate тендера другого етапу для усіх користувачів
  379 +
  380 +
  381 +Можливість подати пропозицію першим учасником на другому етапі
  382 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  383 + ... provider
  384 + ... ${USERS.users['${provider}'].broker}
  385 + ... make_bid_by_provider_second_stage
  386 + ... critical
  387 + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  388 + [Teardown] Оновити LAST_MODIFICATION_DATE
  389 + Можливість подати цінову пропозицію на другий етап користувачем ${provider}
  390 +
  391 +
  392 +Можливість подати пропозицію другим учасником на другому етапі
  393 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції на другий етап
  394 + ... provider1
  395 + ... ${USERS.users['${provider1}'].broker}
  396 + ... make_bid_by_provider1_second_stage
  397 + ... critical
  398 + [Teardown] Оновити LAST_MODIFICATION_DATE
  399 + Можливість подати цінову пропозицію на другий етап користувачем ${provider1}
  400 +
  401 +
  402 +Можливість підтвердити першу пропозицію кваліфікації на другому етапі
  403 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація на другому етапі
  404 + ... tender_owner
  405 + ... ${USERS.users['${tender_owner}'].broker}
  406 + ... pre-qualification_approve_first_bid_second_stage
  407 + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  408 + [Teardown] Оновити LAST_MODIFICATION_DATE
  409 + Можливість підтвердити 0 пропозицію кваліфікації
  410 +
  411 +
  412 +Можливість підтвердити другу пропозицію кваліфікації на другогму етапі
  413 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація на другому етапі
  414 + ... tender_owner
  415 + ... ${USERS.users['${tender_owner}'].broker}
  416 + ... pre-qualification_approve_second_bid_second_stage
  417 + [Teardown] Оновити LAST_MODIFICATION_DATE
  418 + Можливість підтвердити -1 пропозицію кваліфікації
  419 +
  420 +
  421 +Можливість затвердити остаточне рішення кваліфікації на другому етапі
  422 + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація на другому етапі
  423 + ... tender_owner
  424 + ... ${USERS.users['${tender_owner}'].broker}
  425 + ... pre-qualification_approve_qualifications_second_stage
  426 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  427 + [Teardown] Оновити LAST_MODIFICATION_DATE
  428 + Можливість затвердити остаточне рішення кваліфікації
  429 +
  430 +##############################################################################################
  431 +# QUALIFICATION
  432 +##############################################################################################
  433 +
  434 +Дочекатись початку періоду кваліфікації
  435 + [Tags] ${USERS.users['${tender_owner}'].broker}: Очікування початку періоду кваліфікації учасників
  436 + ... tender_owner
  437 + ... ${USERS.users['${tender_owner}'].broker}
  438 + ... wait_active_qualification_start
  439 + Дочекатись дати початку періоду кваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  440 +
  441 +
  442 +Можливість підтвердити постачальника
  443 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  444 + ... tender_owner
  445 + ... ${USERS.users['${tender_owner}'].broker}
  446 + ... qualification_approve_first_award
  447 + ... critical
  448 + [Setup] Дочекатись дати початку періоду кваліфікації ${tender_owner} ${TENDER['TENDER_UAID']}
  449 + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0
  450 +
  451 +
  452 +Можливість підтвердити другого постачальника
  453 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  454 + ... tender_owner
  455 + ... ${USERS.users['${tender_owner}'].broker}
  456 + ... qualification_approve_second_award
  457 + ... critical
  458 + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1
  459 +
  460 +
  461 +Можливість підтвердити третього постачальника
  462 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  463 + ... tender_owner
  464 + ... ${USERS.users['${tender_owner}'].broker}
  465 + ... qualification_approve_third_award
  466 + ... critical
  467 + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 2
  468 +
  469 +
  470 +Дочекатись початку періоду підписання угоди
  471 + [Tags] ${USERS.users['${tender_owner}'].broker}: Очікування початку періоду підписання угоди
  472 + ... tender_owner
  473 + ... ${USERS.users['${tender_owner}'].broker}
  474 + ... wait_active_awarded_start
  475 + Дочекатись дати початку періоду підписання угоди ${tender_owner} ${TENDER['TENDER_UAID']}
  476 +
  477 +
  478 +Відображення закінчення періоду подачі скарг на пропозицію
  479 + [Tags] ${USERS.users['${tender_owner}'].broker}: Відображення основних даних тендера
  480 + ... viewer
  481 + ... ${USERS.users['${tender_owner}'].broker}
  482 + ... award_stand_still
  483 + ... critical
  484 + ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer}
  485 + :FOR ${username} IN ${viewer}
  486 + \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[${award_index}].complaintPeriod.endDate
  487 +
  488 +
  489 +Дочекатися закічення stand still періоду
  490 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди
  491 + ... viewer
  492 + ... ${USERS.users['${tender_owner}'].broker}
  493 + ... award_stand_still
  494 + ... critical
  495 + ${award_index}= Отримати останній індекс awards ${tender_owner} ${viewer}
  496 + ${standstillEnd}= Get Variable Value ${USERS.users['${viewer}'].tender_data.data.awards[${award_index}].complaintPeriod.endDate}
  497 + Дочекатись дати ${standstillEnd}
  498 +
  499 +##############################################################################################
79 500 # LOT CANCELLATION
80 501 ##############################################################################################
81 502
... ...
... ... @@ -81,7 +81,7 @@ Quinta:
81 81 framework_selection:
82 82 accelerator: 360
83 83 priceQuotation:
84   - tender: [0, 10]
  84 + tender: [0, 15]
85 85 accelerator: 1440
86 86 keywords_file: openprocurement_client
87 87 roles:
... ...
... ... @@ -303,11 +303,19 @@ def test_tender_data_planning(params):
303 303 }
304 304 },
305 305 "procuringEntity": {
  306 + #"kind": "general",
306 307 "identifier": {
307 308 "scheme": "UA-EDR",
308 309 "id": random.choice(["13313462", "00037256"]),
309 310 "legalName": random.choice([u"Київський Тестовий Ліцей", u"Київська Тестова міська клінічна лікарня"]),
310 311 },
  312 + "address": {
  313 + "countryName": "Україна",
  314 + "postalCode": "01220",
  315 + "region": "м. Київ",
  316 + "streetAddress": "вул. Банкова, 11, корпус 1",
  317 + "locality": "м. Київ"
  318 + }
311 319 },
312 320 "tender": {
313 321 "procurementMethod": "",
... ... @@ -321,6 +329,12 @@ def test_tender_data_planning(params):
321 329 "buyers": []
322 330 }
323 331 data["procuringEntity"]["name"] = data["procuringEntity"]["identifier"]["legalName"]
  332 + if params.get("mode") == "aboveThresholdUA.defense":
  333 + data["procuringEntity"]["kind"] = "defense"
  334 + elif params.get("mode") in ["belowThreshold", "reporting"]:
  335 + data["procuringEntity"]["kind"] = "other"
  336 + else:
  337 + data["procuringEntity"]["kind"] = random.choice(["general", "special", "central", "authority", "social"])
324 338 buyers = test_buyers_data()
325 339 buyers["name"] = buyers["identifier"]["legalName"]
326 340 data['buyers'].append(buyers)
... ... @@ -362,6 +376,12 @@ def test_tender_data_planning(params):
362 376 breakdown_element = test_breakdown_data()
363 377 breakdown_element['value']['amount'] = value
364 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']
365 385 return munchify(data)
366 386
367 387
... ... @@ -377,22 +397,46 @@ def test_tender_data_limited(params, plan_data):
377 397 data.update({"procurementMethodType": params['mode'], "procurementMethod": "limited"})
378 398 if params['mode'] == "negotiation":
379 399 cause_variants = (
380   - "artContestIP",
381   - "noCompetition",
  400 + "resolvingInsolvency",
  401 + "artPurchase",
  402 + "contestWinner",
  403 + "technicalReasons",
  404 + "intProperty",
  405 + "lastHope",
382 406 "twiceUnsuccessful",
383 407 "additionalPurchase",
384 408 "additionalConstruction",
385 409 "stateLegalServices"
386 410 )
387 411 cause = fake.random_element(cause_variants)
  412 + data.update({
  413 + "cause": cause,
  414 + "causeDescription": fake.description()
  415 + })
388 416 elif params['mode'] == "negotiation.quick":
389   - cause_variants = ('quick',)
390   - if params['mode'] in ("negotiation", "negotiation.quick"):
  417 + cause_variants = (
  418 + "resolvingInsolvency",
  419 + "artPurchase",
  420 + "contestWinner",
  421 + "technicalReasons",
  422 + "intProperty",
  423 + "lastHope",
  424 + "twiceUnsuccessful",
  425 + "additionalPurchase",
  426 + "additionalConstruction",
  427 + "stateLegalServices",
  428 + "emergency",
  429 + "humanitarianAid",
  430 + "contractCancelled",
  431 + "activeComplaint"
  432 + )
391 433 cause = fake.random_element(cause_variants)
392 434 data.update({
393 435 "cause": cause,
394 436 "causeDescription": fake.description()
395 437 })
  438 + #if params['mode'] in ("negotiation", "negotiation.quick"):
  439 + #cause = fake.random_element(cause_variants)
396 440 return munchify(data)
397 441
398 442
... ... @@ -654,25 +698,33 @@ def test_bid_data_selection(data, index):
654 698 return bid
655 699
656 700
657   -def test_bid_data_pq(data, over_limit):
  701 +def test_bid_data_pq(data, over_limit=False, missing_criteria=False, more_than_two_requirements=False, invalid_expected_value=False):
658 702 bid = test_bid_data()
659 703 bid.data.requirementResponses = []
660   - for criteria in data['criteria']:
661   - for requirements in criteria['requirementGroups']:
662   - for requirement in requirements['requirements']:
663   - if requirement.get('expectedValue'):
664   - value = requirement.get('expectedValue')
665   - else:
666   - value = fake.random_int(min=int(requirement.get('minValue')), max=int(data['value']['amount']))
667   - requirement = {
668   - "requirement": {"id": requirement['id']},
669   - "value": value
670   - }
671   - bid.data.requirementResponses.append(requirement)
  704 + if 'criteria' in data:
  705 + for criteria in data['criteria']:
  706 + for requirements in criteria['requirementGroups']:
  707 + for requirement in requirements['requirements']:
  708 + if requirement.get('expectedValue'):
  709 + value = requirement.get('expectedValue')
  710 + if invalid_expected_value:
  711 + value = "invalid_value"
  712 + else:
  713 + value = fake.random_int(min=int(requirement.get('minValue')), max=int(data['value']['amount']))
  714 + requirement = {
  715 + "requirement": {"id": requirement['id']},
  716 + "value": value
  717 + }
  718 + bid.data.requirementResponses.append(requirement)
  719 + if not more_than_two_requirements:
  720 + break
672 721 bid.data['status'] = 'draft'
673   - bid.data.update(test_bid_value(fake.random_int(min=1, max=int(data['value']['amount'])), data['value']['valueAddedTaxIncluded']))
  722 + bid.data.update(test_bid_value(fake.random_int(min=1, max=int(data['value']['amount'])),
  723 + data['value']['valueAddedTaxIncluded']))
674 724 if over_limit:
675 725 bid.data['value']['amount'] = int(data['value']['amount']) + fake.random_int(min=1, max=1000)
  726 + if missing_criteria:
  727 + del bid['data']['requirementResponses'][-1]
676 728 return bid
677 729
678 730
... ... @@ -1008,15 +1060,27 @@ def test_tender_data_esco(params, submissionMethodDetails, plan_data):
1008 1060 def test_tender_data_pq(params, submissionMethodDetails, plan_data):
1009 1061 data = test_tender_data(params, plan_data, ('tender',), submissionMethodDetails)
1010 1062 del data["minimalStep"]
  1063 + del data["title_en"]
1011 1064 data['procurementMethodType'] = 'priceQuotation'
1012   - if params['profile']:
1013   - data['profile'] = fake.valid_profile()
1014   - else:
  1065 + data["procuringEntity"]["kind"] = random.choice(['authority', 'defense', 'general', 'other', 'social', 'special'])
  1066 + data['profile'] = fake.valid_profile()
  1067 + if params.get('wrong_profile'):
1015 1068 data['profile'] = fake.invalid_profile()
1016   - if params['wrong_tender_date']:
  1069 + if params.get('wrong_tender_date'):
1017 1070 start_date = data['tenderPeriod']['startDate']
1018 1071 from op_robot_tests.tests_files.service_keywords import add_minutes_to_date
1019 1072 data['tenderPeriod']['endDate'] = add_minutes_to_date(start_date, 1)
  1073 + if params.get('empty_profile'):
  1074 + data['profile'] = ""
  1075 + if params.get('tender_wrong_status'):
  1076 + data['status'] = fake.wrong_status()
  1077 + if params.get('profiles_hidden_status'):
  1078 + data['profile'] = fake.profiles_hidden()
  1079 + if params.get('profiles_shortlistedfirms_empty'):
  1080 + data['profile'] = fake.shortlistedfirms_empty()
  1081 + if params.get('unknown_profile'):
  1082 + data['profile'] = fake.tender_unknown_profile()
  1083 +
1020 1084 return munchify(data)
1021 1085
1022 1086
... ... @@ -1066,10 +1130,18 @@ def invalid_gmdn_data():
1066 1130
1067 1131 def test_buyers_data():
1068 1132 buyers = {
  1133 + "kind": "general",
1069 1134 "identifier": {
1070 1135 "scheme": "UA-EDR",
1071 1136 "id": random.choice(["13313462", "00037256"]),
1072 1137 "legalName": random.choice([u"Київський Тестовий Ліцей", u"Київська Тестова міська клінічна лікарня"]),
  1138 + },
  1139 + "address": {
  1140 + "countryName": "Україна",
  1141 + "postalCode": "01220",
  1142 + "region": "м. Київ",
  1143 + "streetAddress": "вул. Банкова, 11, корпус 1",
  1144 + "locality": "м. Київ"
1073 1145 }
1074 1146 }
1075 1147 return munchify(buyers)
... ...
... ... @@ -182,8 +182,10 @@ Get Broker Property By Username
182 182 Run Keyword And Ignore Error Set To Dictionary ${artifact} tender_owner_access_token=${USERS.users['${tender_owner}'].access_token}
183 183 Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_access_token=${USERS.users['${provider}'].access_token}
184 184 Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_access_token=${USERS.users['${provider1}'].access_token}
  185 + Run Keyword And Ignore Error Set To Dictionary ${artifact} provider2_access_token=${USERS.users['${provider1}'].access_token}
185 186 Run Keyword And Ignore Error Set To Dictionary ${artifact} provider_bid_id=${USERS.users['${provider}'].bid_id}
186 187 Run Keyword And Ignore Error Set To Dictionary ${artifact} provider1_bid_id=${USERS.users['${provider1}'].bid_id}
  188 + Run Keyword And Ignore Error Set To Dictionary ${artifact} provider2_bid_id=${USERS.users['${provider1}'].bid_id}
187 189 Run Keyword And Ignore Error Set To Dictionary ${artifact}
188 190 ... tender_file_properties=${USERS.users['${tender_owner}'].tender_document.file_properties}
189 191 ... lot_file_properties=${USERS.users['${tender_owner}'].lots_documents[0].file_properties}
... ... @@ -330,7 +332,7 @@ Get Broker Property By Username
330 332
331 333
332 334 Підготувати дані для подання пропозиції
333   - ${bid}= generate_test_bid_data ${USERS.users['${tender_owner}'].initial_data.data}
  335 + ${bid}= generate_test_bid_data ${USERS.users['${tender_owner}'].tender_data.data}
334 336 [Return] ${bid}
335 337
336 338
... ... @@ -351,7 +353,14 @@ Get Broker Property By Username
351 353 Підготувати дані для подання пропозиції priceQuotation
352 354 [Arguments] ${username}
353 355 ${BID_OVER_LIMIT}= Get Variable Value ${BID_OVER_LIMIT} ${False}
354   - ${bid}= test_bid_data_pq ${USERS.users['${username}'].tender_data.data} ${BID_OVER_LIMIT}
  356 + ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING}= Get Variable Value ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING} ${False}
  357 + ${BID_SAME_GROUPS_DIFFERENT_CRITERIA}= Get Variable Value ${BID_SAME_GROUPS_DIFFERENT_CRITERIA} ${False}
  358 + ${BID_INVALID_EXPECTED_VALUE}= Get Variable Value ${BID_INVALID_EXPECTED_VALUE} ${False}
  359 + ${bid}= test_bid_data_pq ${USERS.users['${username}'].tender_data.data}
  360 + ... ${BID_OVER_LIMIT}
  361 + ... ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING}
  362 + ... ${BID_SAME_GROUPS_DIFFERENT_CRITERIA}
  363 + ... ${BID_INVALID_EXPECTED_VALUE}
355 364 [Return] ${bid}
356 365
357 366
... ... @@ -1217,6 +1226,19 @@ Require Failure
1217 1226 ... active.qualification
1218 1227
1219 1228
  1229 +Дочекатись дати початку періоду підписання угоди
  1230 + [Arguments] ${username} ${tender_uaid}
  1231 + Оновити LAST_MODIFICATION_DATE
  1232 + Дочекатись синхронізації з майданчиком ${username}
  1233 + Wait until keyword succeeds
  1234 + ... 40 min 15 sec
  1235 + ... 15 sec
  1236 + ... Звірити статус тендера
  1237 + ... ${username}
  1238 + ... ${tender_uaid}
  1239 + ... active.awarded
  1240 +
  1241 +
1220 1242 Дочекатись дати закінчення періоду кваліфікації
1221 1243 [Arguments] ${username} ${tender_uaid}
1222 1244 Дочекатись синхронізації з майданчиком ${username}
... ...
... ... @@ -35,6 +35,10 @@ class OP_Provider(BaseProvider):
35 35 procuringTenderers = _fake_data.procuringTenderers
36 36 valid_profile_ids = _fake_data.valid_profile_ids
37 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
38 42
39 43 @classmethod
40 44 def randomize_nb_elements(self, number=10, le=60, ge=140):
... ... @@ -234,3 +238,19 @@ class OP_Provider(BaseProvider):
234 238 @classmethod
235 239 def invalid_profile(self):
236 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)
... ...
... ... @@ -8155,16 +8155,31 @@
8155 8155 "anotherEvent"
8156 8156 ],
8157 8157 "valid_profile_ids": [
8158   - "400496-33600000-683398-42000777",
8159 8158 "999999-33140000-555666-42000111"
8160 8159 ],
8161 8160 "invalid_profile_ids": [
8162   - "195333-32420000-214469-40000777",
8163   - "195333-32420000-214469-40000777",
8164   - "116337-30120000-716781-40000777",
8165   - "955288-33140000-949200-42000777",
8166   - "488351-09130000-741375-40000777",
8167   - "834922-33600000-125367-42000777",
8168   - "966130-32420000-642438-40000777"
  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"
8169 8184 ]
8170 8185 }
... ...
... ... @@ -21,6 +21,9 @@ ${VAT_INCLUDED} ${True}
21 21 ${ROAD_INDEX} ${False}
22 22 ${GMDN_INDEX} ${False}
23 23 ${PLAN_TENDER} ${True}
  24 +${BID_AMOUNT_1} ${500}
  25 +${BID_AMOUNT_2} ${1000}
  26 +${BID_AMOUNT_3} ${1500}
24 27
25 28 *** Test Cases ***
26 29 Можливість оголосити тендер
... ... @@ -2044,7 +2047,7 @@ ${PLAN_TENDER} ${True}
2044 2047 ... critical
2045 2048 [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
2046 2049 [Teardown] Оновити LAST_MODIFICATION_DATE
2047   - Можливість подати цінову пропозицію на суму 500 користувачем ${provider}
  2050 + Можливість подати цінову пропозицію на суму ${BID_AMOUNT_1} користувачем ${provider}
2048 2051
2049 2052
2050 2053 Можливість зменшити пропозицію на 5% першим учасником
... ... @@ -2096,7 +2099,7 @@ ${PLAN_TENDER} ${True}
2096 2099 ... critical
2097 2100 [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
2098 2101 [Teardown] Оновити LAST_MODIFICATION_DATE
2099   - Можливість подати цінову пропозицію на суму 1000 користувачем ${provider1}
  2102 + Можливість подати цінову пропозицію на суму ${BID_AMOUNT_2} користувачем ${provider1}
2100 2103
2101 2104
2102 2105 Можливість зменшити пропозицію на 5% другим учасником
... ... @@ -2127,7 +2130,7 @@ ${PLAN_TENDER} ${True}
2127 2130 ... critical
2128 2131 [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
2129 2132 [Teardown] Оновити LAST_MODIFICATION_DATE
2130   - Можливість подати цінову пропозицію на суму 1500 користувачем ${provider2}
  2133 + Можливість подати цінову пропозицію на суму ${BID_AMOUNT_3} користувачем ${provider2}
2131 2134
2132 2135 ##############################################################################################
2133 2136 # ABOVETRHESHOLD BIDDING
... ...
... ... @@ -21,7 +21,6 @@ ${VAT_INCLUDED} ${True}
21 21 ${ROAD_INDEX} ${False}
22 22 ${GMDN_INDEX} ${False}
23 23 ${PLAN_TENDER} ${True}
24   -${PROFILE} ${True}
25 24
26 25 *** Test Cases ***
27 26 Неможливість оголосити тендер з tenderPeriod:endDate < 2 робочих дні
... ... @@ -32,7 +31,119 @@ ${PROFILE} ${True}
32 31 ... critical
33 32 [Teardown] Оновити LAST_MODIFICATION_DATE
34 33 Set Test Variable ${WRONG_TENDER_DATE} ${True}
35   - Run Keyword And Expect Error * Можливість оголосити тендер
  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 + Можливість оголосити тендер з недоліками в параметрах
36 147
37 148
38 149 Можливість оголосити тендер
... ... @@ -45,6 +156,29 @@ ${PROFILE} ${True}
45 156 Можливість оголосити тендер
46 157
47 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 +
48 182 Можливість знайти тендер по ідентифікатору
49 183 [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера
50 184 ... viewer tender_owner provider provider1
... ... @@ -65,6 +199,26 @@ ${PROFILE} ${True}
65 199 Звірити відображення поля title тендера для користувача ${viewer}
66 200
67 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 +
68 222 Відображення опису тендера
69 223 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
70 224 ... viewer
... ... @@ -159,6 +313,17 @@ ${PROFILE} ${True}
159 313 Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
160 314
161 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 +
162 327 Неможливість подати пропозицію з перевищеним лімітом
163 328 [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
164 329 ... provider
... ... @@ -170,6 +335,45 @@ ${PROFILE} ${True}
170 335 Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
171 336
172 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 +
173 377 Можливість подати пропозицію першим учасником
174 378 [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
175 379 ... provider
... ... @@ -233,6 +437,17 @@ ${PROFILE} ${True}
233 437 Можливість подати цінову пропозицію priceQuotation користувачем ${provider2}
234 438
235 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 +
236 451 Можливість дочекатись дати початку періоду кваліфікації
237 452 [Tags] ${USERS.users['${provider}'].broker}: Подання кваліфікації
238 453 ... provider
... ... @@ -243,6 +458,20 @@ ${PROFILE} ${True}
243 458 Дочекатись дати початку періоду кваліфікації ${provider} ${TENDER['TENDER_UAID']}
244 459
245 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 +
246 475 Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження постачальника
247 476 [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
248 477 ... tender_owner
... ... @@ -268,6 +497,18 @@ ${PROFILE} ${True}
268 497 Remove File ${file_path}
269 498
270 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 +
271 512 Можливість дискваліфікуватися постачальником
272 513 [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
273 514 ... provider
... ... @@ -279,6 +520,17 @@ ${PROFILE} ${True}
279 520 Run As ${user} Дискваліфікувати постачальника ${TENDER['TENDER_UAID']} 0
280 521
281 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 +
282 534 Можливість дискваліфікації другого постачальника, якщо 2 дні не було підтвердження
283 535 [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
284 536 ... tender_owner
... ... @@ -413,6 +665,61 @@ ${PROFILE} ${True}
413 665 Дочекатися припинення процесу ${viewer} ${TENDER['TENDER_UAID']}
414 666
415 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 +
416 723 Відображення статусу завершення, якщо не було подано жодних пропозицій
417 724 [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера
418 725 ... viewer tender_owner provider provider1
... ... @@ -423,6 +730,58 @@ ${PROFILE} ${True}
423 730 Дочекатись зміни статусу unsuccessful ${viewer} ${TENDER['TENDER_UAID']}
424 731
425 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 +
426 785 Можливість редагувати вартість угоди без урахування ПДВ
427 786 [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
428 787 ... tender_owner
... ... @@ -443,6 +802,19 @@ ${PROFILE} ${True}
443 802 ... ${amount_net}
444 803
445 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 +
446 818 Можливість редагувати вартість угоди
447 819 ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer}
448 820 ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner}
... ... @@ -465,6 +837,78 @@ ${PROFILE} ${True}
465 837 ... ${amount}
466 838
467 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 +
468 912 Можливість укласти угоду для закупівлі
469 913 [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди
470 914 ... tender_owner
... ... @@ -489,6 +933,201 @@ ${PROFILE} ${True}
489 933 Звірити відображення поля contracts[${contract_index}].status тендера із active для користувача ${viewer}
490 934
491 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 +
492 1131 Відображення статусу успішного завершення тендера
493 1132 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
494 1133 ... viewer
... ... @@ -565,3 +1204,13 @@ ${PROFILE} ${True}
565 1204 Звірити відображення поля ${field} документа ${doc_id} до скасування ${cancel_id} із ${left} для користувача ${username}
566 1205 ${right}= Run As ${username} Отримати інформацію із документа до скасування ${TENDER['TENDER_UAID']} ${cancel_id} ${doc_id} ${field}
567 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}
... ...
... ... @@ -228,7 +228,15 @@ ${award_index} ${0}
228 228 Повідомлення в awards про невіповідність пропозиції 0
229 229
230 230
231   -Можливість завантажити документ в пропозицію першим учасником
  231 +Неможливість визначити переможця до завершення dueDate
  232 + [Tags] ${USERS.users['${tender_owner}'].broker}:
  233 + ... tender_owner
  234 + ... ${USERS.users['${tender_owner}'].broker}
  235 + ... qualification_approve_award_dueDate_error
  236 + run keyword and expect error * Підтвердити постачальника ${tender_owner} ${TENDER['TENDER_UAID']} 0
  237 +
  238 +
  239 +Можливість завантажити документ в пропозицію учасником 24 години
232 240 [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
233 241 ... provider
234 242 ... ${USERS.users['${provider}'].broker}
... ... @@ -248,6 +256,26 @@ ${award_index} ${0}
248 256 Можливість змінити документацію цінової пропозиції при усуненні невідповідності користувачем ${provider}
249 257
250 258
  259 +Можливість завантажити документ в пропозицію учасником аномально низька ціна
  260 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  261 + ... provider
  262 + ... ${USERS.users['${provider}'].broker}
  263 + ... add_doc_to_bid_by_provider_alp_qualification
  264 + ... critical
  265 + [Teardown] Оновити LAST_MODIFICATION_DATE
  266 + Можливість завантажити обгрунтування аномально низької ціни до пропозиції учасником ${provider} documents evidence
  267 +
  268 +
  269 +Можливість змінити документацію цінової пропозиції учасником аномально низька ціна
  270 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  271 + ... provider
  272 + ... ${USERS.users['${provider}'].broker}
  273 + ... change_doc_to_bid_by_provider_alp_qualification
  274 + ... critical
  275 + [Teardown] Оновити LAST_MODIFICATION_DATE
  276 + Можливість змінити документацію обгрунтування аномально низької ціни користувачем ${provider}
  277 +
  278 +
251 279 Можливість дочекатися перевірки переможців по ЄДРПОУ
252 280 [Tags] ${USERS.users['${tender_owner}'].broker}: Перевірка користувача по ЄДРПОУ
253 281 ... tender_owner
... ...
... ... @@ -772,3 +772,7 @@ def edit_tender_data_for_plan_tender(data, mode, data_version):
772 772 if data_version is 4:
773 773 dict_data['data']['procurementMethodType'] = plan_tedner_test_data[data_version]
774 774 return munchify(dict_data)
  775 +
  776 +
  777 +def get_lowest_value_from_list(list_value):
  778 + return min(list_value)
... ...
  1 +-v MODE:openua
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  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 +
  13 +-i make_bid_fixed_amount_by_provider
  14 +-i make_bid_fixed_amount_by_provider1
  15 +-i make_bid_fixed_amount_by_provider2
  16 +
  17 +-i wait_active_qualification_start
  18 +-i qualification_approve_award_dueDate_error
  19 +-i add_doc_to_bid_by_provider_alp_qualification
  20 +-i qualification_add_doc_to_first_award
  21 +-i qualification_approve_first_award
... ...
  1 +-v MODE:belowThreshold
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i wait_active_qualification_start
  18 +
  19 +-i qualification_approve_first_award
  20 +-i qualification_approve_second_award
  21 +
  22 +-i wait_active_awarded_start
  23 +
  24 +-i award_stand_still
  25 +
  26 +-i lot_cancellation
  27 +-i lot_cancellation_view
  28 +
  29 +-i tender_cancellation
  30 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_esco
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v FUNDING_KIND:budget
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +
  15 +-i make_bid_by_provider
  16 +-i make_bid_by_provider1
  17 +-i make_bid_by_provider2
  18 +
  19 +-i tender_complaintPeriond_stand_still
  20 +
  21 +-i wait_active_pre-qualification_start
  22 +
  23 +-i pre-qualification_view
  24 +-i pre-qualification_approve_first_bid
  25 +-i pre-qualification_approve_second_bid
  26 +-i pre-qualification_approve_third_bid
  27 +-i pre-qualification_approve_fourth_bid
  28 +-i pre-qualification_approve_fifth_bid
  29 +-i pre-qualification_approve_sixth_bid
  30 +-i pre-qualification_approve_qualifications
  31 +
  32 +-i wait_active_qualification_start
  33 +
  34 +-i qualification_approve_first_award
  35 +-i qualification_approve_second_award
  36 +
  37 +-i wait_active_awarded_start
  38 +
  39 +-i award_stand_still
  40 +
  41 +-i lot_cancellation
  42 +-i lot_cancellation_stand_still
  43 +-i lot_cancellation_view
  44 +
  45 +-i tender_cancellation
  46 +-i tender_cancellation_stand_still
  47 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_framework
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_pre-qualification_start
  20 +
  21 +-i pre-qualification_view
  22 +-i pre-qualification_approve_first_bid
  23 +-i pre-qualification_approve_second_bid
  24 +-i pre-qualification_approve_third_bid
  25 +-i pre-qualification_approve_qualifications
  26 +
  27 +-i wait_active_qualification_start
  28 +
  29 +-i qualification_approve_first_award
  30 +-i qualification_approve_second_award
  31 +-i qualification_approve_third_award
  32 +-i qualification_approve_qualifications
  33 +
  34 +-i wait_active_awarded_start
  35 +
  36 +-i award_stand_still
  37 +
  38 +-i tender_cancellation
  39 +-i tender_cancellation_stand_still
  40 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:framework_selection
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_stage2
  11 +-i find_tender_tender_owner
  12 +-i find_tender
  13 +
  14 +-i selection_make_bid_by_provider
  15 +-i selection_make_bid_by_provider1
  16 +
  17 +-i wait_active_qualification_start
  18 +
  19 +-i qualification_approve_first_award
  20 +
  21 +-i wait_active_awarded_start
  22 +
  23 +-i tender_cancellation
  24 +-i tender_cancellation_stand_still
  25 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:openeu
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_pre-qualification_start
  20 +
  21 +-i pre-qualification_view
  22 +-i pre-qualification_approve_first_bid
  23 +-i pre-qualification_approve_second_bid
  24 +-i pre-qualification_approve_third_bid
  25 +-i pre-qualification_approve_fourth_bid
  26 +-i pre-qualification_approve_fifth_bid
  27 +-i pre-qualification_approve_sixth_bid
  28 +-i pre-qualification_approve_qualifications
  29 +
  30 +-i wait_active_qualification_start
  31 +
  32 +-i qualification_approve_first_award
  33 +-i qualification_approve_second_award
  34 +
  35 +-i wait_active_awarded_start
  36 +
  37 +-i award_stand_still
  38 +
  39 +-i lot_cancellation
  40 +-i lot_cancellation_stand_still
  41 +-i lot_cancellation_view
  42 +
  43 +-i tender_cancellation
  44 +-i tender_cancellation_stand_still
  45 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:openua
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_qualification_start
  20 +
  21 +-i qualification_approve_first_award
  22 +-i qualification_approve_second_award
  23 +
  24 +-i wait_active_awarded_start
  25 +
  26 +-i award_stand_still
  27 +
  28 +-i lot_cancellation
  29 +-i lot_cancellation_stand_still
  30 +-i lot_cancellation_view
  31 +
  32 +-i tender_cancellation
  33 +-i tender_cancellation_stand_still
  34 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:openua_defense
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_qualification_start
  20 +
  21 +-i lot_cancellation
  22 +-i lot_cancellation_stand_still
  23 +-i lot_cancellation_view
  24 +
  25 +-i tender_cancellation
  26 +-i tender_cancellation_stand_still
  27 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:belowThreshold
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i lot_cancellation
  14 +-i lot_cancellation_view
  15 +
  16 +-i tender_cancellation
  17 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:framework_selection
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_stage2
  11 +-i find_tender_tender_owner
  12 +-i find_tender
  13 +
  14 +-i tender_cancellation
  15 +-i tender_cancellation_stand_still
  16 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_competitive_dialogue
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 tender_view
  13 +
  14 +-i make_bid_by_provider
  15 +-i make_bid_by_provider1
  16 +-i make_bid_by_provider2
  17 +
  18 +-i tender_complaintPeriond_stand_still
  19 +
  20 +-i wait_active_pre-qualification_start
  21 +
  22 +-i lot_cancellation
  23 +-i lot_cancellation_stand_still
  24 +-i lot_cancellation_view
  25 +
  26 +-i tender_cancellation
  27 +-i tender_cancellation_stand_still
  28 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_competitive_dialogue
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v DIALOGUE_TYPE:UA
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +-i tender_view
  15 +
  16 +-i make_bid_by_provider
  17 +-i make_bid_by_provider1
  18 +-i make_bid_by_provider2
  19 +
  20 +-i tender_complaintPeriond_stand_still
  21 +
  22 +-i wait_active_pre-qualification_start
  23 +
  24 +-i lot_cancellation
  25 +-i lot_cancellation_stand_still
  26 +-i lot_cancellation_view
  27 +
  28 +-i tender_cancellation
  29 +-i tender_cancellation_stand_still
  30 +-i tender_cancellation_view
... ...
  1 +-v MODE:open_esco
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v FUNDING_KIND:budget
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +
  15 +-i make_bid_by_provider
  16 +-i make_bid_by_provider1
  17 +-i make_bid_by_provider2
  18 +
  19 +-i tender_complaintPeriond_stand_still
  20 +
  21 +-i wait_active_pre-qualification_start
  22 +
  23 +-i lot_cancellation
  24 +-i lot_cancellation_stand_still
  25 +-i lot_cancellation_view
  26 +
  27 +-i tender_cancellation
  28 +-i tender_cancellation_stand_still
  29 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_framework
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_pre-qualification_start
  20 +
  21 +-i tender_cancellation
  22 +-i tender_cancellation_stand_still
  23 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:openeu
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_pre-qualification_start
  20 +
  21 +-i lot_cancellation
  22 +-i lot_cancellation_stand_still
  23 +-i lot_cancellation_view
  24 +
  25 +-i tender_cancellation
  26 +-i tender_cancellation_stand_still
  27 +-i tender_cancellation_view
  28 +
... ...
  1 +-v MODE:belowThreshold
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +
  16 +-i wait_active_qualification_start
  17 +
  18 +-i lot_cancellation
  19 +-i lot_cancellation_view
  20 +
  21 +-i tender_cancellation
  22 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_competitive_dialogue
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 tender_view
  13 +
  14 +-i make_bid_by_provider
  15 +-i make_bid_by_provider1
  16 +-i make_bid_by_provider2
  17 +
  18 +-i pre-qualification_approve_first_bid
  19 +-i pre-qualification_approve_second_bid
  20 +-i pre-qualification_approve_third_bid
  21 +-i pre-qualification_approve_fourth_bid
  22 +-i pre-qualification_approve_fifth_bid
  23 +-i pre-qualification_approve_sixth_bid
  24 +-i pre-qualification_approve_qualifications
  25 +
  26 +-i stage2_pending_status_view
  27 +-i wait_bridge_for_work
  28 +-i activate_second_stage
  29 +-i get_second_stage
  30 +-i compare_stages
  31 +
  32 +-i save_tender_second_stage
  33 +
  34 +-i make_bid_by_provider_second_stage
  35 +-i make_bid_by_provider1_second_stage
  36 +
  37 +-i pre-qualification_approve_first_bid_second_stage
  38 +-i pre-qualification_approve_second_bid_second_stage
  39 +-i pre-qualification_approve_qualifications_second_stage
  40 +
  41 +-i wait_active_qualification_start
  42 +
  43 +-i lot_cancellation
  44 +-i lot_cancellation_stand_still
  45 +-i lot_cancellation_view
  46 +
  47 +-i tender_cancellation
  48 +-i tender_cancellation_stand_still
  49 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_competitive_dialogue
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v DIALOGUE_TYPE:UA
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +-i tender_view
  15 +
  16 +-i make_bid_by_provider
  17 +-i make_bid_by_provider1
  18 +-i make_bid_by_provider2
  19 +
  20 +-i pre-qualification_approve_first_bid
  21 +-i pre-qualification_approve_second_bid
  22 +-i pre-qualification_approve_third_bid
  23 +-i pre-qualification_approve_fourth_bid
  24 +-i pre-qualification_approve_fifth_bid
  25 +-i pre-qualification_approve_sixth_bid
  26 +-i pre-qualification_approve_qualifications
  27 +
  28 +-i stage2_pending_status_view
  29 +-i wait_bridge_for_work
  30 +-i activate_second_stage
  31 +-i get_second_stage
  32 +-i compare_stages
  33 +
  34 +-i save_tender_second_stage
  35 +
  36 +
  37 +-i make_bid_by_provider_second_stage
  38 +-i make_bid_by_provider1_second_stage
  39 +
  40 +-i wait_active_qualification_start
  41 +
  42 +-i lot_cancellation
  43 +-i lot_cancellation_stand_still
  44 +-i lot_cancellation_view
  45 +
  46 +-i tender_cancellation
  47 +-i tender_cancellation_stand_still
  48 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_esco
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v FUNDING_KIND:budget
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +
  15 +-i make_bid_by_provider
  16 +-i make_bid_by_provider1
  17 +-i make_bid_by_provider2
  18 +
  19 +-i tender_complaintPeriond_stand_still
  20 +
  21 +-i wait_active_pre-qualification_start
  22 +
  23 +-i pre-qualification_view
  24 +-i pre-qualification_approve_first_bid
  25 +-i pre-qualification_approve_second_bid
  26 +-i pre-qualification_approve_third_bid
  27 +-i pre-qualification_approve_fourth_bid
  28 +-i pre-qualification_approve_fifth_bid
  29 +-i pre-qualification_approve_sixth_bid
  30 +-i pre-qualification_approve_qualifications
  31 +
  32 +-i wait_active_qualification_start
  33 +
  34 +-i lot_cancellation
  35 +-i lot_cancellation_stand_still
  36 +-i lot_cancellation_view
  37 +
  38 +-i tender_cancellation
  39 +-i tender_cancellation_stand_still
  40 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_framework
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_pre-qualification_start
  20 +
  21 +-i pre-qualification_view
  22 +-i pre-qualification_approve_first_bid
  23 +-i pre-qualification_approve_second_bid
  24 +-i pre-qualification_approve_third_bid
  25 +-i pre-qualification_approve_qualifications
  26 +
  27 +-i wait_active_qualification_start
  28 +
  29 +-i tender_cancellation
  30 +-i tender_cancellation_stand_still
  31 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:framework_selection
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_stage2
  11 +-i find_tender_tender_owner
  12 +-i find_tender
  13 +
  14 +-i selection_make_bid_by_provider
  15 +-i selection_make_bid_by_provider1
  16 +
  17 +-i wait_active_qualification_start
  18 +
  19 +-i tender_cancellation
  20 +-i tender_cancellation_stand_still
  21 +-i tender_cancellation_view
... ...
  1 +-v MODE:openeu
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_pre-qualification_start
  20 +
  21 +-i pre-qualification_view
  22 +-i pre-qualification_approve_first_bid
  23 +-i pre-qualification_approve_second_bid
  24 +-i pre-qualification_approve_third_bid
  25 +-i pre-qualification_approve_fourth_bid
  26 +-i pre-qualification_approve_fifth_bid
  27 +-i pre-qualification_approve_sixth_bid
  28 +-i pre-qualification_approve_qualifications
  29 +
  30 +-i wait_active_qualification_start
  31 +
  32 +-i lot_cancellation
  33 +-i lot_cancellation_stand_still
  34 +-i lot_cancellation_view
  35 +
  36 +-i tender_cancellation
  37 +-i tender_cancellation_stand_still
  38 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:openua
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_qualification_start
  20 +
  21 +-i lot_cancellation
  22 +-i lot_cancellation_stand_still
  23 +-i lot_cancellation_view
  24 +
  25 +-i tender_cancellation
  26 +-i tender_cancellation_stand_still
  27 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:openua_defense
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 +
  13 +-i make_bid_by_provider
  14 +-i make_bid_by_provider1
  15 +-i make_bid_by_provider2
  16 +
  17 +-i tender_complaintPeriond_stand_still
  18 +
  19 +-i wait_active_qualification_start
  20 +
  21 +-i lot_cancellation
  22 +-i lot_cancellation_stand_still
  23 +-i lot_cancellation_view
  24 +
  25 +-i tender_cancellation
  26 +-i tender_cancellation_stand_still
  27 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_competitive_dialogue
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  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 tender_view
  13 +
  14 +-i make_bid_by_provider
  15 +-i make_bid_by_provider1
  16 +-i make_bid_by_provider2
  17 +
  18 +-i pre-qualification_approve_first_bid
  19 +-i pre-qualification_approve_second_bid
  20 +-i pre-qualification_approve_third_bid
  21 +-i pre-qualification_approve_fourth_bid
  22 +-i pre-qualification_approve_fifth_bid
  23 +-i pre-qualification_approve_sixth_bid
  24 +-i pre-qualification_approve_qualifications
  25 +
  26 +-i stage2_pending_status_view
  27 +-i wait_bridge_for_work
  28 +-i activate_second_stage
  29 +-i get_second_stage
  30 +-i compare_stages
  31 +
  32 +-i save_tender_second_stage
  33 +
  34 +-i lot_cancellation
  35 +-i lot_cancellation_stand_still
  36 +-i lot_cancellation_view
  37 +
  38 +-i tender_cancellation
  39 +-i tender_cancellation_stand_still
  40 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_competitive_dialogue
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:2
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-v DIALOGUE_TYPE:UA
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +-i tender_view
  15 +
  16 +-i make_bid_by_provider
  17 +-i make_bid_by_provider1
  18 +-i make_bid_by_provider2
  19 +
  20 +-i pre-qualification_approve_first_bid
  21 +-i pre-qualification_approve_second_bid
  22 +-i pre-qualification_approve_third_bid
  23 +-i pre-qualification_approve_fourth_bid
  24 +-i pre-qualification_approve_fifth_bid
  25 +-i pre-qualification_approve_sixth_bid
  26 +-i pre-qualification_approve_qualifications
  27 +
  28 +-i stage2_pending_status_view
  29 +-i wait_bridge_for_work
  30 +-i activate_second_stage
  31 +-i get_second_stage
  32 +-i compare_stages
  33 +
  34 +-i save_tender_second_stage
  35 +
  36 +-i lot_cancellation
  37 +-i lot_cancellation_stand_still
  38 +-i lot_cancellation_view
  39 +
  40 +-i tender_cancellation
  41 +-i tender_cancellation_stand_still
  42 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:framework_selection
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_stage2
  11 +-i find_tender_tender_owner
  12 +-i find_tender
  13 +
  14 +-i selection_make_bid_by_provider
  15 +-i selection_make_bid_by_provider1
  16 +
  17 +-i tender_cancellation
  18 +-i tender_cancellation_stand_still
  19 +-i tender_cancellation_view
\ No newline at end of file
... ...
  1 +-v MODE:open_framework
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +
  6 +-v TENDER_MEAT:True
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +-i find_tender
  12 +
  13 +-i tender_view
  14 +
  15 +-i make_bid_by_provider
  16 +-i make_bid_by_provider1
  17 +-i make_bid_by_provider2
  18 +
  19 +-i openeu_add_financial_bid_doc_by_provider
  20 +-i openeu_add_qualification_bid_doc_by_provider
  21 +-i openeu_add_eligibility_bid_doc_by_provider
  22 +-i add_winningBid_doc_by_provider
  23 +
  24 +-i pre-qualification_view
  25 +
  26 +-i pre-qualification_approve_first_bid
  27 +-i pre-qualification_reject_second_bid
  28 +-i pre-qualification_cancel_second_bid_qualification
  29 +-i pre-qualification_approve_second_bid
  30 +-i pre-qualification_approve_third_bid
  31 +-i pre-qualification_approve_qualifications
  32 +
  33 +-i qualification_approve_first_award
  34 +-i qualification_add_doc_to_second_award
  35 +-i qualification_approve_second_award
  36 +-i qualification_add_doc_to_third_award
  37 +-i qualification_approve_third_award
  38 +-i qualification_approve_qualifications
  39 +
  40 +-i contract_stand_still
  41 +-i awarding_approve_first_award
  42 +-i modify_agreement
  43 +-i agreement_registration
  44 +
  45 +-i find_agreement
  46 +-i add_agreement_doc
  47 +-i submit_change
  48 +-i change_view
  49 +-i modification
  50 +-i modification_view
  51 +-i apply_change
\ No newline at end of file
... ...
... ... @@ -7,9 +7,6 @@
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9 9
10   --v PROFILE:True
11   -
12   --i create_tender_wrong_date
13 10 -i create_tender
14 11 -i find_tender
15 12 -i extend_tendering_period
... ... @@ -25,13 +22,32 @@
25 22 -i add_doc_to_bid_by_provider
26 23 -i add_doc_to_bid_by_provider
27 24 -i make_bid_by_provider1
  25 +-i make_bid_by_provider2
28 26
29 27 -i awardPeriod_startDate
  28 +-i award_view_min_amount
30 29 -i disqualification_first_award_by_provider
31 30 -i qualification_approve_second_award_by_provider
32 31
  32 +-i contract_view
  33 +-i modify_contract_invalid_amountNet_tender_vat_true
33 34 -i modify_contract_amount_net
  35 +-i contract_view_new_amountNet
34 36 -i modify_contract_value
  37 +-i contract_view_new_amount
  38 +-i modify_contract_invalid_amount
  39 +-i modify_contract
35 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
36 52 -i agreement_registration
37 53
... ...
... ... @@ -6,8 +6,8 @@
6 6 -v TENDER_MEAT:False
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9   --v PROFILE:False
10 9
11   --i create_tender
  10 +-i create_tender_invalid_profile
12 11 -i find_tender
13 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_hidden
  11 +-i unsuccessfully_tender_verification_wrong_profile
  12 +-i tender_unsuccessfully_reason_profile_hidden
... ...
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_shortlistedfirms_empty
  11 +-i unsuccessfully_tender_verification_wrong_profile
  12 +-i tender_unsuccessfully_reason_shortlistedfirms_empty
\ No newline at end of file
... ...
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_unknown_profile
  11 +-i unsuccessfully_tender_verification_wrong_profile
  12 +-i tender_unsuccessfully_reason_unknown_profile
... ...
... ... @@ -6,7 +6,6 @@
6 6 -v TENDER_MEAT:False
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9   --v PROFILE:True
10 9
11 10 -i create_tender
12 11 -i find_tender
... ...
... ... @@ -6,7 +6,6 @@
6 6 -v TENDER_MEAT:False
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9   --v PROFILE:True
10 9
11 10 -i create_tender
12 11 -i find_tender
... ...
... ... @@ -6,7 +6,6 @@
6 6 -v TENDER_MEAT:False
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9   --v PROFILE:True
10 9
11 10 -i create_tender
12 11 -i find_tender
... ...
... ... @@ -7,8 +7,6 @@
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9 9
10   --v PROFILE:True
11   -
12 10 -i create_tender
13 11 -i find_tender
14 12
... ...
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_wrong_date
  11 +-i create_tender_empty_profile
  12 +-i create_tender
  13 +-i impossible_change_tendering_status
  14 +-i successfully_tender_validation
  15 +-i change_data_active_tendering
... ...
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_without_2_phase_commit
  11 +-i tender_view_status_draft
  12 +-i patch_tender_wrong_date
  13 +-i patch_tender_wrong_procuringEntity_kind
  14 +-i impossible_change_tender_status_form_draft_to_another_except_draft_publishing
  15 +-i impossible_make_bid_when_draft
\ No newline at end of file
... ...
... ... @@ -7,18 +7,20 @@
7 7 -v ITEM_MEAT:False
8 8 -v LOT_MEAT:False
9 9
10   --v PROFILE:True
11   -
12 10 -i create_tender
13 11
14   --i succefully_tender_verification
  12 +-i successfully_tender_validation
  13 +-i impossible_make_bid
15 14 -i make_bid_by_provider
16 15 -i make_bid_by_provider1
  16 +-i delete_bid_while_tendering_period_by_provider
17 17 -i make_bid_by_provider2
18 18
19 19 -i awardPeriod_startDate
20 20 -i impossible_approve_first_award_by_customer
  21 +-i impossible_cancel_1_award_qualification_by_provider
21 22 -i disqualification_first_award_by_provider
  23 +-i cancel_bid_after_tendering_period_by_provider
22 24 -i qualification_reject_second_award_after_2_days
23 25
24 26 -i qualification_approve_third_award_by_provider
... ...
Please register or login to post a comment