Commit 66039b2a90f26e42b8a97893a8f227888f92cb62

Authored by Leits
1 parent df29e887

Work with question id

... ... @@ -78,6 +78,12 @@ Library openprocurement_client_helper.py
78 78 Fail Field not found: ${field_name}
79 79
80 80
  81 +Отримати інформацію із запитання
  82 + [Arguments] ${username} ${question_id} ${field_name}
  83 + ${field_name}= Отримати шлях до поля об’єкта ${username} ${field_name} ${question_id}
  84 + Run Keyword And Return openprocurement_client.Отримати інформацію із тендера ${username} ${field_name}
  85 +
  86 +
81 87 Внести зміни в тендер
82 88 [Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
83 89 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
... ... @@ -136,10 +142,10 @@ Library openprocurement_client_helper.py
136 142
137 143
138 144 Відповісти на питання
139   - [Arguments] ${username} ${tender_uaid} ${question} ${answer_data}
  145 + [Arguments] ${username} ${tender_uaid} ${question} ${answer_data} ${question_id}
140 146 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
141 147 ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token}
142   - ${answer_data.data.id}= Set Variable ${question.data.id}
  148 + ${answer_data.data.id}= openprocurement_client.Отримати інформацію із запитання ${username} ${question_id} id
143 149 ${question_with_answer}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data}
144 150 Log object data ${question_with_answer} question_with_answer
145 151 [return] ${question_with_answer}
... ...
... ... @@ -311,10 +311,8 @@ Get Broker Property By Username
311 311
312 312
313 313 Звірити поле тендера із значенням
314   - [Arguments] ${username} ${left} ${field}
315   - ${right}= Отримати дані із тендера ${username} ${field}
316   - Log ${left}
317   - Log ${right}
  314 + [Arguments] ${username} ${left} ${field} ${object_id}=${None}
  315 + ${right}= Отримати дані із тендера ${username} ${field} ${object_id}
318 316 Порівняти об'єкти ${left} ${right}
319 317
320 318
... ... @@ -334,8 +332,8 @@ Get Broker Property By Username
334 332
335 333
336 334 Звірити дату тендера із значенням
337   - [Arguments] ${username} ${left} ${field}
338   - ${right}= Отримати дані із тендера ${username} ${field}
  335 + [Arguments] ${username} ${left} ${field} ${object_id}=${None}
  336 + ${right}= Отримати дані із тендера ${username} ${field} ${object_id}
339 337 Порівняти дати ${left} ${right}
340 338
341 339
... ... @@ -374,6 +372,44 @@ Get Broker Property By Username
374 372 \ Звірити дату тендера ${viewer} ${tender_data} items[${index}].${field}
375 373
376 374
  375 +Отримати дані із тендера
  376 + [Arguments] ${username} ${field_name} ${object_id}=${None}
  377 + Log ${username}
  378 + Log ${field_name}
  379 + ${field}= Run Keyword If '${object_id}'=='${None}' Set Variable ${field_name}
  380 + ... ELSE Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}
  381 + ${status} ${field_value}= Run keyword and ignore error
  382 + ... Get from object
  383 + ... ${USERS.users['${username}'].tender_data.data}
  384 + ... ${field}
  385 + # If field in cache, return its value
  386 + Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value}
  387 + # Else call broker to find field
  388 + ${field_value}= Run Keyword IF '${object_id}'=='${None}' Run As ${username} Отримати інформацію із тендера ${field}
  389 + ... ELSE Отримати дані із об’єкта тендера ${username} ${object_id} ${field_name}
  390 + # And caching its value before return
  391 + Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field} ${field_value}
  392 + [return] ${field_value}
  393 +
  394 +
  395 +Отримати шлях до поля об’єкта
  396 + [Arguments] ${username} ${field_name} ${object_id}
  397 + ${object_type}= get_object_type_by_id ${object_id}
  398 + ${objects}= Get Variable Value ${USERS.users['${username}'].tender_data.data['${object_type}']} ${empty}
  399 + ${object_index}= get_object_index_by_id ${objects} ${object_id}
  400 + [return] ${object_type}[${object_index}].${field_name}
  401 +
  402 +
  403 +Отримати дані із об’єкта тендера
  404 + [Arguments] ${username} ${object_id} ${field_name}
  405 + ${object_type}= get_object_type_by_id ${object_id}
  406 + ${status} ${value}= Run Keyword And Ignore Error Run As ${username} Отримати інформацію із запитання ${object_id} ${field_name}
  407 + ${field}= Отримати шлях до поля об’єкта ${username} ${field_name} ${object_id}
  408 + ${field_value}= Run Keyword IF '${status}'=='PASS' Set Variable ${value}
  409 + ... ELSE Run As ${username} Отримати інформацію із тендера ${field}
  410 + [return] ${field_value}
  411 +
  412 +
377 413 Викликати для учасника
378 414 [Arguments] ${username} ${command} @{arguments}
379 415 Run keyword unless '${WARN_RUN_AS}' == '${True}'
... ... @@ -388,24 +424,6 @@ Get Broker Property By Username
388 424 Run Keyword And Return Run As ${username} ${command} @{arguments}
389 425
390 426
391   -Отримати дані із тендера
392   - [Arguments] ${username} ${field_name}
393   - Log ${username}
394   - Log ${field_name}
395   -
396   - ${status} ${field_value}= Run keyword and ignore error
397   - ... Get from object
398   - ... ${USERS.users['${username}'].tender_data.data}
399   - ... ${field_name}
400   - # If field in cache, return its value
401   - Run Keyword if '${status}' == 'PASS' Return from keyword ${field_value}
402   - # Else call broker to find field
403   - ${field_value}= Викликати для учасника ${username} Отримати інформацію із тендера ${field_name}
404   - # And caching its value before return
405   - Set_To_Object ${USERS.users['${username}'].tender_data.data} ${field_name} ${field_value}
406   - [return] ${field_value}
407   -
408   -
409 427 Run As
410 428 [Arguments] ${username} ${command} @{arguments}
411 429 [Documentation]
... ... @@ -415,7 +433,12 @@ Run As
415 433 Log ${command}
416 434 Log Many @{arguments}
417 435 ${keywords_file}= Get Broker Property By Username ${username} keywords_file
418   - Run Keyword And Return ${keywords_file}.${command} ${username} @{arguments}
  436 + ${status} ${value}= Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments}
  437 + ${unexpected_args}= Get Regexp Matches '${value}' expected [0-9] arguments, got [0-9]
  438 + ${status} ${value}= Run Keyword If "${unexpected_args}"=="[]" Set Variable ${status} ${value}
  439 + ... ELSE Run keyword and ignore keyword definitions ${keywords_file}.${command} ${username} @{arguments[:-1]}
  440 + Run Keyword If '${status}' == 'FAIL' Fail ${value}
  441 + [return] ${value}
419 442
420 443
421 444 Require Failure
... ...
... ... @@ -15,7 +15,6 @@ ${mode} multi
15 15 ${role} viewer
16 16 ${broker} Quinta
17 17
18   -${question_id} 1
19 18 ${complaint_id} 1
20 19
21 20 *** Test Cases ***
... ... @@ -177,8 +176,12 @@ ${complaint_id} 1
177 176 ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question}
178 177 ${now}= Get Current TZdate
179 178 ${question.data.date}= Set variable ${now}
180   - ${question_data}= Create Dictionary question=${question} question_resp=${question_resp}
  179 + ${question_id}= get_id_from_field ${question.data.description}
  180 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
  181 + ${question_data}= munch_dict arg=${question_data}
181 182 Set To Dictionary ${USERS.users['${provider}']} question_data ${question_data}
  183 +
  184 +
182 185 Можливість відповісти на запитання
183 186 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
184 187 ... tender_owner
... ... @@ -186,7 +189,10 @@ ${complaint_id} 1
186 189 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
187 190 [Teardown] Оновити LAST_MODIFICATION_DATE
188 191 ${answer}= Підготовка даних для відповіді на запитання
189   - ${answer_resp}= Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
  192 + ${answer_resp}= Викликати для учасника ${tender_owner}
  193 + ... Відповісти на питання ${TENDER['TENDER_UAID']}
  194 + ... ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
  195 + ... question_id=${USERS.users['${provider}'].question_data.question_id}
190 196 ${now}= Get Current TZdate
191 197 ${answer.data.date}= Set variable ${now}
192 198 ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp}
... ...
... ... @@ -8,7 +8,7 @@ from json import load
8 8 from jsonpath_rw import parse as parse_path
9 9 from munch import fromYAML, Munch, munchify
10 10 from restkit import request
11   -from robot.errors import HandlerExecutionFailed
  11 +from robot.errors import ExecutionFailed
12 12 from robot.libraries.BuiltIn import BuiltIn
13 13 from robot.output import LOGGER
14 14 from robot.output.loggerhelper import Message
... ... @@ -202,9 +202,8 @@ def run_keyword_and_ignore_keyword_definitions(name, *args, **kwargs):
202 202 """
203 203 try:
204 204 status, _ = BuiltIn().run_keyword_and_ignore_error(name, *args, **kwargs)
205   - except HandlerExecutionFailed:
206   - LOGGER.log_message(Message("Keyword is not implemented: {}".format(name), "ERROR"))
207   - status, _ = "FAIL", None
  205 + except ExecutionFailed as e:
  206 + status, _ = "FAIL", e.message
208 207 return status, _
209 208
210 209
... ... @@ -339,6 +338,24 @@ def munch_dict(arg=None, data=False):
339 338 return munchify(arg)
340 339
341 340
  341 +def get_id_from_field(field):
  342 + return re.match(r'(^[filq]-[0-9a-fA-F]{8}): ', field).group(1)
  343 +
  344 +
  345 +def get_object_type_by_id(object_id):
  346 + prefixes = {'q': 'questions', 'f': 'features', 'i': 'items', 'l': 'lots'}
  347 + return prefixes.get(object_id[0])
  348 +
  349 +
  350 +def get_object_index_by_id(data, object_id):
  351 + for index, element in enumerate(data):
  352 + element_id = get_id_from_field(element['description'])
  353 + if element_id == object_id:
  354 + break
  355 + else:
  356 + index = 0
  357 + return index
  358 +
342 359 # GUI Frontends common
343 360 def add_data_for_gui_frontends(tender_data):
344 361 now = get_now()
... ...
... ... @@ -15,8 +15,6 @@ ${mode} single
15 15 ${role} viewer
16 16 ${broker} Quinta
17 17
18   -${question_id} 0
19   -
20 18 *** Test Cases ***
21 19 Можливість оголосити однопредметний тендер
22 20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
... ... @@ -331,7 +329,8 @@ ${question_id} 0
331 329 ${question_resp}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${question}
332 330 ${now}= Get Current TZdate
333 331 ${question.data.date}= Set variable ${now}
334   - ${question_data}= Create Dictionary question=${question} question_resp=${question_resp}
  332 + ${question_id}= get_id_from_field ${question.data.description}
  333 + ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id}
335 334 ${question_data}= munch_dict arg=${question_data}
336 335 Set To Dictionary ${USERS.users['${provider}']} question_data=${question_data}
337 336
... ... @@ -346,7 +345,9 @@ ${question_id} 0
346 345 ... level2
347 346 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
348 347 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
349   - Звірити поле тендера із значенням ${viewer} ${USERS.users['${provider}'].question_data.question.data.title} questions[${question_id}].title
  348 + Звірити поле тендера із значенням ${viewer}
  349 + ... ${USERS.users['${provider}'].question_data.question.data.title} title
  350 + ... object_id=${USERS.users['${provider}'].question_data.question_id}
350 351
351 352
352 353 Відображення опису анонімного питання без відповіді
... ... @@ -354,14 +355,18 @@ ${question_id} 0
354 355 ... viewer
355 356 ... ${USERS.users['${viewer}'].broker}
356 357 ... level2
357   - Звірити поле тендера із значенням ${viewer} ${USERS.users['${provider}'].question_data.question.data.description} questions[${question_id}].description
  358 + Звірити поле тендера із значенням ${viewer}
  359 + ... ${USERS.users['${provider}'].question_data.question.data.description} description
  360 + ... object_id=${USERS.users['${provider}'].question_data.question_id}
358 361
359 362
360 363 Відображення дати анонімного питання без відповіді
361 364 [Tags] ${USERS.users['${viewer}'].broker}: Відображення анонімного питання без відповідей
362 365 ... viewer
363 366 ... ${USERS.users['${viewer}'].broker}
364   - Звірити дату тендера із значенням ${viewer} ${USERS.users['${provider}'].question_data.question.data.date} questions[${question_id}].date
  367 + Звірити дату тендера із значенням ${viewer}
  368 + ... ${USERS.users['${provider}'].question_data.question.data.date} date
  369 + ... object_id=${USERS.users['${provider}'].question_data.question_id}
365 370
366 371 ##############################################################################################
367 372 # МОЖЛИВІСТЬ
... ... @@ -389,7 +394,10 @@ ${question_id} 0
389 394 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
390 395 [Teardown] Оновити LAST_MODIFICATION_DATE
391 396 ${answer}= Підготовка даних для відповіді на запитання
392   - ${answer_resp}= Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
  397 + ${answer_resp}= Викликати для учасника ${tender_owner}
  398 + ... Відповісти на питання ${TENDER['TENDER_UAID']}
  399 + ... ${USERS.users['${provider}']['question_data']['question_resp']} ${answer}
  400 + ... question_id=${USERS.users['${provider}'].question_data.question_id}
393 401 ${now}= Get Current TZdate
394 402 ${answer.data.date}= Set variable ${now}
395 403 ${answer_data}= Create Dictionary answer=${answer} answer_resp=${answer_resp}
... ... @@ -406,7 +414,9 @@ ${question_id} 0
406 414 ... level2
407 415 [Setup] Дочекатись синхронізації з майданчиком ${viewer}
408 416 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
409   - Звірити поле тендера із значенням ${viewer} ${USERS.users['${provider}']['answer_data']['answer'].data.answer} questions[${question_id}].answer
  417 + Звірити поле тендера із значенням ${viewer}
  418 + ... ${USERS.users['${provider}']['answer_data']['answer'].data.answer} answer
  419 + ... object_id=${USERS.users['${provider}'].question_data.question_id}
410 420
411 421 ##############################################################################################
412 422 # МОЖЛИВІСТЬ
... ...
Please register or login to post a comment