Showing
6 changed files
with
553 additions
and
92 deletions
| ... | ... | @@ -348,3 +348,57 @@ Library openprocurement_client_helper.py |
| 348 | 348 | ${contents} ${filename}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_file ${tender} ${ARGUMENTS[2]} ${token} |
| 349 | 349 | log ${filename} |
| 350 | 350 | [return] ${contents} ${filename} |
| 351 | + | |
| 352 | + | |
| 353 | +Створити лот | |
| 354 | + [Documentation] | |
| 355 | + ... ${ARGUMENTS[0]} == username | |
| 356 | + ... ${ARGUMENTS[1]} == tender | |
| 357 | + ... ${ARGUMENTS[2]} == lot | |
| 358 | + [Arguments] @{ARGUMENTS} | |
| 359 | + log many @{ARGUMENTS} | |
| 360 | + ${tender}= set_access_key ${ARGUMENTS[1]} ${USERS.users['${ARGUMENTS[0]}'].access_token} | |
| 361 | + ${tender_lot}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} create_lot ${tender} ${ARGUMENTS[2]} | |
| 362 | + Log ${tender_lot} | |
| 363 | + [return] ${tender_lot} | |
| 364 | + | |
| 365 | +Змінити лот | |
| 366 | + [Documentation] | |
| 367 | + ... ${ARGUMENTS[0]} == username | |
| 368 | + ... ${ARGUMENTS[1]} == tender | |
| 369 | + ... ${ARGUMENTS[2]} == lot | |
| 370 | + [Arguments] @{ARGUMENTS} | |
| 371 | + log many @{ARGUMENTS} | |
| 372 | + ${tender}= set_access_key ${ARGUMENTS[1]} ${USERS.users['${ARGUMENTS[0]}'].access_token} | |
| 373 | + ${tender_lot}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_lot ${tender} ${ARGUMENTS[2]} | |
| 374 | + Log ${tender_lot} | |
| 375 | + [return] ${tender_lot} | |
| 376 | + | |
| 377 | +Завантажити документ в лот | |
| 378 | + [Documentation] | |
| 379 | + ... ${ARGUMENTS[0]} == username | |
| 380 | + ... ${ARGUMENTS[1]} == filepath | |
| 381 | + ... ${ARGUMENTS[2]} == tenderUAID | |
| 382 | + ... ${ARGUMENTS[3]} == lot_id | |
| 383 | + [Arguments] @{ARGUMENTS} | |
| 384 | + log many @{ARGUMENTS} | |
| 385 | + ${tenderID}= openprocurement_client.Отримати internal id по UAid ${ARGUMENTS[0]} ${ARGUMENTS[2]} | |
| 386 | + ${tender}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_tender ${tenderID} | |
| 387 | + ${tender}= set_access_key ${tender} ${USERS.users['${ARGUMENTS[0]}'].access_token} | |
| 388 | + ${doc}= Завантажити документ ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${ARGUMENTS[2]} | |
| 389 | + ${lot_doc}= test_lot_document_data ${doc} ${ARGUMENTS[3]} | |
| 390 | + ${reply}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} patch_document ${tender} ${lot_doc} | |
| 391 | + Log object data ${reply} reply | |
| 392 | + [return] ${reply} | |
| 393 | + | |
| 394 | +Видалити лот | |
| 395 | + [Documentation] | |
| 396 | + ... ${ARGUMENTS[0]} == username | |
| 397 | + ... ${ARGUMENTS[1]} == tender | |
| 398 | + ... ${ARGUMENTS[2]} == lot | |
| 399 | + [Arguments] @{ARGUMENTS} | |
| 400 | + log many @{ARGUMENTS} | |
| 401 | + ${tender}= set_access_key ${ARGUMENTS[1]} ${USERS.users['${ARGUMENTS[0]}'].access_token} | |
| 402 | + ${tender_lot}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} delete_lot ${tender} ${ARGUMENTS[2]} | |
| 403 | + Log ${tender_lot} | |
| 404 | + [return] ${tender_lot} | |
| ... | ... |
| ... | ... | @@ -112,7 +112,7 @@ def test_tender_data(intervals): |
| 112 | 112 | return t_data |
| 113 | 113 | |
| 114 | 114 | |
| 115 | -def test_tender_data_multiple_lots(intervals): | |
| 115 | +def test_tender_data_multiple_items(intervals): | |
| 116 | 116 | now = get_now() |
| 117 | 117 | t_data = test_tender_data(intervals) |
| 118 | 118 | t_data.update({ |
| ... | ... | @@ -282,6 +282,30 @@ def test_tender_data_multiple_lots(intervals): |
| 282 | 282 | return t_data |
| 283 | 283 | |
| 284 | 284 | |
| 285 | +def test_tender_data_multiple_lots(t_data): | |
| 286 | + for i in range(3): | |
| 287 | + t_data['data']['items'][i]['relatedLot'] = "3c8f387879de4c38957402dbdb8b31af" | |
| 288 | + t_data['data']['items'][3]['relatedLot'] = "bcac8d2ceb5f4227b841a2211f5cb646" | |
| 289 | + t_data['data']['lots'] = [ | |
| 290 | + { | |
| 291 | + "id": "3c8f387879de4c38957402dbdb8b31af", | |
| 292 | + "title": "Lot #1: Kyiv stationery", | |
| 293 | + "description": "Items for Kyiv office", | |
| 294 | + "value": {"currency": "UAH", "amount": 34000.0, "valueAddedTaxIncluded": "true"}, | |
| 295 | + "minimalStep": {"currency": "UAH", "amount": 30.0, "valueAddedTaxIncluded": "true"}, | |
| 296 | + "status": "active" | |
| 297 | + }, { | |
| 298 | + "id": "bcac8d2ceb5f4227b841a2211f5cb646", | |
| 299 | + "title": "Lot #2: Lviv stationery", | |
| 300 | + "description": "Items for Lviv office", | |
| 301 | + "value": {"currency": "UAH", "amount": 9000.0, "valueAddedTaxIncluded": "true"}, | |
| 302 | + "minimalStep": {"currency": "UAH", "amount": 35.0, "valueAddedTaxIncluded": "true"}, | |
| 303 | + "status": "active" | |
| 304 | + } | |
| 305 | + ] | |
| 306 | + return t_data | |
| 307 | + | |
| 308 | + | |
| 285 | 309 | def test_meat_tender_data(tender): |
| 286 | 310 | item_id = "edd0032574bf4402877ad5f362df225a" |
| 287 | 311 | tender.data['items'][0].id = item_id |
| ... | ... | @@ -483,6 +507,53 @@ def test_bid_data_meat_tender(): |
| 483 | 507 | }) |
| 484 | 508 | |
| 485 | 509 | |
| 510 | +def test_lots_bid_data(): | |
| 511 | + return munchify({ | |
| 512 | + "data": { | |
| 513 | + "tenderers": [ | |
| 514 | + { | |
| 515 | + "address": { | |
| 516 | + "countryName": "Україна", | |
| 517 | + "locality": "м. Вінниця", | |
| 518 | + "postalCode": "21100", | |
| 519 | + "region": "м. Вінниця", | |
| 520 | + "streetAddress": fake.street_address() | |
| 521 | + }, | |
| 522 | + "contactPoint": { | |
| 523 | + "name": fake.name(), | |
| 524 | + "telephone": fake.phone_number() | |
| 525 | + }, | |
| 526 | + "identifier": { | |
| 527 | + "scheme": u"UA-EDR", | |
| 528 | + "id": u"{:08d}".format(fake.pyint()), | |
| 529 | + }, | |
| 530 | + "name": fake.company() | |
| 531 | + } | |
| 532 | + ], | |
| 533 | + "lotValues": [ | |
| 534 | + { | |
| 535 | + "value": { | |
| 536 | + "currency": "UAH", | |
| 537 | + "amount": 1000 + fake.pyfloat(left_digits=3, right_digits=0, positive=True), | |
| 538 | + "valueAddedTaxIncluded": "true" | |
| 539 | + }, | |
| 540 | + "relatedLot": "3c8f387879de4c38957402dbdb8b31af", | |
| 541 | + "date": "2015-11-01T12:43:12.482645+02:00" | |
| 542 | + }, | |
| 543 | + { | |
| 544 | + "value": { | |
| 545 | + "currency": "UAH", | |
| 546 | + "amount": 1000 + fake.pyfloat(left_digits=3, right_digits=0, positive=True), | |
| 547 | + "valueAddedTaxIncluded": "true" | |
| 548 | + }, | |
| 549 | + "relatedLot": "bcac8d2ceb5f4227b841a2211f5cb646", | |
| 550 | + "date": "2015-11-01T12:43:12.482645+02:00" | |
| 551 | + } | |
| 552 | + ] | |
| 553 | + } | |
| 554 | + }) | |
| 555 | + | |
| 556 | + | |
| 486 | 557 | def auction_bid(): |
| 487 | 558 | return munchify({ |
| 488 | 559 | "data": { |
| ... | ... | @@ -501,93 +572,131 @@ def test_award_data(): |
| 501 | 572 | |
| 502 | 573 | def test_item_data(): |
| 503 | 574 | now = get_now() |
| 504 | - return { | |
| 505 | - "description": fake.catch_phrase(), | |
| 506 | - "deliveryDate": { | |
| 507 | - "endDate": (now + timedelta(days=5)).isoformat() | |
| 575 | + return { | |
| 576 | + "description": fake.catch_phrase(), | |
| 577 | + "deliveryDate": { | |
| 578 | + "endDate": (now + timedelta(days=5)).isoformat() | |
| 579 | + }, | |
| 580 | + "deliveryLocation": { | |
| 581 | + "latitude": 49.8500, | |
| 582 | + "longitude": 24.0167 | |
| 583 | + }, | |
| 584 | + "deliveryAddress": { | |
| 585 | + "countryName": u"Україна", | |
| 586 | + "countryName_ru": u"Украина", | |
| 587 | + "countryName_en": "Ukraine", | |
| 588 | + "postalCode": fake.postalcode(), | |
| 589 | + "region": u"м. Київ", | |
| 590 | + "locality": u"м. Київ", | |
| 591 | + "streetAddress": fake.street_address() | |
| 592 | + }, | |
| 593 | + "classification": { | |
| 594 | + "scheme": u"CPV", | |
| 595 | + "id": u"44617100-9", | |
| 596 | + "description": u"Картонки", | |
| 597 | + "description_ru": u"Большие картонные коробки", | |
| 598 | + "description_en": u"Cartons" | |
| 599 | + }, | |
| 600 | + "additionalClassifications": [ | |
| 601 | + { | |
| 602 | + "scheme": u"ДКПП", | |
| 603 | + "id": u"17.21.1", | |
| 604 | + "description": u"Папір і картон гофровані, паперова й картонна тара" | |
| 605 | + } | |
| 606 | + ], | |
| 607 | + "unit": { | |
| 608 | + "name": u"кілограм", | |
| 609 | + "name_ru": u"килограмм", | |
| 610 | + "name_en": "kilogram", | |
| 611 | + "code": u"KGM" | |
| 612 | + }, | |
| 613 | + "quantity": fake.pyint() | |
| 614 | + } | |
| 615 | + | |
| 616 | + | |
| 617 | +def test_invalid_features_data(): | |
| 618 | + return [ | |
| 619 | + { | |
| 620 | + "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | |
| 621 | + "featureOf": "tenderer", | |
| 622 | + "title": "Термін оплати", | |
| 623 | + "description": "Умови відстрочки платежу після поставки товару", | |
| 624 | + "enum": [ | |
| 625 | + { | |
| 626 | + "value": 0.35, | |
| 627 | + "title": "180 днів та більше" | |
| 508 | 628 | }, |
| 509 | - "deliveryLocation": { | |
| 510 | - "latitude": 49.8500, | |
| 511 | - "longitude": 24.0167 | |
| 629 | + { | |
| 630 | + "value": 0.1, | |
| 631 | + "title": "90-179 днів", | |
| 512 | 632 | }, |
| 513 | - "deliveryAddress": { | |
| 514 | - "countryName": u"Україна", | |
| 515 | - "countryName_ru": u"Украина", | |
| 516 | - "countryName_en": "Ukraine", | |
| 517 | - "postalCode": fake.postalcode(), | |
| 518 | - "region": u"м. Київ", | |
| 519 | - "locality": u"м. Київ", | |
| 520 | - "streetAddress": fake.street_address() | |
| 633 | + { | |
| 634 | + "value": 0.05, | |
| 635 | + "title": "30-89 днів" | |
| 521 | 636 | }, |
| 522 | - "classification": { | |
| 523 | - "scheme": u"CPV", | |
| 524 | - "id": u"44617100-9", | |
| 525 | - "description": u"Картонки", | |
| 526 | - "description_ru": u"Большие картонные коробки", | |
| 527 | - "description_en": u"Cartons" | |
| 637 | + { | |
| 638 | + "value": 0, | |
| 639 | + "title": "Менше 30 днів" | |
| 640 | + } | |
| 641 | + ] | |
| 642 | + }, | |
| 643 | + { | |
| 644 | + "code": "48cfd91612c04125ab406374d7cc8d93", | |
| 645 | + "featureOf": "item", | |
| 646 | + "relatedItem": "edd0032574bf4402877ad5f362df225a", | |
| 647 | + "title": "Сорт", | |
| 648 | + "description": "Сорт продукції", | |
| 649 | + "enum": [ | |
| 650 | + { | |
| 651 | + "value": 0.35, | |
| 652 | + "title": "Вищий" | |
| 528 | 653 | }, |
| 529 | - "additionalClassifications": [ | |
| 530 | - { | |
| 531 | - "scheme": u"ДКПП", | |
| 532 | - "id": u"17.21.1", | |
| 533 | - "description": u"Папір і картон гофровані, паперова й картонна тара" | |
| 534 | - } | |
| 535 | - ], | |
| 536 | - "unit": { | |
| 537 | - "name": u"кілограм", | |
| 538 | - "name_ru": u"килограмм", | |
| 539 | - "name_en": "kilogram", | |
| 540 | - "code": u"KGM" | |
| 654 | + { | |
| 655 | + "value": 0.01, | |
| 656 | + "title": "Перший", | |
| 541 | 657 | }, |
| 542 | - "quantity": fake.pyint() | |
| 543 | - } | |
| 658 | + { | |
| 659 | + "value": 0, | |
| 660 | + "title": "Другий" | |
| 661 | + } | |
| 662 | + ] | |
| 663 | + } | |
| 664 | + ] | |
| 544 | 665 | |
| 545 | 666 | |
| 546 | -def test_invalid_features_data(): | |
| 547 | - return [ | |
| 548 | - { | |
| 549 | - "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", | |
| 550 | - "featureOf": "tenderer", | |
| 551 | - "title": "Термін оплати", | |
| 552 | - "description": "Умови відстрочки платежу після поставки товару", | |
| 553 | - "enum": [ | |
| 554 | - { | |
| 555 | - "value": 0.35, | |
| 556 | - "title":"180 днів та більше" | |
| 557 | - }, | |
| 558 | - { | |
| 559 | - "value": 0.1, | |
| 560 | - "title": "90-179 днів", | |
| 561 | - }, | |
| 562 | - { | |
| 563 | - "value": 0.05, | |
| 564 | - "title": "30-89 днів" | |
| 565 | - }, | |
| 566 | - { | |
| 567 | - "value": 0, | |
| 568 | - "title": "Менше 30 днів" | |
| 569 | - } | |
| 570 | - ] | |
| 571 | - }, | |
| 572 | - { | |
| 573 | - "code": "48cfd91612c04125ab406374d7cc8d93", | |
| 574 | - "featureOf": "item", | |
| 575 | - "relatedItem": "edd0032574bf4402877ad5f362df225a", | |
| 576 | - "title": "Сорт", | |
| 577 | - "description": "Сорт продукції", | |
| 578 | - "enum":[ | |
| 579 | - { | |
| 580 | - "value": 0.35, | |
| 581 | - "title": "Вищий" | |
| 582 | - }, | |
| 583 | - { | |
| 584 | - "value": 0.01, | |
| 585 | - "title": "Перший", | |
| 586 | - }, | |
| 587 | - { | |
| 588 | - "value": 0, | |
| 589 | - "title": "Другий" | |
| 590 | - } | |
| 591 | - ] | |
| 592 | - } | |
| 593 | -] | |
| 667 | +def test_lot_data(): | |
| 668 | + return munchify( | |
| 669 | + {'data': | |
| 670 | + { | |
| 671 | + "description": fake.sentence(nb_words=10, variable_nb_words=True), | |
| 672 | + "title": fake.sentence(nb_words=6, variable_nb_words=True), | |
| 673 | + "value": { | |
| 674 | + "currency": "UAH", | |
| 675 | + "amount": fake.pyfloat(left_digits=4, right_digits=1, positive=True), | |
| 676 | + "valueAddedTaxIncluded": "true" | |
| 677 | + }, | |
| 678 | + "minimalStep": { | |
| 679 | + "currency": "UAH", | |
| 680 | + "amount": 30.0, | |
| 681 | + "valueAddedTaxIncluded": "true" | |
| 682 | + }, | |
| 683 | + "status": "active" | |
| 684 | + }}) | |
| 685 | + | |
| 686 | + | |
| 687 | +def test_lot_document_data(document, lot_id="3c8f387879de4c38957402dbdb8b31af"): | |
| 688 | + lot_document = {"documentOf": "lot", "relatedItem": lot_id} | |
| 689 | + lot_document.update(document.data) | |
| 690 | + return munchify({"data": lot_document}) | |
| 691 | + | |
| 692 | + | |
| 693 | +def test_lot_question_data(question, lot_id="3c8f387879de4c38957402dbdb8b31af"): | |
| 694 | + lot_question = {"questionOf": "lot", "relatedItem": lot_id} | |
| 695 | + lot_question.update(question.data) | |
| 696 | + return munchify({"data": lot_question}) | |
| 697 | + | |
| 698 | + | |
| 699 | +def test_lot_complaint_data(complaint, lot_id="3c8f387879de4c38957402dbdb8b31af"): | |
| 700 | + lot_complaint = {"complaintOf": "lot", "relatedItem": lot_id} | |
| 701 | + lot_complaint.update(complaint.data) | |
| 702 | + return munchify({"data": lot_complaint}) | |
| ... | ... |
| ... | ... | @@ -71,7 +71,8 @@ Get Broker Property By Username |
| 71 | 71 | Підготовка початкових даних |
| 72 | 72 | @{QUESTIONS}= Create list |
| 73 | 73 | ${question}= test question data |
| 74 | - Append to list ${QUESTIONS} ${question} | |
| 74 | + ${question_lot}= test_lot_question_data ${question} | |
| 75 | + Append to list ${QUESTIONS} ${question} ${question_lot} | |
| 75 | 76 | Set Global Variable @{QUESTIONS} |
| 76 | 77 | @{ANSWERS}= Create list |
| 77 | 78 | ${answer}= test_question_answer_data |
| ... | ... | @@ -79,7 +80,8 @@ Get Broker Property By Username |
| 79 | 80 | Set Global Variable @{ANSWERS} |
| 80 | 81 | @{COMPLAINTS}= Create list |
| 81 | 82 | ${complaint}= test_complaint_data |
| 82 | - Append to list ${COMPLAINTS} ${complaint} | |
| 83 | + ${complaint_lot}= test_lot_complaint_data ${complaint} | |
| 84 | + Append to list ${COMPLAINTS} ${complaint} ${complaint_lot} | |
| 83 | 85 | Set Global Variable @{COMPLAINTS} |
| 84 | 86 | @{REPLIES}= Create list |
| 85 | 87 | ${reply}= test_complaint_reply_data |
| ... | ... |
| 1 | +*** Settings *** | |
| 2 | +Library op_robot_tests.tests_files.service_keywords | |
| 3 | +Library String | |
| 4 | +Library Collections | |
| 5 | +Library Selenium2Library | |
| 6 | +Library DebugLibrary | |
| 7 | +Resource keywords.robot | |
| 8 | +Resource resource.robot | |
| 9 | +Suite Setup TestSuiteSetup | |
| 10 | +Suite Teardown Close all browsers | |
| 11 | + | |
| 12 | +*** Variables *** | |
| 13 | +${mode} multi | |
| 14 | + | |
| 15 | +${role} viewer | |
| 16 | +${broker} Quinta | |
| 17 | + | |
| 18 | +${question_id} 1 | |
| 19 | +${complaint_id} 1 | |
| 20 | + | |
| 21 | +*** Test Cases *** | |
| 22 | +Можливість оголосити мультилотовий тендер | |
| 23 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити мультилотовий тендер | |
| 24 | + ${tender_data}= Підготовка початкових даних | |
| 25 | + ${tender_data}= test_tender_data_multiple_lots ${tender_data} | |
| 26 | + ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data} | |
| 27 | + ${LAST_MODIFICATION_DATE}= Get Current Date | |
| 28 | + Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID} | |
| 29 | + Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE} | |
| 30 | + log ${TENDER} | |
| 31 | + | |
| 32 | +Пошук мультилотового тендера по ідентифікатору | |
| 33 | + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера по ідентифікатору | |
| 34 | + Дочекатись синхронізації з майданчиком ${viewer} | |
| 35 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
| 36 | + | |
| 37 | +Отримання тендера | |
| 38 | + Дочекатись синхронізації з майданчиком ${tender_owner} | |
| 39 | + Викликати для учасника ${tender_owner} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
| 40 | + | |
| 41 | +####### | |
| 42 | +#Операції з лотом | |
| 43 | + | |
| 44 | +Створення лоту | |
| 45 | + ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | |
| 46 | + ${lot}= test lot data | |
| 47 | + ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot} | |
| 48 | + ${lotresponses}= Create Dictionary | |
| 49 | + Set To Dictionary ${lotresponses} resp0 ${lotcreate} | |
| 50 | + Set To Dictionary ${USERS.users['${tender_owner}']} lotresponses ${lotresponses} | |
| 51 | + log ${lotcreate} | |
| 52 | + | |
| 53 | +Можливість видалення лоту | |
| 54 | + ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | |
| 55 | + ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp0']} | |
| 56 | + ${lotdelete}= Викликати для учасника ${tender_owner} Видалити лот ${tender_data} ${lot} | |
| 57 | + Log ${lotdelete} | |
| 58 | + | |
| 59 | +Повторне створення лоту | |
| 60 | + ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | |
| 61 | + ${lot}= test lot data | |
| 62 | + ${lotcreate}= Викликати для учасника ${tender_owner} Створити лот ${tender_data} ${lot} | |
| 63 | + ${lotresponses}= Create Dictionary | |
| 64 | + Set To Dictionary ${lotresponses} resp ${lotcreate} | |
| 65 | + Set To Dictionary ${USERS.users['${tender_owner}']} lotresponses ${lotresponses} | |
| 66 | + log ${lotcreate} | |
| 67 | + | |
| 68 | +Можливість змінити цінову пропозицію у новому лоті до 8000 | |
| 69 | + ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | |
| 70 | + Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000 | |
| 71 | + ${fixlotto8000resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']} | |
| 72 | + Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses} fixlotto8000resp ${fixlotto8000resp} | |
| 73 | + log ${fixlotto8000resp} | |
| 74 | + | |
| 75 | +Можливість змінити цінову пропозицію у новому лоті до 100 | |
| 76 | + ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | |
| 77 | + Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses['resp'].data.value} amount 8000 | |
| 78 | + ${fixlotto100resp}= Викликати для учасника ${tender_owner} Змінити лот ${tender_data} ${USERS.users['${tender_owner}'].lotresponses['resp']} | |
| 79 | + Set To Dictionary ${USERS.users['${tender_owner}'].lotresponses} fixlotto100resp ${fixlotto100resp} | |
| 80 | + log ${fixlotto100resp} | |
| 81 | + | |
| 82 | + | |
| 83 | +##### | |
| 84 | +#Предмети закупівлі лоту | |
| 85 | + | |
| 86 | +Можливість додати позицію закупівлі в тендер | |
| 87 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер | |
| 88 | + Викликати для учасника ${tender_owner} Додати предмети закупівлі ${TENDER['TENDER_UAID']} 1 | |
| 89 | + | |
| 90 | +Добавити предмет закупівлі до лоту | |
| 91 | + Log ${tender_data.data['items']} | |
| 92 | + ${items}= Get Variable Value ${tender_data.data['items']} | |
| 93 | + ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id} | |
| 94 | + Set To Dictionary ${items[-1]} relatedLot ${lot_id} | |
| 95 | + Log ${items[-1]} | |
| 96 | + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items} | |
| 97 | + | |
| 98 | +Неможливість видалення лоту з прив’язаними предметами закупівлі | |
| 99 | + ${tender_data}= Get Variable Value ${USERS.users['${tender_owner}'].tender_data} | |
| 100 | + ${lot}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp']} | |
| 101 | + Викликати для учасника ${tender_owner} Видалити лот shouldfail ${tender_data} ${lot} | |
| 102 | + | |
| 103 | +Можливість видалити позиції закупівлі тендера | |
| 104 | + ${items}= Get Variable Value ${tender_data.data['items']} | |
| 105 | + Log ${tender_data.data} | |
| 106 | + Викликати для учасника ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} items ${items[:-1]} | |
| 107 | + Log ${tender_data.data} | |
| 108 | + | |
| 109 | +Можливість додати тендерну документацію лоту | |
| 110 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість завантажити документ | |
| 111 | + [Documentation] Закупівельник ${USERS.users['${tender_owner}'].broker} завантажує документацію до оголошеної закупівлі | |
| 112 | + ${filepath}= create_fake_doc | |
| 113 | + ${lot_id}= Get Variable Value ${USERS.users['${tender_owner}'].lotresponses['resp'].data.id} | |
| 114 | + ${doc_upload_reply}= Викликати для учасника ${tender_owner} Завантажити документ в лот ${filepath} ${TENDER['TENDER_UAID']} ${lot_id} | |
| 115 | + ${file_upload_process_data} = Create Dictionary filepath=${filepath} doc_upload_reply=${doc_upload_reply} | |
| 116 | + log ${file_upload_process_data} | |
| 117 | + Set To Dictionary ${USERS.users['${tender_owner}']} file_upload_process_data ${file_upload_process_data} | |
| 118 | + Log ${lot_id} | |
| 119 | + Log ${USERS.users['${tender_owner}']} | |
| 120 | + | |
| 121 | + | |
| 122 | +####### | |
| 123 | +#Запитання до лоту | |
| 124 | + | |
| 125 | +Задати питання | |
| 126 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання | |
| 127 | + ${question}= Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]} | |
| 128 | + log ${question} | |
| 129 | + ${now}= Get Current Date | |
| 130 | + Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now} | |
| 131 | + | |
| 132 | +Відповісти на запитання | |
| 133 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання | |
| 134 | + Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]} | |
| 135 | + ${now}= Get Current Date | |
| 136 | + Set To Dictionary ${ANSWERS[${question_id}-1].data} date ${now} | |
| 137 | + | |
| 138 | + | |
| 139 | +###### | |
| 140 | +#Cкарга на лот | |
| 141 | +# | |
| 142 | +# | |
| 143 | +##### Дочекатися скарг на лот | |
| 144 | +# | |
| 145 | +# | |
| 146 | +#Можливість подати скаргу на лот | |
| 147 | +# [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови | |
| 148 | +# [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі | |
| 149 | +# Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | |
| 150 | +# ${LAST_MODIFICATION_DATE}= Get Current Date | |
| 151 | +# Set Global Variable ${LAST_MODIFICATION_DATE} | |
| 152 | +# | |
| 153 | +#Можливість побачити скаргу користувачем | |
| 154 | +# [Tags] ${USERS.users['${provider}'].broker}: Відображення основних даних оголошеного тендера | |
| 155 | +# Викликати для учасника ${provider} Порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | |
| 156 | +# | |
| 157 | +#Можливість побачити скаргу анонімом | |
| 158 | +# [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера | |
| 159 | +# Викликати для учасника ${viewer} Порівняти скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | |
| 160 | +# | |
| 161 | +#Можливість відхилити скаргу на лот | |
| 162 | +# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відхилити скаргу на умови | |
| 163 | +# Set To Dictionary ${COMPLAINTS[0].data} status declined | |
| 164 | +# Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 0 ${COMPLAINTS[${complaint_id}]} | |
| 165 | +# log many ${COMPLAINTS[${complaint_id}]} | |
| 166 | +# викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
| 167 | +# | |
| 168 | +#Можливість відкинути скаргу на лот | |
| 169 | +# [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відкинути скаргу на умови | |
| 170 | +# Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | |
| 171 | +# ${LAST_MODIFICATION_DATE}= Get Current Date | |
| 172 | +# Set Global Variable ${LAST_MODIFICATION_DATE} | |
| 173 | +# Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
| 174 | +# Set To Dictionary ${COMPLAINTS[0].data} status invalid | |
| 175 | +# Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${COMPLAINTS[${complaint_id}]} | |
| 176 | +# log many ${COMPLAINTS[${complaint_id}]} | |
| 177 | +# ${LAST_MODIFICATION_DATE}= Get Current Date | |
| 178 | +# Set Global Variable ${LAST_MODIFICATION_DATE} | |
| 179 | +# Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
| 180 | +# | |
| 181 | +#Можливість задовільнити скаргу на лот | |
| 182 | +# [Tags] ${USERS.users['${provider}'].broker}: Можливість відповісти на запитання | |
| 183 | +# Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[${complaint_id}]} | |
| 184 | +# ${LAST_MODIFICATION_DATE}= Get Current Date | |
| 185 | +# Set Global Variable ${LAST_MODIFICATION_DATE} | |
| 186 | +# Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']} | |
| 187 | +# Set To Dictionary ${COMPLAINTS[0].data} status resolved | |
| 188 | +# Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 2 ${COMPLAINTS[${complaint_id}]} | |
| 189 | +# log many ${COMPLAINTS[${complaint_id}]} | |
| 190 | +# ${LAST_MODIFICATION_DATE}= Get Current Date | |
| 191 | +# Set Global Variable ${LAST_MODIFICATION_DATE} | |
| 192 | +# | |
| 193 | +###### | |
| 194 | +#Подання пропозицій | |
| 195 | + | |
| 196 | +Неможливість подати цінову пропозицію до початку періоду подачі пропозицій | |
| 197 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
| 198 | + ${bid}= test lots bid data | |
| 199 | + Log ${bid} | |
| 200 | + ${bidresponses}= Create Dictionary | |
| 201 | + ${bid_before_bidperiod_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid} | |
| 202 | + Set To Dictionary ${bidresponses} bid_before_bidperiod_resp ${bid_before_bidperiod_resp} | |
| 203 | + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} | |
| 204 | + log ${USERS.users['${provider}']} | |
| 205 | + | |
| 206 | +Неможливість подати цінову пропозицію без прив’язки до лоту | |
| 207 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
| 208 | + Дочекатись дати початку прийому пропозицій | |
| 209 | + ${bid}= test bid data | |
| 210 | + Log ${bid} | |
| 211 | + ${bidresponses}= Create Dictionary | |
| 212 | + ${no_lot_bid_resp}= Викликати для учасника ${provider} Подати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${bid} | |
| 213 | + Set To Dictionary ${bidresponses} no_lot_bid_resp ${no_lot_bid_resp} | |
| 214 | + Set To Dictionary ${USERS.users['${provider}']} bidresponses ${bidresponses} | |
| 215 | + log ${USERS.users['${provider}']} | |
| 216 | + | |
| 217 | +Подати цінову пропозицію першим учасником | |
| 218 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
| 219 | + ${bid}= test lots bid data | |
| 220 | + Log ${bid} | |
| 221 | + ${biddingresponse0}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
| 222 | + Set Global Variable ${biddingresponse0} | |
| 223 | + log ${biddingresponse0} | |
| 224 | + | |
| 225 | +Можливість скасувати цінову пропозицію | |
| 226 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість скасувати цінову пропозицію | |
| 227 | + ${biddingresponse_0}= Викликати для учасника ${provider} Скасувати цінову пропозицію ${TENDER['TENDER_UAID']} ${biddingresponse0} | |
| 228 | + | |
| 229 | +Подати повторно цінову пропозицію першим учасником | |
| 230 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість подати цінову пропозицію | |
| 231 | + Дочекатись дати початку прийому пропозицій | |
| 232 | + ${bid}= test lots bid data | |
| 233 | + Log ${bid} | |
| 234 | + ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
| 235 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses} resp ${resp} | |
| 236 | + log ${resp} | |
| 237 | + log ${USERS.users['${provider}'].bidresponses} | |
| 238 | + | |
| 239 | +Можливість змінити повторну цінову пропозицію до 2000 | |
| 240 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | |
| 241 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses['resp'].data.lotValues[0].value} amount 2000 | |
| 242 | + Log ${USERS.users['${provider}'].bidresponses['resp'].data.lotValues[0].value} | |
| 243 | + ${fixbidto50000resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} | |
| 244 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto50000resp ${fixbidto50000resp} | |
| 245 | + log ${fixbidto50000resp} | |
| 246 | + | |
| 247 | +Можливість змінити повторну цінову пропозицію до 100 | |
| 248 | + [Tags] ${USERS.users['${provider}'].broker}: Можливість змінити цінову пропозицію | |
| 249 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses['resp'].data.lotValues[0].value} amount 100 | |
| 250 | + Log ${USERS.users['${provider}'].bidresponses['fixbidto50000resp'].data.lotValues[0].value} | |
| 251 | + ${fixbidto10resp}= Викликати для учасника ${provider} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} ${USERS.users['${provider}'].bidresponses['resp']} | |
| 252 | + Set To Dictionary ${USERS.users['${provider}'].bidresponses} fixbidto10resp ${fixbidto10resp} | |
| 253 | + log ${fixbidto10resp} | |
| 254 | + | |
| 255 | +Подати цінову пропозицію другим учасником | |
| 256 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість подати цінову пропозицію | |
| 257 | + Дочекатись дати початку прийому пропозицій | |
| 258 | + ${bid}= test lots bid data | |
| 259 | + Log ${bid} | |
| 260 | + ${bidresponses}= Create Dictionary | |
| 261 | + ${resp}= Викликати для учасника ${provider1} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | |
| 262 | + Set To Dictionary ${bidresponses} resp ${resp} | |
| 263 | + Set To Dictionary ${USERS.users['${provider1}']} bidresponses ${bidresponses} | |
| 264 | + log ${resp} | |
| 265 | + log ${USERS.users['${provider1}'].bidresponses} | |
| 266 | + | |
| 267 | +Неможливість побачити цінові пропозиції учасників під час прийому пропозицій | |
| 268 | + [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію | |
| 269 | + ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids | |
| 270 | + Should Be Equal ${bids} ${None} | |
| 271 | + | |
| 272 | +Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій | |
| 273 | + [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 50000 після закінчення прийому пропозицій | |
| 274 | + Дочекатись дати закінчення прийому пропозицій | |
| 275 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value} amount 50000 | |
| 276 | + Log ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value} | |
| 277 | + ${failfixbidto50000resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} | |
| 278 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto50000resp ${failfixbidto50000resp} | |
| 279 | + log ${failfixbidto50000resp} | |
| 280 | + | |
| 281 | +Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій | |
| 282 | + [Tags] ${USERS.users['${provider1}'].broker}: Неможливість змінити цінову пропозицію до 1 після закінчення прийому пропозицій | |
| 283 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value} amount 1 | |
| 284 | + Log ${USERS.users['${provider1}'].bidresponses['resp'].data.lotValues[0].value} | |
| 285 | + ${failfixbidto1resp}= Викликати для учасника ${provider1} Змінити цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} | |
| 286 | + Set To Dictionary ${USERS.users['${provider1}'].bidresponses} failfixbidto1resp ${failfixbidto1resp} | |
| 287 | + log ${failfixbidto1resp} | |
| 288 | + | |
| 289 | +Неможливість скасувати цінову пропозицію | |
| 290 | + [Tags] ${USERS.users['${provider1}'].broker}: Можливість скасувати цінову пропозицію | |
| 291 | + ${biddingresponse}= Викликати для учасника ${provider1} Скасувати цінову пропозицію shouldfail ${TENDER['TENDER_UAID']} ${USERS.users['${provider1}'].bidresponses['resp']} | |
| 292 | + | |
| 293 | +Отримання тендера після закінчення прийому пропозицій | |
| 294 | + Дочекатись синхронізації з майданчиком ${viewer} | |
| 295 | + Викликати для учасника ${viewer} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | |
| ... | ... |
| ... | ... | @@ -16,13 +16,14 @@ from robot.output.loggerhelper import Message |
| 16 | 16 | from .initial_data import ( |
| 17 | 17 | auction_bid, create_fake_doc, test_award_data, test_bid_data, |
| 18 | 18 | test_bid_data_meat_tender, test_complaint_data, test_complaint_reply_data, |
| 19 | - test_invalid_features_data, test_item_data, test_meat_tender_data, | |
| 20 | - test_question_answer_data, test_question_data, test_tender_data, | |
| 19 | + test_invalid_features_data, test_item_data, test_lot_complaint_data, | |
| 20 | + test_lot_data, test_lot_document_data, test_lot_question_data, | |
| 21 | + test_lots_bid_data, test_meat_tender_data, test_question_answer_data, | |
| 22 | + test_question_data, test_tender_data, test_tender_data_multiple_items, | |
| 21 | 23 | test_tender_data_multiple_lots |
| 22 | 24 | ) |
| 23 | 25 | from .local_time import get_now, TZ |
| 24 | 26 | import os |
| 25 | -import calendar | |
| 26 | 27 | from barbecue import chef |
| 27 | 28 | |
| 28 | 29 | |
| ... | ... | @@ -109,7 +110,7 @@ def prepare_test_tender_data(period_intervals, mode): |
| 109 | 110 | if mode == 'single': |
| 110 | 111 | return munchify({'data': test_tender_data(period_intervals)}) |
| 111 | 112 | elif mode == 'multi': |
| 112 | - return munchify({'data': test_tender_data_multiple_lots(period_intervals)}) | |
| 113 | + return munchify({'data': test_tender_data_multiple_items(period_intervals)}) | |
| 113 | 114 | raise ValueError('Invalid mode for test_tender_data') |
| 114 | 115 | |
| 115 | 116 | |
| ... | ... |
Please
register
or
login
to post a comment