Commit 4140169abed3360f345d8df9ec30f867861abcf2

Authored by Leits
1 parent bba2edd2

Multilot tender test

@@ -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']}
1 *** Variables *** 1 *** Variables ***
2 -${API_HOST_URL} https://api-sandbox.openprocurement.org  
3 -${api_version} 0.9 2 +${API_HOST_URL} https://lb.api-sandbox.openprocurement.org
  3 +${api_version} 0.10
@@ -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