Commit ccd6de4666556efb02390e77f4f92cf249c917c2
1 parent
354b1a6b
Add test case for auction/participation url check
Showing
4 changed files
with
105 additions
and
14 deletions
| @@ -61,10 +61,20 @@ Library openprocurement_client_helper.py | @@ -61,10 +61,20 @@ Library openprocurement_client_helper.py | ||
| 61 | Отримати посилання на аукціон для глядача | 61 | Отримати посилання на аукціон для глядача |
| 62 | [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty} | 62 | [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty} |
| 63 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 63 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
| 64 | - ${auctionUrl}= Run Keyword IF '${lot_id}' Set Variable ${tender.data.lots[${lot_index}].auctionUrl} | ||
| 65 | - ... ELSE Set Variable ${tender.data.auctionUrl} | 64 | + ${lots}= get_object_by_id ${tender.data} ${lot_id} lots id |
| 65 | + ${auctionUrl}= Get Variable Value ${lots['auctionUrl']} | ||
| 66 | [return] ${auctionUrl} | 66 | [return] ${auctionUrl} |
| 67 | 67 | ||
| 68 | + | ||
| 69 | +Отримати посилання на аукціон для учасника | ||
| 70 | + [Arguments] ${username} ${tender_uaid} ${relatedLot}=${Empty} | ||
| 71 | + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | ||
| 72 | + Log ${bid} | ||
| 73 | + ${lot_Values}= get_object_by_id ${bid.data} ${relatedLot} lotValues relatedLot | ||
| 74 | + ${participationUrl}= Get Variable Value ${lot_Values['participationUrl']} | ||
| 75 | + Log ${participationUrl} | ||
| 76 | + [return] ${participationUrl} | ||
| 77 | + | ||
| 68 | ############################################################################## | 78 | ############################################################################## |
| 69 | # Tender operations | 79 | # Tender operations |
| 70 | ############################################################################## | 80 | ############################################################################## |
| @@ -792,13 +802,6 @@ Library openprocurement_client_helper.py | @@ -792,13 +802,6 @@ Library openprocurement_client_helper.py | ||
| 792 | [return] ${bid.data.${field}} | 802 | [return] ${bid.data.${field}} |
| 793 | 803 | ||
| 794 | 804 | ||
| 795 | -Отримати посилання на аукціон для учасника | ||
| 796 | - [Arguments] ${username} ${tender_uaid} ${lot_id}=${Empty} | ||
| 797 | - ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | ||
| 798 | - ${participationUrl}= Run Keyword IF '${lot_id}' Set Variable ${bid.data.lotValues[${lot_index}].participationUrl} | ||
| 799 | - ... ELSE Set Variable ${bid.data.participationUrl} | ||
| 800 | - [return] ${participationUrl} | ||
| 801 | - | ||
| 802 | ############################################################################## | 805 | ############################################################################## |
| 803 | # Qualification operations | 806 | # Qualification operations |
| 804 | ############################################################################## | 807 | ############################################################################## |
| @@ -599,6 +599,37 @@ Require Failure | @@ -599,6 +599,37 @@ Require Failure | ||
| 599 | [return] ${value} | 599 | [return] ${value} |
| 600 | 600 | ||
| 601 | 601 | ||
| 602 | + | ||
| 603 | +Можливість отримати посилання на аукціон для глядача | ||
| 604 | + ${timeout_on_wait}= Get Broker Property By Username ${viewer} timeout_on_wait | ||
| 605 | + ${timeout_on_wait}= Set Variable If | ||
| 606 | + ... ${timeout_on_wait} < ${120} | ||
| 607 | + ... ${120} | ||
| 608 | + ... ${timeout_on_wait} | ||
| 609 | + ${url}= Wait Until Keyword Succeeds | ||
| 610 | + ... ${timeout_on_wait} | ||
| 611 | + ... 15 s | ||
| 612 | + ... Run As ${viewer} Отримати посилання на аукціон для глядача ${TENDER['TENDER_UAID']} | ||
| 613 | + Should Be True '${url}' | ||
| 614 | + Should Match Regexp ${url} ^https?:\/\/auction(?:-sandbox)?\.openprocurement\.org\/tenders\/([0-9A-Fa-f]{32}) | ||
| 615 | + Log URL аукціону для глядача: ${url} | ||
| 616 | + | ||
| 617 | + | ||
| 618 | +Можливість отримати посилання на аукціон для учасника ${username} | ||
| 619 | + ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait | ||
| 620 | + ${timeout_on_wait}= Set Variable If | ||
| 621 | + ... ${timeout_on_wait} < ${120} | ||
| 622 | + ... ${120} | ||
| 623 | + ... ${timeout_on_wait} | ||
| 624 | + ${url}= Wait Until Keyword Succeeds | ||
| 625 | + ... ${timeout_on_wait} | ||
| 626 | + ... 15 s | ||
| 627 | + ... Run As ${username} Отримати посилання на аукціон для учасника ${TENDER['TENDER_UAID']} | ||
| 628 | + Should Be True '${url}' | ||
| 629 | + Should Match Regexp ${url} ^https?:\/\/auction(?:-sandbox)?\.openprocurement\.org\/tenders\/([0-9A-Fa-f]{32}) | ||
| 630 | + Log URL аукціону для учасника: ${url} | ||
| 631 | + | ||
| 632 | + | ||
| 602 | Дочекатись дати | 633 | Дочекатись дати |
| 603 | [Arguments] ${date} | 634 | [Arguments] ${date} |
| 604 | ${sleep}= wait_to_date ${date} | 635 | ${sleep}= wait_to_date ${date} |
| @@ -1847,6 +1847,37 @@ ${ITEM_MEAT} ${True} | @@ -1847,6 +1847,37 @@ ${ITEM_MEAT} ${True} | ||
| 1847 | ... compare_stages | 1847 | ... compare_stages |
| 1848 | Звірити відображення поля procuringEntity.name тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.procuringEntity.name} для користувача ${viewer} | 1848 | Звірити відображення поля procuringEntity.name тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.procuringEntity.name} для користувача ${viewer} |
| 1849 | 1849 | ||
| 1850 | +################################################################### | ||
| 1851 | +# Відображення посилання на аукціон | ||
| 1852 | +################################################################### | ||
| 1853 | + | ||
| 1854 | +Можливість вичитати посилання на аукціон для глядача | ||
| 1855 | + [Tags] ${USERS.users['${viewer}'].broker}: Процес аукціону | ||
| 1856 | + ... viewer | ||
| 1857 | + ... ${USERS.users['${viewer}'].broker} | ||
| 1858 | + ... auction_url | ||
| 1859 | + [Setup] Дочекатись дати початку періоду аукціону ${viewer} ${TENDER['TENDER_UAID']} | ||
| 1860 | + Можливість отримати посилання на аукціон для глядача | ||
| 1861 | + | ||
| 1862 | + | ||
| 1863 | +Можливість вичитати посилання на аукціон для першого учасника | ||
| 1864 | + [Tags] ${USERS.users['${provider}'].broker}: Процес аукціону | ||
| 1865 | + ... provider | ||
| 1866 | + ... ${USERS.users['${provider}'].broker} | ||
| 1867 | + ... auction_url | ||
| 1868 | + [Setup] Дочекатись синхронізації з майданчиком ${provider} | ||
| 1869 | + Можливість отримати посилання на аукціон для учасника ${provider} | ||
| 1870 | + | ||
| 1871 | + | ||
| 1872 | +Можливість вичитати посилання на аукціон для другого учасника | ||
| 1873 | + [Tags] ${USERS.users['${provider1}'].broker}: Процес аукціону | ||
| 1874 | + ... provider1 | ||
| 1875 | + ... ${USERS.users['${provider1}'].broker} | ||
| 1876 | + ... auction_url | ||
| 1877 | + [Setup] Дочекатись синхронізації з майданчиком ${provider1} | ||
| 1878 | + Можливість отримати посилання на аукціон для учасника ${provider1} | ||
| 1879 | + | ||
| 1880 | + | ||
| 1850 | ############################################################################################## | 1881 | ############################################################################################## |
| 1851 | # Відображення основних даних лоту для другого етапу | 1882 | # Відображення основних даних лоту для другого етапу |
| 1852 | ############################################################################################## | 1883 | ############################################################################################## |
| @@ -443,29 +443,55 @@ def get_object_type_by_id(object_id): | @@ -443,29 +443,55 @@ def get_object_type_by_id(object_id): | ||
| 443 | return prefixes.get(object_id[0]) | 443 | return prefixes.get(object_id[0]) |
| 444 | 444 | ||
| 445 | 445 | ||
| 446 | -def get_object_index_by_id(data, object_id): | 446 | +def get_complaint_index_by_complaintID(data, complaintID): |
| 447 | if not data: | 447 | if not data: |
| 448 | return 0 | 448 | return 0 |
| 449 | for index, element in enumerate(data): | 449 | for index, element in enumerate(data): |
| 450 | - element_id = get_id_from_object(element) | ||
| 451 | - if element_id == object_id: | 450 | + if element['complaintID'] == complaintID: |
| 452 | break | 451 | break |
| 453 | else: | 452 | else: |
| 454 | index += 1 | 453 | index += 1 |
| 455 | return index | 454 | return index |
| 456 | 455 | ||
| 457 | 456 | ||
| 458 | -def get_complaint_index_by_complaintID(data, complaintID): | 457 | +def get_object_index_by_id(data, object_id): |
| 459 | if not data: | 458 | if not data: |
| 460 | return 0 | 459 | return 0 |
| 461 | for index, element in enumerate(data): | 460 | for index, element in enumerate(data): |
| 462 | - if element['complaintID'] == complaintID: | 461 | + element_id = get_id_from_object(element) |
| 462 | + if element_id == object_id: | ||
| 463 | break | 463 | break |
| 464 | else: | 464 | else: |
| 465 | index += 1 | 465 | index += 1 |
| 466 | return index | 466 | return index |
| 467 | 467 | ||
| 468 | 468 | ||
| 469 | +def get_object_by_id(data, given_object_id, slice_element, object_id): | ||
| 470 | + """ | ||
| 471 | + data: object to slice | ||
| 472 | + given_object_id: with what id we should compare | ||
| 473 | + slice_element: what path should be extracted (e.g. from { key: val } extract key ) | ||
| 474 | + object_id: what property is id (e.g. from { id: 1, name: 2 } extract id) | ||
| 475 | + """ | ||
| 476 | + sliced_object = data[slice_element] | ||
| 477 | + # Slice the given object, e.g. slice bid object to lotValues object | ||
| 478 | + | ||
| 479 | + if not sliced_object: | ||
| 480 | + return data | ||
| 481 | + | ||
| 482 | + if len(sliced_object) == 1: | ||
| 483 | + return sliced_object[0] | ||
| 484 | + # If there is one sliced object, get the 1st element | ||
| 485 | + | ||
| 486 | + for index, element in enumerate(sliced_object): | ||
| 487 | + element_id = element[object_id] | ||
| 488 | + if element_id == given_object_id: | ||
| 489 | + return element | ||
| 490 | + # Compare given object id and id from sliced object | ||
| 491 | + | ||
| 492 | + return sliced_object[0] | ||
| 493 | + | ||
| 494 | + | ||
| 469 | def generate_test_bid_data(tender_data): | 495 | def generate_test_bid_data(tender_data): |
| 470 | bid = test_bid_data() | 496 | bid = test_bid_data() |
| 471 | if tender_data.get('procurementMethodType', '')[:-2] in ('aboveThreshold', 'competitiveDialogue'): | 497 | if tender_data.get('procurementMethodType', '')[:-2] in ('aboveThreshold', 'competitiveDialogue'): |
Please
register
or
login
to post a comment