Commit 5c6d0b9734f9df00c72b5fb61aa9cc5e75d008cb
Merge pull request #37 from selurvedu/periods_and_tender_data
Period intervals; initial tender data
Showing
22 changed files
with
289 additions
and
420 deletions
1 | -*** Setting *** | 1 | +*** Settings *** |
2 | Library Selenium2Screenshots | 2 | Library Selenium2Screenshots |
3 | Library String | 3 | Library String |
4 | Library DateTime | 4 | Library DateTime |
5 | +Library etender_service.py | ||
5 | 6 | ||
6 | *** Variables *** | 7 | *** Variables *** |
7 | ${locator.tenderId} jquery=h3 | 8 | ${locator.tenderId} jquery=h3 |
@@ -44,7 +45,7 @@ ${locator.questions[0].answer} xpath=(//div[@tex | @@ -44,7 +45,7 @@ ${locator.questions[0].answer} xpath=(//div[@tex | ||
44 | 45 | ||
45 | Підготувати клієнт для користувача | 46 | Підготувати клієнт для користувача |
46 | [Arguments] @{ARGUMENTS} | 47 | [Arguments] @{ARGUMENTS} |
47 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 48 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
48 | ... ${ARGUMENTS[0]} == username | 49 | ... ${ARGUMENTS[0]} == username |
49 | Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | 50 | Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} |
50 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | 51 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
@@ -63,8 +64,8 @@ Login | @@ -63,8 +64,8 @@ Login | ||
63 | [Documentation] | 64 | [Documentation] |
64 | ... ${ARGUMENTS[0]} == username | 65 | ... ${ARGUMENTS[0]} == username |
65 | ... ${ARGUMENTS[1]} == tender_data | 66 | ... ${ARGUMENTS[1]} == tender_data |
66 | - ${INITIAL_TENDER_DATA}= procuringEntity_name ${INITIAL_TENDER_DATA} | ||
67 | - ${tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | 67 | + ${tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} |
68 | + ${tender_data}= procuring_entity_name ${tender_data} | ||
68 | ${items}= Get From Dictionary ${tender_data.data} items | 69 | ${items}= Get From Dictionary ${tender_data.data} items |
69 | ${title}= Get From Dictionary ${tender_data.data} title | 70 | ${title}= Get From Dictionary ${tender_data.data} title |
70 | ${description}= Get From Dictionary ${tender_data.data} description | 71 | ${description}= Get From Dictionary ${tender_data.data} description |
@@ -201,8 +202,7 @@ Set Multi Ids | @@ -201,8 +202,7 @@ Set Multi Ids | ||
201 | ... ${ARGUMENTS[0]} == username | 202 | ... ${ARGUMENTS[0]} == username |
202 | ... ${ARGUMENTS[1]} == ${TENDER_UAID} | 203 | ... ${ARGUMENTS[1]} == ${TENDER_UAID} |
203 | Switch browser ${ARGUMENTS[0]} | 204 | Switch browser ${ARGUMENTS[0]} |
204 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
205 | - Go To ${url} | 205 | + Go To ${USERS.users['${ARGUMENTS[0]}'].homepage} |
206 | Wait Until Page Contains Прозорі закупівлі 10 | 206 | Wait Until Page Contains Прозорі закупівлі 10 |
207 | sleep 1 | 207 | sleep 1 |
208 | Input Text jquery=input[ng-change='searchChange()'] ${ARGUMENTS[1]} | 208 | Input Text jquery=input[ng-change='searchChange()'] ${ARGUMENTS[1]} |
1 | +from iso8601 import parse_date | ||
2 | + | ||
3 | + | ||
4 | +def convert_date_to_etender_format(isodate): | ||
5 | + iso_dt = parse_date(isodate) | ||
6 | + date_string = iso_dt.strftime("%d-%m-%Y") | ||
7 | + return date_string | ||
8 | + | ||
9 | + | ||
10 | +def convert_datetime_for_delivery(isodate): | ||
11 | + iso_dt = parse_date(isodate) | ||
12 | + date_string = iso_dt.strftime("%Y-%m-%d %H:%M") | ||
13 | + return date_string | ||
14 | + | ||
15 | + | ||
16 | +def convert_time_to_etender_format(isodate): | ||
17 | + iso_dt = parse_date(isodate) | ||
18 | + time_string = iso_dt.strftime("%H:%M") | ||
19 | + return time_string | ||
20 | + | ||
21 | + | ||
22 | +def procuring_entity_name(tender_data): | ||
23 | + tender_data.data.procuringEntity['name'] = u"Повна назва невідомо чого" | ||
24 | + return tender_data |
1 | -*** Setting *** | 1 | +*** Settings *** |
2 | Library Selenium2Screenshots | 2 | Library Selenium2Screenshots |
3 | Library String | 3 | Library String |
4 | Library DateTime | 4 | Library DateTime |
5 | +Library netcast_service.py | ||
5 | 6 | ||
6 | *** Variables *** | 7 | *** Variables *** |
7 | ${locator.tenderId} xpath=//td[./text()='TenderID']/following-sibling::td[1] | 8 | ${locator.tenderId} xpath=//td[./text()='TenderID']/following-sibling::td[1] |
@@ -29,10 +30,12 @@ ${locator.questions[0].answer} xpath=//div[@class = 'answer relative']//di | @@ -29,10 +30,12 @@ ${locator.questions[0].answer} xpath=//div[@class = 'answer relative']//di | ||
29 | *** Keywords *** | 30 | *** Keywords *** |
30 | Підготувати клієнт для користувача | 31 | Підготувати клієнт для користувача |
31 | [Arguments] @{ARGUMENTS} | 32 | [Arguments] @{ARGUMENTS} |
32 | - [Documentation] Відкрити брaузер, створити обєкт api wrapper, тощо | 33 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
33 | ... ${ARGUMENTS[0]} == username | 34 | ... ${ARGUMENTS[0]} == username |
34 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
35 | - Open Browser ${url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]} | 35 | + Open Browser |
36 | + ... ${USERS.users['${ARGUMENTS[0]}'].homepage} | ||
37 | + ... ${USERS.users['${ARGUMENTS[0]}'].browser} | ||
38 | + ... alias=${ARGUMENTS[0]} | ||
36 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | 39 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
37 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | 40 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} |
38 | Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]} | 41 | Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]} |
@@ -53,7 +56,7 @@ Login | @@ -53,7 +56,7 @@ Login | ||
53 | Pre Login | 56 | Pre Login |
54 | [Arguments] @{ARGUMENTS} | 57 | [Arguments] @{ARGUMENTS} |
55 | [Documentation] | 58 | [Documentation] |
56 | - ... ${ARGUMENTS[0]} == username | 59 | + ... ${ARGUMENTS[0]} == username |
57 | ${login}= Get Broker Property By Username ${ARGUMENTS[0]} login | 60 | ${login}= Get Broker Property By Username ${ARGUMENTS[0]} login |
58 | ${password}= Get Broker Property By Username ${ARGUMENTS[0]} password | 61 | ${password}= Get Broker Property By Username ${ARGUMENTS[0]} password |
59 | Wait Until Page Contains Element name=siteLogin 10 | 62 | Wait Until Page Contains Element name=siteLogin 10 |
@@ -233,8 +236,7 @@ Set Multi Ids | @@ -233,8 +236,7 @@ Set Multi Ids | ||
233 | ... ${ARGUMENTS[0]} == username | 236 | ... ${ARGUMENTS[0]} == username |
234 | ... ${ARGUMENTS[1]} == tenderId | 237 | ... ${ARGUMENTS[1]} == tenderId |
235 | Switch browser ${ARGUMENTS[0]} | 238 | Switch browser ${ARGUMENTS[0]} |
236 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
237 | - Go To ${url} | 239 | + Go To ${USERS.users['${ARGUMENTS[0]}'].homepage} |
238 | Wait Until Page Contains Держзакупівлі.онлайн 10 | 240 | Wait Until Page Contains Держзакупівлі.онлайн 10 |
239 | Click Element xpath=//a[text()='Закупівлі'] | 241 | Click Element xpath=//a[text()='Закупівлі'] |
240 | sleep 1 | 242 | sleep 1 |
1 | -*** Setting *** | 1 | +*** Settings *** |
2 | Library Selenium2Screenshots | 2 | Library Selenium2Screenshots |
3 | Library String | 3 | Library String |
4 | Library DateTime | 4 | Library DateTime |
5 | +Library newtend_service.py | ||
5 | 6 | ||
6 | *** Variables *** | 7 | *** Variables *** |
7 | ${locator.title} xpath=//div[@ng-bind="tender.title"] | 8 | ${locator.title} xpath=//div[@ng-bind="tender.title"] |
@@ -40,10 +41,12 @@ ${locator.QUESTIONS[0].date} xpath=//span[@class="date ng-binding"] | @@ -40,10 +41,12 @@ ${locator.QUESTIONS[0].date} xpath=//span[@class="date ng-binding"] | ||
40 | 41 | ||
41 | Підготувати клієнт для користувача | 42 | Підготувати клієнт для користувача |
42 | [Arguments] @{ARGUMENTS} | 43 | [Arguments] @{ARGUMENTS} |
43 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 44 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
44 | ... ${ARGUMENTS[0]} == username | 45 | ... ${ARGUMENTS[0]} == username |
45 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
46 | - Open Browser ${url} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | 46 | + Open Browser |
47 | + ... ${USERS.users['${ARGUMENTS[0]}'].homepage} | ||
48 | + ... ${USERS.users['${ARGUMENTS[0]}'].browser} | ||
49 | + ... alias=${ARGUMENTS[0]} | ||
47 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | 50 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
48 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | 51 | Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} |
49 | Run Keyword If '${username}' != 'Newtend_Viewer' Login | 52 | Run Keyword If '${username}' != 'Newtend_Viewer' Login |
@@ -63,20 +66,19 @@ Login | @@ -63,20 +66,19 @@ Login | ||
63 | [Arguments] @{ARGUMENTS} | 66 | [Arguments] @{ARGUMENTS} |
64 | [Documentation] | 67 | [Documentation] |
65 | ... ${ARGUMENTS[0]} == username | 68 | ... ${ARGUMENTS[0]} == username |
66 | - ... ${ARGUMENTS[1]} == initial_tender_data | ||
67 | -## Inicialisation | ||
68 | - #${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | ||
69 | - ${INITIAL_TENDER_DATA}= Add_data_for_GUI_FrontEnds ${INITIAL_TENDER_DATA} | ||
70 | - ${INITIAL_TENDER_DATA}= Update_data_for_Newtend ${INITIAL_TENDER_DATA} | ||
71 | - ${items}= Get From Dictionary ${INITIAL_TENDER_DATA.data} items | ||
72 | - ${title}= Get From Dictionary ${INITIAL_TENDER_DATA.data} title | ||
73 | - ${description}= Get From Dictionary ${INITIAL_TENDER_DATA.data} description | ||
74 | - ${budget}= Get From Dictionary ${INITIAL_TENDER_DATA.data.value} amount | ||
75 | - ${step_rate}= Get From Dictionary ${INITIAL_TENDER_DATA.data.minimalStep} amount | ||
76 | - ${start_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.tenderPeriod} startDate | ||
77 | - ${end_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.tenderPeriod} endDate | ||
78 | - ${enquiry_start_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.enquiryPeriod} startDate | ||
79 | - ${enquiry_end_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.enquiryPeriod} endDate | 69 | + ... ${ARGUMENTS[1]} == tender_data |
70 | +## Initialisation | ||
71 | + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | ||
72 | + ${prepared_tender_data}= Update_data_for_Newtend ${prepared_tender_data} | ||
73 | + ${items}= Get From Dictionary ${prepared_tender_data.data} items | ||
74 | + ${title}= Get From Dictionary ${prepared_tender_data.data} title | ||
75 | + ${description}= Get From Dictionary ${prepared_tender_data.data} description | ||
76 | + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount | ||
77 | + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount | ||
78 | + ${start_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} startDate | ||
79 | + ${end_date}= Get From Dictionary ${prepared_tender_data.data.tenderPeriod} endDate | ||
80 | + ${enquiry_start_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} startDate | ||
81 | + ${enquiry_end_date}= Get From Dictionary ${prepared_tender_data.data.enquiryPeriod} endDate | ||
80 | 82 | ||
81 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} | 83 | Selenium2Library.Switch Browser ${ARGUMENTS[0]} |
82 | Go To ${USERS.users['${username}'].homepage} | 84 | Go To ${USERS.users['${username}'].homepage} |
1 | +from datetime import datetime | ||
2 | +from iso8601 import parse_date | ||
3 | +from calendar import monthrange | ||
4 | + | ||
5 | + | ||
6 | +def newtend_date_picker_index(isodate): | ||
7 | + now = datetime.today() | ||
8 | + date_str = '01' + str(now.month) + str(now.year) | ||
9 | + first_day_of_month = datetime.strptime(date_str, "%d%m%Y") | ||
10 | + mod = first_day_of_month.isoweekday() - 2 | ||
11 | + iso_dt = parse_date(isodate) | ||
12 | + # last_day_of_month = monthrange(now.year, now.month)[1] | ||
13 | + # LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO")) | ||
14 | + if now.day > iso_dt.day: | ||
15 | + mod = monthrange(now.year, now.month)[1] + mod | ||
16 | + return mod + iso_dt.day | ||
17 | + | ||
18 | + | ||
19 | +def update_data_for_newtend(tender_data): | ||
20 | + tender_data.data.procuringEntity['name'] = u"openprocurement" | ||
21 | + return tender_data |
@@ -22,7 +22,7 @@ Library Selenium2Screenshots | @@ -22,7 +22,7 @@ Library Selenium2Screenshots | ||
22 | 22 | ||
23 | Підготувати клієнт для користувача | 23 | Підготувати клієнт для користувача |
24 | [Arguments] @{ARGUMENTS} | 24 | [Arguments] @{ARGUMENTS} |
25 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 25 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
26 | ${api_wrapper}= prepare_api_wrapper ${USERS.users['${ARGUMENTS[0]}'].api_key} ${API_HOST_URL} ${api_version} | 26 | ${api_wrapper}= prepare_api_wrapper ${USERS.users['${ARGUMENTS[0]}'].api_key} ${API_HOST_URL} ${api_version} |
27 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} client ${api_wrapper} | 27 | Set To Dictionary ${USERS.users['${ARGUMENTS[0]}']} client ${api_wrapper} |
28 | ${ID_MAP}= Create Dictionary | 28 | ${ID_MAP}= Create Dictionary |
@@ -67,9 +67,9 @@ Library Selenium2Screenshots | @@ -67,9 +67,9 @@ Library Selenium2Screenshots | ||
67 | [Documentation] | 67 | [Documentation] |
68 | ... ${ARGUMENTS[0]} == username | 68 | ... ${ARGUMENTS[0]} == username |
69 | ... ${ARGUMENTS[1]} == fieldname | 69 | ... ${ARGUMENTS[1]} == fieldname |
70 | - log ${ARGUMENTS} | ||
71 | - ${field_value}= Get_From_Object ${USERS.users['${ARGUMENTS[0]}'].tender_data.data} ${ARGUMENTS[1]} | ||
72 | - log ${field_value} | 70 | + Log Many @{ARGUMENTS} |
71 | + ${field_value}= Get_From_Object ${USERS.users['${ARGUMENTS[0]}'].tender_data.data} ${ARGUMENTS[1]} | ||
72 | + Log ${field_value} | ||
73 | [return] ${field_value} | 73 | [return] ${field_value} |
74 | 74 | ||
75 | Внести зміни в тендер | 75 | Внести зміни в тендер |
@@ -104,11 +104,11 @@ Library Selenium2Screenshots | @@ -104,11 +104,11 @@ Library Selenium2Screenshots | ||
104 | ... ${ARGUMENTS[2]} == number | 104 | ... ${ARGUMENTS[2]} == number |
105 | ${internalid}= Отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} | 105 | ${internalid}= Отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
106 | Отримати тендер ${ARGUMENTS[0]} ${internalid} | 106 | Отримати тендер ${ARGUMENTS[0]} ${internalid} |
107 | - ${items}= get from object ${TENDER_DATA.data} items | ||
108 | - log ${items} | 107 | + @{items}= Get From Object ${TENDER_DATA.data} items |
108 | + Log Many @{items} | ||
109 | :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]} | 109 | :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]} |
110 | \ Remove From List ${items} 0 | 110 | \ Remove From List ${items} 0 |
111 | - log ${items} | 111 | + Log Many @{items} |
112 | Set_To_Object ${TENDER_DATA.data} items ${items} | 112 | Set_To_Object ${TENDER_DATA.data} items ${items} |
113 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} | 113 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} |
114 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 114 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
@@ -121,12 +121,13 @@ Library Selenium2Screenshots | @@ -121,12 +121,13 @@ Library Selenium2Screenshots | ||
121 | ... ${ARGUMENTS[2]} == number | 121 | ... ${ARGUMENTS[2]} == number |
122 | ${internalid}= Отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} | 122 | ${internalid}= Отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[1]} |
123 | Отримати тендер ${ARGUMENTS[0]} ${internalid} | 123 | Отримати тендер ${ARGUMENTS[0]} ${internalid} |
124 | - ${items}= get from object ${TENDER_DATA.data} items | 124 | + @{items}= Get From Object ${TENDER_DATA.data} items |
125 | ${item}= get variable value ${items[1]} | 125 | ${item}= get variable value ${items[1]} |
126 | - log ${items} | 126 | + Run Keyword And Continue On Failure Remove From Dictionary ${item} id |
127 | + Log Many @{items} | ||
127 | :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]} | 128 | :FOR ${INDEX} IN RANGE ${ARGUMENTS[2]} |
128 | \ Append To List ${items} ${item} | 129 | \ Append To List ${items} ${item} |
129 | - log ${items} | 130 | + Log Many @{items} |
130 | Set_To_Object ${TENDER_DATA.data} items ${items} | 131 | Set_To_Object ${TENDER_DATA.data} items ${items} |
131 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} | 132 | ${TENDER_DATA}= set_access_key ${TENDER_DATA} ${USERS.users['${ARGUMENTS[0]}'].access_token} |
132 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} | 133 | ${TENDER_DATA}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_tender ${TENDER_DATA} |
1 | from openprocurement_client.client import Client | 1 | from openprocurement_client.client import Client |
2 | 2 | ||
3 | 3 | ||
4 | -def prepare_api_wrapper(key='', | ||
5 | - host_url='https://api-sandbox.openprocurement.org', | ||
6 | - api_version='0.8'): | 4 | +def prepare_api_wrapper(key, host_url, api_version): |
7 | return Client(key, host_url, api_version) | 5 | return Client(key, host_url, api_version) |
8 | 6 | ||
9 | 7 |
@@ -20,9 +20,11 @@ ${PASSWORD} 1234 | @@ -20,9 +20,11 @@ ${PASSWORD} 1234 | ||
20 | [Arguments] ${username} | 20 | [Arguments] ${username} |
21 | log many @{ARGUMENTS} | 21 | log many @{ARGUMENTS} |
22 | log ${username} | 22 | log ${username} |
23 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | ||
24 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
25 | - Open Browser ${url} ${USERS.users['${username}'].browser} alias=${username} | 23 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
24 | + Open Browser | ||
25 | + ... ${USERS.users['${username}'].homepage} | ||
26 | + ... ${USERS.users['${username}'].browser} | ||
27 | + ... alias=${username} | ||
26 | Set Window Position @{USERS.users['${username}'].position} | 28 | Set Window Position @{USERS.users['${username}'].position} |
27 | #Set Window Size @{USERS.users['${username}'].size} | 29 | #Set Window Size @{USERS.users['${username}'].size} |
28 | Log Variables | 30 | Log Variables |
@@ -46,11 +48,11 @@ Login | @@ -46,11 +48,11 @@ Login | ||
46 | Login | 48 | Login |
47 | 49 | ||
48 | ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate | 50 | ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate |
49 | - ${start_date}= convert_date_to_prom_format ${start_date} | 51 | + ${start_date}= convert_datetime_to_dot_format ${start_date} |
50 | ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | 52 | ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate |
51 | - ${end_date}= convert_date_to_prom_format ${end_date} | 53 | + ${end_date}= convert_datetime_to_dot_format ${end_date} |
52 | ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | 54 | ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate |
53 | - ${enquiry_end_date}= convert_date_to_prom_format ${enquiry_end_date} | 55 | + ${enquiry_end_date}= convert_datetime_to_dot_format ${enquiry_end_date} |
54 | 56 | ||
55 | ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | 57 | ${items}= Get From Dictionary ${ARGUMENTS[1].data} items |
56 | ${delivery_date}= Get From Dictionary ${items[0].deliveryDate} endDate | 58 | ${delivery_date}= Get From Dictionary ${items[0].deliveryDate} endDate |
@@ -100,9 +102,9 @@ Get tender id | @@ -100,9 +102,9 @@ Get tender id | ||
100 | ... ${ARGUMENTS[2]} == id | 102 | ... ${ARGUMENTS[2]} == id |
101 | Switch browser ${ARGUMENTS[0]} | 103 | Switch browser ${ARGUMENTS[0]} |
102 | ${current_location}= Get Location | 104 | ${current_location}= Get Location |
103 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
104 | - Run Keyword If '${url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | ||
105 | - Go to ${url} | 105 | + ${homepage}= Set Variable ${USERS.users['${ARGUMENTS[0]}'].homepage} |
106 | + Run Keyword If '${homepage}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | ||
107 | + Go To ${homepage} | ||
106 | Wait Until Page Contains Допороговые закупки Украины 10 | 108 | Wait Until Page Contains Допороговые закупки Украины 10 |
107 | sleep 1 | 109 | sleep 1 |
108 | Input Text id=search ${ARGUMENTS[1]} | 110 | Input Text id=search ${ARGUMENTS[1]} |
@@ -10,7 +10,7 @@ ${telephone} +380976535447 | @@ -10,7 +10,7 @@ ${telephone} +380976535447 | ||
10 | *** Keywords *** | 10 | *** Keywords *** |
11 | Підготувати клієнт для користувача | 11 | Підготувати клієнт для користувача |
12 | [Arguments] @{ARGUMENTS} | 12 | [Arguments] @{ARGUMENTS} |
13 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 13 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
14 | ... ${ARGUMENTS[0]} == username | 14 | ... ${ARGUMENTS[0]} == username |
15 | Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | 15 | Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} |
16 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | 16 | Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} |
@@ -39,7 +39,7 @@ ${telephone} +380976535447 | @@ -39,7 +39,7 @@ ${telephone} +380976535447 | ||
39 | ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount | 39 | ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount |
40 | ${countryName}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.address} countryName | 40 | ${countryName}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.address} countryName |
41 | ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | 41 | ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate |
42 | - ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date} | 42 | + ${delivery_end_date}= convert_datetime_to_dot_format ${delivery_end_date} |
43 | ${cpv}= Convert To String "Картонки" | 43 | ${cpv}= Convert To String "Картонки" |
44 | ${cpv_id}= Get From Dictionary ${items[0].classification} id | 44 | ${cpv_id}= Get From Dictionary ${items[0].classification} id |
45 | ${cpv_id_1}= Get Substring ${cpv_id} 0 3 | 45 | ${cpv_id_1}= Get Substring ${cpv_id} 0 3 |
@@ -6,9 +6,11 @@ Library DateTime | @@ -6,9 +6,11 @@ Library DateTime | ||
6 | *** Keywords *** | 6 | *** Keywords *** |
7 | Підготувати клієнт для користувача | 7 | Підготувати клієнт для користувача |
8 | [Arguments] ${username} | 8 | [Arguments] ${username} |
9 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | ||
10 | - ${url}= Get Broker Property By Username ${username} url | ||
11 | - Open Browser ${url} ${USERS.users['${username}'].browser} alias=${username} | 9 | + [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
10 | + Open Browser | ||
11 | + ... ${USERS.users['${username}'].homepage} | ||
12 | + ... ${USERS.users['${username}'].browser} | ||
13 | + ... alias=${username} | ||
12 | Set Window Position @{USERS.users['${username}'].position} | 14 | Set Window Position @{USERS.users['${username}'].position} |
13 | Set Window Size @{USERS.users['${username}'].size} | 15 | Set Window Size @{USERS.users['${username}'].size} |
14 | Log Variables | 16 | Log Variables |
@@ -21,9 +23,9 @@ Library DateTime | @@ -21,9 +23,9 @@ Library DateTime | ||
21 | ... ${ARGUMENTS[2]} == id | 23 | ... ${ARGUMENTS[2]} == id |
22 | Switch browser ${ARGUMENTS[0]} | 24 | Switch browser ${ARGUMENTS[0]} |
23 | ${current_location}= Get Location | 25 | ${current_location}= Get Location |
24 | - ${url}= Get Broker Property By Username ${ARGUMENTS[0]} url | ||
25 | - Run Keyword If '${url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | ||
26 | - Go To ${url} | 26 | + ${homepage}= Set Variable ${USERS.users['${ARGUMENTS[0]}'].homepage} |
27 | + Run Keyword If '${homepage}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | ||
28 | + Go To ${homepage} | ||
27 | Wait Until Page Contains Офіційний майданчик державних закупівель України 10 | 29 | Wait Until Page Contains Офіційний майданчик державних закупівель України 10 |
28 | sleep 1 | 30 | sleep 1 |
29 | Input Text id=j_idt18:datalist:j_idt67 ${ARGUMENTS[1]} | 31 | Input Text id=j_idt18:datalist:j_idt67 ${ARGUMENTS[1]} |
1 | Default: | 1 | Default: |
2 | # These values are used by default unless a | 2 | # These values are used by default unless a |
3 | # specific broker entry overrides them. | 3 | # specific broker entry overrides them. |
4 | + intervals: | ||
5 | + enquiry: 11 | ||
6 | + tender: 18 | ||
7 | + auction: 0 | ||
8 | + qualification: 0 | ||
9 | + award: 0 | ||
10 | + complaint: 0 | ||
4 | timeout_on_wait: 300 | 11 | timeout_on_wait: 300 |
5 | - period_interval: 3 | ||
6 | Quinta: | 12 | Quinta: |
13 | + intervals: | ||
14 | + enquiry: 2 | ||
15 | + tender: 5 | ||
7 | keywords_file: openprocurement_client | 16 | keywords_file: openprocurement_client |
8 | - timeout_on_wait: 15 | ||
9 | roles: | 17 | roles: |
10 | tender_owner: Tender_Owner | 18 | tender_owner: Tender_Owner |
11 | provider: Tender_User | 19 | provider: Tender_User |
12 | provider1: Tender_User1 | 20 | provider1: Tender_User1 |
13 | viewer: Tender_Viewer | 21 | viewer: Tender_Viewer |
22 | + timeout_on_wait: 15 | ||
14 | E-tender: | 23 | E-tender: |
15 | keywords_file: etender | 24 | keywords_file: etender |
16 | - url: http://bid.uat.e-tender.biz/ | ||
17 | - timeout_on_wait: 60 | ||
18 | roles: | 25 | roles: |
19 | tender_owner: E-tender_Owner | 26 | tender_owner: E-tender_Owner |
20 | provider: E-tender_Provider1 | 27 | provider: E-tender_Provider1 |
21 | provider1: E-tender_Provider2 | 28 | provider1: E-tender_Provider2 |
22 | viewer: E-tender_Viewer | 29 | viewer: E-tender_Viewer |
30 | + timeout_on_wait: 60 | ||
23 | Netcast: | 31 | Netcast: |
24 | keywords_file: netcast | 32 | keywords_file: netcast |
25 | - url: http://dz2.byustudio.in.ua | ||
26 | login: admin | 33 | login: admin |
27 | password: uStudio | 34 | password: uStudio |
28 | roles: | 35 | roles: |
@@ -31,26 +38,24 @@ Netcast: | @@ -31,26 +38,24 @@ Netcast: | ||
31 | viewer: Netcast_Viewer | 38 | viewer: Netcast_Viewer |
32 | Newtend: | 39 | Newtend: |
33 | keywords_file: newtend | 40 | keywords_file: newtend |
34 | - url: http://openprocurement:test@dev23.newtend.com | ||
35 | roles: | 41 | roles: |
36 | tender_owner: Newtend_Owner | 42 | tender_owner: Newtend_Owner |
37 | provider: Newtend_Provider1 | 43 | provider: Newtend_Provider1 |
38 | viewer: Newtend_Viewer | 44 | viewer: Newtend_Viewer |
39 | Prom: | 45 | Prom: |
46 | + intervals: | ||
47 | + enquiry: 5 | ||
48 | + tender: 31 | ||
40 | keywords_file: prom | 49 | keywords_file: prom |
41 | - url: http://dz.dz-test.net/ | ||
42 | - period_interval: 31 | ||
43 | roles: | 50 | roles: |
44 | tender_owner: Prom_Owner | 51 | tender_owner: Prom_Owner |
45 | viewer: Prom_Viewer | 52 | viewer: Prom_Viewer |
46 | Publicbid: | 53 | Publicbid: |
47 | keywords_file: publicbid | 54 | keywords_file: publicbid |
48 | - url: https://public-bid.com.ua/ | ||
49 | roles: | 55 | roles: |
50 | tender_owner: Publicbid_Owner | 56 | tender_owner: Publicbid_Owner |
51 | viewer: Publicbid_Viewer | 57 | viewer: Publicbid_Viewer |
52 | SmartTender: | 58 | SmartTender: |
53 | keywords_file: smarttender | 59 | keywords_file: smarttender |
54 | - url: http://smarttender.biz/tenders | ||
55 | roles: | 60 | roles: |
56 | viewer: SmartTender_Viewer | 61 | viewer: SmartTender_Viewer |
@@ -73,7 +73,7 @@ users: | @@ -73,7 +73,7 @@ users: | ||
73 | Newtend_Owner: | 73 | Newtend_Owner: |
74 | broker: Newtend | 74 | broker: Newtend |
75 | username: Newtendtest | 75 | username: Newtendtest |
76 | - homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1" | 76 | + homepage: "http://openprocurement:test@dev23.newtend.com/" |
77 | login: openprocurement@mailinator.com | 77 | login: openprocurement@mailinator.com |
78 | password: 123123 | 78 | password: 123123 |
79 | browser: chrome | 79 | browser: chrome |
@@ -82,7 +82,7 @@ users: | @@ -82,7 +82,7 @@ users: | ||
82 | Newtend_Provider1: | 82 | Newtend_Provider1: |
83 | broker: Newtend | 83 | broker: Newtend |
84 | username: Newtendtest | 84 | username: Newtendtest |
85 | - homepage: "http://dev23.newtend.com/openprocurement/tenders" | 85 | + homepage: "http://openprocurement:test@dev23.newtend.com/" |
86 | login: openprocboss@mailinator.com | 86 | login: openprocboss@mailinator.com |
87 | password: 123123 | 87 | password: 123123 |
88 | browser: chrome | 88 | browser: chrome |
@@ -91,7 +91,7 @@ users: | @@ -91,7 +91,7 @@ users: | ||
91 | Newtend_Viewer: | 91 | Newtend_Viewer: |
92 | broker: Newtend | 92 | broker: Newtend |
93 | username: Newtendtest | 93 | username: Newtendtest |
94 | - homepage: "http://dev23.newtend.com/openprocurement/tenders" | 94 | + homepage: "http://openprocurement:test@dev23.newtend.com/openprocurement/tenders" |
95 | browser: chrome | 95 | browser: chrome |
96 | position: [800, 400] | 96 | position: [800, 400] |
97 | size: [800, 700] | 97 | size: [800, 700] |
1 | -from datetime import date, datetime, timedelta | ||
2 | -from dateutil.parser import parse | ||
3 | -from dateutil.tz import tzlocal | ||
4 | -from iso8601 import parse_date | ||
5 | -from jsonpath_rw import parse as parse_path | ||
6 | -from pytz import timezone | ||
7 | -from robot.output import LOGGER | ||
8 | -from robot.output.loggerhelper import Message | ||
9 | -from robot.libraries.BuiltIn import BuiltIn | ||
10 | -from robot.errors import HandlerExecutionFailed | ||
11 | -from op_robot_tests.tests_files.initial_data import ( | ||
12 | - test_tender_data | ||
13 | -) | ||
14 | -import time | ||
15 | - | ||
16 | -TIMEZONE = timezone('Europe/Kiev') | ||
17 | - | ||
18 | - | ||
19 | -def convert_date_to_etender_format(isodate): | ||
20 | - iso_dt = parse_date(isodate) | ||
21 | - date_string = iso_dt.strftime("%d-%m-%Y") | ||
22 | - return date_string | ||
23 | - | ||
24 | - | ||
25 | -def convert_time_to_etender_format(isodate): | ||
26 | - iso_dt = parse_date(isodate) | ||
27 | - time_string = iso_dt.strftime("%H:%M") | ||
28 | - return time_string |
@@ -25,13 +25,13 @@ def create_fake_doc(): | @@ -25,13 +25,13 @@ def create_fake_doc(): | ||
25 | return tf.name | 25 | return tf.name |
26 | 26 | ||
27 | 27 | ||
28 | -def test_tender_data(period_interval): | 28 | +def test_tender_data(intervals): |
29 | now = get_now() | 29 | now = get_now() |
30 | return { | 30 | return { |
31 | "title": u"[ТЕСТУВАННЯ] " + fake.catch_phrase(), | 31 | "title": u"[ТЕСТУВАННЯ] " + fake.catch_phrase(), |
32 | "mode": "test", | 32 | "mode": "test", |
33 | "submissionMethodDetails": "quick", | 33 | "submissionMethodDetails": "quick", |
34 | - "description": u"Тестовий тендер", # Error @prom when "Тестовый тендер" | 34 | + "description": u"Тестовий тендер", |
35 | "description_ru": u"Тестовый тендер", | 35 | "description_ru": u"Тестовый тендер", |
36 | "description_en": "Test tender", | 36 | "description_en": "Test tender", |
37 | "procuringEntity": { | 37 | "procuringEntity": { |
@@ -58,11 +58,11 @@ def test_tender_data(period_interval): | @@ -58,11 +58,11 @@ def test_tender_data(period_interval): | ||
58 | } | 58 | } |
59 | }, | 59 | }, |
60 | "value": { | 60 | "value": { |
61 | - "amount": 50000, # Error @prom when float '50000.99' | 61 | + "amount": 50000.99, |
62 | "currency": u"UAH" | 62 | "currency": u"UAH" |
63 | }, | 63 | }, |
64 | "minimalStep": { | 64 | "minimalStep": { |
65 | - "amount": 100, # Error @prom when float '100.1' | 65 | + "amount": 100.1, |
66 | "currency": u"UAH" | 66 | "currency": u"UAH" |
67 | }, | 67 | }, |
68 | "items": [ | 68 | "items": [ |
@@ -72,8 +72,8 @@ def test_tender_data(period_interval): | @@ -72,8 +72,8 @@ def test_tender_data(period_interval): | ||
72 | "endDate": (now + timedelta(days=5)).isoformat() | 72 | "endDate": (now + timedelta(days=5)).isoformat() |
73 | }, | 73 | }, |
74 | "deliveryLocation": { | 74 | "deliveryLocation": { |
75 | - "latitude": u"49.8500° N", | ||
76 | - "longitude": u"24.0167° E" | 75 | + "latitude": 49.8500, |
76 | + "longitude": 24.0167 | ||
77 | }, | 77 | }, |
78 | "deliveryAddress": { | 78 | "deliveryAddress": { |
79 | "countryName": u"Україна", | 79 | "countryName": u"Україна", |
@@ -109,149 +109,21 @@ def test_tender_data(period_interval): | @@ -109,149 +109,21 @@ def test_tender_data(period_interval): | ||
109 | ], | 109 | ], |
110 | "enquiryPeriod": { | 110 | "enquiryPeriod": { |
111 | "startDate": (now).isoformat(), | 111 | "startDate": (now).isoformat(), |
112 | - "endDate": (now + timedelta(minutes=1)).isoformat() | 112 | + "endDate": (now + timedelta(minutes=( |
113 | + intervals['enquiry']))).isoformat() | ||
113 | }, | 114 | }, |
114 | "tenderPeriod": { | 115 | "tenderPeriod": { |
115 | "startDate": (now + timedelta(minutes=2)).isoformat(), | 116 | "startDate": (now + timedelta(minutes=2)).isoformat(), |
116 | - "endDate": (now + timedelta(minutes=(2 + period_interval))).isoformat() | 117 | + "endDate": (now + timedelta(minutes=( |
118 | + intervals['tender']))).isoformat() | ||
117 | } | 119 | } |
118 | } | 120 | } |
119 | 121 | ||
120 | 122 | ||
121 | -def prom_test_tender_data(): | 123 | +def test_tender_data_multiple_lots(intervals): |
122 | now = get_now() | 124 | now = get_now() |
123 | - return { | ||
124 | - "title": fake.catch_phrase(), | ||
125 | - "mode": "test", | ||
126 | - "submissionMethodDetails": "quick", | ||
127 | - "description": u"Тестовий тендер", # Error @prom when "Тестовый тендер" | ||
128 | - "description_ru": u"Тестовый тендер", | ||
129 | - "description_en": "Test tender", | ||
130 | - "procuringEntity": { | ||
131 | - "name": fake.company(), | ||
132 | - "name_ru": fake_ru.company(), | ||
133 | - "name_en": fake_en.company(), | ||
134 | - "identifier": { | ||
135 | - "scheme": u"UA-EDR", | ||
136 | - "id": u"0000{}".format(fake.pyint()), | ||
137 | - "uri": fake.image_url(width=None, height=None) | ||
138 | - }, | ||
139 | - "address": { | ||
140 | - "countryName": u"Україна", | ||
141 | - "countryName_ru": u"Украина", | ||
142 | - "countryName_en": "Ukraine", | ||
143 | - "postalCode": fake.postalcode(), | ||
144 | - "region": u"м. Київ", | ||
145 | - "locality": u"м. Київ", | ||
146 | - "streetAddress": fake.street_address() | ||
147 | - }, | ||
148 | - "contactPoint": { | ||
149 | - "name": fake.name(), | ||
150 | - "telephone": fake.phone_number() | ||
151 | - } | ||
152 | - }, | ||
153 | - "value": { | ||
154 | - "amount": 50000, # Error @prom when float '50000.99' | ||
155 | - "currency": u"UAH" | ||
156 | - }, | ||
157 | - "minimalStep": { | ||
158 | - "amount": 100, # Error @prom when float '100.1' | ||
159 | - "currency": u"UAH" | ||
160 | - }, | ||
161 | - "items": [ | ||
162 | - { | ||
163 | - "description": fake.catch_phrase(), | ||
164 | - "deliveryDate": { | ||
165 | - "startDate": (now + timedelta(days=4)).isoformat(), | ||
166 | - "endDate": (now + timedelta(days=5)).isoformat() | ||
167 | - }, | ||
168 | - "deliveryLocation": { | ||
169 | - "latitude": "49.8500° N", | ||
170 | - "longitude": "24.0167° E" | ||
171 | - }, | ||
172 | - "deliveryAddress": { | ||
173 | - "countryName": u"Україна", | ||
174 | - "countryName_ru": u"Украина", | ||
175 | - "countryName_en": "Ukraine", | ||
176 | - "postalCode": fake.postalcode(), | ||
177 | - "region": u"м. Київ", | ||
178 | - "locality": u"м. Київ", | ||
179 | - "streetAddress": fake.street_address() | ||
180 | - }, | ||
181 | - "classification": { | ||
182 | - "scheme": u"CPV", | ||
183 | - "id": u"44617100-9", | ||
184 | - "description": u"Картонки", | ||
185 | - "description_ru": u"Большие картонные коробки", | ||
186 | - "description_en": u"Cartons" | ||
187 | - }, | ||
188 | - "additionalClassifications": [ | ||
189 | - { | ||
190 | - "scheme": u"ДКПП", | ||
191 | - "id": u"17.21.1", | ||
192 | - "description": u"Папір і картон гофровані, паперова й картонна тара" | ||
193 | - } | ||
194 | - ], | ||
195 | - "unit": { | ||
196 | - "name": u"кілограм", | ||
197 | - "name_ru": u"килограмм", | ||
198 | - "name_en": "kilogram", | ||
199 | - "code": u"KGM" | ||
200 | - }, | ||
201 | - "quantity": fake.pyint() | ||
202 | - } | ||
203 | - ], | ||
204 | - "enquiryPeriod": { | ||
205 | - "startDate": (now + timedelta(days=1)).isoformat(), | ||
206 | - "endDate": (now + timedelta(days=2)).isoformat() | ||
207 | - }, | ||
208 | - "tenderPeriod": { | ||
209 | - "startDate": (now + timedelta(days=3)).isoformat(), | ||
210 | - "endDate": (now + timedelta(days=5)).isoformat() | ||
211 | - } | ||
212 | - } | ||
213 | - | ||
214 | - | ||
215 | -def test_tender_data_multiple_lots(period_interval): | ||
216 | - now = get_now() | ||
217 | - return { | ||
218 | - "title": fake.catch_phrase(), | ||
219 | - "mode": "test", | ||
220 | - "submissionMethodDetails": "quick", | ||
221 | - "description": u"Тестовий тендер", | ||
222 | - "description_ru": u"Тестовый тендер", | ||
223 | - "description_en": "Test tender", | ||
224 | - "procuringEntity": { | ||
225 | - "name": fake.company(), | ||
226 | - "name_ru": fake_ru.company(), | ||
227 | - "name_en": fake_en.company(), | ||
228 | - "identifier": { | ||
229 | - "scheme": u"UA-EDR", | ||
230 | - "id": u"0000{}".format(fake.pyint()), | ||
231 | - "uri": fake.image_url(width=None, height=None) | ||
232 | - }, | ||
233 | - "address": { | ||
234 | - "countryName": u"Україна", | ||
235 | - "countryName_ru": u"Украина", | ||
236 | - "countryName_en": "Ukraine", | ||
237 | - "postalCode": fake.postalcode(), | ||
238 | - "region": u"м. Київ", | ||
239 | - "locality": u"м. Київ", | ||
240 | - "streetAddress": fake.street_address() | ||
241 | - }, | ||
242 | - "contactPoint": { | ||
243 | - "name": fake.name(), | ||
244 | - "telephone": fake.phone_number() | ||
245 | - } | ||
246 | - }, | ||
247 | - "value": { | ||
248 | - "amount": 50000.99, | ||
249 | - "currency": u"UAH" | ||
250 | - }, | ||
251 | - "minimalStep": { | ||
252 | - "amount": 100.1, | ||
253 | - "currency": u"UAH" | ||
254 | - }, | 125 | + t_data = test_tender_data(intervals) |
126 | + t_data.update({ | ||
255 | "items": [ | 127 | "items": [ |
256 | { | 128 | { |
257 | "description": fake.catch_phrase(), | 129 | "description": fake.catch_phrase(), |
@@ -413,16 +285,9 @@ def test_tender_data_multiple_lots(period_interval): | @@ -413,16 +285,9 @@ def test_tender_data_multiple_lots(period_interval): | ||
413 | }, | 285 | }, |
414 | "quantity": fake.pyint() | 286 | "quantity": fake.pyint() |
415 | } | 287 | } |
416 | - ], | ||
417 | - "enquiryPeriod": { | ||
418 | - "startDate": (now).isoformat(), | ||
419 | - "endDate": (now + timedelta(minutes=1)).isoformat() | ||
420 | - }, | ||
421 | - "tenderPeriod": { | ||
422 | - "startDate": (now + timedelta(minutes=2)).isoformat(), | ||
423 | - "endDate": (now + timedelta(minutes=(2 + period_interval))).isoformat() | ||
424 | - } | ||
425 | - } | 288 | + ] |
289 | + }) | ||
290 | + return t_data | ||
426 | 291 | ||
427 | 292 | ||
428 | def test_question_data(): | 293 | def test_question_data(): |
@@ -539,7 +404,7 @@ def auction_bid(): | @@ -539,7 +404,7 @@ def auction_bid(): | ||
539 | "value": { | 404 | "value": { |
540 | "amount": 200, | 405 | "amount": 200, |
541 | "currency": "UAH", | 406 | "currency": "UAH", |
542 | - "valueAddedTaxIncluded": true | 407 | + "valueAddedTaxIncluded": "true" |
543 | } | 408 | } |
544 | } | 409 | } |
545 | }) | 410 | }) |
@@ -7,12 +7,10 @@ Library Selenium2Library | @@ -7,12 +7,10 @@ Library Selenium2Library | ||
7 | Library DateTime | 7 | Library DateTime |
8 | Library Selenium2Screenshots | 8 | Library Selenium2Screenshots |
9 | Library DebugLibrary | 9 | Library DebugLibrary |
10 | -Library op_robot_tests.tests_files.brokers.openprocurement_client_helper | ||
11 | 10 | ||
12 | *** Keywords *** | 11 | *** Keywords *** |
13 | TestSuiteSetup | 12 | TestSuiteSetup |
14 | Завантажуємо дані про користувачів і майданчики | 13 | Завантажуємо дані про користувачів і майданчики |
15 | - Підготовка початкових даних | ||
16 | 14 | ||
17 | Set Suite Variable With Default Value | 15 | Set Suite Variable With Default Value |
18 | [Arguments] ${suite_var} ${def_value} | 16 | [Arguments] ${suite_var} ${def_value} |
@@ -51,9 +49,9 @@ Set Suite Variable With Default Value | @@ -51,9 +49,9 @@ Set Suite Variable With Default Value | ||
51 | Get Broker Property | 49 | Get Broker Property |
52 | [Arguments] ${broker_name} ${property} | 50 | [Arguments] ${broker_name} ${property} |
53 | [Documentation] | 51 | [Documentation] |
54 | - ... This keyword returns a property of specified broker | ||
55 | - ... if that property exists, otherwise, it returns a | ||
56 | - ... default value. | 52 | + ... This keyword returns a property of specified broker |
53 | + ... if that property exists, otherwise, it returns a | ||
54 | + ... default value. | ||
57 | ${status}= Run Keyword And Return Status Should Contain ${BROKERS['${broker_name}']} ${property} | 55 | ${status}= Run Keyword And Return Status Should Contain ${BROKERS['${broker_name}']} ${property} |
58 | Return From Keyword If ${status} ${BROKERS['${broker_name}'].${property}} | 56 | Return From Keyword If ${status} ${BROKERS['${broker_name}'].${property}} |
59 | # If broker doesn't have that property, fall back to default value | 57 | # If broker doesn't have that property, fall back to default value |
@@ -62,37 +60,39 @@ Get Broker Property | @@ -62,37 +60,39 @@ Get Broker Property | ||
62 | 60 | ||
63 | Get Broker Property By Username | 61 | Get Broker Property By Username |
64 | [Documentation] | 62 | [Documentation] |
65 | - ... This keyword gets the corresponding broker name | ||
66 | - ... for a specified username and then calls | ||
67 | - ... "Get Broker Property" | 63 | + ... This keyword gets the corresponding broker name |
64 | + ... for a specified username and then calls | ||
65 | + ... "Get Broker Property" | ||
68 | [Arguments] ${username} ${property} | 66 | [Arguments] ${username} ${property} |
69 | ${broker_name}= Get Variable Value ${USERS.users['${username}'].broker} | 67 | ${broker_name}= Get Variable Value ${USERS.users['${username}'].broker} |
70 | Run Keyword And Return Get Broker Property ${broker_name} ${property} | 68 | Run Keyword And Return Get Broker Property ${broker_name} ${property} |
71 | 69 | ||
72 | Підготовка початкових даних | 70 | Підготовка початкових даних |
73 | - @{QUESTIONS} = Create list | 71 | + @{QUESTIONS}= Create list |
74 | ${question}= test question data | 72 | ${question}= test question data |
75 | - Append to list ${QUESTIONS} ${question} | ||
76 | - Set Global Variable ${QUESTIONS} | ||
77 | - @{ANSWERS} = Create list | 73 | + Append to list ${QUESTIONS} ${question} |
74 | + Set Global Variable @{QUESTIONS} | ||
75 | + @{ANSWERS}= Create list | ||
78 | ${answer}= test_question_answer_data | 76 | ${answer}= test_question_answer_data |
79 | - Append to list ${ANSWERS} ${answer} | ||
80 | - Set Global Variable ${ANSWERS} | ||
81 | - @{COMPLAINTS} = Create list | 77 | + Append to list ${ANSWERS} ${answer} |
78 | + Set Global Variable @{ANSWERS} | ||
79 | + @{COMPLAINTS}= Create list | ||
82 | ${complaint}= test_complaint_data | 80 | ${complaint}= test_complaint_data |
83 | - Append to list ${COMPLAINTS} ${complaint} | ||
84 | - Set Global Variable ${COMPLAINTS} | ||
85 | - @{REPLIES} = Create list | 81 | + Append to list ${COMPLAINTS} ${complaint} |
82 | + Set Global Variable @{COMPLAINTS} | ||
83 | + @{REPLIES}= Create list | ||
86 | ${reply}= test_complaint_reply_data | 84 | ${reply}= test_complaint_reply_data |
87 | - Append to list ${REPLIES} ${reply} | ||
88 | - Set Global Variable ${REPLIES} | ||
89 | - ${period_interval}= Get Broker Property By Username ${tender_owner} period_interval | ||
90 | - ${INITIAL_TENDER_DATA}= prepare_test_tender_data ${period_interval} ${mode} | ||
91 | - Set Global Variable ${INITIAL_TENDER_DATA} | 85 | + Append to list ${REPLIES} ${reply} |
86 | + Set Global Variable @{REPLIES} | ||
87 | + ${custom_intervals}= Get Broker Property By Username ${tender_owner} intervals | ||
88 | + ${default_intervals}= Get Broker Property Default intervals | ||
89 | + ${period_intervals}= merge_dicts ${default_intervals} ${custom_intervals} | ||
90 | + ${tender_data}= prepare_test_tender_data ${period_intervals} ${mode} | ||
92 | ${TENDER}= Create Dictionary | 91 | ${TENDER}= Create Dictionary |
93 | Set Global Variable ${TENDER} | 92 | Set Global Variable ${TENDER} |
94 | Log ${TENDER} | 93 | Log ${TENDER} |
95 | - Log ${INITIAL_TENDER_DATA} | 94 | + Log ${tender_data} |
95 | + [return] ${tender_data} | ||
96 | 96 | ||
97 | Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file} | 97 | Завантажуємо бібліотеку з реалізацією для майданчика ${keywords_file} |
98 | Import Resource ${CURDIR}/brokers/${keywords_file}.robot | 98 | Import Resource ${CURDIR}/brokers/${keywords_file}.robot |
@@ -101,8 +101,8 @@ Get Broker Property By Username | @@ -101,8 +101,8 @@ Get Broker Property By Username | ||
101 | Дочекатись синхронізації з майданчиком | 101 | Дочекатись синхронізації з майданчиком |
102 | [Arguments] ${username} | 102 | [Arguments] ${username} |
103 | [Documentation] | 103 | [Documentation] |
104 | - ... Get ${wait_timeout} for specified user and wait | ||
105 | - ... until that timeout runs out. | 104 | + ... Get ${wait_timeout} for specified user and wait |
105 | + ... until that timeout runs out. | ||
106 | ${now}= Get Current Date | 106 | ${now}= Get Current Date |
107 | ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} | 107 | ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']} |
108 | ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait | 108 | ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait |
@@ -110,51 +110,43 @@ Get Broker Property By Username | @@ -110,51 +110,43 @@ Get Broker Property By Username | ||
110 | Run Keyword If ${wait_timeout}>0 Sleep ${wait_timeout} | 110 | Run Keyword If ${wait_timeout}>0 Sleep ${wait_timeout} |
111 | 111 | ||
112 | Звірити поле тендера | 112 | Звірити поле тендера |
113 | - [Arguments] ${username} ${field} | ||
114 | - ${field_value}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} | ||
115 | - Звірити поле ${username} ${field} ${field_value} | ||
116 | - | ||
117 | -Звірити поле | ||
118 | - [Arguments] ${username} ${field} ${subject} | ||
119 | - ${field_response}= Викликати для учасника ${username} Отримати інформацію із тендера ${field} | ||
120 | - Should Not Be Equal ${field_response} ${None} | ||
121 | - Should Be Equal ${subject} ${field_response} Майданчик ${USERS.users['${username}'].broker} | ||
122 | - | ||
123 | -Звірити поле створеного тендера | ||
124 | - [Arguments] ${initial} ${tender_data} ${field} | ||
125 | - ${field_value}= Get_From_Object ${initial} ${field} | ||
126 | - ${field_response}= Get_From_Object ${tender_data} ${field} | ||
127 | - Should Not Be Equal ${field_response} ${None} | ||
128 | - Should Not Be Equal ${field_value} ${None} | ||
129 | - Should Be Equal ${field_value} ${field_response} | 113 | + [Arguments] ${username} ${tender_data} ${field} |
114 | + ${left}= Get_From_Object ${tender_data.data} ${field} | ||
115 | + ${right}= Викликати для учасника ${username} Отримати інформацію із тендера ${field} | ||
116 | + Порівняти об'єкти ${left} ${right} | ||
117 | + | ||
118 | +Порівняти об'єкти | ||
119 | + [Arguments] ${left} ${right} | ||
120 | + Should Not Be Equal ${left} ${None} | ||
121 | + Should Not Be Equal ${right} ${None} | ||
122 | + Should Be Equal ${left} ${right} | ||
130 | 123 | ||
131 | Звірити дату тендера | 124 | Звірити дату тендера |
132 | - [Arguments] ${username} ${field} | ||
133 | - ${isodate}= Get_From_Object ${INITIAL_TENDER_DATA.data} ${field} | ||
134 | - Should Not Be Equal ${isodate} ${None} | ||
135 | - Звірити дату ${username} ${field} ${isodate} | 125 | + [Arguments] ${username} ${tender_data} ${field} |
126 | + ${left}= Get_From_Object ${tender_data.data} ${field} | ||
127 | + ${right}= Викликати для учасника ${username} Отримати інформацію із тендера ${field} | ||
128 | + Звірити дату ${left} ${right} | ||
136 | 129 | ||
137 | Звірити дату | 130 | Звірити дату |
138 | - [Arguments] ${username} ${field} ${subject} | ||
139 | - ${field_date}= Викликати для учасника ${username} Отримати інформацію із тендера ${field} | ||
140 | - ${returned}= compare_date ${subject} ${field_date} | ||
141 | - Should Not Be Equal ${field_date} ${None} | ||
142 | - Should Not Be Equal ${returned} ${None} | ||
143 | - Should Be True '${returned}' == 'True' | 131 | + [Arguments] ${left} ${right} |
132 | + Should Not Be Equal ${left} ${None} | ||
133 | + Should Not Be Equal ${right} ${None} | ||
134 | + ${status}= compare_date ${left} ${right} | ||
135 | + Should Be True ${status} | ||
144 | 136 | ||
145 | Звірити поля предметів закупівлі багатопредметного тендера | 137 | Звірити поля предметів закупівлі багатопредметного тендера |
146 | - [Arguments] ${username} ${field} | 138 | + [Arguments] ${username} ${tender_data} ${field} |
147 | Дочекатись синхронізації з майданчиком ${username} | 139 | Дочекатись синхронізації з майданчиком ${username} |
148 | - @{items}= Get_From_Object ${INITIAL_TENDER_DATA.data} items | 140 | + @{items}= Get_From_Object ${tender_data.data} items |
149 | ${len_of_items}= Get Length ${items} | 141 | ${len_of_items}= Get Length ${items} |
150 | :FOR ${index} IN RANGE ${len_of_items} | 142 | :FOR ${index} IN RANGE ${len_of_items} |
151 | \ Log ${index} | 143 | \ Log ${index} |
152 | \ Звірити поле тендера ${viewer} items[${index}].${field} | 144 | \ Звірити поле тендера ${viewer} items[${index}].${field} |
153 | 145 | ||
154 | Звірити дату предметів закупівлі багатопредметного тендера | 146 | Звірити дату предметів закупівлі багатопредметного тендера |
155 | - [Arguments] ${username} ${field} | 147 | + [Arguments] ${username} ${tender_data} ${field} |
156 | Дочекатись синхронізації з майданчиком ${username} | 148 | Дочекатись синхронізації з майданчиком ${username} |
157 | - @{items}= Get_From_Object ${INITIAL_TENDER_DATA.data} items | 149 | + @{items}= Get_From_Object ${tender_data.data} items |
158 | ${len_of_items}= Get Length ${items} | 150 | ${len_of_items}= Get Length ${items} |
159 | :FOR ${index} IN RANGE ${len_of_items} | 151 | :FOR ${index} IN RANGE ${len_of_items} |
160 | \ Log ${index} | 152 | \ Log ${index} |
@@ -162,13 +154,13 @@ Get Broker Property By Username | @@ -162,13 +154,13 @@ Get Broker Property By Username | ||
162 | 154 | ||
163 | Викликати для учасника | 155 | Викликати для учасника |
164 | [Documentation] | 156 | [Documentation] |
165 | - ... Cause sometimes keyword SHOULD fail to pass the testcase, | ||
166 | - ... this keyword takes "shouldfail" argument as first one in @{arguments} | ||
167 | - ... and switches the behaviour of keyword and "shouldfail" | 157 | + ... Cause sometimes keyword SHOULD fail to pass the testcase, |
158 | + ... this keyword takes "shouldfail" argument as first one in @{arguments} | ||
159 | + ... and switches the behaviour of keyword and "shouldfail" | ||
168 | [Arguments] ${username} ${command} @{arguments} | 160 | [Arguments] ${username} ${command} @{arguments} |
169 | Log ${username} | 161 | Log ${username} |
170 | Log ${command} | 162 | Log ${command} |
171 | - Log ${arguments} | 163 | + Log Many @{arguments} |
172 | ${state}= change_state ${arguments} | 164 | ${state}= change_state ${arguments} |
173 | Run Keyword And Return If '${state}' == 'shouldfail' SwitchState ${username} ${command} @{arguments} | 165 | Run Keyword And Return If '${state}' == 'shouldfail' SwitchState ${username} ${command} @{arguments} |
174 | Run Keyword And Return If '${state}' == 'pass' Normal ${username} ${command} @{arguments} | 166 | Run Keyword And Return If '${state}' == 'pass' Normal ${username} ${command} @{arguments} |
@@ -177,17 +169,17 @@ Normal | @@ -177,17 +169,17 @@ Normal | ||
177 | [Arguments] ${username} ${command} @{arguments} | 169 | [Arguments] ${username} ${command} @{arguments} |
178 | Log ${username} | 170 | Log ${username} |
179 | Log ${command} | 171 | Log ${command} |
180 | - Log ${arguments} | 172 | + Log Many @{arguments} |
181 | ${keywords_file}= Get Broker Property By Username ${username} keywords_file | 173 | ${keywords_file}= Get Broker Property By Username ${username} keywords_file |
182 | Run Keyword And Return ${keywords_file}.${command} ${username} @{arguments} | 174 | Run Keyword And Return ${keywords_file}.${command} ${username} @{arguments} |
183 | 175 | ||
184 | SwitchState | 176 | SwitchState |
185 | [Arguments] ${username} ${command} @{arguments} | 177 | [Arguments] ${username} ${command} @{arguments} |
186 | - log ${username} | ||
187 | - log ${command} | ||
188 | - log ${arguments} | 178 | + Log ${username} |
179 | + Log ${command} | ||
180 | + Log Many @{arguments} | ||
189 | Remove From List ${arguments} 0 | 181 | Remove From List ${arguments} 0 |
190 | - log ${arguments} | 182 | + Log Many @{arguments} |
191 | ${keywords_file}= Get Broker Property By Username ${username} keywords_file | 183 | ${keywords_file}= Get Broker Property By Username ${username} keywords_file |
192 | ${status} ${value}= run_keyword_and_ignore_keyword_definitions ${keywords_file}.${command} ${username} @{arguments} | 184 | ${status} ${value}= run_keyword_and_ignore_keyword_definitions ${keywords_file}.${command} ${username} @{arguments} |
193 | Run keyword if '${status}' == 'PASS' Log Учасник ${username} зміг виконати "${command}" WARN | 185 | Run keyword if '${status}' == 'PASS' Log Учасник ${username} зміг виконати "${command}" WARN |
@@ -199,13 +191,13 @@ SwitchState | @@ -199,13 +191,13 @@ SwitchState | ||
199 | Run Keyword If ${wait_timeout}>0 Sleep ${wait_timeout} | 191 | Run Keyword If ${wait_timeout}>0 Sleep ${wait_timeout} |
200 | 192 | ||
201 | Дочекатись дати початку прийому пропозицій | 193 | Дочекатись дати початку прийому пропозицій |
202 | - Дочекатись дати ${TENDER_DATA.data.tenderPeriod.startDate} | 194 | + Дочекатись дати ${tender_data.data.tenderPeriod.startDate} |
203 | 195 | ||
204 | Дочекатись дати закінчення прийому пропозицій | 196 | Дочекатись дати закінчення прийому пропозицій |
205 | - Дочекатись дати ${TENDER_DATA.data.tenderPeriod.endDate} | 197 | + Дочекатись дати ${tender_data.data.tenderPeriod.endDate} |
206 | 198 | ||
207 | Дочекатись дати початку аукціону | 199 | Дочекатись дати початку аукціону |
208 | - Дочекатись дати ${TENDER_DATA.data.auctionPeriod.startDate} | 200 | + Дочекатись дати ${tender_data.data.auctionPeriod.startDate} |
209 | 201 | ||
210 | Дочекатись дати закінчення аукціону | 202 | Дочекатись дати закінчення аукціону |
211 | - Дочекатись дати ${TENDER_DATA.data.auctionPeriod.endDate} | 203 | + Дочекатись дати ${tender_data.data.auctionPeriod.endDate} |
@@ -18,7 +18,8 @@ ${broker} Quinta | @@ -18,7 +18,8 @@ ${broker} Quinta | ||
18 | *** Test Cases *** | 18 | *** Test Cases *** |
19 | Можливість оголосити багатопредметний тендер | 19 | Можливість оголосити багатопредметний тендер |
20 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 20 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
21 | - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | 21 | + ${tender_data}= Підготовка початкових даних |
22 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} | ||
22 | ${LAST_MODIFICATION_DATE}= Get Current Date | 23 | ${LAST_MODIFICATION_DATE}= Get Current Date |
23 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | 24 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} |
24 | Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | 25 | Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} |
1 | # -*- coding: utf-8 - | 1 | # -*- coding: utf-8 - |
2 | -import os | ||
3 | -from munch import munchify, Munch, fromYAML | ||
4 | -from json import load | ||
5 | -from iso8601 import parse_date | ||
6 | -from robot.output import LOGGER | ||
7 | -from robot.output.loggerhelper import Message | ||
8 | -from robot.libraries.BuiltIn import BuiltIn | ||
9 | -from robot.errors import HandlerExecutionFailed | ||
10 | -from datetime import datetime, timedelta, date | 2 | +from datetime import datetime, timedelta |
11 | from dateutil.parser import parse | 3 | from dateutil.parser import parse |
12 | -from dateutil.tz import tzlocal | ||
13 | -from pytz import timezone | ||
14 | from dpath.util import set as xpathset | 4 | from dpath.util import set as xpathset |
5 | +from iso8601 import parse_date | ||
6 | +from json import load | ||
15 | from jsonpath_rw import parse as parse_path | 7 | from jsonpath_rw import parse as parse_path |
16 | -import time | 8 | +from munch import fromYAML, Munch, munchify |
9 | +from pytz import timezone | ||
10 | +from robot.errors import HandlerExecutionFailed | ||
11 | +from robot.libraries.BuiltIn import BuiltIn | ||
12 | +from robot.output import LOGGER | ||
13 | +from robot.output.loggerhelper import Message | ||
14 | +# These imports are not pointless. Robot's resource and testsuite files | ||
15 | +# can access them by simply importing library "service_keywords". | ||
16 | +# Please ignore the warning given by Flake8 or other linter. | ||
17 | from .initial_data import ( | 17 | from .initial_data import ( |
18 | - test_tender_data, test_question_data, test_question_answer_data, | ||
19 | - test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, | ||
20 | - auction_bid, prom_test_tender_data, create_fake_doc | 18 | + auction_bid, create_fake_doc, |
19 | + test_award_data, test_bid_data, test_complaint_data, | ||
20 | + test_complaint_reply_data, test_question_answer_data, | ||
21 | + test_question_data, test_tender_data, test_tender_data_multiple_lots | ||
21 | ) | 22 | ) |
22 | -import calendar | 23 | +import os |
23 | 24 | ||
24 | 25 | ||
25 | TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev') | 26 | TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev') |
26 | 27 | ||
28 | + | ||
27 | def get_now(): | 29 | def get_now(): |
28 | return datetime.now(TZ) | 30 | return datetime.now(TZ) |
29 | 31 | ||
32 | + | ||
30 | def get_date(): | 33 | def get_date(): |
31 | - return get_now().isoformat() | 34 | + return get_now().isoformat() |
35 | + | ||
32 | 36 | ||
33 | def get_file_contents(path): | 37 | def get_file_contents(path): |
34 | with open(path, 'r') as f: | 38 | with open(path, 'r') as f: |
35 | return unicode(f.read()) or u'' | 39 | return unicode(f.read()) or u'' |
36 | 40 | ||
41 | + | ||
37 | def change_state(arguments): | 42 | def change_state(arguments): |
38 | try: | 43 | try: |
39 | if arguments[0] == "shouldfail": | 44 | if arguments[0] == "shouldfail": |
@@ -42,22 +47,26 @@ def change_state(arguments): | @@ -42,22 +47,26 @@ def change_state(arguments): | ||
42 | except IndexError: | 47 | except IndexError: |
43 | return "pass" | 48 | return "pass" |
44 | 49 | ||
45 | -def prepare_prom_test_tender_data(): | ||
46 | - return munchify({'data': prom_test_tender_data()}) | 50 | + |
51 | +def prepare_prom_test_tender_data(period_intervals, mode): | ||
52 | + t_data = prepare_test_tender_data(period_intervals, mode) | ||
53 | + return munchify({'data': t_data}) | ||
54 | + | ||
47 | 55 | ||
48 | def compare_date(data1, data2): | 56 | def compare_date(data1, data2): |
49 | - data1=parse(data1) | ||
50 | - data2=parse(data2) | 57 | + data1 = parse(data1) |
58 | + data2 = parse(data2) | ||
51 | if data1.tzinfo is None: | 59 | if data1.tzinfo is None: |
52 | data1 = TZ.localize(data1) | 60 | data1 = TZ.localize(data1) |
53 | if data2.tzinfo is None: | 61 | if data2.tzinfo is None: |
54 | data2 = TZ.localize(data2) | 62 | data2 = TZ.localize(data2) |
55 | 63 | ||
56 | - delta = (data1-data2).total_seconds() | 64 | + delta = (data1 - data2).total_seconds() |
57 | if abs(delta) > 60: | 65 | if abs(delta) > 60: |
58 | - return False | 66 | + return False |
59 | return True | 67 | return True |
60 | 68 | ||
69 | + | ||
61 | def log_object_data(data, file_name=None, format="yaml"): | 70 | def log_object_data(data, file_name=None, format="yaml"): |
62 | """Log object data in pretty format (JSON or YAML) | 71 | """Log object data in pretty format (JSON or YAML) |
63 | 72 | ||
@@ -89,10 +98,6 @@ def log_object_data(data, file_name=None, format="yaml"): | @@ -89,10 +98,6 @@ def log_object_data(data, file_name=None, format="yaml"): | ||
89 | with open(os.path.join(output_dir, file_name + '.' + format), "w") as file_obj: | 98 | with open(os.path.join(output_dir, file_name + '.' + format), "w") as file_obj: |
90 | file_obj.write(data) | 99 | file_obj.write(data) |
91 | 100 | ||
92 | -def convert_date_to_prom_format(isodate): | ||
93 | - iso_dt=parse_date(isodate) | ||
94 | - day_string = iso_dt.strftime("%d.%m.%Y %H:%M") | ||
95 | - return day_string | ||
96 | 101 | ||
97 | def load_initial_data_from(file_name): | 102 | def load_initial_data_from(file_name): |
98 | if not os.path.exists(file_name): | 103 | if not os.path.exists(file_name): |
@@ -104,12 +109,12 @@ def load_initial_data_from(file_name): | @@ -104,12 +109,12 @@ def load_initial_data_from(file_name): | ||
104 | return fromYAML(file_obj) | 109 | return fromYAML(file_obj) |
105 | 110 | ||
106 | 111 | ||
107 | -def prepare_test_tender_data(period_interval=2, mode='single'): | 112 | +def prepare_test_tender_data(period_intervals, mode): |
108 | if mode == 'single': | 113 | if mode == 'single': |
109 | - return munchify({'data': test_tender_data(period_interval=period_interval)}) | 114 | + return munchify({'data': test_tender_data(period_intervals)}) |
110 | elif mode == 'multi': | 115 | elif mode == 'multi': |
111 | - return munchify({'data': test_tender_data_multiple_lots(period_interval=period_interval)}) | ||
112 | - raise ValueError('A very specific bad thing happened') | 116 | + return munchify({'data': test_tender_data_multiple_lots(period_intervals)}) |
117 | + raise ValueError('Invalid mode for test_tender_data') | ||
113 | 118 | ||
114 | 119 | ||
115 | def run_keyword_and_ignore_keyword_definitions(name, *args): | 120 | def run_keyword_and_ignore_keyword_definitions(name, *args): |
@@ -130,7 +135,7 @@ def run_keyword_and_ignore_keyword_definitions(name, *args): | @@ -130,7 +135,7 @@ def run_keyword_and_ignore_keyword_definitions(name, *args): | ||
130 | """ | 135 | """ |
131 | try: | 136 | try: |
132 | status, _ = BuiltIn().run_keyword_and_ignore_error(name, *args) | 137 | status, _ = BuiltIn().run_keyword_and_ignore_error(name, *args) |
133 | - except HandlerExecutionFailed, e: | 138 | + except HandlerExecutionFailed: |
134 | LOGGER.log_message(Message("Keyword {} not implemented", "ERROR")) | 139 | LOGGER.log_message(Message("Keyword {} not implemented", "ERROR")) |
135 | return "FAIL", "" | 140 | return "FAIL", "" |
136 | return status, _ | 141 | return status, _ |
@@ -174,62 +179,35 @@ def wait_to_date(date_stamp): | @@ -174,62 +179,35 @@ def wait_to_date(date_stamp): | ||
174 | return 0 | 179 | return 0 |
175 | return wait_seconds | 180 | return wait_seconds |
176 | 181 | ||
177 | -##GUI Frontends common | 182 | + |
183 | +def merge_dicts(left, right): | ||
184 | + new = {} | ||
185 | + new.update(left) | ||
186 | + new.update(right) | ||
187 | + return new | ||
188 | + | ||
189 | + | ||
190 | +# GUI Frontends common | ||
191 | +def add_data_for_gui_frontends(tender_data): | ||
192 | + now = datetime.now() | ||
193 | + # tender_data.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | ||
194 | + tender_data.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat() | ||
195 | + tender_data.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat() | ||
196 | + tender_data.data.tenderPeriod['endDate'] = (now + timedelta(minutes=11)).isoformat() | ||
197 | + return tender_data | ||
198 | + | ||
199 | + | ||
178 | def convert_date_to_slash_format(isodate): | 200 | def convert_date_to_slash_format(isodate): |
179 | - iso_dt=parse_date(isodate) | 201 | + iso_dt = parse_date(isodate) |
180 | date_string = iso_dt.strftime("%d/%m/%Y") | 202 | date_string = iso_dt.strftime("%d/%m/%Y") |
181 | - return date_string | 203 | + return date_string |
204 | + | ||
205 | + | ||
206 | +def convert_datetime_to_dot_format(isodate): | ||
207 | + iso_dt = parse_date(isodate) | ||
208 | + day_string = iso_dt.strftime("%d.%m.%Y %H:%M") | ||
209 | + return day_string | ||
182 | 210 | ||
183 | -def Add_data_for_GUI_FrontEnds(INITIAL_TENDER_DATA): | ||
184 | - now = datetime.now() | ||
185 | - #INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | ||
186 | - INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat() | ||
187 | - INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat() | ||
188 | - INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=11)).isoformat() | ||
189 | - return INITIAL_TENDER_DATA | ||
190 | 211 | ||
191 | def local_path_to_file(file_name): | 212 | def local_path_to_file(file_name): |
192 | return os.path.join(os.path.dirname(__file__), 'documents', file_name) | 213 | return os.path.join(os.path.dirname(__file__), 'documents', file_name) |
193 | - | ||
194 | -## E-Tender | ||
195 | -def convert_date_to_etender_format(isodate): | ||
196 | - iso_dt=parse_date(isodate) | ||
197 | - date_string = iso_dt.strftime("%d-%m-%Y") | ||
198 | - return date_string | ||
199 | - | ||
200 | -def convert_date_for_delivery(isodate): | ||
201 | - iso_dt=parse_date(isodate) | ||
202 | - date_string = iso_dt.strftime("%Y-%m-%d %H:%M") | ||
203 | - return date_string | ||
204 | - | ||
205 | -def convert_time_to_etender_format(isodate): | ||
206 | - iso_dt=parse_date(isodate) | ||
207 | - time_string = iso_dt.strftime("%H:%M") | ||
208 | - return time_string | ||
209 | - | ||
210 | -def procuringEntity_name(INITIAL_TENDER_DATA): | ||
211 | - INITIAL_TENDER_DATA.data.procuringEntity['name'] = u"Повна назва невідомо чого" | ||
212 | - return INITIAL_TENDER_DATA | ||
213 | - | ||
214 | -##Newtend | ||
215 | -def newtend_date_picker_index(isodate): | ||
216 | - now = datetime.today() | ||
217 | - date_str = '01' + str(now.month) + str(now.year) | ||
218 | - first_day_of_month = datetime.strptime(date_str, "%d%m%Y") | ||
219 | - mod = first_day_of_month.isoweekday() - 2 | ||
220 | - iso_dt=parse_date(isodate) | ||
221 | - last_day_of_month = calendar.monthrange(now.year, now.month)[1] | ||
222 | - #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO")) | ||
223 | - if now.day>iso_dt.day: | ||
224 | - mod = calendar.monthrange(now.year, now.month)[1] + mod | ||
225 | - return mod + iso_dt.day | ||
226 | - | ||
227 | -def Update_data_for_Newtend(INITIAL_TENDER_DATA): | ||
228 | - #INITIAL_TENDER_DATA.data.items[0].classification['description'] = u"Картонки" | ||
229 | - INITIAL_TENDER_DATA.data.procuringEntity['name'] = u"openprocurement" | ||
230 | - return INITIAL_TENDER_DATA | ||
231 | - | ||
232 | -def subtract_from_time(date_time,substr_min,substr_sec): | ||
233 | - now = datetime.strptime(date_time,"%d.%m.%Y %H:%M") | ||
234 | - now = (now - timedelta(minutes=int(substr_min), seconds = int (substr_sec) )).isoformat() | ||
235 | - return now |
@@ -21,7 +21,8 @@ ${question_id} 0 | @@ -21,7 +21,8 @@ ${question_id} 0 | ||
21 | Можливість оголосити однопредметний тендер | 21 | Можливість оголосити однопредметний тендер |
22 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 22 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
23 | [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), | 23 | [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), |
24 | - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | 24 | + ${tender_data}= Підготовка початкових даних |
25 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} | ||
25 | ${LAST_MODIFICATION_DATE}= Get Current Date | 26 | ${LAST_MODIFICATION_DATE}= Get Current Date |
26 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | 27 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} |
27 | Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | 28 | Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} |
@@ -289,7 +290,7 @@ ${question_id} 0 | @@ -289,7 +290,7 @@ ${question_id} 0 | ||
289 | [Documentation] | 290 | [Documentation] |
290 | ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" | 291 | ... "shouldfail" argument as first switches the behaviour of keyword and "Викликати для учасника" to "fail if passed" |
291 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання | 292 | [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання |
292 | - ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${questions[${question_id}]} | 293 | + ${resp}= Викликати для учасника ${provider} Задати питання shouldfail ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} |
293 | 294 | ||
294 | Подати цінову пропозицію другим учасником | 295 | Подати цінову пропозицію другим учасником |
295 | [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | 296 | [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію |
@@ -19,7 +19,8 @@ ${broker} Quinta | @@ -19,7 +19,8 @@ ${broker} Quinta | ||
19 | Можливість оголосити однопредметний тендер | 19 | Можливість оголосити однопредметний тендер |
20 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | 20 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер |
21 | [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), | 21 | [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера), |
22 | - ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${INITIAL_TENDER_DATA} | 22 | + ${tender_data}= Підготовка початкових даних |
23 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} | ||
23 | ${LAST_MODIFICATION_DATE}= Get Current Date | 24 | ${LAST_MODIFICATION_DATE}= Get Current Date |
24 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | 25 | Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} |
25 | Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | 26 | Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} |
Please
register
or
login
to post a comment