Commit ea70f3964f973e0a8b6929ecc8ce5619e2a73813

Authored by selurvedu
2 parents 8f12b8f1 eead56df

Merge pull request #664 from Viktoriia-Kokuienko/master

New below_funders scenario
@@ -73,6 +73,17 @@ Resource resource.robot @@ -73,6 +73,17 @@ Resource resource.robot
73 Run as ${username} Пошук плану по ідентифікатору ${TENDER['TENDER_UAID']} 73 Run as ${username} Пошук плану по ідентифікатору ${TENDER['TENDER_UAID']}
74 74
75 75
  76 +Можливість знайти тендер за кошти донора для усіх користувачів
  77 + :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer}
  78 + \ Можливість знайти тендер за кошти донора для користувача ${username}
  79 +
  80 +
  81 +Можливість знайти тендер за кошти донора для користувача ${username}
  82 + Дочекатись синхронізації з майданчиком ${username}
  83 + ${funder_id}= Set Variable ${USERS.users['${tender_owner}'].initial_data.data['funders'][0]['identifier']['id']}
  84 + Run as ${username} Пошук тендера за кошти донора ${funder_id}
  85 +
  86 +
76 Можливість знайти тендер по ідентифікатору ${tender_id} та зберегти його в ${save_location} для користувача ${username} 87 Можливість знайти тендер по ідентифікатору ${tender_id} та зберегти його в ${save_location} для користувача ${username}
77 Дочекатись синхронізації з майданчиком ${username} 88 Дочекатись синхронізації з майданчиком ${username}
78 Run as ${username} Пошук тендера по ідентифікатору ${tender_id} ${save_location} 89 Run as ${username} Пошук тендера по ідентифікатору ${tender_id} ${save_location}
@@ -82,6 +93,9 @@ Resource resource.robot @@ -82,6 +93,9 @@ Resource resource.robot
82 Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value} 93 Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value}
83 94
84 95
  96 +Перевірити неможливість зміни поля ${field_name} тендера на значення ${field_value} для користувача ${username}
  97 + Require Failure ${username} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value}
  98 +
85 Можливість змінити поле ${field_name} плану на ${field_value} 99 Можливість змінити поле ${field_name} плану на ${field_value}
86 Run As ${tender_owner} Внести зміни в план ${TENDER['TENDER_UAID']} ${field_name} ${field_value} 100 Run As ${tender_owner} Внести зміни в план ${TENDER['TENDER_UAID']} ${field_name} ${field_value}
87 101
@@ -128,6 +142,19 @@ Resource resource.robot @@ -128,6 +142,19 @@ Resource resource.robot
128 Run As ${tender_owner} Видалити предмет закупівлі плану ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id} 142 Run As ${tender_owner} Видалити предмет закупівлі плану ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].item_data.item_id}
129 143
130 144
  145 +Можливість видалити поле ${field_name} з донора ${funders_index}
  146 + Run As ${tender_owner} Видалити поле з донора ${TENDER['TENDER_UAID']} ${funders_index} ${field_name}
  147 +
  148 +
  149 +Можливість видалити донора ${funders_index}
  150 + Run As ${tender_owner} Видалити донора ${TENDER['TENDER_UAID']} ${funders_index}
  151 +
  152 +
  153 +Можливість додати донора
  154 + ${funders_data}= create_fake_funder
  155 + Run As ${tender_owner} Додати донора ${TENDER['TENDER_UAID']} ${funders_data}
  156 +
  157 +
131 Звірити відображення поля ${field} документа ${doc_id} із ${left} для користувача ${username} 158 Звірити відображення поля ${field} документа ${doc_id} із ${left} для користувача ${username}
132 ${right}= Run As ${username} Отримати інформацію із документа ${TENDER['TENDER_UAID']} ${doc_id} ${field} 159 ${right}= Run As ${username} Отримати інформацію із документа ${TENDER['TENDER_UAID']} ${doc_id} ${field}
133 Порівняти об'єкти ${left} ${right} 160 Порівняти об'єкти ${left} ${right}
@@ -250,6 +277,20 @@ Resource resource.robot @@ -250,6 +277,20 @@ Resource resource.robot
250 Звірити координати доставки тендера ${viewer} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${item_id} 277 Звірити координати доставки тендера ${viewer} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${item_id}
251 278
252 279
  280 +Звірити відображення поля ${field} усіх донорів для усіх користувачів
  281 + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1}
  282 + \ Звірити відображення поля ${field} усіх донорів для користувача ${username}
  283 +
  284 +
  285 +Звірити відображення поля ${field} усіх донорів для користувача ${username}
  286 + :FOR ${funders_index} IN RANGE ${FUNDERS}
  287 + \ Звірити відображення поля ${field} ${funders_index} донора для користувача ${username}
  288 +
  289 +
  290 +Звірити відображення поля ${field} ${funders_index} донора для користувача ${username}
  291 + Звірити поле донора ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} ${funders_index}
  292 +
  293 +
253 Отримати дані із поля ${field} тендера для усіх користувачів 294 Отримати дані із поля ${field} тендера для усіх користувачів
254 :FOR ${username} IN ${viewer} ${provider} ${provider1} ${tender_owner} 295 :FOR ${username} IN ${viewer} ${provider} ${provider1} ${tender_owner}
255 \ Отримати дані із поля ${field} тендера для користувача ${username} 296 \ Отримати дані із поля ${field} тендера для користувача ${username}
@@ -196,6 +196,14 @@ Library openprocurement_client.utils @@ -196,6 +196,14 @@ Library openprocurement_client.utils
196 [return] ${tender} 196 [return] ${tender}
197 197
198 198
  199 +Пошук тендера за кошти донора
  200 + [Arguments] ${username} ${funder_id}=${None} ${save_key}=tenders_with_funder
  201 + ${tenders}= get_tenders_by_funder_id ${USERS.users['${username}'].client} ${funder_id}
  202 + Set To Dictionary ${USERS.users['${username}']} ${save_key}=${tender}
  203 + Log ${tenders}
  204 + [return] ${tenders.keys()}
  205 +
  206 +
199 Отримати тендер другого етапу та зберегти його 207 Отримати тендер другого етапу та зберегти його
200 [Arguments] ${username} ${tender_id} 208 [Arguments] ${username} ${tender_id}
201 ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token} 209 ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token}
@@ -248,12 +256,14 @@ Library openprocurement_client.utils @@ -248,12 +256,14 @@ Library openprocurement_client.utils
248 Внести зміни в тендер 256 Внести зміни в тендер
249 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue} 257 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
250 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 258 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  259 + ${prev_value}= Отримати дані із тендера ${username} ${tender_uaid} ${fieldname}
251 Set_To_Object ${tender.data} ${fieldname} ${fieldvalue} 260 Set_To_Object ${tender.data} ${fieldname} ${fieldvalue}
252 ${procurementMethodType}= Get From Object ${tender.data} procurementMethodType 261 ${procurementMethodType}= Get From Object ${tender.data} procurementMethodType
253 Run Keyword If '${procurementMethodType}' == 'aboveThresholdUA' or '${procurementMethodType}' == 'aboveThresholdEU' 262 Run Keyword If '${procurementMethodType}' == 'aboveThresholdUA' or '${procurementMethodType}' == 'aboveThresholdEU'
254 ... Remove From Dictionary ${tender.data} enquiryPeriod 263 ... Remove From Dictionary ${tender.data} enquiryPeriod
255 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} 264 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
256 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 265 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  266 + Run Keyword And Expect Error * Порівняти об'єкти ${prev_value} ${tender.data.${fieldname}}
257 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} 267 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue}
258 268
259 269
@@ -265,7 +275,6 @@ Library openprocurement_client.utils @@ -265,7 +275,6 @@ Library openprocurement_client.utils
265 ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender} 275 ${tender}= Call Method ${USERS.users['${username}'].client} patch_plan ${tender}
266 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue} 276 Set_To_Object ${USERS.users['${username}'].tender_data} ${fieldname} ${fieldvalue}
267 277
268 -  
269 ############################################################################## 278 ##############################################################################
270 # Item operations 279 # Item operations
271 ############################################################################## 280 ##############################################################################
@@ -297,6 +306,7 @@ Library openprocurement_client.utils @@ -297,6 +306,7 @@ Library openprocurement_client.utils
297 Remove From List ${tender.data['items']} ${item_index} 306 Remove From List ${tender.data['items']} ${item_index}
298 Call Method ${USERS.users['${username}'].client} patch_tender ${tender} 307 Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
299 308
  309 +
300 Видалити предмет закупівлі плану 310 Видалити предмет закупівлі плану
301 [Arguments] ${username} ${tender_uaid} ${item_id} ${lot_id}=${Empty} 311 [Arguments] ${username} ${tender_uaid} ${item_id} ${lot_id}=${Empty}
302 ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid} 312 ${tender}= openprocurement_client.Пошук плану по ідентифікатору ${username} ${tender_uaid}
@@ -304,6 +314,33 @@ Library openprocurement_client.utils @@ -304,6 +314,33 @@ Library openprocurement_client.utils
304 Remove From List ${tender.data['items']} ${item_index} 314 Remove From List ${tender.data['items']} ${item_index}
305 Call Method ${USERS.users['${username}'].client} patch_plan ${tender} 315 Call Method ${USERS.users['${username}'].client} patch_plan ${tender}
306 316
  317 +
  318 +Видалити поле з донора
  319 + [Arguments] ${username} ${tender_uaid} ${funders_index} ${field_name}
  320 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  321 + Delete From Dictionary ${tender.data['funders'][${funders_index}]} ${field_name}
  322 + Log ${tender.data['funders'][${funders_index}]}
  323 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  324 + Dictionary Should Not Contain Path ${reply.data['funders'][${funders_index}]} ${field_name}
  325 +
  326 +
  327 +Видалити донора
  328 + [Arguments] ${username} ${tender_uaid} ${funders_index}
  329 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  330 + Remove From List ${tender.data.funders} ${funders_index}
  331 + Log ${tender}
  332 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  333 + Log ${reply}
  334 +
  335 +
  336 +Додати донора
  337 + [Arguments] ${username} ${tender_uaid} ${funders_data}
  338 + ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  339 + Set To Dictionary ${tender.data} funders=@{EMPTY}
  340 + Append To List ${tender.data.funders} ${funders_data}
  341 + Log ${tender}
  342 + ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender}
  343 +
307 ############################################################################## 344 ##############################################################################
308 # Lot operations 345 # Lot operations
309 ############################################################################## 346 ##############################################################################
@@ -118,6 +118,31 @@ def get_document_by_id(data, doc_id): @@ -118,6 +118,31 @@ def get_document_by_id(data, doc_id):
118 raise Exception('Document with id {} not found'.format(doc_id)) 118 raise Exception('Document with id {} not found'.format(doc_id))
119 119
120 120
  121 +def get_tenders_by_funder_id(client,
  122 + funder_id=None,
  123 + descending=True,
  124 + tender_id_field='tenderID',
  125 + opt_fields=('funders',)):
  126 + params = {'offset': '',
  127 + 'opt_fields': ','.join((tender_id_field,) + opt_fields),
  128 + 'descending': descending}
  129 + tender_list = True
  130 + client._update_params(params)
  131 + tenders_with_funder = {}
  132 + while tender_list and not tenders_with_funder:
  133 + tender_list = client.get_tenders()
  134 + for tender in tender_list:
  135 + if 'funders' in tender:
  136 + tenders_with_funder[tender[tender_id_field]] = [el['identifier']['id'] for el in tender['funders']]
  137 + # In case we are looking for a specific funder
  138 + if funder_id:
  139 + tenders_with_funder = {k: v for k, v in tenders_with_funder.items() if funder_id in v}
  140 + if not tenders_with_funder:
  141 + raise IdNotFound
  142 + else:
  143 + return tenders_with_funder
  144 +
  145 +
121 def download_file_from_url(url, path_to_save_file): 146 def download_file_from_url(url, path_to_save_file):
122 f = open(path_to_save_file, 'wb') 147 f = open(path_to_save_file, 'wb')
123 f.write(urllib.urlopen(url).read()) 148 f.write(urllib.urlopen(url).read())
@@ -33,10 +33,22 @@ def create_fake_sentence(): @@ -33,10 +33,22 @@ def create_fake_sentence():
33 return fake.sentence(nb_words=10, variable_nb_words=True) 33 return fake.sentence(nb_words=10, variable_nb_words=True)
34 34
35 35
  36 +def create_fake_funder():
  37 + return fake.funders_data()
  38 +
  39 +
  40 +def get_fake_funder_scheme():
  41 + return fake.funder_scheme()
  42 +
  43 +
36 def create_fake_amount(award_amount): 44 def create_fake_amount(award_amount):
37 return round(random.uniform(1, award_amount), 2) 45 return round(random.uniform(1, award_amount), 2)
38 46
39 47
  48 +def create_fake_number(min_number, max_number):
  49 + return random.randint(int(min_number), int(max_number))
  50 +
  51 +
40 def create_fake_title(): 52 def create_fake_title():
41 return u"[ТЕСТУВАННЯ] {}".format(fake.title()) 53 return u"[ТЕСТУВАННЯ] {}".format(fake.title())
42 54
@@ -93,6 +105,7 @@ def create_fake_doc(): @@ -93,6 +105,7 @@ def create_fake_doc():
93 def test_tender_data(params, 105 def test_tender_data(params,
94 periods=("enquiry", "tender"), 106 periods=("enquiry", "tender"),
95 submissionMethodDetails=None, 107 submissionMethodDetails=None,
  108 + funders=None,
96 accelerator=None): 109 accelerator=None):
97 submissionMethodDetails = submissionMethodDetails \ 110 submissionMethodDetails = submissionMethodDetails \
98 if submissionMethodDetails else "quick" 111 if submissionMethodDetails else "quick"
@@ -175,6 +188,8 @@ def test_tender_data(params, @@ -175,6 +188,8 @@ def test_tender_data(params,
175 data['features'].append(new_feature) 188 data['features'].append(new_feature)
176 if not data['features']: 189 if not data['features']:
177 del data['features'] 190 del data['features']
  191 + if funders is not None:
  192 + data['funders'] = [fake.funders_data() for _ in range(int(funders))]
178 data['status'] = 'draft' 193 data['status'] = 'draft'
179 return munchify(data) 194 return munchify(data)
180 195
@@ -215,7 +215,8 @@ Get Broker Property By Username @@ -215,7 +215,8 @@ Get Broker Property By Username
215 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} 215 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers}
216 ${submissionMethodDetails}= Get Variable Value ${submissionMethodDetails} 216 ${submissionMethodDetails}= Get Variable Value ${submissionMethodDetails}
217 ${accelerator}= Get Variable Value ${accelerator} 217 ${accelerator}= Get Variable Value ${accelerator}
218 - ${tender_data}= prepare_test_tender_data ${period_intervals} ${tender_parameters} ${submissionMethodDetails} ${accelerator} 218 + ${funders}= Get Variable Value ${FUNDERS}
  219 + ${tender_data}= prepare_test_tender_data ${period_intervals} ${tender_parameters} ${submissionMethodDetails} ${accelerator} ${funders}
219 ${TENDER}= Create Dictionary 220 ${TENDER}= Create Dictionary
220 Set Global Variable ${TENDER} 221 Set Global Variable ${TENDER}
221 Log ${tender_data} 222 Log ${tender_data}
@@ -502,6 +503,19 @@ Log differences between dicts @@ -502,6 +503,19 @@ Log differences between dicts
502 Порівняти об'єкти ${left} ${right} 503 Порівняти об'єкти ${left} ${right}
503 504
504 505
  506 +Звірити поле донора
  507 + [Arguments] ${username} ${tender_uaid} ${tender_data} ${field} ${funders_index}
  508 + ${left}= get_from_object ${tender_data.data.funders[${funders_index}]} ${field}
  509 + Log ${left}
  510 + Звірити поле донора із значенням ${username} ${tender_uaid} ${left} ${field} ${funders_index}
  511 +
  512 +
  513 +Звірити поле донора із значенням
  514 + [Arguments] ${username} ${tender_uaid} ${left} ${field} ${funders_index} ${object_id}=${Empty}
  515 + ${right}= Отримати дані із тендера ${username} ${tender_uaid} funders[${funders_index}].${field} ${object_id}
  516 + Порівняти об'єкти ${left} ${right}
  517 +
  518 +
505 Звірити відображення типу запланованого тендера для ${username} 519 Звірити відображення типу запланованого тендера для ${username}
506 ${type}= Отримати дані із плану ${username} ${TENDER['TENDER_UAID']} tender.procurementMethodType 520 ${type}= Отримати дані із плану ${username} ${TENDER['TENDER_UAID']} tender.procurementMethodType
507 Звірити відображення поля tender.procurementMethodType плану для користувача ${username} 521 Звірити відображення поля tender.procurementMethodType плану для користувача ${username}
@@ -786,10 +800,17 @@ Require Failure @@ -786,10 +800,17 @@ Require Failure
786 800
787 801
788 Дочекатись дати закінчення періоду уточнень 802 Дочекатись дати закінчення періоду уточнень
789 - [Arguments] ${username} 803 + [Arguments] ${username} ${tender_uaid}
790 Дочекатись дати ${USERS.users['${username}'].tender_data.data.enquiryPeriod.endDate} 804 Дочекатись дати ${USERS.users['${username}'].tender_data.data.enquiryPeriod.endDate}
791 Оновити LAST_MODIFICATION_DATE 805 Оновити LAST_MODIFICATION_DATE
792 Дочекатись синхронізації з майданчиком ${username} 806 Дочекатись синхронізації з майданчиком ${username}
  807 + Wait until keyword succeeds
  808 + ... 10 min 15 sec
  809 + ... 15 sec
  810 + ... Звірити статус тендера
  811 + ... ${username}
  812 + ... ${tender_uaid}
  813 + ... active.tendering
793 814
794 815
795 Дочекатись дати закінчення періоду відповідей на запитання 816 Дочекатись дати закінчення періоду відповідей на запитання
@@ -21,6 +21,8 @@ class OP_Provider(BaseProvider): @@ -21,6 +21,8 @@ class OP_Provider(BaseProvider):
21 _fake_data = load_data_from_file("op_faker_data.json") 21 _fake_data = load_data_from_file("op_faker_data.json")
22 word_list = _fake_data.words 22 word_list = _fake_data.words
23 procuringEntities = _fake_data.procuringEntities 23 procuringEntities = _fake_data.procuringEntities
  24 + funders = _fake_data.funders
  25 + funders_scheme_list = _fake_data.funders_scheme
24 addresses = _fake_data.addresses 26 addresses = _fake_data.addresses
25 classifications = _fake_data.classifications 27 classifications = _fake_data.classifications
26 cpvs = _fake_data.cpvs 28 cpvs = _fake_data.cpvs
@@ -91,6 +93,14 @@ class OP_Provider(BaseProvider): @@ -91,6 +93,14 @@ class OP_Provider(BaseProvider):
91 return deepcopy(self.random_element(self.procuringEntities)) 93 return deepcopy(self.random_element(self.procuringEntities))
92 94
93 @classmethod 95 @classmethod
  96 + def funders_data(self):
  97 + return self.random_element(self.funders)
  98 +
  99 + @classmethod
  100 + def funder_scheme(self):
  101 + return self.random_element(self.funders_scheme_list)
  102 +
  103 + @classmethod
94 def cpv(self): 104 def cpv(self):
95 return self.random_element(self.cpvs) 105 return self.random_element(self.cpvs)
96 106
@@ -507,6 +507,155 @@ @@ -507,6 +507,155 @@
507 "спускати", 507 "спускати",
508 "весілчанин" 508 "весілчанин"
509 ], 509 ],
  510 + "funders": [
  511 + {
  512 + "additionalIdentifiers": [ ],
  513 + "contactPoint": {
  514 + "telephone": "+380444906671",
  515 + "url": "http://www.worldbank.org/uk/country/ukraine",
  516 + "faxNumber": "+380444906670",
  517 + "name": "Darya Gulei",
  518 + "email": "ukraine@worldbank.org"
  519 + },
  520 + "identifier": {
  521 + "scheme": "XM-DAC",
  522 + "id": "44000",
  523 + "legalName": "International Bank for Reconstruction and Development (IBRD)"
  524 + },
  525 + "name": "World Bank",
  526 + "address": {
  527 + "postalCode": "20433",
  528 + "countryName": "USA",
  529 + "streetAddress": "1818 H Street, NW",
  530 + "region": "DC",
  531 + "locality": "Washington"
  532 + }
  533 + }
  534 + ],
  535 + "funders_scheme": [
  536 + "AE-ACCI",
  537 + "AE-ADCD",
  538 + "AE-AFZ",
  539 + "AE-DCCI",
  540 + "AE-DFSA",
  541 + "AE-DIFC",
  542 + "AE-FFZ",
  543 + "AT-FN",
  544 + "AE-FUJCCI",
  545 + "AE-HFZA",
  546 + "AE-RAKIA",
  547 + "AE-SAIF",
  548 + "AE-SCCI",
  549 + "AE-UAQCCI",
  550 + "AF-CBR",
  551 + "AF-MOE",
  552 + "AU-ABN",
  553 + "AU-ACNC",
  554 + "BD-NAB",
  555 + "BE-BCE_KBO",
  556 + "BE-GTCF",
  557 + "BG-EIK",
  558 + "BY-UNP",
  559 + "CA-CRA_ACR",
  560 + "CH-ZEFIX",
  561 + "CN-SAIC",
  562 + "CO-CCB",
  563 + "CY-DRCOR",
  564 + "CZ-ICO",
  565 + "DE-CRP",
  566 + "DK-CVR",
  567 + "EE-RIK",
  568 + "ES-DIR3",
  569 + "ES-RMS",
  570 + "ET-MFA",
  571 + "FI-PRO",
  572 + "FR-INSEE",
  573 + "FR-RCS",
  574 + "GB-CHC",
  575 + "GB-COH",
  576 + "GB-EDU",
  577 + "GB-GOV",
  578 + "GB-GOVUK",
  579 + "GB-NIC",
  580 + "GB-REV",
  581 + "GB-SC",
  582 + "GB-UKPRN",
  583 + "GG-RCE",
  584 + "GH-DSW",
  585 + "HU-VAT",
  586 + "ID-KDN",
  587 + "ID-KHH",
  588 + "ID-KLN",
  589 + "ID-PRO",
  590 + "IE-CHY",
  591 + "IE-CRO",
  592 + "IL-ROC",
  593 + "IM-CR",
  594 + "IM-GR",
  595 + "IN-MCA",
  596 + "IT-RI",
  597 + "JE-CR",
  598 + "JE-OAC",
  599 + "JP-JCN",
  600 + "KE-NCB",
  601 + "KE-RCO",
  602 + "KE-RSO",
  603 + "KZ-BIN",
  604 + "LS-LCN",
  605 + "LT-PVM",
  606 + "LT-RC",
  607 + "LV-RE",
  608 + "MD-IDNO",
  609 + "MM-MHA",
  610 + "MW-CNM",
  611 + "MW-MRA",
  612 + "MW-NBM",
  613 + "MW-RG",
  614 + "MY-SSM",
  615 + "MZ-MOJ",
  616 + "NG-CAC",
  617 + "NL-KVK",
  618 + "NO-BRC",
  619 + "NP-CRO",
  620 + "NP-SWC",
  621 + "PK-PCP",
  622 + "PK-VSWA",
  623 + "PL-REGON",
  624 + "PL-NIP",
  625 + "PL-KRS",
  626 + "PT-NIPPC",
  627 + "RO-CUI",
  628 + "RS-APR",
  629 + "RU-INN",
  630 + "RU-OGRN",
  631 + "SE-BLV",
  632 + "SG-ACRA",
  633 + "SI-PRS",
  634 + "SI-TIN",
  635 + "SK-ZRSR",
  636 + "TR-MERSIS",
  637 + "TR-VAT",
  638 + "TZ-BRLA",
  639 + "UA-EDR",
  640 + "UG-NGB",
  641 + "UG-RSB",
  642 + "US-DOS",
  643 + "US-EIN",
  644 + "US-USAGOV",
  645 + "UZ-KTUT",
  646 + "XI-IATI",
  647 + "XI-PB",
  648 + "XM-DAC",
  649 + "XM-EORI",
  650 + "XM-OCHA",
  651 + "ZA-CIP",
  652 + "ZA-NPO",
  653 + "ZA-PBO",
  654 + "ZM-NRB",
  655 + "ZM-PCR",
  656 + "ZW-PVO",
  657 + "ZW-ROD"
  658 + ],
510 "procuringEntities": [ 659 "procuringEntities": [
511 { 660 {
512 "contactPoint": { 661 "contactPoint": {
@@ -37,6 +37,15 @@ ${ITEM_MEAT} ${True} @@ -37,6 +37,15 @@ ${ITEM_MEAT} ${True}
37 ... critical 37 ... critical
38 Можливість знайти тендер по ідентифікатору для усіх користувачів 38 Можливість знайти тендер по ідентифікатору для усіх користувачів
39 39
  40 +
  41 +Можливість знайти тендер за кошти донора по ідентифікатору донора
  42 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера
  43 + ... viewer tender_owner provider provider1
  44 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  45 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  46 + ... find_tender_by_funder_id
  47 + Можливість знайти тендер за кошти донора для усіх користувачів
  48 +
40 ############################################################################################## 49 ##############################################################################################
41 # Відображення основних даних тендера 50 # Відображення основних даних тендера
42 ############################################################################################## 51 ##############################################################################################
@@ -421,6 +430,99 @@ ${ITEM_MEAT} ${True} @@ -421,6 +430,99 @@ ${ITEM_MEAT} ${True}
421 Звірити відображення поля featureOf усіх нецінових показників для користувача ${viewer} 430 Звірити відображення поля featureOf усіх нецінових показників для користувача ${viewer}
422 431
423 ############################################################################################## 432 ##############################################################################################
  433 +# Відображення основних даних донора
  434 +##############################################################################################
  435 +
  436 +Відображення назви донора
  437 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  438 + ... viewer tender_owner provider provider1
  439 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  440 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  441 + ... funders_view
  442 + Звірити відображення поля name усіх донорів для усіх користувачів
  443 +
  444 +
  445 +Відображення назви країни донора
  446 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  447 + ... viewer tender_owner provider provider1
  448 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  449 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  450 + ... funders_view
  451 + Звірити відображення поля address.countryName усіх донорів для усіх користувачів
  452 +
  453 +
  454 +Відображення назви міста донора
  455 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  456 + ... viewer tender_owner provider provider1
  457 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  458 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  459 + ... funders_view
  460 + Звірити відображення поля address.locality усіх донорів для усіх користувачів
  461 +
  462 +
  463 +Відображення поштового коду адреси донора
  464 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  465 + ... viewer tender_owner provider provider1
  466 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  467 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  468 + ... funders_view
  469 + Звірити відображення поля address.postalCode усіх донорів для усіх користувачів
  470 +
  471 +
  472 +Відображення регіону адреси донора
  473 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  474 + ... viewer tender_owner provider provider1
  475 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  476 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  477 + ... funders_view
  478 + Звірити відображення поля address.region усіх донорів для усіх користувачів
  479 +
  480 +
  481 +Відображення вулиці адреси донора
  482 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  483 + ... viewer tender_owner provider provider1
  484 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  485 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  486 + ... funders_view
  487 + Звірити відображення поля address.streetAddress усіх донорів для усіх користувачів
  488 +
  489 +
  490 +Відображення url веб-сторінки контактної особи
  491 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  492 + ... viewer tender_owner provider provider1
  493 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  494 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  495 + ... funders_view
  496 + Звірити відображення поля contactPoint.url усіх донорів для усіх користувачів
  497 +
  498 +
  499 +Відображення id ідентифікатора
  500 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  501 + ... viewer tender_owner provider provider1
  502 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  503 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  504 + ... funders_view
  505 + Звірити відображення поля identifier.id усіх донорів для усіх користувачів
  506 +
  507 +
  508 +Відображення юридичної назви ідентифікатора
  509 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  510 + ... viewer tender_owner provider provider1
  511 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  512 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  513 + ... funders_view
  514 + Звірити відображення поля identifier.legalName усіх донорів для усіх користувачів
  515 +
  516 +
  517 +Відображення схеми ідентифікатора
  518 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення донора тендера
  519 + ... viewer tender_owner provider provider1
  520 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  521 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  522 + ... funders_view
  523 + Звірити відображення поля identifier.scheme усіх донорів для усіх користувачів
  524 +
  525 +##############################################################################################
424 # Редагування тендера 526 # Редагування тендера
425 ############################################################################################## 527 ##############################################################################################
426 528
@@ -777,6 +879,72 @@ ${ITEM_MEAT} ${True} @@ -777,6 +879,72 @@ ${ITEM_MEAT} ${True}
777 ... critical 879 ... critical
778 Можливість видалити -1 неціновий показник 880 Можливість видалити -1 неціновий показник
779 881
  882 +
  883 +Можливість видалити донора
  884 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  885 + ... tender_owner
  886 + ... ${USERS.users['${tender_owner}'].broker}
  887 + ... delete_funder
  888 + [Teardown] Оновити LAST_MODIFICATION_DATE
  889 + Можливість видалити донора 0
  890 +
  891 +
  892 +Можливість додати донора
  893 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  894 + ... tender_owner
  895 + ... ${USERS.users['${tender_owner}'].broker}
  896 + ... add_funder
  897 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  898 + [Teardown] Оновити LAST_MODIFICATION_DATE
  899 + Можливість додати донора
  900 +
  901 +
  902 +Неможливість видалити ім'я донора
  903 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  904 + ... tender_owner
  905 + ... ${USERS.users['${tender_owner}'].broker}
  906 + ... delete_funder_field
  907 + [Teardown] Оновити LAST_MODIFICATION_DATE
  908 + Run Keyword And Expect Error * Можливість видалити поле name з донора 0
  909 +
  910 +
  911 +Неможливість видалити ім'я контактної особи донора
  912 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  913 + ... tender_owner
  914 + ... ${USERS.users['${tender_owner}'].broker}
  915 + ... delete_funder_field
  916 + [Teardown] Оновити LAST_MODIFICATION_DATE
  917 + Run Keyword And Expect Error * Можливість видалити поле contactPoint.name з донора 0
  918 +
  919 +
  920 +Неможливість видалити назву країни з адреси донора
  921 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  922 + ... tender_owner
  923 + ... ${USERS.users['${tender_owner}'].broker}
  924 + ... delete_funder_field
  925 + [Teardown] Оновити LAST_MODIFICATION_DATE
  926 + Run Keyword And Expect Error * Можливість видалити поле address.countryName з донора 0
  927 +
  928 +
  929 +Неможливість змінити id ідентифікатора донора
  930 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  931 + ... tender_owner
  932 + ... ${USERS.users['${tender_owner}'].broker}
  933 + ... change_funder_during_enquiry_period
  934 + [Teardown] Оновити LAST_MODIFICATION_DATE
  935 + ${new_id}= create_fake_number 10000 99999
  936 + Перевірити неможливість зміни поля funders[0].identifier.id тендера на значення ${new_id} для користувача ${tender_owner}
  937 +
  938 +
  939 +Неможливість змінити схему ідентифікатора донора
  940 + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість редагувати тендер
  941 + ... tender_owner
  942 + ... ${USERS.users['${tender_owner}'].broker}
  943 + ... change_funder_during_enquiry_period
  944 + [Teardown] Оновити LAST_MODIFICATION_DATE
  945 + ${new_scheme}= get_fake_funder_scheme
  946 + Перевірити неможливість зміни поля funders[0].identifier.scheme тендера на значення ${new_scheme} для користувача ${tender_owner}
  947 +
780 ############################################################################################## 948 ##############################################################################################
781 # QUESTIONS 949 # QUESTIONS
782 ############################################################################################## 950 ##############################################################################################
@@ -969,6 +1137,17 @@ ${ITEM_MEAT} ${True} @@ -969,6 +1137,17 @@ ${ITEM_MEAT} ${True}
969 Можливість змінити поле description 0 лоту на ${new_description} 1137 Можливість змінити поле description 0 лоту на ${new_description}
970 Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data.lots[0]} description 1138 Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data.lots[0]} description
971 1139
  1140 +
  1141 +Неможливість змінити дані про донора після завершення періоду уточнень
  1142 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  1143 + ... tender_owner
  1144 + ... ${USERS.users['${tender_owner}'].broker}
  1145 + ... change_funder_after_enquiry_period
  1146 + [Setup] Дочекатись дати закінчення періоду уточнень ${tender_owner} ${TENDER['TENDER_UAID']}
  1147 + ${new_legalName}= create_fake_title
  1148 + Перевірити неможливість зміни поля funders[0].identifier.legalName тендера на значення ${new_legalName} для користувача ${tender_owner}
  1149 + Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data.funders[0].identifier} legalName
  1150 +
972 ############################################################################################## 1151 ##############################################################################################
973 # TENDER COMPLAINTS 1152 # TENDER COMPLAINTS
974 ############################################################################################## 1153 ##############################################################################################
@@ -4,7 +4,7 @@ from .local_time import get_now, TZ @@ -4,7 +4,7 @@ from .local_time import get_now, TZ
4 from copy import deepcopy 4 from copy import deepcopy
5 from datetime import timedelta 5 from datetime import timedelta
6 from dateutil.parser import parse 6 from dateutil.parser import parse
7 -from dpath.util import new as xpathnew 7 +from dpath.util import delete as xpathdelete, get as xpathget, new as xpathnew
8 from haversine import haversine 8 from haversine import haversine
9 from json import load, loads 9 from json import load, loads
10 from jsonpath_rw import parse as parse_path 10 from jsonpath_rw import parse as parse_path
@@ -20,7 +20,10 @@ from .initial_data import ( @@ -20,7 +20,10 @@ from .initial_data import (
20 create_fake_doc, 20 create_fake_doc,
21 create_fake_sentence, 21 create_fake_sentence,
22 create_fake_amount, 22 create_fake_amount,
  23 + create_fake_number,
23 create_fake_date, 24 create_fake_date,
  25 + create_fake_funder,
  26 + get_fake_funder_scheme,
24 fake, 27 fake,
25 subtraction, 28 subtraction,
26 field_with_id, 29 field_with_id,
@@ -62,7 +65,9 @@ from restkit import request @@ -62,7 +65,9 @@ from restkit import request
62 import os 65 import os
63 import re 66 import re
64 67
  68 +
65 NUM_TYPES = (int, long, float) 69 NUM_TYPES = (int, long, float)
  70 +STR_TYPES = (str, unicode)
66 71
67 72
68 def get_current_tzdate(): 73 def get_current_tzdate():
@@ -294,7 +299,8 @@ def compute_intrs(brokers_data, used_brokers): @@ -294,7 +299,8 @@ def compute_intrs(brokers_data, used_brokers):
294 def prepare_test_tender_data(procedure_intervals, 299 def prepare_test_tender_data(procedure_intervals,
295 tender_parameters, 300 tender_parameters,
296 submissionMethodDetails, 301 submissionMethodDetails,
297 - accelerator): 302 + accelerator,
  303 + funders):
298 # Get actual intervals by mode name 304 # Get actual intervals by mode name
299 mode = tender_parameters['mode'] 305 mode = tender_parameters['mode']
300 if mode in procedure_intervals: 306 if mode in procedure_intervals:
@@ -332,6 +338,7 @@ def prepare_test_tender_data(procedure_intervals, @@ -332,6 +338,7 @@ def prepare_test_tender_data(procedure_intervals,
332 return munchify({'data': test_tender_data( 338 return munchify({'data': test_tender_data(
333 tender_parameters, 339 tender_parameters,
334 submissionMethodDetails=submissionMethodDetails, 340 submissionMethodDetails=submissionMethodDetails,
  341 + funders=funders,
335 accelerator=accelerator)}) 342 accelerator=accelerator)})
336 # The previous line needs an explicit keyword argument because, 343 # The previous line needs an explicit keyword argument because,
337 # unlike previous functions, this one has three arguments. 344 # unlike previous functions, this one has three arguments.
@@ -584,3 +591,17 @@ def convert_amount_string_to_float(amount_string): @@ -584,3 +591,17 @@ def convert_amount_string_to_float(amount_string):
584 def compare_rationale_types(type1, type2): 591 def compare_rationale_types(type1, type2):
585 return set(type1) == set(type2) 592 return set(type1) == set(type2)
586 593
  594 +
  595 +def delete_from_dictionary(variable, path):
  596 + if not type(path) in STR_TYPES:
  597 + raise TypeError('path must be one of: ' +
  598 + str([x.__name__ for x in STR_TYPES]))
  599 + return xpathdelete(variable, path, separator='.')
  600 +
  601 +
  602 +def dictionary_should_not_contain_path(dictionary, path):
  603 + try:
  604 + xpathget(dictionary, path, separator='.')
  605 + except KeyError:
  606 + return
  607 + raise RuntimeError("Dictionary contains path '%s'." % path)
  1 +-v MODE:belowThreshold
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:1
  5 +-v FUNDERS:1
  6 +
  7 +-v TENDER_MEAT:False
  8 +-v ITEM_MEAT:False
  9 +-v LOT_MEAT:False
  10 +
  11 +
  12 +-i create_tender
  13 +-i find_tender
  14 +-i find_tender_by_funder_id
  15 +-i tender_view
  16 +-i lot_view
  17 +-i funders_view
  18 +
  19 +-i delete_funder_field
  20 +-i delete_funder
  21 +-i add_funder
  22 +-i change_funder_during_enquiry_period
  23 +-i change_funder_after_enquiry_period
  24 +
  25 +-i make_bid_by_provider
  26 +-i make_bid_by_provider1
  27 +-i modify_bid_by_provider1
  28 +
  29 +-i auction
  30 +
  31 +-i qualification_approve_first_award
  32 +
  33 +-i contract_sign
Please register or login to post a comment