Showing
6 changed files
with
553 additions
and
92 deletions
@@ -348,3 +348,57 @@ Library openprocurement_client_helper.py | @@ -348,3 +348,57 @@ Library openprocurement_client_helper.py | ||
348 | ${contents} ${filename}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_file ${tender} ${ARGUMENTS[2]} ${token} | 348 | ${contents} ${filename}= Call Method ${USERS.users['${ARGUMENTS[0]}'].client} get_file ${tender} ${ARGUMENTS[2]} ${token} |
349 | log ${filename} | 349 | log ${filename} |
350 | [return] ${contents} ${filename} | 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,7 +112,7 @@ def test_tender_data(intervals): | ||
112 | return t_data | 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 | now = get_now() | 116 | now = get_now() |
117 | t_data = test_tender_data(intervals) | 117 | t_data = test_tender_data(intervals) |
118 | t_data.update({ | 118 | t_data.update({ |
@@ -282,6 +282,30 @@ def test_tender_data_multiple_lots(intervals): | @@ -282,6 +282,30 @@ def test_tender_data_multiple_lots(intervals): | ||
282 | return t_data | 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 | def test_meat_tender_data(tender): | 309 | def test_meat_tender_data(tender): |
286 | item_id = "edd0032574bf4402877ad5f362df225a" | 310 | item_id = "edd0032574bf4402877ad5f362df225a" |
287 | tender.data['items'][0].id = item_id | 311 | tender.data['items'][0].id = item_id |
@@ -483,6 +507,53 @@ def test_bid_data_meat_tender(): | @@ -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 | def auction_bid(): | 557 | def auction_bid(): |
487 | return munchify({ | 558 | return munchify({ |
488 | "data": { | 559 | "data": { |
@@ -501,93 +572,131 @@ def test_award_data(): | @@ -501,93 +572,131 @@ def test_award_data(): | ||
501 | 572 | ||
502 | def test_item_data(): | 573 | def test_item_data(): |
503 | now = get_now() | 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,7 +71,8 @@ Get Broker Property By Username | ||
71 | Підготовка початкових даних | 71 | Підготовка початкових даних |
72 | @{QUESTIONS}= Create list | 72 | @{QUESTIONS}= Create list |
73 | ${question}= test question data | 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 | Set Global Variable @{QUESTIONS} | 76 | Set Global Variable @{QUESTIONS} |
76 | @{ANSWERS}= Create list | 77 | @{ANSWERS}= Create list |
77 | ${answer}= test_question_answer_data | 78 | ${answer}= test_question_answer_data |
@@ -79,7 +80,8 @@ Get Broker Property By Username | @@ -79,7 +80,8 @@ Get Broker Property By Username | ||
79 | Set Global Variable @{ANSWERS} | 80 | Set Global Variable @{ANSWERS} |
80 | @{COMPLAINTS}= Create list | 81 | @{COMPLAINTS}= Create list |
81 | ${complaint}= test_complaint_data | 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 | Set Global Variable @{COMPLAINTS} | 85 | Set Global Variable @{COMPLAINTS} |
84 | @{REPLIES}= Create list | 86 | @{REPLIES}= Create list |
85 | ${reply}= test_complaint_reply_data | 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,13 +16,14 @@ from robot.output.loggerhelper import Message | ||
16 | from .initial_data import ( | 16 | from .initial_data import ( |
17 | auction_bid, create_fake_doc, test_award_data, test_bid_data, | 17 | auction_bid, create_fake_doc, test_award_data, test_bid_data, |
18 | test_bid_data_meat_tender, test_complaint_data, test_complaint_reply_data, | 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 | test_tender_data_multiple_lots | 23 | test_tender_data_multiple_lots |
22 | ) | 24 | ) |
23 | from .local_time import get_now, TZ | 25 | from .local_time import get_now, TZ |
24 | import os | 26 | import os |
25 | -import calendar | ||
26 | from barbecue import chef | 27 | from barbecue import chef |
27 | 28 | ||
28 | 29 | ||
@@ -109,7 +110,7 @@ def prepare_test_tender_data(period_intervals, mode): | @@ -109,7 +110,7 @@ def prepare_test_tender_data(period_intervals, mode): | ||
109 | if mode == 'single': | 110 | if mode == 'single': |
110 | return munchify({'data': test_tender_data(period_intervals)}) | 111 | return munchify({'data': test_tender_data(period_intervals)}) |
111 | elif mode == 'multi': | 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 | raise ValueError('Invalid mode for test_tender_data') | 114 | raise ValueError('Invalid mode for test_tender_data') |
114 | 115 | ||
115 | 116 |
Please
register
or
login
to post a comment