Showing
20 changed files
with
674 additions
and
229 deletions
@@ -14,6 +14,7 @@ recipe = zc.recipe.egg | @@ -14,6 +14,7 @@ recipe = zc.recipe.egg | ||
14 | eggs = | 14 | eggs = |
15 | op_robot_tests | 15 | op_robot_tests |
16 | openprocurement_client | 16 | openprocurement_client |
17 | + robotframework | ||
17 | robotframework-lint | 18 | robotframework-lint |
18 | robotframework-debuglibrary | 19 | robotframework-debuglibrary |
19 | robot_tests.broker.dzo | 20 | robot_tests.broker.dzo |
@@ -70,8 +71,14 @@ robot_tests.broker.uub = git ${remotes:gh}openprocurement/robot_tests.b | @@ -70,8 +71,14 @@ robot_tests.broker.uub = git ${remotes:gh}openprocurement/robot_tests.b | ||
70 | robot_tests.broker.aps = git ${remotes:gh}openprocurement/robot_tests.broker.aps.git | 71 | robot_tests.broker.aps = git ${remotes:gh}openprocurement/robot_tests.broker.aps.git |
71 | 72 | ||
72 | [versions] | 73 | [versions] |
73 | -fake-factory = 0.5.3 | 74 | +Faker = 0.7.7 |
75 | +mr.developer = 1.34 | ||
74 | restkit = 4.2.2.op1 | 76 | restkit = 4.2.2.op1 |
75 | rfc6266 = 0.0.6.op1 | 77 | rfc6266 = 0.0.6.op1 |
76 | robotframework = 3.0.0 | 78 | robotframework = 3.0.0 |
77 | -robotframework-selenium2library = 1.7.4 | 79 | +robotframework-debuglibrary = 0.8 |
80 | +robotframework-lint = 0.7 | ||
81 | +robotframework-selenium2library = 1.8.0 | ||
82 | +setuptools = 18.3.2 | ||
83 | +zc.buildout = 2.5.3 | ||
84 | +zc.recipe.egg = 2.0.3 |
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | """ | 3 | """ |
4 | Setuptools bootstrapping installer. | 4 | Setuptools bootstrapping installer. |
5 | 5 | ||
6 | +Maintained at https://github.com/pypa/setuptools/tree/bootstrap. | ||
7 | + | ||
6 | Run this script to install or upgrade setuptools. | 8 | Run this script to install or upgrade setuptools. |
7 | """ | 9 | """ |
8 | 10 | ||
@@ -16,24 +18,30 @@ import subprocess | @@ -16,24 +18,30 @@ import subprocess | ||
16 | import platform | 18 | import platform |
17 | import textwrap | 19 | import textwrap |
18 | import contextlib | 20 | import contextlib |
19 | -import warnings | 21 | +import json |
22 | +import codecs | ||
20 | 23 | ||
21 | from distutils import log | 24 | from distutils import log |
22 | 25 | ||
23 | try: | 26 | try: |
24 | from urllib.request import urlopen | 27 | from urllib.request import urlopen |
28 | + from urllib.parse import urljoin | ||
25 | except ImportError: | 29 | except ImportError: |
26 | from urllib2 import urlopen | 30 | from urllib2 import urlopen |
31 | + from urlparse import urljoin | ||
27 | 32 | ||
28 | try: | 33 | try: |
29 | from site import USER_SITE | 34 | from site import USER_SITE |
30 | except ImportError: | 35 | except ImportError: |
31 | USER_SITE = None | 36 | USER_SITE = None |
32 | 37 | ||
38 | +LATEST = object() | ||
33 | DEFAULT_VERSION = "18.3.2" | 39 | DEFAULT_VERSION = "18.3.2" |
34 | -DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/" | 40 | +DEFAULT_URL = "https://pypi.io/packages/source/s/setuptools/" |
35 | DEFAULT_SAVE_DIR = os.curdir | 41 | DEFAULT_SAVE_DIR = os.curdir |
36 | 42 | ||
43 | +MEANINGFUL_INVALID_ZIP_ERR_MSG = 'Maybe {0} is corrupted, delete it and try again.' | ||
44 | + | ||
37 | 45 | ||
38 | def _python_cmd(*args): | 46 | def _python_cmd(*args): |
39 | """ | 47 | """ |
@@ -98,8 +106,16 @@ def archive_context(filename): | @@ -98,8 +106,16 @@ def archive_context(filename): | ||
98 | old_wd = os.getcwd() | 106 | old_wd = os.getcwd() |
99 | try: | 107 | try: |
100 | os.chdir(tmpdir) | 108 | os.chdir(tmpdir) |
101 | - with ContextualZipFile(filename) as archive: | ||
102 | - archive.extractall() | 109 | + try: |
110 | + with ContextualZipFile(filename) as archive: | ||
111 | + archive.extractall() | ||
112 | + except zipfile.BadZipfile as err: | ||
113 | + if not err.args: | ||
114 | + err.args = ('', ) | ||
115 | + err.args = err.args + ( | ||
116 | + MEANINGFUL_INVALID_ZIP_ERR_MSG.format(filename), | ||
117 | + ) | ||
118 | + raise | ||
103 | 119 | ||
104 | # going in the directory | 120 | # going in the directory |
105 | subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) | 121 | subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) |
@@ -114,18 +130,19 @@ def archive_context(filename): | @@ -114,18 +130,19 @@ def archive_context(filename): | ||
114 | 130 | ||
115 | def _do_download(version, download_base, to_dir, download_delay): | 131 | def _do_download(version, download_base, to_dir, download_delay): |
116 | """Download Setuptools.""" | 132 | """Download Setuptools.""" |
117 | - egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg' | ||
118 | - % (version, sys.version_info[0], sys.version_info[1])) | 133 | + py_desig = 'py{sys.version_info[0]}.{sys.version_info[1]}'.format(sys=sys) |
134 | + tp = 'setuptools-{version}-{py_desig}.egg' | ||
135 | + egg = os.path.join(to_dir, tp.format(**locals())) | ||
119 | if not os.path.exists(egg): | 136 | if not os.path.exists(egg): |
120 | archive = download_setuptools(version, download_base, | 137 | archive = download_setuptools(version, download_base, |
121 | - to_dir, download_delay) | 138 | + to_dir, download_delay) |
122 | _build_egg(egg, archive, to_dir) | 139 | _build_egg(egg, archive, to_dir) |
123 | sys.path.insert(0, egg) | 140 | sys.path.insert(0, egg) |
124 | 141 | ||
125 | # Remove previously-imported pkg_resources if present (see | 142 | # Remove previously-imported pkg_resources if present (see |
126 | # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). | 143 | # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). |
127 | if 'pkg_resources' in sys.modules: | 144 | if 'pkg_resources' in sys.modules: |
128 | - del sys.modules['pkg_resources'] | 145 | + _unload_pkg_resources() |
129 | 146 | ||
130 | import setuptools | 147 | import setuptools |
131 | setuptools.bootstrap_install_from = egg | 148 | setuptools.bootstrap_install_from = egg |
@@ -140,6 +157,7 @@ def use_setuptools( | @@ -140,6 +157,7 @@ def use_setuptools( | ||
140 | Return None. Raise SystemExit if the requested version | 157 | Return None. Raise SystemExit if the requested version |
141 | or later cannot be installed. | 158 | or later cannot be installed. |
142 | """ | 159 | """ |
160 | + version = _resolve_version(version) | ||
143 | to_dir = os.path.abspath(to_dir) | 161 | to_dir = os.path.abspath(to_dir) |
144 | 162 | ||
145 | # prior to importing, capture the module state for | 163 | # prior to importing, capture the module state for |
@@ -189,6 +207,11 @@ def _conflict_bail(VC_err, version): | @@ -189,6 +207,11 @@ def _conflict_bail(VC_err, version): | ||
189 | 207 | ||
190 | 208 | ||
191 | def _unload_pkg_resources(): | 209 | def _unload_pkg_resources(): |
210 | + sys.meta_path = [ | ||
211 | + importer | ||
212 | + for importer in sys.meta_path | ||
213 | + if importer.__class__.__module__ != 'pkg_resources.extern' | ||
214 | + ] | ||
192 | del_modules = [ | 215 | del_modules = [ |
193 | name for name in sys.modules | 216 | name for name in sys.modules |
194 | if name.startswith('pkg_resources') | 217 | if name.startswith('pkg_resources') |
@@ -222,8 +245,8 @@ def download_file_powershell(url, target): | @@ -222,8 +245,8 @@ def download_file_powershell(url, target): | ||
222 | ps_cmd = ( | 245 | ps_cmd = ( |
223 | "[System.Net.WebRequest]::DefaultWebProxy.Credentials = " | 246 | "[System.Net.WebRequest]::DefaultWebProxy.Credentials = " |
224 | "[System.Net.CredentialCache]::DefaultCredentials; " | 247 | "[System.Net.CredentialCache]::DefaultCredentials; " |
225 | - "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" | ||
226 | - % vars() | 248 | + '(new-object System.Net.WebClient).DownloadFile("%(url)s", "%(target)s")' |
249 | + % locals() | ||
227 | ) | 250 | ) |
228 | cmd = [ | 251 | cmd = [ |
229 | 'powershell', | 252 | 'powershell', |
@@ -248,7 +271,7 @@ download_file_powershell.viable = has_powershell | @@ -248,7 +271,7 @@ download_file_powershell.viable = has_powershell | ||
248 | 271 | ||
249 | 272 | ||
250 | def download_file_curl(url, target): | 273 | def download_file_curl(url, target): |
251 | - cmd = ['curl', url, '--silent', '--output', target] | 274 | + cmd = ['curl', url, '--location', '--silent', '--output', target] |
252 | _clean_check(cmd, target) | 275 | _clean_check(cmd, target) |
253 | 276 | ||
254 | 277 | ||
@@ -321,6 +344,7 @@ def download_setuptools( | @@ -321,6 +344,7 @@ def download_setuptools( | ||
321 | ``downloader_factory`` should be a function taking no arguments and | 344 | ``downloader_factory`` should be a function taking no arguments and |
322 | returning a function for downloading a URL to a target. | 345 | returning a function for downloading a URL to a target. |
323 | """ | 346 | """ |
347 | + version = _resolve_version(version) | ||
324 | # making sure we use the absolute path | 348 | # making sure we use the absolute path |
325 | to_dir = os.path.abspath(to_dir) | 349 | to_dir = os.path.abspath(to_dir) |
326 | zip_name = "setuptools-%s.zip" % version | 350 | zip_name = "setuptools-%s.zip" % version |
@@ -333,6 +357,27 @@ def download_setuptools( | @@ -333,6 +357,27 @@ def download_setuptools( | ||
333 | return os.path.realpath(saveto) | 357 | return os.path.realpath(saveto) |
334 | 358 | ||
335 | 359 | ||
360 | +def _resolve_version(version): | ||
361 | + """ | ||
362 | + Resolve LATEST version | ||
363 | + """ | ||
364 | + if version is not LATEST: | ||
365 | + return version | ||
366 | + | ||
367 | + meta_url = urljoin(DEFAULT_URL, '/pypi/setuptools/json') | ||
368 | + resp = urlopen(meta_url) | ||
369 | + with contextlib.closing(resp): | ||
370 | + try: | ||
371 | + charset = resp.info().get_content_charset() | ||
372 | + except Exception: | ||
373 | + # Python 2 compat; assume UTF-8 | ||
374 | + charset = 'UTF-8' | ||
375 | + reader = codecs.getreader(charset) | ||
376 | + doc = json.load(reader(resp)) | ||
377 | + | ||
378 | + return str(doc['info']['version']) | ||
379 | + | ||
380 | + | ||
336 | def _build_install_args(options): | 381 | def _build_install_args(options): |
337 | """ | 382 | """ |
338 | Build the arguments to 'python setup.py install' on the setuptools package. | 383 | Build the arguments to 'python setup.py install' on the setuptools package. |
@@ -347,7 +392,7 @@ def _parse_args(): | @@ -347,7 +392,7 @@ def _parse_args(): | ||
347 | parser = optparse.OptionParser() | 392 | parser = optparse.OptionParser() |
348 | parser.add_option( | 393 | parser.add_option( |
349 | '--user', dest='user_install', action='store_true', default=False, | 394 | '--user', dest='user_install', action='store_true', default=False, |
350 | - help='install in user site package (requires Python 2.6 or later)') | 395 | + help='install in user site package') |
351 | parser.add_option( | 396 | parser.add_option( |
352 | '--download-base', dest='download_base', metavar="URL", | 397 | '--download-base', dest='download_base', metavar="URL", |
353 | default=DEFAULT_URL, | 398 | default=DEFAULT_URL, |
@@ -362,9 +407,9 @@ def _parse_args(): | @@ -362,9 +407,9 @@ def _parse_args(): | ||
362 | default=DEFAULT_VERSION, | 407 | default=DEFAULT_VERSION, |
363 | ) | 408 | ) |
364 | parser.add_option( | 409 | parser.add_option( |
365 | - '--to-dir', | ||
366 | - help="Directory to save (and re-use) package", | ||
367 | - default=DEFAULT_SAVE_DIR, | 410 | + '--to-dir', |
411 | + help="Directory to save (and re-use) package", | ||
412 | + default=DEFAULT_SAVE_DIR, | ||
368 | ) | 413 | ) |
369 | options, args = parser.parse_args() | 414 | options, args = parser.parse_args() |
370 | # positional arguments are ignored | 415 | # positional arguments are ignored |
@@ -372,13 +417,13 @@ def _parse_args(): | @@ -372,13 +417,13 @@ def _parse_args(): | ||
372 | 417 | ||
373 | 418 | ||
374 | def _download_args(options): | 419 | def _download_args(options): |
375 | - """Return args for download_setuptools function from cmdline args.""" | ||
376 | - return dict( | ||
377 | - version=options.version, | ||
378 | - download_base=options.download_base, | ||
379 | - downloader_factory=options.downloader_factory, | ||
380 | - to_dir=options.to_dir, | ||
381 | - ) | 420 | + """Return args for download_setuptools function from cmdline args.""" |
421 | + return dict( | ||
422 | + version=options.version, | ||
423 | + download_base=options.download_base, | ||
424 | + downloader_factory=options.downloader_factory, | ||
425 | + to_dir=options.to_dir, | ||
426 | + ) | ||
382 | 427 | ||
383 | 428 | ||
384 | def main(): | 429 | def main(): |
op_robot_tests/rebot.py
deleted
100644 → 0
@@ -32,9 +32,7 @@ Resource base_keywords.robot | @@ -32,9 +32,7 @@ Resource base_keywords.robot | ||
32 | Можливість підтвердити цінову пропозицію учасником ${username} | 32 | Можливість підтвердити цінову пропозицію учасником ${username} |
33 | ${status}= Run Keyword IF '${MODE}'=='openeu' Set Variable pending | 33 | ${status}= Run Keyword IF '${MODE}'=='openeu' Set Variable pending |
34 | ... ELSE IF '${MODE}'=='openua' Set Variable active | 34 | ... ELSE IF '${MODE}'=='openua' Set Variable active |
35 | - ${activestatusresp}= Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status} | ||
36 | - Set To Dictionary ${USERS.users['${username}'].bidresponses} activestatusresp=${activestatusresp} | ||
37 | - log ${activestatusresp} | 35 | + Run As ${username} Змінити цінову пропозицію ${TENDER['TENDER_UAID']} status ${status} |
38 | 36 | ||
39 | ############################################################################################## | 37 | ############################################################################################## |
40 | # OPENEU Bid documentation | 38 | # OPENEU Bid documentation |
@@ -44,9 +42,7 @@ Resource base_keywords.robot | @@ -44,9 +42,7 @@ Resource base_keywords.robot | ||
44 | ${confidentialityRationale}= create_fake_sentence | 42 | ${confidentialityRationale}= create_fake_sentence |
45 | ${privat_doc}= create_data_dict data.confidentialityRationale ${confidentialityRationale} | 43 | ${privat_doc}= create_data_dict data.confidentialityRationale ${confidentialityRationale} |
46 | Set To Dictionary ${privat_doc.data} confidentiality=buyerOnly | 44 | Set To Dictionary ${privat_doc.data} confidentiality=buyerOnly |
47 | - ${docid}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid_doc_upload']['upload_response'].data.id} | ||
48 | - ${bid_doc_modified}= Run As ${username} Змінити документацію в ставці ${TENDER['TENDER_UAID']} ${privat_doc} ${docid} | ||
49 | - Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_modified=${bid_doc_modified} | 45 | + Run As ${username} Змінити документацію в ставці ${TENDER['TENDER_UAID']} ${privat_doc} ${USERS.users['${username}']['bid_document']['doc_id']} |
50 | 46 | ||
51 | 47 | ||
52 | Можливість завантажити ${doc_type} документ до пропозиції учасником ${username} | 48 | Можливість завантажити ${doc_type} документ до пропозиції учасником ${username} |
@@ -82,4 +78,8 @@ Resource base_keywords.robot | @@ -82,4 +78,8 @@ Resource base_keywords.robot | ||
82 | 78 | ||
83 | 79 | ||
84 | Можливість перевести тендер на статус очікування обробки мостом | 80 | Можливість перевести тендер на статус очікування обробки мостом |
85 | - Run As ${tender_owner} Перевести тендер на статус очікування обробки мостом ${TENDER['TENDER_UAID']} | ||
81 | + Run As ${tender_owner} Перевести тендер на статус очікування обробки мостом ${TENDER['TENDER_UAID']} | ||
82 | + | ||
83 | + | ||
84 | +Активувати тендер другого етапу | ||
85 | + Run As ${tender_owner} активувати другий етап ${TENDER['TENDER_UAID']} |
@@ -35,6 +35,11 @@ Resource resource.robot | @@ -35,6 +35,11 @@ Resource resource.robot | ||
35 | Run as ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} | 35 | Run as ${username} Пошук тендера по ідентифікатору ${TENDER['TENDER_UAID']} |
36 | 36 | ||
37 | 37 | ||
38 | +Можливість знайти тендер по ідентифікатору ${tender_id} та зберегти його в ${save_location} для користувача ${username} | ||
39 | + Дочекатись синхронізації з майданчиком ${username} | ||
40 | + Run as ${username} Пошук тендера по ідентифікатору ${tender_id} ${save_location} | ||
41 | + | ||
42 | + | ||
38 | Можливість змінити поле ${field_name} тендера на ${field_value} | 43 | Можливість змінити поле ${field_name} тендера на ${field_value} |
39 | Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value} | 44 | Run As ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} ${field_name} ${field_value} |
40 | 45 | ||
@@ -42,8 +47,11 @@ Resource resource.robot | @@ -42,8 +47,11 @@ Resource resource.robot | ||
42 | Можливість додати документацію до тендера | 47 | Можливість додати документацію до тендера |
43 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 48 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
44 | Run As ${tender_owner} Завантажити документ ${file_path} ${TENDER['TENDER_UAID']} | 49 | Run As ${tender_owner} Завантажити документ ${file_path} ${TENDER['TENDER_UAID']} |
45 | - ${doc_id}= get_id_from_doc_name ${file_name} | ||
46 | - ${tender_document}= Create Dictionary doc_name=${file_name} doc_id=${doc_id} doc_content=${file_content} | 50 | + ${doc_id}= get_id_from_string ${file_name} |
51 | + ${tender_document}= Create Dictionary | ||
52 | + ... doc_name=${file_name} | ||
53 | + ... doc_id=${doc_id} | ||
54 | + ... doc_content=${file_content} | ||
47 | Set To Dictionary ${USERS.users['${tender_owner}']} tender_document=${tender_document} | 55 | Set To Dictionary ${USERS.users['${tender_owner}']} tender_document=${tender_document} |
48 | Remove File ${file_path} | 56 | Remove File ${file_path} |
49 | 57 | ||
@@ -52,7 +60,9 @@ Resource resource.robot | @@ -52,7 +60,9 @@ Resource resource.robot | ||
52 | ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} | 60 | ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} |
53 | Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item} | 61 | Run As ${tender_owner} Додати предмет закупівлі ${TENDER['TENDER_UAID']} ${item} |
54 | ${item_id}= get_id_from_object ${item} | 62 | ${item_id}= get_id_from_object ${item} |
55 | - ${item_data}= Create Dictionary item=${item} item_id=${item_id} | 63 | + ${item_data}= Create Dictionary |
64 | + ... item=${item} | ||
65 | + ... item_id=${item_id} | ||
56 | ${item_data}= munch_dict arg=${item_data} | 66 | ${item_data}= munch_dict arg=${item_data} |
57 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} | 67 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} |
58 | 68 | ||
@@ -79,6 +89,14 @@ Resource resource.robot | @@ -79,6 +89,14 @@ Resource resource.robot | ||
79 | Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} | 89 | Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} |
80 | 90 | ||
81 | 91 | ||
92 | +Отримати доступ до тендера другого етапу та зберегти його | ||
93 | + Run as ${tender_owner} Отримати тендер другого етапу та зберегти його ${USERS.users['${tender_owner}'].tender_data.data.stage2TenderID} | ||
94 | + ${TENDER_UAID_second_stage}= BuiltIn.Catenate SEPARATOR= ${TENDER['TENDER_UAID']} .2 | ||
95 | + Set to dictionary ${TENDER} TENDER_UAID=${TENDER_UAID_second_stage} | ||
96 | + :FOR ${username} IN ${tender_owner} ${provider} ${provider1} ${viewer} | ||
97 | + \ Можливість знайти тендер по ідентифікатору для користувача ${username} | ||
98 | + | ||
99 | + | ||
82 | Звірити відображення вмісту документа ${doc_id} із ${left} для користувача ${username} | 100 | Звірити відображення вмісту документа ${doc_id} із ${left} для користувача ${username} |
83 | ${file_name}= Run as ${username} Отримати документ ${TENDER['TENDER_UAID']} ${doc_id} | 101 | ${file_name}= Run as ${username} Отримати документ ${TENDER['TENDER_UAID']} ${doc_id} |
84 | ${right}= Get File ${OUTPUT_DIR}${/}${file_name} | 102 | ${right}= Get File ${OUTPUT_DIR}${/}${file_name} |
@@ -157,8 +175,11 @@ Resource resource.robot | @@ -157,8 +175,11 @@ Resource resource.robot | ||
157 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]} | 175 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]} |
158 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 176 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
159 | Run As ${tender_owner} Завантажити документ в лот ${file_path} ${TENDER['TENDER_UAID']} ${lot_id} | 177 | Run As ${tender_owner} Завантажити документ в лот ${file_path} ${TENDER['TENDER_UAID']} ${lot_id} |
160 | - ${doc_id}= get_id_from_doc_name ${file_name} | ||
161 | - ${data}= Create Dictionary doc_name=${file_name} doc_id=${doc_id} doc_content=${file_content} | 178 | + ${doc_id}= get_id_from_string ${file_name} |
179 | + ${data}= Create Dictionary | ||
180 | + ... doc_name=${file_name} | ||
181 | + ... doc_id=${doc_id} | ||
182 | + ... doc_content=${file_content} | ||
162 | ${empty_list}= Create List | 183 | ${empty_list}= Create List |
163 | ${lots_documents}= Get variable value ${USERS.users['${tender_owner}'].lots_documents} ${empty_list} | 184 | ${lots_documents}= Get variable value ${USERS.users['${tender_owner}'].lots_documents} ${empty_list} |
164 | Append to list ${lots_documents} ${data} | 185 | Append to list ${lots_documents} ${data} |
@@ -177,7 +198,9 @@ Resource resource.robot | @@ -177,7 +198,9 @@ Resource resource.robot | ||
177 | ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} | 198 | ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} |
178 | Run As ${tender_owner} Додати предмет закупівлі в лот ${TENDER['TENDER_UAID']} ${lot_id} ${item} | 199 | Run As ${tender_owner} Додати предмет закупівлі в лот ${TENDER['TENDER_UAID']} ${lot_id} ${item} |
179 | ${item_id}= get_id_from_object ${item} | 200 | ${item_id}= get_id_from_object ${item} |
180 | - ${item_data}= Create Dictionary item=${item} item_id=${item_id} | 201 | + ${item_data}= Create Dictionary |
202 | + ... item=${item} | ||
203 | + ... item_id=${item_id} | ||
181 | ${item_data}= munch_dict arg=${item_data} | 204 | ${item_data}= munch_dict arg=${item_data} |
182 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} | 205 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} |
183 | 206 | ||
@@ -212,12 +235,16 @@ Resource resource.robot | @@ -212,12 +235,16 @@ Resource resource.robot | ||
212 | Можливість створення лоту із прив’язаним предметом закупівлі | 235 | Можливість створення лоту із прив’язаним предметом закупівлі |
213 | ${lot}= Підготувати дані для створення лоту ${USERS.users['${tender_owner}'].tender_data.data.value.amount} | 236 | ${lot}= Підготувати дані для створення лоту ${USERS.users['${tender_owner}'].tender_data.data.value.amount} |
214 | ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} | 237 | ${item}= Підготувати дані для створення предмету закупівлі ${USERS.users['${tender_owner}'].initial_data.data['items'][0]['classification']['id']} |
215 | - ${lot_resp}= Run As ${tender_owner} Створити лот із предметом закупівлі ${TENDER['TENDER_UAID']} ${lot} ${item} | 238 | + Run As ${tender_owner} Створити лот із предметом закупівлі ${TENDER['TENDER_UAID']} ${lot} ${item} |
216 | ${item_id}= get_id_from_object ${item} | 239 | ${item_id}= get_id_from_object ${item} |
217 | - ${item_data}= Create Dictionary item=${item} item_id=${item_id} | 240 | + ${item_data}= Create Dictionary |
241 | + ... item=${item} | ||
242 | + ... item_id=${item_id} | ||
218 | ${item_data}= munch_dict arg=${item_data} | 243 | ${item_data}= munch_dict arg=${item_data} |
219 | ${lot_id}= get_id_from_object ${lot.data} | 244 | ${lot_id}= get_id_from_object ${lot.data} |
220 | - ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id} | 245 | + ${lot_data}= Create Dictionary |
246 | + ... lot=${lot} | ||
247 | + ... lot_id=${lot_id} | ||
221 | ${lot_data}= munch_dict arg=${lot_data} | 248 | ${lot_data}= munch_dict arg=${lot_data} |
222 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} lot_data=${lot_data} | 249 | Set To Dictionary ${USERS.users['${tender_owner}']} item_data=${item_data} lot_data=${lot_data} |
223 | 250 | ||
@@ -234,11 +261,21 @@ Resource resource.robot | @@ -234,11 +261,21 @@ Resource resource.robot | ||
234 | \ Звірити відображення поля ${field} усіх лотів для користувача ${username} | 261 | \ Звірити відображення поля ${field} усіх лотів для користувача ${username} |
235 | 262 | ||
236 | 263 | ||
264 | +Звірити відображення поля ${field} усіх лотів другого етапу для усіх користувачів | ||
265 | + :FOR ${username} IN ${viewer} ${tender_owner} ${provider} ${provider1} | ||
266 | + \ Звірити відображення поля ${field} усіх лотів другого етапу для користувача ${username} | ||
267 | + | ||
268 | + | ||
237 | Звірити відображення поля ${field} усіх лотів для користувача ${username} | 269 | Звірити відображення поля ${field} усіх лотів для користувача ${username} |
238 | :FOR ${lot_index} IN RANGE ${NUMBER_OF_LOTS} | 270 | :FOR ${lot_index} IN RANGE ${NUMBER_OF_LOTS} |
239 | \ Звірити відображення поля ${field} ${lot_index} лоту для користувача ${username} | 271 | \ Звірити відображення поля ${field} ${lot_index} лоту для користувача ${username} |
240 | 272 | ||
241 | 273 | ||
274 | +Звірити відображення поля ${field} усіх лотів другого етапу для користувача ${username} | ||
275 | + :FOR ${lot_index} IN RANGE ${NUMBER_OF_LOTS} | ||
276 | + \ Звірити відображення поля ${field} ${lot_index} лоту другого етапу для користувача ${username} | ||
277 | + | ||
278 | + | ||
242 | Звірити відображення поля ${field} ${lot_index} лоту для користувача ${username} | 279 | Звірити відображення поля ${field} ${lot_index} лоту для користувача ${username} |
243 | Дочекатись синхронізації з майданчиком ${username} | 280 | Дочекатись синхронізації з майданчиком ${username} |
244 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}]} | 281 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}]} |
@@ -246,6 +283,13 @@ Resource resource.robot | @@ -246,6 +283,13 @@ Resource resource.robot | ||
246 | ... ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}].${field}} ${field} | 283 | ... ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}].${field}} ${field} |
247 | ... object_id=${lot_id} | 284 | ... object_id=${lot_id} |
248 | 285 | ||
286 | +Звірити відображення поля ${field} ${lot_index} лоту другого етапу для користувача ${username} | ||
287 | + Дочекатись синхронізації з майданчиком ${username} | ||
288 | + ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}]} | ||
289 | + Звірити поле тендера із значенням ${username} ${TENDER['TENDER_UAID']} | ||
290 | + ... ${USERS.users['${tender_owner}'].second_stage_data.data.lots[${lot_index}].${field}} ${field} | ||
291 | + ... object_id=${lot_id} | ||
292 | + | ||
249 | 293 | ||
250 | Звірити відображення поля ${field} ${lot_index} лоту з ${data} для користувача ${username} | 294 | Звірити відображення поля ${field} ${lot_index} лоту з ${data} для користувача ${username} |
251 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}]} | 295 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].initial_data.data.lots[${lot_index}]} |
@@ -286,7 +330,9 @@ Resource resource.robot | @@ -286,7 +330,9 @@ Resource resource.robot | ||
286 | Set To Dictionary ${feature} featureOf=tenderer | 330 | Set To Dictionary ${feature} featureOf=tenderer |
287 | Run As ${tender_owner} Додати неціновий показник на тендер ${TENDER['TENDER_UAID']} ${feature} | 331 | Run As ${tender_owner} Додати неціновий показник на тендер ${TENDER['TENDER_UAID']} ${feature} |
288 | ${feature_id}= get_id_from_object ${feature} | 332 | ${feature_id}= get_id_from_object ${feature} |
289 | - ${feature_data}= Create Dictionary feature=${feature} feature_id=${feature_id} | 333 | + ${feature_data}= Create Dictionary |
334 | + ... feature=${feature} | ||
335 | + ... feature_id=${feature_id} | ||
290 | ${feature_data}= munch_dict arg=${feature_data} | 336 | ${feature_data}= munch_dict arg=${feature_data} |
291 | Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data} | 337 | Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data} |
292 | 338 | ||
@@ -297,7 +343,9 @@ Resource resource.robot | @@ -297,7 +343,9 @@ Resource resource.robot | ||
297 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]} | 343 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]} |
298 | Run As ${tender_owner} Додати неціновий показник на лот ${TENDER['TENDER_UAID']} ${feature} ${lot_id} | 344 | Run As ${tender_owner} Додати неціновий показник на лот ${TENDER['TENDER_UAID']} ${feature} ${lot_id} |
299 | ${feature_id}= get_id_from_object ${feature} | 345 | ${feature_id}= get_id_from_object ${feature} |
300 | - ${feature_data}= Create Dictionary feature=${feature} feature_id=${feature_id} | 346 | + ${feature_data}= Create Dictionary |
347 | + ... feature=${feature} | ||
348 | + ... feature_id=${feature_id} | ||
301 | ${feature_data}= munch_dict arg=${feature_data} | 349 | ${feature_data}= munch_dict arg=${feature_data} |
302 | Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data} | 350 | Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data} |
303 | 351 | ||
@@ -308,7 +356,9 @@ Resource resource.robot | @@ -308,7 +356,9 @@ Resource resource.robot | ||
308 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][${item_index}]} | 356 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][${item_index}]} |
309 | Run As ${tender_owner} Додати неціновий показник на предмет ${TENDER['TENDER_UAID']} ${feature} ${item_id} | 357 | Run As ${tender_owner} Додати неціновий показник на предмет ${TENDER['TENDER_UAID']} ${feature} ${item_id} |
310 | ${feature_id}= get_id_from_object ${feature} | 358 | ${feature_id}= get_id_from_object ${feature} |
311 | - ${feature_data}= Create Dictionary feature=${feature} feature_id=${feature_id} | 359 | + ${feature_data}= Create Dictionary |
360 | + ... feature=${feature} | ||
361 | + ... feature_id=${feature_id} | ||
312 | ${feature_data}= munch_dict arg=${feature_data} | 362 | ${feature_data}= munch_dict arg=${feature_data} |
313 | Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data} | 363 | Set To Dictionary ${USERS.users['${tender_owner}']} feature_data=${feature_data} |
314 | 364 | ||
@@ -357,11 +407,13 @@ Resource resource.robot | @@ -357,11 +407,13 @@ Resource resource.robot | ||
357 | 407 | ||
358 | Можливість задати запитання на тендер користувачем ${username} | 408 | Можливість задати запитання на тендер користувачем ${username} |
359 | ${question}= Підготувати дані для запитання | 409 | ${question}= Підготувати дані для запитання |
360 | - ${question_resp}= Run As ${username} Задати запитання на тендер ${TENDER['TENDER_UAID']} ${question} | 410 | + Run As ${username} Задати запитання на тендер ${TENDER['TENDER_UAID']} ${question} |
361 | ${now}= Get Current TZdate | 411 | ${now}= Get Current TZdate |
362 | ${question.data.date}= Set variable ${now} | 412 | ${question.data.date}= Set variable ${now} |
363 | ${question_id}= get_id_from_object ${question.data} | 413 | ${question_id}= get_id_from_object ${question.data} |
364 | - ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} | 414 | + ${question_data}= Create Dictionary |
415 | + ... question=${question} | ||
416 | + ... question_id=${question_id} | ||
365 | ${question_data}= munch_dict arg=${question_data} | 417 | ${question_data}= munch_dict arg=${question_data} |
366 | Set To Dictionary ${USERS.users['${username}']} tender_question_data=${question_data} | 418 | Set To Dictionary ${USERS.users['${username}']} tender_question_data=${question_data} |
367 | 419 | ||
@@ -369,11 +421,13 @@ Resource resource.robot | @@ -369,11 +421,13 @@ Resource resource.robot | ||
369 | Можливість задати запитання на ${lot_index} лот користувачем ${username} | 421 | Можливість задати запитання на ${lot_index} лот користувачем ${username} |
370 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]} | 422 | ${lot_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data.lots[${lot_index}]} |
371 | ${question}= Підготувати дані для запитання | 423 | ${question}= Підготувати дані для запитання |
372 | - ${question_resp}= Run As ${username} Задати запитання на лот ${TENDER['TENDER_UAID']} ${lot_id} ${question} | 424 | + Run As ${username} Задати запитання на лот ${TENDER['TENDER_UAID']} ${lot_id} ${question} |
373 | ${now}= Get Current TZdate | 425 | ${now}= Get Current TZdate |
374 | ${question.data.date}= Set variable ${now} | 426 | ${question.data.date}= Set variable ${now} |
375 | ${question_id}= get_id_from_object ${question.data} | 427 | ${question_id}= get_id_from_object ${question.data} |
376 | - ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} | 428 | + ${question_data}= Create Dictionary |
429 | + ... question=${question} | ||
430 | + ... question_id=${question_id} | ||
377 | ${question_data}= munch_dict arg=${question_data} | 431 | ${question_data}= munch_dict arg=${question_data} |
378 | Set To Dictionary ${USERS.users['${username}']} lots_${lot_index}_question_data=${question_data} | 432 | Set To Dictionary ${USERS.users['${username}']} lots_${lot_index}_question_data=${question_data} |
379 | 433 | ||
@@ -381,11 +435,13 @@ Resource resource.robot | @@ -381,11 +435,13 @@ Resource resource.robot | ||
381 | Можливість задати запитання на ${item_index} предмет користувачем ${username} | 435 | Можливість задати запитання на ${item_index} предмет користувачем ${username} |
382 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][${item_index}]} | 436 | ${item_id}= get_id_from_object ${USERS.users['${tender_owner}'].tender_data.data['items'][${item_index}]} |
383 | ${question}= Підготувати дані для запитання | 437 | ${question}= Підготувати дані для запитання |
384 | - ${question_resp}= Run As ${username} Задати запитання на предмет ${TENDER['TENDER_UAID']} ${item_id} ${question} | 438 | + Run As ${username} Задати запитання на предмет ${TENDER['TENDER_UAID']} ${item_id} ${question} |
385 | ${now}= Get Current TZdate | 439 | ${now}= Get Current TZdate |
386 | ${question.data.date}= Set variable ${now} | 440 | ${question.data.date}= Set variable ${now} |
387 | ${question_id}= get_id_from_object ${question.data} | 441 | ${question_id}= get_id_from_object ${question.data} |
388 | - ${question_data}= Create Dictionary question=${question} question_resp=${question_resp} question_id=${question_id} | 442 | + ${question_data}= Create Dictionary |
443 | + ... question=${question} | ||
444 | + ... question_id=${question_id} | ||
389 | ${question_data}= munch_dict arg=${question_data} | 445 | ${question_data}= munch_dict arg=${question_data} |
390 | Set To Dictionary ${USERS.users['${username}']} items_${item_index}_question_data=${question_data} | 446 | Set To Dictionary ${USERS.users['${username}']} items_${item_index}_question_data=${question_data} |
391 | 447 | ||
@@ -454,7 +510,9 @@ Resource resource.robot | @@ -454,7 +510,9 @@ Resource resource.robot | ||
454 | ... Створити чернетку вимоги про виправлення умов закупівлі | 510 | ... Створити чернетку вимоги про виправлення умов закупівлі |
455 | ... ${TENDER['TENDER_UAID']} | 511 | ... ${TENDER['TENDER_UAID']} |
456 | ... ${claim} | 512 | ... ${claim} |
457 | - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} | 513 | + ${claim_data}= Create Dictionary |
514 | + ... claim=${claim} | ||
515 | + ... complaintID=${complaintID} | ||
458 | ${claim_data}= munch_dict arg=${claim_data} | 516 | ${claim_data}= munch_dict arg=${claim_data} |
459 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} | 517 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} |
460 | 518 | ||
@@ -467,7 +525,9 @@ Resource resource.robot | @@ -467,7 +525,9 @@ Resource resource.robot | ||
467 | ... ${TENDER['TENDER_UAID']} | 525 | ... ${TENDER['TENDER_UAID']} |
468 | ... ${claim} | 526 | ... ${claim} |
469 | ... ${lot_id} | 527 | ... ${lot_id} |
470 | - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} | 528 | + ${claim_data}= Create Dictionary |
529 | + ... claim=${claim} | ||
530 | + ... complaintID=${complaintID} | ||
471 | ${claim_data}= munch_dict arg=${claim_data} | 531 | ${claim_data}= munch_dict arg=${claim_data} |
472 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} | 532 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} |
473 | 533 | ||
@@ -479,7 +539,9 @@ Resource resource.robot | @@ -479,7 +539,9 @@ Resource resource.robot | ||
479 | ... ${TENDER['TENDER_UAID']} | 539 | ... ${TENDER['TENDER_UAID']} |
480 | ... ${claim} | 540 | ... ${claim} |
481 | ... ${award_index} | 541 | ... ${award_index} |
482 | - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} | 542 | + ${claim_data}= Create Dictionary |
543 | + ... claim=${claim} | ||
544 | + ... complaintID=${complaintID} | ||
483 | ${claim_data}= munch_dict arg=${claim_data} | 545 | ${claim_data}= munch_dict arg=${claim_data} |
484 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} | 546 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} |
485 | 547 | ||
@@ -492,8 +554,13 @@ Resource resource.robot | @@ -492,8 +554,13 @@ Resource resource.robot | ||
492 | ... ${TENDER['TENDER_UAID']} | 554 | ... ${TENDER['TENDER_UAID']} |
493 | ... ${claim} | 555 | ... ${claim} |
494 | ... ${file_path} | 556 | ... ${file_path} |
495 | - ${doc_id}= get_id_from_doc_name ${file_name} | ||
496 | - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} doc_name=${file_name} doc_id=${doc_id} doc_content=${file_content} | 557 | + ${doc_id}= get_id_from_string ${file_name} |
558 | + ${claim_data}= Create Dictionary | ||
559 | + ... claim=${claim} | ||
560 | + ... complaintID=${complaintID} | ||
561 | + ... doc_name=${file_name} | ||
562 | + ... doc_id=${doc_id} | ||
563 | + ... doc_content=${file_content} | ||
497 | ${claim_data}= munch_dict arg=${claim_data} | 564 | ${claim_data}= munch_dict arg=${claim_data} |
498 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} | 565 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} |
499 | Remove File ${file_path} | 566 | Remove File ${file_path} |
@@ -509,8 +576,13 @@ Resource resource.robot | @@ -509,8 +576,13 @@ Resource resource.robot | ||
509 | ... ${claim} | 576 | ... ${claim} |
510 | ... ${lot_id} | 577 | ... ${lot_id} |
511 | ... ${file_path} | 578 | ... ${file_path} |
512 | - ${doc_id}= get_id_from_doc_name ${file_name} | ||
513 | - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} doc_name=${file_name} doc_id=${doc_id} doc_content=${file_content} | 579 | + ${doc_id}= get_id_from_string ${file_name} |
580 | + ${claim_data}= Create Dictionary | ||
581 | + ... claim=${claim} | ||
582 | + ... complaintID=${complaintID} | ||
583 | + ... doc_name=${file_name} | ||
584 | + ... doc_id=${doc_id} | ||
585 | + ... doc_content=${file_content} | ||
514 | ${claim_data}= munch_dict arg=${claim_data} | 586 | ${claim_data}= munch_dict arg=${claim_data} |
515 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} | 587 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} |
516 | Remove File ${file_path} | 588 | Remove File ${file_path} |
@@ -525,8 +597,13 @@ Resource resource.robot | @@ -525,8 +597,13 @@ Resource resource.robot | ||
525 | ... ${claim} | 597 | ... ${claim} |
526 | ... ${award_index} | 598 | ... ${award_index} |
527 | ... ${file_path} | 599 | ... ${file_path} |
528 | - ${doc_id}= get_id_from_doc_name ${file_name} | ||
529 | - ${claim_data}= Create Dictionary claim=${claim} complaintID=${complaintID} doc_name=${file_name} doc_id=${doc_id} doc_content=${file_content} | 600 | + ${doc_id}= get_id_from_string ${file_name} |
601 | + ${claim_data}= Create Dictionary | ||
602 | + ... claim=${claim} | ||
603 | + ... complaintID=${complaintID} | ||
604 | + ... doc_name=${file_name} | ||
605 | + ... doc_id=${doc_id} | ||
606 | + ... doc_content=${file_content} | ||
530 | ${claim_data}= munch_dict arg=${claim_data} | 607 | ${claim_data}= munch_dict arg=${claim_data} |
531 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} | 608 | Set To Dictionary ${USERS.users['${provider}']} claim_data ${claim_data} |
532 | Remove File ${file_path} | 609 | Remove File ${file_path} |
@@ -534,7 +611,9 @@ Resource resource.robot | @@ -534,7 +611,9 @@ Resource resource.robot | ||
534 | 611 | ||
535 | Можливість скасувати вимогу про виправлення умов закупівлі | 612 | Можливість скасувати вимогу про виправлення умов закупівлі |
536 | ${cancellation_reason}= create_fake_sentence | 613 | ${cancellation_reason}= create_fake_sentence |
537 | - ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason} | 614 | + ${data}= Create Dictionary |
615 | + ... status=cancelled | ||
616 | + ... cancellationReason=${cancellation_reason} | ||
538 | ${cancellation_data}= Create Dictionary data=${data} | 617 | ${cancellation_data}= Create Dictionary data=${data} |
539 | ${cancellation_data}= munch_dict arg=${cancellation_data} | 618 | ${cancellation_data}= munch_dict arg=${cancellation_data} |
540 | Run As ${provider} | 619 | Run As ${provider} |
@@ -555,7 +634,9 @@ Resource resource.robot | @@ -555,7 +634,9 @@ Resource resource.robot | ||
555 | 634 | ||
556 | Можливість скасувати вимогу про виправлення умов лоту | 635 | Можливість скасувати вимогу про виправлення умов лоту |
557 | ${cancellation_reason}= create_fake_sentence | 636 | ${cancellation_reason}= create_fake_sentence |
558 | - ${data}= Create Dictionary status=cancelled cancellationReason=${cancellation_reason} | 637 | + ${data}= Create Dictionary |
638 | + ... status=cancelled | ||
639 | + ... cancellationReason=${cancellation_reason} | ||
559 | ${cancellation_data}= Create Dictionary data=${data} | 640 | ${cancellation_data}= Create Dictionary data=${data} |
560 | ${cancellation_data}= munch_dict arg=${cancellation_data} | 641 | ${cancellation_data}= munch_dict arg=${cancellation_data} |
561 | Run As ${provider} | 642 | Run As ${provider} |
@@ -577,7 +658,9 @@ Resource resource.robot | @@ -577,7 +658,9 @@ Resource resource.robot | ||
577 | Можливість скасувати вимогу про виправлення визначення ${award_index} переможця | 658 | Можливість скасувати вимогу про виправлення визначення ${award_index} переможця |
578 | ${cancellation_reason}= create_fake_sentence | 659 | ${cancellation_reason}= create_fake_sentence |
579 | ${status}= Set variable if 'open' in '${MODE}' stopping cancelled | 660 | ${status}= Set variable if 'open' in '${MODE}' stopping cancelled |
580 | - ${data}= Create Dictionary status=${status} cancellationReason=${cancellation_reason} | 661 | + ${data}= Create Dictionary |
662 | + ... status=${status} | ||
663 | + ... cancellationReason=${cancellation_reason} | ||
581 | ${cancellation_data}= Create Dictionary data=${data} | 664 | ${cancellation_data}= Create Dictionary data=${data} |
582 | ${cancellation_data}= munch_dict arg=${cancellation_data} | 665 | ${cancellation_data}= munch_dict arg=${cancellation_data} |
583 | Run As ${provider} | 666 | Run As ${provider} |
@@ -600,7 +683,9 @@ Resource resource.robot | @@ -600,7 +683,9 @@ Resource resource.robot | ||
600 | 683 | ||
601 | 684 | ||
602 | Можливість перетворити вимогу про виправлення умов закупівлі в скаргу | 685 | Можливість перетворити вимогу про виправлення умов закупівлі в скаргу |
603 | - ${data}= Create Dictionary status=pending satisfied=${False} | 686 | + ${data}= Create Dictionary |
687 | + ... status=pending | ||
688 | + ... satisfied=${False} | ||
604 | ${escalation_data}= Create Dictionary data=${data} | 689 | ${escalation_data}= Create Dictionary data=${data} |
605 | ${escalation_data}= munch_dict arg=${escalation_data} | 690 | ${escalation_data}= munch_dict arg=${escalation_data} |
606 | Run As ${provider} | 691 | Run As ${provider} |
@@ -620,7 +705,9 @@ Resource resource.robot | @@ -620,7 +705,9 @@ Resource resource.robot | ||
620 | 705 | ||
621 | 706 | ||
622 | Можливість перетворити вимогу про виправлення умов лоту в скаргу | 707 | Можливість перетворити вимогу про виправлення умов лоту в скаргу |
623 | - ${data}= Create Dictionary status=pending satisfied=${False} | 708 | + ${data}= Create Dictionary |
709 | + ... status=pending | ||
710 | + ... satisfied=${False} | ||
624 | ${escalation_data}= Create Dictionary data=${data} | 711 | ${escalation_data}= Create Dictionary data=${data} |
625 | ${escalation_data}= munch_dict arg=${escalation_data} | 712 | ${escalation_data}= munch_dict arg=${escalation_data} |
626 | Run As ${provider} | 713 | Run As ${provider} |
@@ -640,7 +727,9 @@ Resource resource.robot | @@ -640,7 +727,9 @@ Resource resource.robot | ||
640 | 727 | ||
641 | 728 | ||
642 | Можливість перетворити вимогу про виправлення визначення ${award_index} переможця в скаргу | 729 | Можливість перетворити вимогу про виправлення визначення ${award_index} переможця в скаргу |
643 | - ${data}= Create Dictionary status=pending satisfied=${False} | 730 | + ${data}= Create Dictionary |
731 | + ... status=pending | ||
732 | + ... satisfied=${False} | ||
644 | ${escalation_data}= Create Dictionary data=${data} | 733 | ${escalation_data}= Create Dictionary data=${data} |
645 | ${escalation_data}= munch_dict arg=${escalation_data} | 734 | ${escalation_data}= munch_dict arg=${escalation_data} |
646 | Run As ${provider} | 735 | Run As ${provider} |
@@ -746,7 +835,9 @@ Resource resource.robot | @@ -746,7 +835,9 @@ Resource resource.robot | ||
746 | 835 | ||
747 | 836 | ||
748 | Можливість підтвердити задоволення вимоги про виправлення умов закупівлі | 837 | Можливість підтвердити задоволення вимоги про виправлення умов закупівлі |
749 | - ${data}= Create Dictionary status=resolved satisfied=${True} | 838 | + ${data}= Create Dictionary |
839 | + ... status=resolved | ||
840 | + ... satisfied=${True} | ||
750 | ${confirmation_data}= Create Dictionary data=${data} | 841 | ${confirmation_data}= Create Dictionary data=${data} |
751 | ${confirmation_data}= munch_dict arg=${confirmation_data} | 842 | ${confirmation_data}= munch_dict arg=${confirmation_data} |
752 | Run As ${provider} | 843 | Run As ${provider} |
@@ -766,7 +857,9 @@ Resource resource.robot | @@ -766,7 +857,9 @@ Resource resource.robot | ||
766 | 857 | ||
767 | 858 | ||
768 | Можливість підтвердити задоволення вимоги про виправлення умов лоту | 859 | Можливість підтвердити задоволення вимоги про виправлення умов лоту |
769 | - ${data}= Create Dictionary status=resolved satisfied=${True} | 860 | + ${data}= Create Dictionary |
861 | + ... status=resolved | ||
862 | + ... satisfied=${True} | ||
770 | ${confirmation_data}= Create Dictionary data=${data} | 863 | ${confirmation_data}= Create Dictionary data=${data} |
771 | ${confirmation_data}= munch_dict arg=${confirmation_data} | 864 | ${confirmation_data}= munch_dict arg=${confirmation_data} |
772 | Run As ${provider} | 865 | Run As ${provider} |
@@ -786,7 +879,9 @@ Resource resource.robot | @@ -786,7 +879,9 @@ Resource resource.robot | ||
786 | 879 | ||
787 | 880 | ||
788 | Можливість підтвердити задоволення вимоги про виправлення визначення ${award_index} переможця | 881 | Можливість підтвердити задоволення вимоги про виправлення визначення ${award_index} переможця |
789 | - ${data}= Create Dictionary status=resolved satisfied=${True} | 882 | + ${data}= Create Dictionary |
883 | + ... status=resolved | ||
884 | + ... satisfied=${True} | ||
790 | ${confirmation_data}= Create Dictionary data=${data} | 885 | ${confirmation_data}= Create Dictionary data=${data} |
791 | ${confirmation_data}= munch_dict arg=${confirmation_data} | 886 | ${confirmation_data}= munch_dict arg=${confirmation_data} |
792 | Run As ${provider} | 887 | Run As ${provider} |
@@ -822,7 +917,22 @@ Resource resource.robot | @@ -822,7 +917,22 @@ Resource resource.robot | ||
822 | ############################################################################################## | 917 | ############################################################################################## |
823 | 918 | ||
824 | Можливість подати цінову пропозицію користувачем ${username} | 919 | Можливість подати цінову пропозицію користувачем ${username} |
825 | - ${bid}= Підготувати дані для подання пропозиції ${username} | 920 | + ${bid}= Підготувати дані для подання пропозиції |
921 | + ${bidresponses}= Create Dictionary bid=${bid} | ||
922 | + Set To Dictionary ${USERS.users['${username}']} bidresponses=${bidresponses} | ||
923 | + ${lots}= Get Variable Value ${USERS.users['${tender_owner}'].initial_data.data.lots} ${None} | ||
924 | + ${lots_ids}= Run Keyword IF ${lots} | ||
925 | + ... Отримати ідентифікатори об’єктів ${username} lots | ||
926 | + ... ELSE Set Variable ${None} | ||
927 | + ${features}= Get Variable Value ${USERS.users['${tender_owner}'].initial_data.data.features} ${None} | ||
928 | + ${features_ids}= Run Keyword IF ${features} | ||
929 | + ... Отримати ідентифікатори об’єктів ${username} features | ||
930 | + ... ELSE Set Variable ${None} | ||
931 | + Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} | ||
932 | + | ||
933 | + | ||
934 | +Можливість подати цінову пропозицію на другий етап ${index} користувачем ${username} | ||
935 | + ${bid}= Підготувати дані для подання пропозиції для другого етапу ${index} | ||
826 | ${bidresponses}= Create Dictionary bid=${bid} | 936 | ${bidresponses}= Create Dictionary bid=${bid} |
827 | Set To Dictionary ${USERS.users['${username}']} bidresponses=${bidresponses} | 937 | Set To Dictionary ${USERS.users['${username}']} bidresponses=${bidresponses} |
828 | ${lots}= Get Variable Value ${USERS.users['${username}'].tender_data.data.lots} ${None} | 938 | ${lots}= Get Variable Value ${USERS.users['${username}'].tender_data.data.lots} ${None} |
@@ -833,12 +943,10 @@ Resource resource.robot | @@ -833,12 +943,10 @@ Resource resource.robot | ||
833 | ${features_ids}= Run Keyword IF ${features} | 943 | ${features_ids}= Run Keyword IF ${features} |
834 | ... Отримати ідентифікатори об’єктів ${username} features | 944 | ... Отримати ідентифікатори об’єктів ${username} features |
835 | ... ELSE Set Variable ${None} | 945 | ... ELSE Set Variable ${None} |
836 | - ${resp}= Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} | ||
837 | - Set To Dictionary ${USERS.users['${username}'].bidresponses} resp=${resp} | ||
838 | - | 946 | + Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} |
839 | 947 | ||
840 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} | 948 | Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} |
841 | - ${bid}= Підготувати дані для подання пропозиції ${username} | 949 | + ${bid}= Підготувати дані для подання пропозиції |
842 | ${values}= Get Variable Value ${bid.data.lotValues[0]} | 950 | ${values}= Get Variable Value ${bid.data.lotValues[0]} |
843 | Remove From Dictionary ${bid.data} lotValues | 951 | Remove From Dictionary ${bid.data} lotValues |
844 | Set_To_Object ${bid} data ${values} | 952 | Set_To_Object ${bid} data ${values} |
@@ -846,7 +954,7 @@ Resource resource.robot | @@ -846,7 +954,7 @@ Resource resource.robot | ||
846 | 954 | ||
847 | 955 | ||
848 | Неможливість подати цінову пропозицію без нецінових показників користувачем ${username} | 956 | Неможливість подати цінову пропозицію без нецінових показників користувачем ${username} |
849 | - ${bid}= Підготувати дані для подання пропозиції ${username} | 957 | + ${bid}= Підготувати дані для подання пропозиції |
850 | Remove From Dictionary ${bid.data} parameters | 958 | Remove From Dictionary ${bid.data} parameters |
851 | Require Failure ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} | 959 | Require Failure ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} |
852 | 960 | ||
@@ -862,16 +970,25 @@ Resource resource.robot | @@ -862,16 +970,25 @@ Resource resource.robot | ||
862 | 970 | ||
863 | Можливість завантажити документ в пропозицію користувачем ${username} | 971 | Можливість завантажити документ в пропозицію користувачем ${username} |
864 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 972 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
865 | - ${bid_doc_upload}= Run As ${username} Завантажити документ в ставку ${file_path} ${TENDER['TENDER_UAID']} | ||
866 | - Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_upload=${bid_doc_upload} | 973 | + ${doc_id}= get_id_from_string ${file_name} |
974 | + ${bid_document_data}= Create Dictionary | ||
975 | + ... doc_name=${file_name} | ||
976 | + ... doc_content=${file_content} | ||
977 | + ... doc_id=${doc_id} | ||
978 | + Run As ${username} Завантажити документ в ставку ${file_path} ${TENDER['TENDER_UAID']} | ||
979 | + Set To Dictionary ${USERS.users['${username}']} bid_document=${bid_document_data} | ||
867 | Remove File ${file_path} | 980 | Remove File ${file_path} |
868 | 981 | ||
869 | 982 | ||
870 | Можливість змінити документацію цінової пропозиції користувачем ${username} | 983 | Можливість змінити документацію цінової пропозиції користувачем ${username} |
871 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 984 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
872 | - ${docid}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid_doc_upload']['upload_response'].data.id} | ||
873 | - ${bid_doc_modified}= Run As ${username} Змінити документ в ставці ${TENDER['TENDER_UAID']} ${file_path} ${docid} | ||
874 | - Set To Dictionary ${USERS.users['${username}'].bidresponses} bid_doc_modified=${bid_doc_modified} | 985 | + ${doc_id}= get_id_from_string ${file_name} |
986 | + ${bid_document_modified_data}= Create Dictionary | ||
987 | + ... doc_name=${file_name} | ||
988 | + ... doc_content=${file_content} | ||
989 | + ... doc_id=${doc_id} | ||
990 | + Run As ${username} Змінити документ в ставці ${TENDER['TENDER_UAID']} ${file_path} ${USERS.users['${username}']['bid_document']['doc_id']} | ||
991 | + Set To Dictionary ${USERS.users['${username}']} bid_document_modified=${bid_document_modified_data} | ||
875 | Remove File ${file_path} | 992 | Remove File ${file_path} |
876 | 993 | ||
877 | ############################################################################################## | 994 | ############################################################################################## |
@@ -885,15 +1002,16 @@ Resource resource.robot | @@ -885,15 +1002,16 @@ Resource resource.robot | ||
885 | # Awarding | 1002 | # Awarding |
886 | ############################################################################################## | 1003 | ############################################################################################## |
887 | 1004 | ||
888 | -Можливість зареєструвати, додати документацію і підтвердити постачальника до закупівлі | ||
889 | - ${supplier_data}= Підготувати дані про постачальника ${tender_owner} | 1005 | +Можливість зареєструвати, додати документацію і підтвердити першого постачальника до закупівлі |
1006 | + ${lotIndex} = Set Variable If ${NUMBER_OF_LOTS} > 0 0 -1 | ||
1007 | + ${supplier_data}= Підготувати дані про постачальника ${tender_owner} ${lotIndex} | ||
890 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 1008 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
891 | Run as ${tender_owner} | 1009 | Run as ${tender_owner} |
892 | ... Створити постачальника, додати документацію і підтвердити його | 1010 | ... Створити постачальника, додати документацію і підтвердити його |
893 | ... ${TENDER['TENDER_UAID']} | 1011 | ... ${TENDER['TENDER_UAID']} |
894 | ... ${supplier_data} | 1012 | ... ${supplier_data} |
895 | ... ${file_path} | 1013 | ... ${file_path} |
896 | - ${doc_id}= get_id_from_doc_name ${file_name} | 1014 | + ${doc_id}= get_id_from_string ${file_name} |
897 | Set to dictionary ${USERS.users['${tender_owner}']} award_doc_name=${file_name} award_doc_id=${doc_id} award_doc_content=${file_content} | 1015 | Set to dictionary ${USERS.users['${tender_owner}']} award_doc_name=${file_name} award_doc_id=${doc_id} award_doc_content=${file_content} |
898 | Remove File ${file_path} | 1016 | Remove File ${file_path} |
899 | 1017 | ||
@@ -903,4 +1021,4 @@ Resource resource.robot | @@ -903,4 +1021,4 @@ Resource resource.robot | ||
903 | ... Підтвердити підписання контракту | 1021 | ... Підтвердити підписання контракту |
904 | ... ${TENDER['TENDER_UAID']} | 1022 | ... ${TENDER['TENDER_UAID']} |
905 | ... ${0} | 1023 | ... ${0} |
906 | - Run Keyword And Ignore Error Remove From Dictionary ${USERS.users['${viewer}'].tender_data.contracts[0]} status | 1024 | + Run Keyword And Ignore Error Remove From Dictionary ${USERS.users['${viewer}'].tender_data.data.contracts[0]} status |
@@ -19,9 +19,9 @@ Library openprocurement_client_helper.py | @@ -19,9 +19,9 @@ Library openprocurement_client_helper.py | ||
19 | Підготувати клієнт для користувача | 19 | Підготувати клієнт для користувача |
20 | [Arguments] ${username} | 20 | [Arguments] ${username} |
21 | [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо | 21 | [Documentation] Відкрити браузер, створити об’єкт api wrapper, тощо |
22 | - Log ${api_host_url} | ||
23 | - Log ${api_version} | ||
24 | - ${api_wrapper}= prepare_api_wrapper ${USERS.users['${username}'].api_key} ${api_host_url} ${api_version} | 22 | + Log ${API_HOST_URL} |
23 | + Log ${API_VERSION} | ||
24 | + ${api_wrapper}= prepare_api_wrapper ${USERS.users['${username}'].api_key} ${API_HOST_URL} ${API_VERSION} | ||
25 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} | 25 | Set To Dictionary ${USERS.users['${username}']} client=${api_wrapper} |
26 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} | 26 | Set To Dictionary ${USERS.users['${username}']} access_token=${EMPTY} |
27 | ${id_map}= Create Dictionary | 27 | ${id_map}= Create Dictionary |
@@ -38,6 +38,7 @@ Library openprocurement_client_helper.py | @@ -38,6 +38,7 @@ Library openprocurement_client_helper.py | ||
38 | ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | 38 | ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} |
39 | ${reply}= Call Method ${USERS.users['${username}'].client} upload_document ${filepath} ${tender} | 39 | ${reply}= Call Method ${USERS.users['${username}'].client} upload_document ${filepath} ${tender} |
40 | Log object data ${reply} reply | 40 | Log object data ${reply} reply |
41 | + #return here is needed to have uploaded doc data in `Завантажити документ в лот` keyword | ||
41 | [return] ${reply} | 42 | [return] ${reply} |
42 | 43 | ||
43 | 44 | ||
@@ -77,8 +78,15 @@ Library openprocurement_client_helper.py | @@ -77,8 +78,15 @@ Library openprocurement_client_helper.py | ||
77 | Створити тендер | 78 | Створити тендер |
78 | [Arguments] ${username} ${tender_data} | 79 | [Arguments] ${username} ${tender_data} |
79 | ${tender}= Call Method ${USERS.users['${username}'].client} create_tender ${tender_data} | 80 | ${tender}= Call Method ${USERS.users['${username}'].client} create_tender ${tender_data} |
80 | - Log object data ${tender} created_tender | 81 | + Log ${tender} |
81 | ${access_token}= Get Variable Value ${tender.access.token} | 82 | ${access_token}= Get Variable Value ${tender.access.token} |
83 | + ${status}= Set Variable If 'open' in '${MODE}' active.tendering ${EMPTY} | ||
84 | + ${status}= Set Variable If 'below' in '${MODE}' active.enquiries ${status} | ||
85 | + ${status}= Set Variable If '${status}'=='${EMPTY}' active ${status} | ||
86 | + Set To Dictionary ${tender['data']} status=${status} | ||
87 | + ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | ||
88 | + Log ${tender} | ||
89 | + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/tenders/${tender.data.id}${\n} WARN | ||
82 | Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} | 90 | Set To Dictionary ${USERS.users['${username}']} access_token=${access_token} |
83 | Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} | 91 | Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} |
84 | Log ${USERS.users['${username}'].tender_data} | 92 | Log ${USERS.users['${username}'].tender_data} |
@@ -86,16 +94,25 @@ Library openprocurement_client_helper.py | @@ -86,16 +94,25 @@ Library openprocurement_client_helper.py | ||
86 | 94 | ||
87 | 95 | ||
88 | Пошук тендера по ідентифікатору | 96 | Пошук тендера по ідентифікатору |
89 | - [Arguments] ${username} ${tender_uaid} | 97 | + [Arguments] ${username} ${tender_uaid} ${save_key}=tender_data |
90 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} | 98 | ${internalid}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} |
91 | ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid} | 99 | ${tender}= Call Method ${USERS.users['${username}'].client} get_tender ${internalid} |
92 | ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | 100 | ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} |
93 | - Set To Dictionary ${USERS.users['${username}']} tender_data=${tender} | 101 | + Set To Dictionary ${USERS.users['${username}']} ${save_key}=${tender} |
94 | ${tender}= munch_dict arg=${tender} | 102 | ${tender}= munch_dict arg=${tender} |
95 | Log ${tender} | 103 | Log ${tender} |
96 | [return] ${tender} | 104 | [return] ${tender} |
97 | 105 | ||
98 | 106 | ||
107 | +Отримати тендер другого етапу та зберегти його | ||
108 | + [Arguments] ${username} ${tender_id} | ||
109 | + ${response}= Call Method ${USERS.users['${username}'].client} patch_credentials ${tender_id} ${USERS.users['${username}'].access_token} | ||
110 | + ${tender}= set_access_key ${response} ${response.access.token} | ||
111 | + Set To Dictionary ${USERS.users['${username}']} access_token=${response.access.token} | ||
112 | + Set To Dictionary ${USERS.users['${username}']} tender_data=${response} | ||
113 | + Log ${tender.data.tenderID} | ||
114 | + | ||
115 | + | ||
99 | Оновити сторінку з тендером | 116 | Оновити сторінку з тендером |
100 | [Arguments] ${username} ${tender_uaid} | 117 | [Arguments] ${username} ${tender_uaid} |
101 | openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 118 | openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
@@ -159,6 +176,7 @@ Library openprocurement_client_helper.py | @@ -159,6 +176,7 @@ Library openprocurement_client_helper.py | ||
159 | [Arguments] ${username} ${tender_uaid} ${lot} | 176 | [Arguments] ${username} ${tender_uaid} ${lot} |
160 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 177 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
161 | ${reply}= Call Method ${USERS.users['${username}'].client} create_lot ${tender} ${lot} | 178 | ${reply}= Call Method ${USERS.users['${username}'].client} create_lot ${tender} ${lot} |
179 | + #return here is needed to have created lot id in `Створити лот з предметом закупівлі` keyword | ||
162 | [return] ${reply} | 180 | [return] ${reply} |
163 | 181 | ||
164 | 182 | ||
@@ -167,7 +185,6 @@ Library openprocurement_client_helper.py | @@ -167,7 +185,6 @@ Library openprocurement_client_helper.py | ||
167 | ${reply}= openprocurement_client.Створити лот ${username} ${tender_uaid} ${lot} | 185 | ${reply}= openprocurement_client.Створити лот ${username} ${tender_uaid} ${lot} |
168 | ${lot_id}= get_id_from_object ${lot.data} | 186 | ${lot_id}= get_id_from_object ${lot.data} |
169 | openprocurement_client.Додати предмет закупівлі в лот ${username} ${tender_uaid} ${lot_id} ${item} | 187 | openprocurement_client.Додати предмет закупівлі в лот ${username} ${tender_uaid} ${lot_id} ${item} |
170 | - [return] ${reply} | ||
171 | 188 | ||
172 | 189 | ||
173 | Отримати інформацію із лоту | 190 | Отримати інформацію із лоту |
@@ -183,7 +200,6 @@ Library openprocurement_client_helper.py | @@ -183,7 +200,6 @@ Library openprocurement_client_helper.py | ||
183 | ${lot}= Create Dictionary data=${tender.data.lots[${lot_index}]} | 200 | ${lot}= Create Dictionary data=${tender.data.lots[${lot_index}]} |
184 | Set_To_Object ${lot.data} ${fieldname} ${fieldvalue} | 201 | Set_To_Object ${lot.data} ${fieldname} ${fieldvalue} |
185 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_lot ${tender} ${lot} | 202 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_lot ${tender} ${lot} |
186 | - [return] ${reply} | ||
187 | 203 | ||
188 | 204 | ||
189 | Додати предмет закупівлі в лот | 205 | Додати предмет закупівлі в лот |
@@ -204,7 +220,6 @@ Library openprocurement_client_helper.py | @@ -204,7 +220,6 @@ Library openprocurement_client_helper.py | ||
204 | ${doc}= openprocurement_client.Завантажити документ ${username} ${filepath} ${tender_uaid} | 220 | ${doc}= openprocurement_client.Завантажити документ ${username} ${filepath} ${tender_uaid} |
205 | ${lot_doc}= test_lot_document_data ${doc} ${lot_id} | 221 | ${lot_doc}= test_lot_document_data ${doc} ${lot_id} |
206 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_document ${tender} ${lot_doc} | 222 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_document ${tender} ${lot_doc} |
207 | - [return] ${reply} | ||
208 | 223 | ||
209 | 224 | ||
210 | Видалити лот | 225 | Видалити лот |
@@ -217,14 +232,16 @@ Library openprocurement_client_helper.py | @@ -217,14 +232,16 @@ Library openprocurement_client_helper.py | ||
217 | \ Run Keyword If '${item.relatedLot}'=='${lot.data.id}' | 232 | \ Run Keyword If '${item.relatedLot}'=='${lot.data.id}' |
218 | \ ... openprocurement_client.Видалити предмет закупівлі ${username} ${tender_uaid} ${item_id} | 233 | \ ... openprocurement_client.Видалити предмет закупівлі ${username} ${tender_uaid} ${item_id} |
219 | ${reply}= Call Method ${USERS.users['${username}'].client} delete_lot ${tender} ${lot} | 234 | ${reply}= Call Method ${USERS.users['${username}'].client} delete_lot ${tender} ${lot} |
220 | - [return] ${reply} | ||
221 | 235 | ||
222 | 236 | ||
223 | Скасувати лот | 237 | Скасувати лот |
224 | [Arguments] ${username} ${tender_uaid} ${lot_id} ${cancellation_reason} ${document} ${new_description} | 238 | [Arguments] ${username} ${tender_uaid} ${lot_id} ${cancellation_reason} ${document} ${new_description} |
225 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 239 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
226 | ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | 240 | ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} |
227 | - ${data}= Create dictionary reason=${cancellation_reason} cancellationOf=lot relatedLot=${lot_id} | 241 | + ${data}= Create dictionary |
242 | + ... reason=${cancellation_reason} | ||
243 | + ... cancellationOf=lot | ||
244 | + ... relatedLot=${lot_id} | ||
228 | ${cancellation_data}= Create dictionary data=${data} | 245 | ${cancellation_data}= Create dictionary data=${data} |
229 | ${cancellation_data}= munch_dict arg=${cancellation_data} | 246 | ${cancellation_data}= munch_dict arg=${cancellation_data} |
230 | ${cancel_reply}= Call Method ${USERS.users['${username}'].client} create_cancellation ${tender} ${cancellation_data} | 247 | ${cancel_reply}= Call Method ${USERS.users['${username}'].client} create_cancellation ${tender} ${cancellation_data} |
@@ -302,7 +319,6 @@ Library openprocurement_client_helper.py | @@ -302,7 +319,6 @@ Library openprocurement_client_helper.py | ||
302 | ${item_id}= Get Variable Value ${tender.data['items'][${item_index}].id} | 319 | ${item_id}= Get Variable Value ${tender.data['items'][${item_index}].id} |
303 | ${question}= test_related_question ${question} item ${item_id} | 320 | ${question}= test_related_question ${question} item ${item_id} |
304 | ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} | 321 | ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} |
305 | - [return] ${reply} | ||
306 | 322 | ||
307 | 323 | ||
308 | Задати запитання на лот | 324 | Задати запитання на лот |
@@ -312,14 +328,12 @@ Library openprocurement_client_helper.py | @@ -312,14 +328,12 @@ Library openprocurement_client_helper.py | ||
312 | ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} | 328 | ${lot_id}= Get Variable Value ${tender.data.lots[${lot_index}].id} |
313 | ${question}= test_related_question ${question} lot ${lot_id} | 329 | ${question}= test_related_question ${question} lot ${lot_id} |
314 | ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} | 330 | ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} |
315 | - [return] ${reply} | ||
316 | 331 | ||
317 | 332 | ||
318 | Задати запитання на тендер | 333 | Задати запитання на тендер |
319 | [Arguments] ${username} ${tender_uaid} ${question} | 334 | [Arguments] ${username} ${tender_uaid} ${question} |
320 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 335 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
321 | ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} | 336 | ${reply}= Call Method ${USERS.users['${username}'].client} create_question ${tender} ${question} |
322 | - [return] ${reply} | ||
323 | 337 | ||
324 | 338 | ||
325 | Отримати інформацію із запитання | 339 | Отримати інформацію із запитання |
@@ -334,7 +348,6 @@ Library openprocurement_client_helper.py | @@ -334,7 +348,6 @@ Library openprocurement_client_helper.py | ||
334 | ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | 348 | ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} |
335 | ${answer_data.data.id}= openprocurement_client.Отримати інформацію із запитання ${username} ${tender_uaid} ${question_id} id | 349 | ${answer_data.data.id}= openprocurement_client.Отримати інформацію із запитання ${username} ${tender_uaid} ${question_id} id |
336 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data} | 350 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_question ${tender} ${answer_data} |
337 | - [return] ${reply} | ||
338 | 351 | ||
339 | ############################################################################## | 352 | ############################################################################## |
340 | # Claims | 353 | # Claims |
@@ -698,10 +711,13 @@ Library openprocurement_client_helper.py | @@ -698,10 +711,13 @@ Library openprocurement_client_helper.py | ||
698 | \ ${code}= Get Variable Value ${tender.data.features[${feature_index}].code} | 711 | \ ${code}= Get Variable Value ${tender.data.features[${feature_index}].code} |
699 | \ Set To Dictionary ${bid.data.parameters[${index}]} code=${code} | 712 | \ Set To Dictionary ${bid.data.parameters[${index}]} code=${code} |
700 | ${reply}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid} | 713 | ${reply}= Call Method ${USERS.users['${username}'].client} create_bid ${tender} ${bid} |
714 | + Log ${reply} | ||
715 | + ${status}= Set Variable If '${MODE}'=='openeu' pending active | ||
716 | + Set To Dictionary ${reply['data']} status=${status} | ||
717 | + ${reply_active}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${reply} | ||
701 | Set To Dictionary ${USERS.users['${username}']} access_token=${reply['access']['token']} | 718 | Set To Dictionary ${USERS.users['${username}']} access_token=${reply['access']['token']} |
702 | Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id=${reply['data']['id']} | 719 | Set To Dictionary ${USERS.users['${username}'].bidresponses['bid'].data} id=${reply['data']['id']} |
703 | - Log ${reply} | ||
704 | - [return] ${reply} | 720 | + Log ${reply_active} |
705 | 721 | ||
706 | 722 | ||
707 | Змінити цінову пропозицію | 723 | Змінити цінову пропозицію |
@@ -709,57 +725,62 @@ Library openprocurement_client_helper.py | @@ -709,57 +725,62 @@ Library openprocurement_client_helper.py | ||
709 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 725 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
710 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | 726 | ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} |
711 | Set_To_Object ${bid.data} ${fieldname} ${fieldvalue} | 727 | Set_To_Object ${bid.data} ${fieldname} ${fieldvalue} |
712 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token} | 728 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} |
713 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${bid} | 729 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_bid ${tender} ${bid} |
714 | Log ${reply} | 730 | Log ${reply} |
715 | - [return] ${reply} | ||
716 | 731 | ||
717 | 732 | ||
718 | Скасувати цінову пропозицію | 733 | Скасувати цінову пропозицію |
719 | [Arguments] ${username} ${tender_uaid} | 734 | [Arguments] ${username} ${tender_uaid} |
720 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 735 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
721 | ${bid_id}= openprocurement_client.Отримати інформацію із пропозиції ${username} ${tender_uaid} id | 736 | ${bid_id}= openprocurement_client.Отримати інформацію із пропозиції ${username} ${tender_uaid} id |
722 | - ${reply}= Call Method ${USERS.users['${username}'].client} delete_bid ${tender} ${bid_id} ${USERS.users['${username}'].bidresponses['resp'].access.token} | 737 | + ${reply}= Call Method ${USERS.users['${username}'].client} delete_bid ${tender} ${bid_id} ${USERS.users['${username}']['access_token']} |
723 | Log ${reply} | 738 | Log ${reply} |
724 | - [return] ${reply} | ||
725 | 739 | ||
726 | 740 | ||
727 | Завантажити документ в ставку | 741 | Завантажити документ в ставку |
728 | [Arguments] ${username} ${path} ${tender_uaid} ${doc_type}=documents | 742 | [Arguments] ${username} ${path} ${tender_uaid} ${doc_type}=documents |
729 | - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id} | 743 | + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} |
730 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 744 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
731 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token} | 745 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} |
732 | ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document ${path} ${tender} ${bid_id} ${doc_type} | 746 | ${response}= Call Method ${USERS.users['${username}'].client} upload_bid_document ${path} ${tender} ${bid_id} ${doc_type} |
733 | - ${uploaded_file} = Create Dictionary filepath=${path} upload_response=${response} | 747 | + ${uploaded_file} = Create Dictionary |
748 | + ... filepath=${path} | ||
749 | + ... upload_response=${response} | ||
734 | Log object data ${uploaded_file} | 750 | Log object data ${uploaded_file} |
735 | [return] ${uploaded_file} | 751 | [return] ${uploaded_file} |
736 | 752 | ||
737 | 753 | ||
738 | Змінити документ в ставці | 754 | Змінити документ в ставці |
739 | - [Arguments] ${username} ${tender_uaid} ${path} ${docid} | ||
740 | - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id} | 755 | + [Arguments] ${username} ${tender_uaid} ${path} ${doc_id} |
756 | + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} | ||
741 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 757 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
742 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token} | ||
743 | - ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document ${path} ${tender} ${bid_id} ${docid} | ||
744 | - ${uploaded_file} = Create Dictionary filepath=${path} upload_response=${response} | 758 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} |
759 | + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | ||
760 | + ${bid_doc}= get_document_by_id ${bid.data} ${doc_id} | ||
761 | + ${response}= Call Method ${USERS.users['${username}'].client} update_bid_document ${path} ${tender} ${bid_id} ${bid_doc['id']} | ||
762 | + ${uploaded_file} = Create Dictionary | ||
763 | + ... filepath=${path} | ||
764 | + ... upload_response=${response} | ||
745 | Log object data ${uploaded_file} | 765 | Log object data ${uploaded_file} |
746 | [return] ${uploaded_file} | 766 | [return] ${uploaded_file} |
747 | 767 | ||
748 | 768 | ||
749 | Змінити документацію в ставці | 769 | Змінити документацію в ставці |
750 | - [Arguments] ${username} ${tender_uaid} ${doc_data} ${docid} | ||
751 | - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id} | 770 | + [Arguments] ${username} ${tender_uaid} ${doc_data} ${doc_id} |
771 | + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} | ||
752 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 772 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
753 | - ${tender}= set_access_key ${tender} ${USERS.users['${username}'].bidresponses['resp'].access.token} | ||
754 | - ${reply}= Call Method ${USERS.users['${username}'].client} patch_bid_document ${tender} ${doc_data} ${bid_id} ${docid} | ||
755 | - [return] ${reply} | 773 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}']['access_token']} |
774 | + ${bid}= openprocurement_client.Отримати пропозицію ${username} ${tender_uaid} | ||
775 | + ${bid_doc}= get_document_by_id ${bid.data} ${doc_id} | ||
776 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_bid_document ${tender} ${doc_data} ${bid_id} ${bid_doc['id']} | ||
756 | 777 | ||
757 | 778 | ||
758 | Отримати пропозицію | 779 | Отримати пропозицію |
759 | [Arguments] ${username} ${tender_uaid} | 780 | [Arguments] ${username} ${tender_uaid} |
760 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 781 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
761 | - ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].data.id} | ||
762 | - ${token}= Get Variable Value ${USERS.users['${username}'].bidresponses['resp'].access.token} | 782 | + ${bid_id}= Get Variable Value ${USERS.users['${username}'].bidresponses['bid'].data.id} |
783 | + ${token}= Get Variable Value ${USERS.users['${username}']['access_token']} | ||
763 | ${reply}= Call Method ${USERS.users['${username}'].client} get_bid ${tender} ${bid_id} ${token} | 784 | ${reply}= Call Method ${USERS.users['${username}'].client} get_bid ${tender} ${bid_id} ${token} |
764 | ${reply}= munch_dict arg=${reply} | 785 | ${reply}= munch_dict arg=${reply} |
765 | [return] ${reply} | 786 | [return] ${reply} |
@@ -791,7 +812,6 @@ Library openprocurement_client_helper.py | @@ -791,7 +812,6 @@ Library openprocurement_client_helper.py | ||
791 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 812 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
792 | ${doc}= Call Method ${USERS.users['${username}'].client} upload_award_document ${document} ${tender} ${tender.data.awards[${award_num}].id} | 813 | ${doc}= Call Method ${USERS.users['${username}'].client} upload_award_document ${document} ${tender} ${tender.data.awards[${award_num}].id} |
793 | Log ${doc} | 814 | Log ${doc} |
794 | - [Return] ${doc} | ||
795 | 815 | ||
796 | 816 | ||
797 | Підтвердити постачальника | 817 | Підтвердити постачальника |
@@ -836,7 +856,6 @@ Library openprocurement_client_helper.py | @@ -836,7 +856,6 @@ Library openprocurement_client_helper.py | ||
836 | Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} | 856 | Set To Dictionary ${award.data} id=${tender.data.awards[${award_num}].id} |
837 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} | 857 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_award ${tender} ${award} |
838 | Log ${reply} | 858 | Log ${reply} |
839 | - [Return] ${reply} | ||
840 | 859 | ||
841 | ############################################################################## | 860 | ############################################################################## |
842 | # Limited procurement | 861 | # Limited procurement |
@@ -920,7 +939,7 @@ Library openprocurement_client_helper.py | @@ -920,7 +939,7 @@ Library openprocurement_client_helper.py | ||
920 | 939 | ||
921 | 940 | ||
922 | Отримати інформацію із документа до скасування | 941 | Отримати інформацію із документа до скасування |
923 | - [Arguments] ${username} ${tender_uaid} ${doc_id} ${field_name} | 942 | + [Arguments] ${username} ${tender_uaid} ${cancel_id} ${doc_id} ${field_name} |
924 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 943 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
925 | ${document}= get_document_by_id ${tender.data} ${doc_id} | 944 | ${document}= get_document_by_id ${tender.data} ${doc_id} |
926 | Log ${document} | 945 | Log ${document} |
@@ -928,7 +947,7 @@ Library openprocurement_client_helper.py | @@ -928,7 +947,7 @@ Library openprocurement_client_helper.py | ||
928 | 947 | ||
929 | 948 | ||
930 | Отримати документ до скасування | 949 | Отримати документ до скасування |
931 | - [Arguments] ${username} ${tender_uaid} ${doc_id} | 950 | + [Arguments] ${username} ${tender_uaid} ${cancel_id} ${doc_id} |
932 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 951 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
933 | ${document}= get_document_by_id ${tender.data} ${doc_id} | 952 | ${document}= get_document_by_id ${tender.data} ${doc_id} |
934 | ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title} | 953 | ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title} |
@@ -962,7 +981,6 @@ Library openprocurement_client_helper.py | @@ -962,7 +981,6 @@ Library openprocurement_client_helper.py | ||
962 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} eligible=${True} qualified=${True} | 981 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} eligible=${True} qualified=${True} |
963 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} | 982 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} |
964 | Log ${reply} | 983 | Log ${reply} |
965 | - [Return] ${reply} | ||
966 | 984 | ||
967 | 985 | ||
968 | Відхилити кваліфікацію | 986 | Відхилити кваліфікацію |
@@ -976,7 +994,6 @@ Library openprocurement_client_helper.py | @@ -976,7 +994,6 @@ Library openprocurement_client_helper.py | ||
976 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} | 994 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} |
977 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} | 995 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} |
978 | Log ${reply} | 996 | Log ${reply} |
979 | - [Return] ${reply} | ||
980 | 997 | ||
981 | 998 | ||
982 | Завантажити документ у кваліфікацію | 999 | Завантажити документ у кваліфікацію |
@@ -988,7 +1005,6 @@ Library openprocurement_client_helper.py | @@ -988,7 +1005,6 @@ Library openprocurement_client_helper.py | ||
988 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} | 1005 | ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} |
989 | ${doc_reply}= Call Method ${USERS.users['${username}'].client} upload_qualification_document ${document} ${tender} ${tender.data.qualifications[${qualification_num}].id} | 1006 | ${doc_reply}= Call Method ${USERS.users['${username}'].client} upload_qualification_document ${document} ${tender} ${tender.data.qualifications[${qualification_num}].id} |
990 | Log ${doc_reply} | 1007 | Log ${doc_reply} |
991 | - [Return] ${doc_reply} | ||
992 | 1008 | ||
993 | 1009 | ||
994 | Скасувати кваліфікацію | 1010 | Скасувати кваліфікацію |
@@ -1002,7 +1018,6 @@ Library openprocurement_client_helper.py | @@ -1002,7 +1018,6 @@ Library openprocurement_client_helper.py | ||
1002 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} | 1018 | Set To Dictionary ${qualification.data} id=${tender.data.qualifications[${qualification_num}].id} |
1003 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} | 1019 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_qualification ${tender} ${qualification} |
1004 | Log ${reply} | 1020 | Log ${reply} |
1005 | - [Return] ${reply} | ||
1006 | 1021 | ||
1007 | 1022 | ||
1008 | Затвердити остаточне рішення кваліфікації | 1023 | Затвердити остаточне рішення кваліфікації |
@@ -1019,7 +1034,6 @@ Library openprocurement_client_helper.py | @@ -1019,7 +1034,6 @@ Library openprocurement_client_helper.py | ||
1019 | set_to_object ${tender} data.status active.pre-qualification.stand-still | 1034 | set_to_object ${tender} data.status active.pre-qualification.stand-still |
1020 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 1035 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
1021 | Log ${reply} | 1036 | Log ${reply} |
1022 | - [Return] ${reply} | ||
1023 | 1037 | ||
1024 | 1038 | ||
1025 | Перевести тендер на статус очікування обробки мостом | 1039 | Перевести тендер на статус очікування обробки мостом |
@@ -1036,4 +1050,19 @@ Library openprocurement_client_helper.py | @@ -1036,4 +1050,19 @@ Library openprocurement_client_helper.py | ||
1036 | set_to_object ${tender} data.status active.stage2.waiting | 1050 | set_to_object ${tender} data.status active.stage2.waiting |
1037 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | 1051 | ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} |
1038 | Log ${reply} | 1052 | Log ${reply} |
1039 | - [Return] ${reply} | 1053 | + |
1054 | + | ||
1055 | +Активувати другий етап | ||
1056 | + [Documentation] | ||
1057 | + ... [Arguments] Username and tender uaid | ||
1058 | + ... | ||
1059 | + ... [Description] Find tender using uaid and call patch_tender | ||
1060 | + ... | ||
1061 | + ... [Return] Reply of API | ||
1062 | + [Arguments] ${username} ${tender_uaid} | ||
1063 | + ${internal_id}= openprocurement_client.Отримати internal id по UAid ${username} ${tender_uaid} | ||
1064 | + ${tender}= create_data_dict data.id ${internal_id} | ||
1065 | + ${tender}= set_access_key ${tender} ${USERS.users['${username}'].access_token} | ||
1066 | + set_to_object ${tender} data.status active.tendering | ||
1067 | + ${reply}= Call Method ${USERS.users['${username}'].client} patch_tender ${tender} | ||
1068 | + Log ${reply} |
@@ -10,7 +10,7 @@ import urllib | @@ -10,7 +10,7 @@ import urllib | ||
10 | def retry_if_request_failed(exception): | 10 | def retry_if_request_failed(exception): |
11 | if isinstance(exception, RequestFailed): | 11 | if isinstance(exception, RequestFailed): |
12 | status_code = getattr(exception, 'status_int', None) | 12 | status_code = getattr(exception, 'status_int', None) |
13 | - if 500 <= status_code < 600 or status_code == 429: | 13 | + if 500 <= status_code < 600 or status_code in (409, 429): |
14 | return True | 14 | return True |
15 | else: | 15 | else: |
16 | return False | 16 | return False |
@@ -65,6 +65,10 @@ def get_document_by_id(data, doc_id): | @@ -65,6 +65,10 @@ def get_document_by_id(data, doc_id): | ||
65 | for document in cancellation.get('documents', []): | 65 | for document in cancellation.get('documents', []): |
66 | if doc_id in document.get('title', ''): | 66 | if doc_id in document.get('title', ''): |
67 | return document | 67 | return document |
68 | + for bid in data.get('bids', []): | ||
69 | + for document in bid.get('documents', []): | ||
70 | + if doc_id in document.get('title', ''): | ||
71 | + return document | ||
68 | raise Exception('Document with id {} not found'.format(doc_id)) | 72 | raise Exception('Document with id {} not found'.format(doc_id)) |
69 | 73 | ||
70 | 74 |
@@ -20,6 +20,7 @@ Suite Teardown Test Suite Teardown | @@ -20,6 +20,7 @@ Suite Teardown Test Suite Teardown | ||
20 | ############################################################################################## | 20 | ############################################################################################## |
21 | # TENDER CANCELLATION | 21 | # TENDER CANCELLATION |
22 | ############################################################################################## | 22 | ############################################################################################## |
23 | + | ||
23 | Можливість скасувати тендер | 24 | Можливість скасувати тендер |
24 | [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера | 25 | [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера |
25 | ... tender_owner | 26 | ... tender_owner |
@@ -46,7 +47,7 @@ Suite Teardown Test Suite Teardown | @@ -46,7 +47,7 @@ Suite Teardown Test Suite Teardown | ||
46 | ... ${USERS.users['${viewer}'].broker} | 47 | ... ${USERS.users['${viewer}'].broker} |
47 | ... tender_cancelation | 48 | ... tender_cancelation |
48 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | 49 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} |
49 | - ... ${USERS.users['${tender_owner}']['cancellation_data']['cancellation_reason']} | 50 | + ... ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_reason']} |
50 | ... cancellations[0].reason | 51 | ... cancellations[0].reason |
51 | 52 | ||
52 | 53 | ||
@@ -55,7 +56,7 @@ Suite Teardown Test Suite Teardown | @@ -55,7 +56,7 @@ Suite Teardown Test Suite Teardown | ||
55 | ... viewer | 56 | ... viewer |
56 | ... ${USERS.users['${viewer}'].broker} | 57 | ... ${USERS.users['${viewer}'].broker} |
57 | ... tender_cancelation | 58 | ... tender_cancelation |
58 | - Звірити відображення поля description документа до скасування ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_id']} із ${USERS.users['${tender_owner}']['cancellation_data']['description']} для користувача ${viewer} | 59 | + Звірити відображення поля description документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['description']} для користувача ${viewer} |
59 | 60 | ||
60 | 61 | ||
61 | Відображення заголовку документа до скасування тендера | 62 | Відображення заголовку документа до скасування тендера |
@@ -63,7 +64,7 @@ Suite Teardown Test Suite Teardown | @@ -63,7 +64,7 @@ Suite Teardown Test Suite Teardown | ||
63 | ... viewer | 64 | ... viewer |
64 | ... ${USERS.users['${viewer}'].broker} | 65 | ... ${USERS.users['${viewer}'].broker} |
65 | ... tender_cancelation | 66 | ... tender_cancelation |
66 | - Звірити відображення поля title документа до скасування ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_id']} із ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_name']} для користувача ${viewer} | 67 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_name']} для користувача ${viewer} |
67 | 68 | ||
68 | 69 | ||
69 | Відображення вмісту документа до скасування тендера | 70 | Відображення вмісту документа до скасування тендера |
@@ -71,7 +72,7 @@ Suite Teardown Test Suite Teardown | @@ -71,7 +72,7 @@ Suite Teardown Test Suite Teardown | ||
71 | ... viewer | 72 | ... viewer |
72 | ... ${USERS.users['${viewer}'].broker} | 73 | ... ${USERS.users['${viewer}'].broker} |
73 | ... tender_cancelation | 74 | ... tender_cancelation |
74 | - Звірити відображення вмісту документа до скасування ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_id']} з ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_content']} для користувача ${viewer} | 75 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} з ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_content']} для користувача ${viewer} |
75 | 76 | ||
76 | ############################################################################################## | 77 | ############################################################################################## |
77 | # LOT CANCELLATION | 78 | # LOT CANCELLATION |
@@ -103,7 +104,7 @@ Suite Teardown Test Suite Teardown | @@ -103,7 +104,7 @@ Suite Teardown Test Suite Teardown | ||
103 | ... ${USERS.users['${viewer}'].broker} | 104 | ... ${USERS.users['${viewer}'].broker} |
104 | ... lot_cancelation | 105 | ... lot_cancelation |
105 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} | 106 | Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} |
106 | - ... ${USERS.users['${tender_owner}']['cancellation_data']['cancellation_reason']} | 107 | + ... ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_reason']} |
107 | ... cancellations[0].reason | 108 | ... cancellations[0].reason |
108 | 109 | ||
109 | 110 | ||
@@ -112,7 +113,7 @@ Suite Teardown Test Suite Teardown | @@ -112,7 +113,7 @@ Suite Teardown Test Suite Teardown | ||
112 | ... viewer | 113 | ... viewer |
113 | ... ${USERS.users['${viewer}'].broker} | 114 | ... ${USERS.users['${viewer}'].broker} |
114 | ... lot_cancelation | 115 | ... lot_cancelation |
115 | - Звірити відображення поля description документа до скасування ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_id']} із ${USERS.users['${tender_owner}']['cancellation_data']['description']} для користувача ${viewer} | 116 | + Звірити відображення поля description документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['lot_cancellation_data']['description']} для користувача ${viewer} |
116 | 117 | ||
117 | 118 | ||
118 | Відображення заголовку документа до скасування лота | 119 | Відображення заголовку документа до скасування лота |
@@ -120,7 +121,7 @@ Suite Teardown Test Suite Teardown | @@ -120,7 +121,7 @@ Suite Teardown Test Suite Teardown | ||
120 | ... viewer | 121 | ... viewer |
121 | ... ${USERS.users['${viewer}'].broker} | 122 | ... ${USERS.users['${viewer}'].broker} |
122 | ... lot_cancelation | 123 | ... lot_cancelation |
123 | - Звірити відображення поля description документа до скасування ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_id']} із ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_name']} для користувача ${viewer} | 124 | + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_name']} для користувача ${viewer} |
124 | 125 | ||
125 | 126 | ||
126 | Відображення вмісту документа до скасування лота | 127 | Відображення вмісту документа до скасування лота |
@@ -128,7 +129,7 @@ Suite Teardown Test Suite Teardown | @@ -128,7 +129,7 @@ Suite Teardown Test Suite Teardown | ||
128 | ... viewer | 129 | ... viewer |
129 | ... ${USERS.users['${viewer}'].broker} | 130 | ... ${USERS.users['${viewer}'].broker} |
130 | ... lot_cancelation | 131 | ... lot_cancelation |
131 | - Звірити відображення вмісту документа до скасування ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_id']} з ${USERS.users['${tender_owner}']['cancellation_data']['document']['doc_content']} для користувача ${viewer} | 132 | + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['lot_cancellation_data']['cancellation_id']} з ${USERS.users['${tender_owner}']['lot_cancellation_data']['document']['doc_content']} для користувача ${viewer} |
132 | 133 | ||
133 | ############################################################################################## | 134 | ############################################################################################## |
134 | # DELETING LOT | 135 | # DELETING LOT |
@@ -145,17 +146,18 @@ Suite Teardown Test Suite Teardown | @@ -145,17 +146,18 @@ Suite Teardown Test Suite Teardown | ||
145 | 146 | ||
146 | *** Keywords *** | 147 | *** Keywords *** |
147 | Можливість скасувати тендер | 148 | Можливість скасувати тендер |
148 | - ${cancellation_data}= Підготувати дані про скасування ${tender_owner} | 149 | + ${cancellation_data}= Підготувати дані про скасування |
149 | Run As ${tender_owner} | 150 | Run As ${tender_owner} |
150 | ... Скасувати закупівлю | 151 | ... Скасувати закупівлю |
151 | ... ${TENDER['TENDER_UAID']} | 152 | ... ${TENDER['TENDER_UAID']} |
152 | ... ${cancellation_data['cancellation_reason']} | 153 | ... ${cancellation_data['cancellation_reason']} |
153 | ... ${cancellation_data['document']['doc_path']} | 154 | ... ${cancellation_data['document']['doc_path']} |
154 | ... ${cancellation_data['description']} | 155 | ... ${cancellation_data['description']} |
156 | + Set To Dictionary ${USERS.users['${tender_owner}']} tender_cancellation_data=${cancellation_data} | ||
155 | 157 | ||
156 | 158 | ||
157 | Можливість скасувати лот | 159 | Можливість скасувати лот |
158 | - ${cancellation_data}= Підготувати дані про скасування ${tender_owner} | 160 | + ${cancellation_data}= Підготувати дані про скасування |
159 | Run As ${tender_owner} | 161 | Run As ${tender_owner} |
160 | ... Скасувати лот | 162 | ... Скасувати лот |
161 | ... ${TENDER['TENDER_UAID']} | 163 | ... ${TENDER['TENDER_UAID']} |
@@ -163,14 +165,15 @@ Suite Teardown Test Suite Teardown | @@ -163,14 +165,15 @@ Suite Teardown Test Suite Teardown | ||
163 | ... ${cancellation_data['cancellation_reason']} | 165 | ... ${cancellation_data['cancellation_reason']} |
164 | ... ${cancellation_data['document']['doc_path']} | 166 | ... ${cancellation_data['document']['doc_path']} |
165 | ... ${cancellation_data['description']} | 167 | ... ${cancellation_data['description']} |
168 | + Set To Dictionary ${USERS.users['${tender_owner}']} lot_cancellation_data=${cancellation_data} | ||
166 | 169 | ||
167 | 170 | ||
168 | -Звірити відображення поля ${field} документа до скасування ${doc_id} із ${left} для користувача ${username} | ||
169 | - ${right}= Run As ${username} Отримати інформацію із документа ${TENDER['TENDER_UAID']} ${doc_id} ${field} | 171 | +Звірити відображення поля ${field} документа ${doc_id} до скасування ${cancel_id} із ${left} для користувача ${username} |
172 | + ${right}= Run As ${username} Отримати інформацію із документа до скасування ${TENDER['TENDER_UAID']} ${cancel_id} ${doc_id} ${field} | ||
170 | Порівняти об'єкти ${left} ${right} | 173 | Порівняти об'єкти ${left} ${right} |
171 | 174 | ||
172 | 175 | ||
173 | -Звірити відображення вмісту документа до скасування ${doc_id} з ${left} для користувача ${username} | ||
174 | - ${file_name}= Run as ${username} Отримати документ до скасування ${TENDER['TENDER_UAID']} ${doc_id} | 176 | +Звірити відображення вмісту документа ${doc_id} до скасування ${cancel_id} з ${left} для користувача ${username} |
177 | + ${file_name}= Run as ${username} Отримати документ до скасування ${TENDER['TENDER_UAID']} ${cancel_id} ${doc_id} | ||
175 | ${right}= Get File ${OUTPUT_DIR}${/}${file_name} | 178 | ${right}= Get File ${OUTPUT_DIR}${/}${file_name} |
176 | Порівняти об'єкти ${left} ${right} | 179 | Порівняти об'єкти ${left} ${right} |
@@ -145,6 +145,7 @@ PublicPortal: | @@ -145,6 +145,7 @@ PublicPortal: | ||
145 | keywords_file: publicportal | 145 | keywords_file: publicportal |
146 | roles: | 146 | roles: |
147 | viewer: PublicPortal_Viewer | 147 | viewer: PublicPortal_Viewer |
148 | + timeout_on_wait: 300 | ||
148 | SmartTender: | 149 | SmartTender: |
149 | intervals: | 150 | intervals: |
150 | default: | 151 | default: |
@@ -202,10 +202,10 @@ users: | @@ -202,10 +202,10 @@ users: | ||
202 | size: [1000, 720] | 202 | size: [1000, 720] |
203 | PublicPortal_Viewer: | 203 | PublicPortal_Viewer: |
204 | broker: PublicPortal | 204 | broker: PublicPortal |
205 | - homepage: "http://dev.prozorro.org/" | ||
206 | - browser: chrome | ||
207 | - position: [0, 0] | ||
208 | - size: [640, 480] | 205 | + homepage: "https://qa23.prozorro.gov.ua/tender/search/" |
206 | + browser: Chrome | ||
207 | + position: [450, 0] | ||
208 | + size: [1200, 720] | ||
209 | SmartTender_Viewer: | 209 | SmartTender_Viewer: |
210 | broker: SmartTender | 210 | broker: SmartTender |
211 | homepage: "http://test.smarttender.biz/test-tenders?allcat=1" | 211 | homepage: "http://test.smarttender.biz/test-tenders?allcat=1" |
1 | # -*- coding: utf-8 - | 1 | # -*- coding: utf-8 - |
2 | from datetime import timedelta | 2 | from datetime import timedelta |
3 | from faker import Factory | 3 | from faker import Factory |
4 | +from faker.providers.company.en_US import Provider as CompanyProviderEnUs | ||
5 | +from faker.providers.company.ru_RU import Provider as CompanyProviderRuRu | ||
4 | from munch import munchify | 6 | from munch import munchify |
5 | from uuid import uuid4 | 7 | from uuid import uuid4 |
6 | from tempfile import NamedTemporaryFile | 8 | from tempfile import NamedTemporaryFile |
@@ -10,10 +12,16 @@ import os | @@ -10,10 +12,16 @@ import os | ||
10 | import random | 12 | import random |
11 | 13 | ||
12 | 14 | ||
13 | -fake = Factory.create('uk_UA') | ||
14 | -fake_ru = Factory.create('ru') | ||
15 | -fake_en = Factory.create() | ||
16 | -fake.add_provider(OP_Provider) | 15 | +fake_en = Factory.create(locale='en_US') |
16 | +fake_ru = Factory.create(locale='ru_RU') | ||
17 | +fake_uk = Factory.create(locale='uk_UA') | ||
18 | +fake_uk.add_provider(OP_Provider) | ||
19 | +fake = fake_uk | ||
20 | + | ||
21 | +# This workaround fixes an error caused by missing "catch_phrase" class method | ||
22 | +# for the "ru_RU" locale in Faker >= 0.7.4 | ||
23 | +fake_ru.add_provider(CompanyProviderEnUs) | ||
24 | +fake_ru.add_provider(CompanyProviderRuRu) | ||
17 | 25 | ||
18 | 26 | ||
19 | def create_fake_sentence(): | 27 | def create_fake_sentence(): |
@@ -45,7 +53,7 @@ def create_fake_doc(): | @@ -45,7 +53,7 @@ def create_fake_doc(): | ||
45 | tf = NamedTemporaryFile(delete=False, suffix=suffix, prefix=prefix) | 53 | tf = NamedTemporaryFile(delete=False, suffix=suffix, prefix=prefix) |
46 | tf.write(content) | 54 | tf.write(content) |
47 | tf.close() | 55 | tf.close() |
48 | - return tf.name, os.path.basename(tf.name), content | 56 | + return tf.name.replace('\\', '\\\\'), os.path.basename(tf.name), content |
49 | 57 | ||
50 | 58 | ||
51 | def test_tender_data(params, periods=("enquiry", "tender")): | 59 | def test_tender_data(params, periods=("enquiry", "tender")): |
@@ -127,6 +135,7 @@ def test_tender_data(params, periods=("enquiry", "tender")): | @@ -127,6 +135,7 @@ def test_tender_data(params, periods=("enquiry", "tender")): | ||
127 | data['features'].append(new_feature) | 135 | data['features'].append(new_feature) |
128 | if not data['features']: | 136 | if not data['features']: |
129 | del data['features'] | 137 | del data['features'] |
138 | + data['status'] = 'draft' | ||
130 | return munchify(data) | 139 | return munchify(data) |
131 | 140 | ||
132 | 141 | ||
@@ -136,6 +145,8 @@ def test_tender_data_limited(params): | @@ -136,6 +145,8 @@ def test_tender_data_limited(params): | ||
136 | del data["minimalStep"] | 145 | del data["minimalStep"] |
137 | del data["enquiryPeriod"] | 146 | del data["enquiryPeriod"] |
138 | del data["tenderPeriod"] | 147 | del data["tenderPeriod"] |
148 | + for lot in data.get('lots', []): | ||
149 | + lot.pop('minimalStep', None) | ||
139 | data["procuringEntity"]["kind"] = "general" | 150 | data["procuringEntity"]["kind"] = "general" |
140 | data.update({"procurementMethodType": params['mode'], "procurementMethod": "limited"}) | 151 | data.update({"procurementMethodType": params['mode'], "procurementMethod": "limited"}) |
141 | if params['mode'] == "negotiation": | 152 | if params['mode'] == "negotiation": |
@@ -267,6 +278,7 @@ def test_bid_data(): | @@ -267,6 +278,7 @@ def test_bid_data(): | ||
267 | }) | 278 | }) |
268 | bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName) | 279 | bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName) |
269 | bid.data.tenderers[0].address.countryName_ru = translate_country_ru(bid.data.tenderers[0].address.countryName) | 280 | bid.data.tenderers[0].address.countryName_ru = translate_country_ru(bid.data.tenderers[0].address.countryName) |
281 | + bid.data['status'] = 'draft' | ||
270 | return bid | 282 | return bid |
271 | 283 | ||
272 | 284 | ||
@@ -302,7 +314,10 @@ def test_item_data(cpv=None): | @@ -302,7 +314,10 @@ def test_item_data(cpv=None): | ||
302 | data["description_en"] = field_with_id("i", data["description_en"]) | 314 | data["description_en"] = field_with_id("i", data["description_en"]) |
303 | data["description_ru"] = field_with_id("i", data["description_ru"]) | 315 | data["description_ru"] = field_with_id("i", data["description_ru"]) |
304 | days = fake.random_int(min=1, max=30) | 316 | days = fake.random_int(min=1, max=30) |
305 | - data["deliveryDate"] = {"endDate": (get_now() + timedelta(days=days)).isoformat()} | 317 | + data["deliveryDate"] = { |
318 | + "startDate":(get_now() + timedelta(days=days)).isoformat(), | ||
319 | + "endDate":(get_now() + timedelta(days=days)).isoformat() | ||
320 | + } | ||
306 | data["deliveryAddress"]["countryName_en"] = translate_country_en(data["deliveryAddress"]["countryName"]) | 321 | data["deliveryAddress"]["countryName_en"] = translate_country_en(data["deliveryAddress"]["countryName"]) |
307 | data["deliveryAddress"]["countryName_ru"] = translate_country_ru(data["deliveryAddress"]["countryName"]) | 322 | data["deliveryAddress"]["countryName_ru"] = translate_country_ru(data["deliveryAddress"]["countryName"]) |
308 | return munchify(data) | 323 | return munchify(data) |
@@ -35,7 +35,7 @@ Set Suite Variable With Default Value | @@ -35,7 +35,7 @@ Set Suite Variable With Default Value | ||
35 | 35 | ||
36 | 36 | ||
37 | Порівняти системний і серверний час | 37 | Порівняти системний і серверний час |
38 | - ${server_time}= request ${api_host_url} HEAD | 38 | + ${server_time}= request ${API_HOST_URL} HEAD |
39 | ${local_time}= Get current TZdate | 39 | ${local_time}= Get current TZdate |
40 | Log ${server_time.headers['date']} | 40 | Log ${server_time.headers['date']} |
41 | Log ${local_time} | 41 | Log ${local_time} |
@@ -60,8 +60,8 @@ Set Suite Variable With Default Value | @@ -60,8 +60,8 @@ Set Suite Variable With Default Value | ||
60 | 60 | ||
61 | 61 | ||
62 | Завантажуємо дані про користувачів і майданчики | 62 | Завантажуємо дані про користувачів і майданчики |
63 | - Log ${broker} | ||
64 | - Log ${role} | 63 | + Log ${BROKER} |
64 | + Log ${ROLE} | ||
65 | # Suite variable; should be present in every test suite | 65 | # Suite variable; should be present in every test suite |
66 | # in `*** Variables ***` section | 66 | # in `*** Variables ***` section |
67 | Log Many @{USED_ROLES} | 67 | Log Many @{USED_ROLES} |
@@ -83,13 +83,13 @@ Set Suite Variable With Default Value | @@ -83,13 +83,13 @@ Set Suite Variable With Default Value | ||
83 | ${used_users}= Create List | 83 | ${used_users}= Create List |
84 | 84 | ||
85 | # Handle `-v role:something` | 85 | # Handle `-v role:something` |
86 | - Run Keyword Unless '${role}' in @{USED_ROLES} | 86 | + Run Keyword Unless '${ROLE}' in @{USED_ROLES} |
87 | ... Log | 87 | ... Log |
88 | - ... Role ${role} is not used in this test suite. | 88 | + ... Role ${ROLE} is not used in this test suite. |
89 | ... WARN | 89 | ... WARN |
90 | Set Suite Variable With Default Value | 90 | Set Suite Variable With Default Value |
91 | - ... ${role} | ||
92 | - ... ${BROKERS['${broker}'].roles.${role}} | 91 | + ... ${ROLE} |
92 | + ... ${BROKERS['${BROKER}'].roles.${ROLE}} | ||
93 | 93 | ||
94 | # Set default value for each role if it is not set yet; | 94 | # Set default value for each role if it is not set yet; |
95 | # fill `used_users`; | 95 | # fill `used_users`; |
@@ -161,7 +161,7 @@ Get Broker Property By Username | @@ -161,7 +161,7 @@ Get Broker Property By Username | ||
161 | 161 | ||
162 | Створити артефакт | 162 | Створити артефакт |
163 | ${artifact}= Create Dictionary | 163 | ${artifact}= Create Dictionary |
164 | - ... api_version=${api_version} | 164 | + ... api_version=${API_VERSION} |
165 | ... tender_uaid=${TENDER['TENDER_UAID']} | 165 | ... tender_uaid=${TENDER['TENDER_UAID']} |
166 | ... last_modification_date=${TENDER['LAST_MODIFICATION_DATE']} | 166 | ... last_modification_date=${TENDER['LAST_MODIFICATION_DATE']} |
167 | ... mode=${MODE} | 167 | ... mode=${MODE} |
@@ -183,7 +183,10 @@ Get Broker Property By Username | @@ -183,7 +183,10 @@ Get Broker Property By Username | ||
183 | ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact.yaml | 183 | ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact.yaml |
184 | ${ARTIFACT}= load_data_from ${file_path} | 184 | ${ARTIFACT}= load_data_from ${file_path} |
185 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token} | 185 | Run Keyword And Ignore Error Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token} |
186 | - ${TENDER}= Create Dictionary TENDER_UAID=${ARTIFACT.tender_uaid} LAST_MODIFICATION_DATE=${ARTIFACT.last_modification_date} LOT_ID=${Empty} | 186 | + ${TENDER}= Create Dictionary |
187 | + ... TENDER_UAID=${ARTIFACT.tender_uaid} | ||
188 | + ... LAST_MODIFICATION_DATE=${ARTIFACT.last_modification_date} | ||
189 | + ... LOT_ID=${Empty} | ||
187 | ${lot_index}= Get Variable Value ${lot_index} 0 | 190 | ${lot_index}= Get Variable Value ${lot_index} 0 |
188 | Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]} | 191 | Run Keyword And Ignore Error Set To Dictionary ${TENDER} LOT_ID=${ARTIFACT.lots[${lot_index}]} |
189 | ${MODE}= Get Variable Value ${MODE} ${ARTIFACT.mode} | 192 | ${MODE}= Get Variable Value ${MODE} ${ARTIFACT.mode} |
@@ -249,33 +252,45 @@ Get Broker Property By Username | @@ -249,33 +252,45 @@ Get Broker Property By Username | ||
249 | 252 | ||
250 | 253 | ||
251 | Підготувати дані для подання пропозиції | 254 | Підготувати дані для подання пропозиції |
252 | - [Arguments] ${username} | ||
253 | - ${bid}= generate_test_bid_data ${USERS.users['${username}'].tender_data.data} | 255 | + [Arguments] |
256 | + ${bid}= generate_test_bid_data ${USERS.users['${tender_owner}'].initial_data.data} | ||
257 | + [Return] ${bid} | ||
258 | + | ||
259 | + | ||
260 | +Підготувати дані для подання пропозиції для другого етапу | ||
261 | + [Arguments] ${index}=0 | ||
262 | + ${bid}= generate_test_bid_data_second_stage ${USERS.users['${tender_owner}'].initialdata.data} ${index} | ||
254 | [Return] ${bid} | 263 | [Return] ${bid} |
255 | 264 | ||
256 | 265 | ||
257 | Підготувати дані про постачальника | 266 | Підготувати дані про постачальника |
258 | - [Arguments] ${username} | 267 | + [Arguments] ${username} ${lotIndex}=${-1} |
268 | + ${lotIndex}= Convert To Integer ${lotIndex} | ||
259 | ${supplier_data}= test_supplier_data | 269 | ${supplier_data}= test_supplier_data |
260 | - Set To Dictionary ${USERS.users['${username}']} supplier_data=${supplier_data} | 270 | + Run Keyword If ${lotIndex} > -1 Set To Dictionary ${supplier_data.data} lotID=${USERS.users['${tender_owner}'].initial_data.data['lots'][${lotIndex}]['id']} |
271 | + Set To Dictionary ${USERS.users['${tender_owner}']} supplier_data=${supplier_data} | ||
261 | Log ${supplier_data} | 272 | Log ${supplier_data} |
262 | [Return] ${supplier_data} | 273 | [Return] ${supplier_data} |
263 | 274 | ||
264 | 275 | ||
265 | Підготувати дані про скасування | 276 | Підготувати дані про скасування |
266 | - [Arguments] ${username} | ||
267 | ${cancellation_reason}= create_fake_sentence | 277 | ${cancellation_reason}= create_fake_sentence |
278 | + ${cancellation_reason}= field_with_id c ${cancellation_reason} | ||
279 | + ${cancellation_id}= get_id_from_string ${cancellation_reason} | ||
268 | ${file_path} ${file_name} ${file_content}= create_fake_doc | 280 | ${file_path} ${file_name} ${file_content}= create_fake_doc |
269 | - ${doc_id}= get_id_from_doc_name ${file_name} | 281 | + ${doc_id}= get_id_from_string ${file_name} |
270 | ${document}= Create Dictionary | 282 | ${document}= Create Dictionary |
271 | ... doc_path=${file_path} | 283 | ... doc_path=${file_path} |
272 | ... doc_name=${file_name} | 284 | ... doc_name=${file_name} |
273 | ... doc_content=${file_content} | 285 | ... doc_content=${file_content} |
274 | ... doc_id=${doc_id} | 286 | ... doc_id=${doc_id} |
275 | ${new_description}= create_fake_sentence | 287 | ${new_description}= create_fake_sentence |
276 | - ${cancellation_data}= Create Dictionary cancellation_reason=${cancellation_reason} document=${document} description=${new_description} | 288 | + ${cancellation_data}= Create Dictionary |
289 | + ... cancellation_reason=${cancellation_reason} | ||
290 | + ... cancellation_id=${cancellation_id} | ||
291 | + ... document=${document} | ||
292 | + ... description=${new_description} | ||
277 | ${cancellation_data}= munchify ${cancellation_data} | 293 | ${cancellation_data}= munchify ${cancellation_data} |
278 | - Set To Dictionary ${USERS.users['${username}']} cancellation_data=${cancellation_data} | ||
279 | [Return] ${cancellation_data} | 294 | [Return] ${cancellation_data} |
280 | 295 | ||
281 | 296 |
@@ -46,7 +46,7 @@ ${ITEM_MEAT} ${False} | @@ -46,7 +46,7 @@ ${ITEM_MEAT} ${False} | ||
46 | ... add_award | 46 | ... add_award |
47 | ... level1 | 47 | ... level1 |
48 | [Teardown] Оновити LAST_MODIFICATION_DATE | 48 | [Teardown] Оновити LAST_MODIFICATION_DATE |
49 | - Можливість зареєструвати, додати документацію і підтвердити постачальника до закупівлі | 49 | + Можливість зареєструвати, додати документацію і підтвердити першого постачальника до закупівлі |
50 | 50 | ||
51 | 51 | ||
52 | Можливість знайти переговорну процедуру за нагальною потребою по ідентифікатору | 52 | Можливість знайти переговорну процедуру за нагальною потребою по ідентифікатору |
@@ -46,7 +46,7 @@ ${ITEM_MEAT} ${False} | @@ -46,7 +46,7 @@ ${ITEM_MEAT} ${False} | ||
46 | ... add_award | 46 | ... add_award |
47 | ... level1 | 47 | ... level1 |
48 | [Teardown] Оновити LAST_MODIFICATION_DATE | 48 | [Teardown] Оновити LAST_MODIFICATION_DATE |
49 | - Можливість зареєструвати, додати документацію і підтвердити постачальника до закупівлі | 49 | + Можливість зареєструвати, додати документацію і підтвердити першого постачальника до закупівлі |
50 | 50 | ||
51 | 51 | ||
52 | Можливість знайти переговорну процедуру по ідентифікатору | 52 | Можливість знайти переговорну процедуру по ідентифікатору |
@@ -169,8 +169,15 @@ ${ITEM_MEAT} ${True} | @@ -169,8 +169,15 @@ ${ITEM_MEAT} ${True} | ||
169 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} | 169 | [Setup] Дочекатись синхронізації з майданчиком ${viewer} |
170 | Звірити відображення поля description усіх предметів для усіх користувачів | 170 | Звірити відображення поля description усіх предметів для усіх користувачів |
171 | 171 | ||
172 | +Відображення дати початку доставки номенклатур тендера | ||
173 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера | ||
174 | + ... viewer | ||
175 | + ... ${USERS.users['${viewer}'].broker} | ||
176 | + ... tender_view level2 | ||
177 | + Звірити відображення дати deliveryDate.startDate усіх предметів для користувача ${viewer} | ||
172 | 178 | ||
173 | -Відображення дати доставки номенклатур тендера | 179 | + |
180 | +Відображення дати кінця доставки номенклатур тендера | ||
174 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера | 181 | [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера |
175 | ... viewer | 182 | ... viewer |
176 | ... ${USERS.users['${viewer}'].broker} | 183 | ... ${USERS.users['${viewer}'].broker} |
@@ -1638,7 +1645,7 @@ ${ITEM_MEAT} ${True} | @@ -1638,7 +1645,7 @@ ${ITEM_MEAT} ${True} | ||
1638 | Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} active.stage2.pending | 1645 | Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} active.stage2.pending |
1639 | 1646 | ||
1640 | 1647 | ||
1641 | -Можливість перевести статус очікування обробки мостом | 1648 | +Можливість перевести тендер в статус очікування обробки мостом |
1642 | [Tags] ${USERS.users['${tender_owner}'].broker}: Процес переведення статусу у active.stage2.waiting. | 1649 | [Tags] ${USERS.users['${tender_owner}'].broker}: Процес переведення статусу у active.stage2.waiting. |
1643 | ... tender_owner | 1650 | ... tender_owner |
1644 | ... ${USERS.users['${tender_owner}'].broker} | 1651 | ... ${USERS.users['${tender_owner}'].broker} |
@@ -1657,3 +1664,189 @@ ${ITEM_MEAT} ${True} | @@ -1657,3 +1664,189 @@ ${ITEM_MEAT} ${True} | ||
1657 | Дочекатися створення нового етапу мостом ${tender_owner} ${TENDER['TENDER_UAID']} | 1664 | Дочекатися створення нового етапу мостом ${tender_owner} ${TENDER['TENDER_UAID']} |
1658 | Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} complete | 1665 | Звірити статус тендера ${tender_owner} ${TENDER['TENDER_UAID']} complete |
1659 | 1666 | ||
1667 | + | ||
1668 | +Можливість отримати тендер другого етапу | ||
1669 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Отримати id нового тендеру | ||
1670 | + ... tender_owner | ||
1671 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1672 | + ... get_second_stage | ||
1673 | + Отримати дані із поля stage2TenderID тендера для усіх користувачів | ||
1674 | + ${tender_UAID_second_stage}= Catenate SEPARATOR= ${TENDER['TENDER_UAID']} .2 | ||
1675 | + Можливість знайти тендер по ідентифікатору ${tender_UAID_second_stage} та зберегти його в second_stage_data для користувача ${tender_owner} | ||
1676 | + | ||
1677 | + | ||
1678 | +Відображення заголовку тендера другого етапу | ||
1679 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу | ||
1680 | + ... viewer | ||
1681 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1682 | + ... compare_stages | ||
1683 | + Звірити відображення поля title тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.title} для користувача ${viewer} | ||
1684 | + | ||
1685 | + | ||
1686 | +Відображення мінімального кроку закупівлі другого етапу | ||
1687 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу | ||
1688 | + ... viewer | ||
1689 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1690 | + ... compare_stages | ||
1691 | + Звірити відображення поля minimalStep тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.minimalStep} для користувача ${viewer} | ||
1692 | + | ||
1693 | + | ||
1694 | +Відображення доступного бюджету закупівлі другого етапу | ||
1695 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу | ||
1696 | + ... viewer | ||
1697 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1698 | + ... compare_stages | ||
1699 | + Звірити відображення поля value тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.value} для користувача ${viewer} | ||
1700 | + | ||
1701 | + | ||
1702 | +Відображення опису закупівлі другого етапу | ||
1703 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу | ||
1704 | + ... viewer | ||
1705 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1706 | + ... compare_stages | ||
1707 | + Звірити відображення поля description тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.description} для користувача ${viewer} | ||
1708 | + | ||
1709 | + | ||
1710 | +Відображення імені замовника тендера для другого етапу | ||
1711 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Відображення основних даних тендера другого етапу | ||
1712 | + ... viewer | ||
1713 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1714 | + ... compare_stages | ||
1715 | + Звірити відображення поля procuringEntity.name тендера із ${USERS.users['${tender_owner}'].second_stage_data.data.procuringEntity.name} для користувача ${viewer} | ||
1716 | + | ||
1717 | +############################################################################################## | ||
1718 | +# Відображення основних даних лоту для другого етапу | ||
1719 | +############################################################################################## | ||
1720 | + | ||
1721 | +Відображення лоту тендера другого етапу | ||
1722 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1723 | + ... viewer tender_owner provider provider1 | ||
1724 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
1725 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | ||
1726 | + ... compare_stages | ||
1727 | + Звірити відображення поля title усіх лотів другого етапу для усіх користувачів | ||
1728 | + | ||
1729 | + | ||
1730 | +Відображення опису лотів для тендера другого етапу | ||
1731 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1732 | + ... viewer | ||
1733 | + ... ${USERS.users['${viewer}'].broker} | ||
1734 | + ... compare_stages | ||
1735 | + Звірити відображення поля description усіх лотів другого етапу для користувача ${viewer} | ||
1736 | + | ||
1737 | + | ||
1738 | +Відображення бюджету лотів для тендера другого етапу | ||
1739 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1740 | + ... viewer tender_owner provider provider1 | ||
1741 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
1742 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | ||
1743 | + ... compare_stages | ||
1744 | + Звірити відображення поля value.amount усіх лотів другого етапу для усіх користувачів | ||
1745 | + | ||
1746 | + | ||
1747 | +Відображення валюти лотів для тендера другого етапу | ||
1748 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1749 | + ... viewer | ||
1750 | + ... ${USERS.users['${viewer}'].broker} | ||
1751 | + ... compare_stages | ||
1752 | + Звірити відображення поля value.currency усіх лотів другого етапу для користувача ${viewer} | ||
1753 | + | ||
1754 | + | ||
1755 | +Відображення ПДВ в бюджеті лотів для тендера другого етапу | ||
1756 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1757 | + ... viewer | ||
1758 | + ... ${USERS.users['${viewer}'].broker} | ||
1759 | + ... compare_stages | ||
1760 | + Звірити відображення поля value.valueAddedTaxIncluded усіх лотів другого етапу для користувача ${viewer} | ||
1761 | + | ||
1762 | + | ||
1763 | +Відображення мінімального кроку лотів для тендера другого етапу | ||
1764 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1765 | + ... viewer tender_owner provider provider1 | ||
1766 | + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker} | ||
1767 | + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker} | ||
1768 | + ... compare_stages | ||
1769 | + Звірити відображення поля minimalStep.amount усіх лотів другого етапу для усіх користувачів | ||
1770 | + | ||
1771 | + | ||
1772 | +Відображення валюти мінімального кроку лотів для тендера другого етапу | ||
1773 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1774 | + ... viewer | ||
1775 | + ... ${USERS.users['${viewer}'].broker} | ||
1776 | + ... compare_stages | ||
1777 | + Звірити відображення поля minimalStep.currency усіх лотів другого етапу для користувача ${viewer} | ||
1778 | + | ||
1779 | + | ||
1780 | +Відображення ПДВ в мінімальному кроці лотів для тендера другого етапу | ||
1781 | + [Tags] ${USERS.users['${viewer}'].broker}: Відображення лоту тендера другого етапу | ||
1782 | + ... viewer | ||
1783 | + ... ${USERS.users['${viewer}'].broker} | ||
1784 | + ... compare_stages | ||
1785 | + Звірити відображення поля minimalStep.valueAddedTaxIncluded усіх лотів другого етапу для користувача ${viewer} | ||
1786 | + | ||
1787 | +############################################################################################## | ||
1788 | +# END | ||
1789 | +############################################################################################## | ||
1790 | + | ||
1791 | +Можливість отримати доступ до тендера другого етапу | ||
1792 | + [Tags] ${USERS.user['${tender_owner}'].broker}: Отримати токен для другог етапу | ||
1793 | + ... tender_owner | ||
1794 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1795 | + ... save_tender_second_stage | ||
1796 | + Отримати доступ до тендера другого етапу та зберегти його | ||
1797 | + | ||
1798 | + | ||
1799 | +Можливість активувати тендер другого етапу | ||
1800 | + [Tags] ${USERS.users['${viewer}'].broker}: Активувати тендер другого етапу | ||
1801 | + ... tender_owner | ||
1802 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1803 | + ... activate_second_stage | ||
1804 | + Активувати тендер другого етапу | ||
1805 | + | ||
1806 | + | ||
1807 | +Можливість подати пропозицію першим учасником на другому етапі | ||
1808 | + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції | ||
1809 | + ... provider | ||
1810 | + ... ${USERS.users['${provider}'].broker} | ||
1811 | + ... make_bid_by_provider_second_stage | ||
1812 | + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']} | ||
1813 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
1814 | + Можливість подати цінову пропозицію на другий етап 1 користувачем ${provider} | ||
1815 | + | ||
1816 | + | ||
1817 | +Можливість подати пропозицію другим учасником на другому етапі | ||
1818 | + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції на другий етап | ||
1819 | + ... provider1 | ||
1820 | + ... ${USERS.users['${provider1}'].broker} | ||
1821 | + ... make_bid_by_provider1_second_stage | ||
1822 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
1823 | + Можливість подати цінову пропозицію на другий етап 2 користувачем ${provider1} | ||
1824 | + | ||
1825 | + | ||
1826 | +Можливість підтвердити першу пропозицію кваліфікації на другому етапі | ||
1827 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація на другому етапі | ||
1828 | + ... tender_owner | ||
1829 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1830 | + ... pre-qualification_approve_first_bid_second_stage | ||
1831 | + [Setup] Дочекатись дати початку періоду прекваліфікації ${tender_owner} ${TENDER['TENDER_UAID']} | ||
1832 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
1833 | + Можливість підтвердити 0 пропозицію кваліфікації | ||
1834 | + | ||
1835 | + | ||
1836 | +Можливість підтвердити другу пропозицію кваліфікації на другогму етапі | ||
1837 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація на другому етапі | ||
1838 | + ... tender_owner | ||
1839 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1840 | + ... pre-qualification_approve_second_bid_second_stage | ||
1841 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
1842 | + Можливість підтвердити -1 пропозицію кваліфікації | ||
1843 | + | ||
1844 | + | ||
1845 | +Можливість затвердити остаточне рішення кваліфікації на другому етапі | ||
1846 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Кваліфікація на другому етапі | ||
1847 | + ... tender_owner | ||
1848 | + ... ${USERS.users['${tender_owner}'].broker} | ||
1849 | + ... pre-qualification_approve_qualifications_second_stage | ||
1850 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | ||
1851 | + [Teardown] Оновити LAST_MODIFICATION_DATE | ||
1852 | + Можливість затвердити остаточне рішення кваліфікації |
@@ -46,7 +46,7 @@ ${ITEM_MEAT} ${False} | @@ -46,7 +46,7 @@ ${ITEM_MEAT} ${False} | ||
46 | ... add_award | 46 | ... add_award |
47 | ... level1 | 47 | ... level1 |
48 | [Teardown] Оновити LAST_MODIFICATION_DATE | 48 | [Teardown] Оновити LAST_MODIFICATION_DATE |
49 | - Можливість зареєструвати, додати документацію і підтвердити постачальника до закупівлі | 49 | + Можливість зареєструвати, додати документацію і підтвердити першого постачальника до закупівлі |
50 | 50 | ||
51 | 51 | ||
52 | Можливість укласти угоду для звіту про укладений договір | 52 | Можливість укласти угоду для звіту про укладений договір |
@@ -21,6 +21,7 @@ from .initial_data import ( | @@ -21,6 +21,7 @@ from .initial_data import ( | ||
21 | create_fake_doc, | 21 | create_fake_doc, |
22 | create_fake_sentence, | 22 | create_fake_sentence, |
23 | fake, | 23 | fake, |
24 | + field_with_id, | ||
24 | test_bid_data, | 25 | test_bid_data, |
25 | test_bid_value, | 26 | test_bid_value, |
26 | test_claim_answer_data, | 27 | test_claim_answer_data, |
@@ -328,7 +329,7 @@ def get_from_object(obj, attribute): | @@ -328,7 +329,7 @@ def get_from_object(obj, attribute): | ||
328 | def set_to_object(obj, attribute, value): | 329 | def set_to_object(obj, attribute, value): |
329 | # Search the list index in path to value | 330 | # Search the list index in path to value |
330 | list_index = re.search('\d+', attribute) | 331 | list_index = re.search('\d+', attribute) |
331 | - if list_index: | 332 | + if list_index and attribute != 'stage2TenderID': |
332 | list_index = list_index.group(0) | 333 | list_index = list_index.group(0) |
333 | parent, child = attribute.split('[' + list_index + '].')[:2] | 334 | parent, child = attribute.split('[' + list_index + '].')[:2] |
334 | # Split attribute to path to lits (parent) and path to value in list element (child) | 335 | # Split attribute to path to lits (parent) and path to value in list element (child) |
@@ -409,8 +410,8 @@ def get_id_from_object(obj): | @@ -409,8 +410,8 @@ def get_id_from_object(obj): | ||
409 | return obj_id.group(1) | 410 | return obj_id.group(1) |
410 | 411 | ||
411 | 412 | ||
412 | -def get_id_from_doc_name(name): | ||
413 | - return re.match(r'd\-[0-9a-fA-F]{8}', name).group(0) | 413 | +def get_id_from_string(string): |
414 | + return re.match(r'[dc]\-[0-9a-fA-F]{8}', string).group(0) | ||
414 | 415 | ||
415 | 416 | ||
416 | def get_object_type_by_id(object_id): | 417 | def get_object_type_by_id(object_id): |
@@ -443,7 +444,7 @@ def get_complaint_index_by_complaintID(data, complaintID): | @@ -443,7 +444,7 @@ def get_complaint_index_by_complaintID(data, complaintID): | ||
443 | 444 | ||
444 | def generate_test_bid_data(tender_data): | 445 | def generate_test_bid_data(tender_data): |
445 | bid = test_bid_data() | 446 | bid = test_bid_data() |
446 | - if 'aboveThreshold' in tender_data.get('procurementMethodType', '') or 'competitiveDialogue' in tender_data.get('procurementMethodType', ''): | 447 | + if tender_data.get('procurementMethodType', '')[:-2] in ('aboveThreshold', 'competitiveDialogue'): |
447 | bid.data.selfEligible = True | 448 | bid.data.selfEligible = True |
448 | bid.data.selfQualified = True | 449 | bid.data.selfQualified = True |
449 | if 'lots' in tender_data: | 450 | if 'lots' in tender_data: |
@@ -466,27 +467,30 @@ def mult_and_round(*args, **kwargs): | @@ -466,27 +467,30 @@ def mult_and_round(*args, **kwargs): | ||
466 | return round(reduce(operator.mul, args), kwargs.get('precision', 2)) | 467 | return round(reduce(operator.mul, args), kwargs.get('precision', 2)) |
467 | 468 | ||
468 | 469 | ||
469 | -# GUI Frontends common | ||
470 | -def add_data_for_gui_frontends(tender_data): | ||
471 | - now = get_now() | ||
472 | - # tender_data.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | ||
473 | - tender_data.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat() | ||
474 | - tender_data.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat() | ||
475 | - tender_data.data.tenderPeriod['endDate'] = (now + timedelta(minutes=11)).isoformat() | ||
476 | - return tender_data | ||
477 | - | ||
478 | - | ||
479 | -def convert_date_to_slash_format(isodate): | ||
480 | - iso_dt = parse_date(isodate) | ||
481 | - date_string = iso_dt.strftime("%d/%m/%Y") | ||
482 | - return date_string | ||
483 | - | ||
484 | - | ||
485 | -def convert_datetime_to_dot_format(isodate): | ||
486 | - iso_dt = parse_date(isodate) | ||
487 | - day_string = iso_dt.strftime("%d.%m.%Y %H:%M") | ||
488 | - return day_string | ||
489 | - | 470 | +def generate_test_bid_data_second_stage(tender_data, index='0'): |
471 | + bid = test_bid_data() | ||
472 | + if index.isdigit(): | ||
473 | + index = int(index) | ||
474 | + else: | ||
475 | + index = 0 | ||
476 | + bid['data']['tenderers'][0]['identifier']['id'] = tender_data['shortlistedFirms'][index]['identifier']['id'] | ||
477 | + bid['data']['tenderers'][0]['identifier']['scheme'] = tender_data['shortlistedFirms'][index]['identifier']['scheme'] | ||
478 | + bid['data']['tenderers'][0]['identifier']['legalName'] = tender_data['shortlistedFirms'][index]['identifier']['legalName'] | ||
490 | 479 | ||
491 | -def local_path_to_file(file_name): | ||
492 | - return os.path.join(os.path.dirname(__file__), 'documents', file_name) | 480 | + if tender_data.get('procurementMethodType', '')[:-2] in ('aboveThreshold', 'competitiveDialogue'): |
481 | + bid.data.selfEligible = True | ||
482 | + bid.data.selfQualified = True | ||
483 | + if 'lots' in tender_data: | ||
484 | + bid.data.lotValues = [] | ||
485 | + for lot in tender_data['lots']: | ||
486 | + value = test_bid_value(lot['value']['amount']) | ||
487 | + value['relatedLot'] = lot.get('id', '') | ||
488 | + bid.data.lotValues.append(value) | ||
489 | + else: | ||
490 | + bid.data.update(test_bid_value(tender_data['value']['amount'])) | ||
491 | + if 'features' in tender_data: | ||
492 | + bid.data.parameters = [] | ||
493 | + for feature in tender_data['features']: | ||
494 | + parameter = {"value": fake.random_element(elements=(0.05, 0.01, 0)), "code": feature.get('code', '')} | ||
495 | + bid.data.parameters.append(parameter) | ||
496 | + return bid |
1 | - -s openProcedure | 1 | +-s openProcedure |
2 | 2 | ||
3 | -v MODE:open_competitive_dialogue | 3 | -v MODE:open_competitive_dialogue |
4 | 4 | ||
5 | --v api_version:2.3 | ||
6 | --v api_host_url:http://localhost:6543/ | ||
7 | - | ||
8 | 5 | ||
9 | -v NUMBER_OF_ITEMS:1 | 6 | -v NUMBER_OF_ITEMS:1 |
10 | -v NUMBER_OF_LOTS:1 | 7 | -v NUMBER_OF_LOTS:1 |
@@ -33,3 +30,25 @@ | @@ -33,3 +30,25 @@ | ||
33 | -i stage2_pending_status_view | 30 | -i stage2_pending_status_view |
34 | 31 | ||
35 | -i wait_bridge_for_work | 32 | -i wait_bridge_for_work |
33 | + | ||
34 | +-i get_second_stage | ||
35 | + | ||
36 | +-i compare_stages | ||
37 | + | ||
38 | +-i save_tender_second_stage | ||
39 | + | ||
40 | +-i activate_second_stage | ||
41 | + | ||
42 | +-i make_bid_by_provider_second_stage | ||
43 | +-i make_bid_by_provider1_second_stage | ||
44 | + | ||
45 | +-i pre-qualification_approve_first_bid_second_stage | ||
46 | +-i pre-qualification_approve_second_bid_second_stage | ||
47 | + | ||
48 | +-i pre-qualification_approve_qualifications_second_stage | ||
49 | + | ||
50 | +-i auction | ||
51 | + | ||
52 | +-i qualification_approve_first_award | ||
53 | + | ||
54 | +-i contract_sign |
@@ -18,29 +18,26 @@ setup(name='op_robot_tests', | @@ -18,29 +18,26 @@ setup(name='op_robot_tests', | ||
18 | zip_safe=False, | 18 | zip_safe=False, |
19 | install_requires=[ | 19 | install_requires=[ |
20 | # -*- Extra requirements: -*- | 20 | # -*- Extra requirements: -*- |
21 | - 'robotframework', | ||
22 | - 'robotframework-selenium2library', | ||
23 | - 'robotframework-debuglibrary', | ||
24 | - 'robotframework-selenium2screenshots', | 21 | + 'Faker', |
25 | 'Pillow', | 22 | 'Pillow', |
26 | - 'iso8601', | ||
27 | 'PyYAML', | 23 | 'PyYAML', |
28 | - 'munch', | ||
29 | - 'fake-factory', | 24 | + 'barbecue', |
25 | + 'chromedriver', | ||
26 | + 'dateutils', | ||
30 | 'dpath', | 27 | 'dpath', |
28 | + 'haversine', | ||
29 | + 'iso8601', | ||
31 | 'jsonpath-rw', | 30 | 'jsonpath-rw', |
32 | - 'dateutils', | ||
33 | - 'pytz', | 31 | + 'munch', |
34 | 'parse', | 32 | 'parse', |
35 | - 'chromedriver', | ||
36 | - 'barbecue', | ||
37 | - 'haversine' | 33 | + 'pytz', |
34 | + 'robotframework', | ||
35 | + 'robotframework-selenium2library', | ||
36 | + 'selenium < 3.0.dev0', | ||
38 | ], | 37 | ], |
39 | entry_points={ | 38 | entry_points={ |
40 | 'console_scripts': [ | 39 | 'console_scripts': [ |
41 | - 'openprocurement_tests = op_robot_tests.runner:runner', | ||
42 | 'op_tests = op_robot_tests.runner:runner', | 40 | 'op_tests = op_robot_tests.runner:runner', |
43 | - 'rebot = op_robot_tests.rebot:rebot' | ||
44 | ], | 41 | ], |
45 | } | 42 | } |
46 | ) | 43 | ) |
Please
register
or
login
to post a comment