Commit b9e159c16694bbd2c1a847b4cc181b71182fa0e6
1 parent
717a1ec6
keywords and function for test case 'Можливість створити план закупівлі'
Showing
3 changed files
with
60 additions
and
1 deletions
@@ -37,6 +37,25 @@ Resource resource.robot | @@ -37,6 +37,25 @@ Resource resource.robot | ||
37 | \ Should Match Regexp ${document_url} ^https?:\/\/public.docs(?:-sandbox)?\.openprocurement\.org\/get\/([0-9A-Fa-f]{32}) msg=Not a Document Service Upload | 37 | \ Should Match Regexp ${document_url} ^https?:\/\/public.docs(?:-sandbox)?\.openprocurement\.org\/get\/([0-9A-Fa-f]{32}) msg=Not a Document Service Upload |
38 | 38 | ||
39 | 39 | ||
40 | +Можливість створити план закупівлі | ||
41 | + ${NUMBER_OF_LOTS}= Convert To Integer ${NUMBER_OF_LOTS} | ||
42 | + ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS} | ||
43 | + ${tender_parameters}= Create Dictionary | ||
44 | + ... mode=${MODE} | ||
45 | + ... number_of_items=${NUMBER_OF_ITEMS} | ||
46 | + ... number_of_lots=${NUMBER_OF_LOTS} | ||
47 | + ... tender_meat=${${TENDER_MEAT}} | ||
48 | + ... lot_meat=${${LOT_MEAT}} | ||
49 | + ... item_meat=${${ITEM_MEAT}} | ||
50 | + ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE} | ||
51 | + Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE} | ||
52 | + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters} | ||
53 | + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_data} | ||
54 | + ${TENDER_UAID}= Run As ${tender_owner} Створити план ${adapted_data} | ||
55 | + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data} | ||
56 | + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} | ||
57 | + | ||
58 | + | ||
40 | Можливість знайти тендер по ідентифікатору для усіх користувачів | 59 | Можливість знайти тендер по ідентифікатору для усіх користувачів |
41 | :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer} | 60 | :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer} |
42 | \ Можливість знайти тендер по ідентифікатору для користувача ${username} | 61 | \ Можливість знайти тендер по ідентифікатору для користувача ${username} |
@@ -17,6 +17,19 @@ Library openprocurement_client.utils | @@ -17,6 +17,19 @@ Library openprocurement_client.utils | ||
17 | [return] ${tender_id} | 17 | [return] ${tender_id} |
18 | 18 | ||
19 | 19 | ||
20 | +Отримати internal id плану по UAid | ||
21 | + [Arguments] ${username} ${tender_uaid} | ||
22 | + Log ${username} | ||
23 | + Log ${tender_uaid} | ||
24 | + Log Many ${USERS.users['${username}'].id_map} | ||
25 | + ${status}= Run Keyword And Return Status Dictionary Should Contain Key ${USERS.users['${username}'].id_map} ${tender_uaid} | ||
26 | + Run Keyword And Return If ${status} Get From Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} | ||
27 | + Call Method ${USERS.users['${username}'].client} get_plans | ||
28 | + ${tender_id}= Wait Until Keyword Succeeds 5x 30 sec get_plan_id_by_uaid ${tender_uaid} ${USERS.users['${username}'].client} | ||
29 | + Set To Dictionary ${USERS.users['${username}'].id_map} ${tender_uaid} ${tender_id} | ||
30 | + [return] ${tender_id} | ||
31 | + | ||
32 | + | ||
20 | Підготувати клієнт для користувача | 33 | Підготувати клієнт для користувача |
21 | [Arguments] ${username} | 34 | [Arguments] ${username} |
22 | [Documentation] Відкрити браузер, створити об’єкти api wrapper і | 35 | [Documentation] Відкрити браузер, створити об’єкти api wrapper і |
@@ -32,7 +45,9 @@ Library openprocurement_client.utils | @@ -32,7 +45,9 @@ Library openprocurement_client.utils | ||
32 | # Uncomment this line if there is need to process files operations without DS. | 45 | # Uncomment this line if there is need to process files operations without DS. |
33 | # ${ds_api_wraper}= set variable ${None} | 46 | # ${ds_api_wraper}= set variable ${None} |
34 | ${ds_api_wraper}= prepare_ds_api_wrapper ${DS_HOST_URL} ${auth_ds} | 47 | ${ds_api_wraper}= prepare_ds_api_wrapper ${DS_HOST_URL} ${auth_ds} |
35 | - ${api_wrapper}= prepare_api_wrapper ${USERS.users['${username}'].api_key} ${RESOURCE} ${API_HOST_URL} ${API_VERSION} ${ds_api_wraper} | 48 | + ${api_wrapper}= Run Keyword If '${MODE}' == 'planning' |
49 | + ... prepare_plan_api_wrapper ${USERS.users['${username}'].api_key} ${API_HOST_URL} ${API_VERSION} | ||
50 | + ... ELSE prepare_api_wrapper ${USERS.users['${username}'].api_key} ${RESOURCE} ${API_HOST_URL} ${API_VERSION} ${ds_api_wraper} | ||
36 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} | 51 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} |
37 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} | 52 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} |
38 | ${id_map}= Create Dictionary | 53 | ${id_map}= Create Dictionary |
@@ -117,6 +132,20 @@ Library openprocurement_client.utils | @@ -117,6 +132,20 @@ Library openprocurement_client.utils | ||
117 | [return] ${tender.data.tenderID} | 132 | [return] ${tender.data.tenderID} |
118 | 133 | ||
119 | 134 | ||
135 | +Створити план | ||
136 | + [Arguments] ${username} ${tender_data} | ||
137 | + ${tender}= Call Method ${USERS.users['${username}'].client} create_plan ${tender_data} | ||
138 | + Log ${tender} | ||
139 | + ${access_token}= Get Variable Value ${tender.access.token} | ||
140 | + ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender} | ||
141 | + Log ${tender} | ||
142 | + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/plans/${tender.data.id}${\n} WARN | ||
143 | + Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} | ||
144 | + Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} | ||
145 | + Log ${USERS.users['${username}'].tender_data} | ||
146 | + [return] ${tender.data.planID} | ||
147 | + | ||
148 | + | ||
120 | Пошук тендера по ідентифікатору | 149 | Пошук тендера по ідентифікатору |
121 | [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data | 150 | [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data |
122 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} | 151 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} |
1 | from openprocurement_client.client import Client, EDRClient | 1 | from openprocurement_client.client import Client, EDRClient |
2 | from openprocurement_client.document_service_client \ | 2 | from openprocurement_client.document_service_client \ |
3 | import DocumentServiceClient | 3 | import DocumentServiceClient |
4 | +from openprocurement_client.plan import PlansClient | ||
4 | from openprocurement_client.exceptions import IdNotFound | 5 | from openprocurement_client.exceptions import IdNotFound |
5 | from restkit.errors import RequestFailed, BadStatusLine | 6 | from restkit.errors import RequestFailed, BadStatusLine |
6 | from retrying import retry | 7 | from retrying import retry |
@@ -106,3 +107,13 @@ def download_file_from_url(url, path_to_save_file): | @@ -106,3 +107,13 @@ def download_file_from_url(url, path_to_save_file): | ||
106 | f.write(urllib.urlopen(url).read()) | 107 | f.write(urllib.urlopen(url).read()) |
107 | f.close() | 108 | f.close() |
108 | return os.path.basename(f.name) | 109 | return os.path.basename(f.name) |
110 | + | ||
111 | + | ||
112 | +class StableClient_plan(PlansClient): | ||
113 | + @retry(stop_max_attempt_number=100, wait_random_min=500, wait_random_max=4000, retry_on_exception=retry_if_request_failed) | ||
114 | + def request(self, *args, **kwargs): | ||
115 | + return super(StableClient_plan, self).request(*args, **kwargs) | ||
116 | + | ||
117 | + | ||
118 | +def prepare_plan_api_wrapper(key, host_url, api_version): | ||
119 | + return StableClient_plan(key, host_url, api_version) |
Please
register
or
login
to post a comment