Commit b0c4f5d690191e112aa140d763275b5dc4118641

Authored by selurvedu
2 parents d5c06c32 cab15244

Merge pull request #138 from mykhaly/op_faker

Faker
@@ -115,7 +115,7 @@ ${mode} openeu @@ -115,7 +115,7 @@ ${mode} openeu
115 ... ${USERS.users['${provider}'].broker} 115 ... ${USERS.users['${provider}'].broker}
116 [Setup] Дочекатись дати початку прийому пропозицій ${provider} 116 [Setup] Дочекатись дати початку прийому пропозицій ${provider}
117 [Teardown] Оновити LAST_MODIFICATION_DATE 117 [Teardown] Оновити LAST_MODIFICATION_DATE
118 - ${bid}= Підготувати дані для подання пропозиції 118 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
119 Log ${bid} 119 Log ${bid}
120 ${bidresponses}= Create Dictionary 120 ${bidresponses}= Create Dictionary
121 Set To Dictionary ${bidresponses} bid=${bid} 121 Set To Dictionary ${bidresponses} bid=${bid}
@@ -199,7 +199,7 @@ ${mode} openeu @@ -199,7 +199,7 @@ ${mode} openeu
199 ... ${USERS.users['${provider1}'].broker} 199 ... ${USERS.users['${provider1}'].broker}
200 [Setup] Дочекатись дати початку прийому пропозицій ${provider1} 200 [Setup] Дочекатись дати початку прийому пропозицій ${provider1}
201 [Teardown] Оновити LAST_MODIFICATION_DATE 201 [Teardown] Оновити LAST_MODIFICATION_DATE
202 - ${bid}= Підготувати дані для подання пропозиції 202 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
203 Log ${bid} 203 Log ${bid}
204 ${bidresponses}= Create Dictionary 204 ${bidresponses}= Create Dictionary
205 Set To Dictionary ${bidresponses} bid=${bid} 205 Set To Dictionary ${bidresponses} bid=${bid}
@@ -255,7 +255,7 @@ ${mode} openeu @@ -255,7 +255,7 @@ ${mode} openeu
255 ... provider1 255 ... provider1
256 ... ${USERS.users['${provider1}'].broker} 256 ... ${USERS.users['${provider1}'].broker}
257 [Teardown] Оновити LAST_MODIFICATION_DATE 257 [Teardown] Оновити LAST_MODIFICATION_DATE
258 - ${bid}= Підготувати дані для подання пропозиції 258 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
259 Log ${bid} 259 Log ${bid}
260 ${bidresponses}= Create Dictionary 260 ${bidresponses}= Create Dictionary
261 Set To Dictionary ${bidresponses} bid=${bid} 261 Set To Dictionary ${bidresponses} bid=${bid}
@@ -384,7 +384,7 @@ ${mode} openeu @@ -384,7 +384,7 @@ ${mode} openeu
384 ... provider1 384 ... provider1
385 ... ${USERS.users['${provider1}'].broker} 385 ... ${USERS.users['${provider1}'].broker}
386 [Teardown] Оновити LAST_MODIFICATION_DATE 386 [Teardown] Оновити LAST_MODIFICATION_DATE
387 - ${bid}= Підготувати дані для подання пропозиції 387 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
388 Log ${bid} 388 Log ${bid}
389 ${bidresponses}= Create Dictionary 389 ${bidresponses}= Create Dictionary
390 Set To Dictionary ${bidresponses} bid=${bid} 390 Set To Dictionary ${bidresponses} bid=${bid}
This diff could not be displayed because it is too large.
@@ -4,11 +4,14 @@ from faker import Factory @@ -4,11 +4,14 @@ from faker import Factory
4 from munch import munchify 4 from munch import munchify
5 from tempfile import NamedTemporaryFile 5 from tempfile import NamedTemporaryFile
6 from .local_time import get_now 6 from .local_time import get_now
  7 +from .op_faker import OP_Provider
7 import random 8 import random
8 9
  10 +
9 fake = Factory.create('uk_UA') 11 fake = Factory.create('uk_UA')
10 fake_ru = Factory.create('ru') 12 fake_ru = Factory.create('ru')
11 fake_en = Factory.create() 13 fake_en = Factory.create()
  14 +fake.add_provider(OP_Provider)
12 15
13 16
14 def create_fake_sentence(): 17 def create_fake_sentence():
@@ -16,7 +19,21 @@ def create_fake_sentence(): @@ -16,7 +19,21 @@ def create_fake_sentence():
16 19
17 20
18 def field_with_id(prefix, sentence): 21 def field_with_id(prefix, sentence):
19 - return "{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence) 22 + return u"{}-{}: {}".format(prefix, fake.uuid4()[:8], sentence)
  23 +
  24 +
  25 +def translate_country_en(country):
  26 + if country == u"Україна":
  27 + return "Ukraine"
  28 + else:
  29 + raise Exception(u"Cannot translate country to english: {}".format(country))
  30 +
  31 +
  32 +def translate_country_ru(country):
  33 + if country == u"Україна":
  34 + return u"Украина"
  35 + else:
  36 + raise Exception(u"Cannot translate country to russian: {}".format(country))
20 37
21 38
22 def create_fake_doc(): 39 def create_fake_doc():
@@ -30,38 +47,17 @@ def create_fake_doc(): @@ -30,38 +47,17 @@ def create_fake_doc():
30 47
31 def test_tender_data(intervals, periods=("enquiry", "tender")): 48 def test_tender_data(intervals, periods=("enquiry", "tender")):
32 now = get_now() 49 now = get_now()
33 - value_amount = 50000.99  
34 - t_data = {  
35 - "title": u"[ТЕСТУВАННЯ] " + fake.catch_phrase(), 50 + value_amount = round(random.uniform(3000, 250000000000), 2) #max value equals to budget of Ukraine in hryvnias
  51 + data = {
36 "mode": "test", 52 "mode": "test",
37 "submissionMethodDetails": "quick", 53 "submissionMethodDetails": "quick",
38 - "description": u"Тестовий тендер",  
39 - "description_ru": u"Тестовый тендер",  
40 - "description_en": "Test tender",  
41 - "procuringEntity": {  
42 - "name": fake.company(),  
43 - "name_ru": fake_ru.company(),  
44 - "name_en": fake_en.company(),  
45 - "identifier": {  
46 - "scheme": u"UA-EDR",  
47 - "id": u"{:08d}".format(fake.pyint()),  
48 - "uri": fake.image_url(width=None, height=None)  
49 - },  
50 - "address": {  
51 - "countryName": u"Україна",  
52 - "countryName_ru": u"Украина",  
53 - "countryName_en": "Ukraine",  
54 - "postalCode": fake.postalcode(),  
55 - "region": u"м. Київ",  
56 - "locality": u"м. Київ",  
57 - "streetAddress": fake.street_address()  
58 - },  
59 - "contactPoint": {  
60 - "name": fake.name(),  
61 - "telephone": fake.phone_number()  
62 - },  
63 - "kind": "other"  
64 - }, 54 + "description": fake.description(),
  55 + "description_en": fake_en.sentence(nb_words=10, variable_nb_words=True),
  56 + "description_ru": fake_ru.sentence(nb_words=10, variable_nb_words=True),
  57 + "title": fake.title(),
  58 + "title_en": fake_en.catch_phrase(),
  59 + "title_ru": fake_ru.catch_phrase(),
  60 + "procuringEntity": fake.procuringEntity(),
65 "value": { 61 "value": {
66 "amount": value_amount, 62 "amount": value_amount,
67 "currency": u"UAH", 63 "currency": u"UAH",
@@ -73,8 +69,13 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): @@ -73,8 +69,13 @@ def test_tender_data(intervals, periods=("enquiry", "tender")):
73 }, 69 },
74 "items": [] 70 "items": []
75 } 71 }
  72 + data["procuringEntity"]["kind"] = "other"
76 new_item = test_item_data() 73 new_item = test_item_data()
77 - t_data['items'].append(new_item) 74 + data["items"].append(new_item)
  75 + if data.get("mode") == "test":
  76 + data["title"] = u"[ТЕСТУВАННЯ] {}".format(data["title"])
  77 + data["title_en"] = u"[TESTING] {}".format(data["title_en"])
  78 + data["title_ru"] = u"[ТЕСТИРОВАНИЕ] {}".format(data["title_ru"])
78 period_dict = {} 79 period_dict = {}
79 inc_dt = now 80 inc_dt = now
80 for period_name in periods: 81 for period_name in periods:
@@ -82,90 +83,18 @@ def test_tender_data(intervals, periods=("enquiry", "tender")): @@ -82,90 +83,18 @@ def test_tender_data(intervals, periods=("enquiry", "tender")):
82 for i, j in zip(range(2), ("start", "end")): 83 for i, j in zip(range(2), ("start", "end")):
83 inc_dt += timedelta(minutes=intervals[period_name][i]) 84 inc_dt += timedelta(minutes=intervals[period_name][i])
84 period_dict[period_name + "Period"][j + "Date"] = inc_dt.isoformat() 85 period_dict[period_name + "Period"][j + "Date"] = inc_dt.isoformat()
85 - t_data.update(period_dict)  
86 - return t_data 86 + data.update(period_dict)
  87 + return munchify(data)
87 88
88 89
89 def test_tender_data_limited(intervals, procurement_method_type): 90 def test_tender_data_limited(intervals, procurement_method_type):
90 - now = get_now()  
91 - data = {  
92 - "items":  
93 - [  
94 - {  
95 - "additionalClassifications":  
96 - [  
97 - {  
98 - "description": u"Послуги щодо забезпечення харчуванням, інші",  
99 - "id": "56.29",  
100 - "scheme": u"ДКПП"  
101 - }  
102 - ],  
103 - "classification":  
104 - {  
105 - "description": u"Послуги з організації шкільного харчування",  
106 - "id": "55523100-3",  
107 - "scheme": "CPV"  
108 - },  
109 - "description": field_with_id('i', fake.sentence(nb_words=10, variable_nb_words=True)),  
110 - "id": "2dc54675d6364e2baffbc0f8e74432ac",  
111 - "deliveryDate": {  
112 - "endDate": (now + timedelta(days=5)).isoformat()  
113 - },  
114 - "deliveryLocation": {  
115 - "latitude": 49.8500,  
116 - "longitude": 24.0167  
117 - },  
118 - "deliveryAddress": {  
119 - "countryName": u"Україна",  
120 - "countryName_ru": u"Украина",  
121 - "countryName_en": "Ukraine",  
122 - "postalCode": fake.postalcode(),  
123 - "region": u"м. Київ",  
124 - "locality": u"м. Київ",  
125 - "streetAddress": fake.street_address()  
126 - }  
127 - }  
128 - ],  
129 - "mode": "test",  
130 - "procurementMethod": "limited",  
131 - "procurementMethodType": procurement_method_type,  
132 - "procuringEntity":  
133 - {  
134 - "address":  
135 - {  
136 - "countryName": u"Україна",  
137 - "locality": u"м. Вінниця",  
138 - "postalCode": "21027",  
139 - "region": u"м. Вінниця",  
140 - "streetAddress": u"вул. Стахурського. 22"  
141 - },  
142 - "contactPoint":  
143 - {  
144 - "name": u"Куца Світлана Валентинівна",  
145 - "telephone": "+380 (432) 46-53-02",  
146 - "url": "http://sch10.edu.vn.ua/"  
147 - },  
148 - "identifier":  
149 - {  
150 - "id": "21725150",  
151 - "legalName": u"Заклад \"Загальноосвітня школа І-ІІІ ступенів № 10 Вінницької міської ради\"",  
152 - "scheme": u"UA-EDR"  
153 - },  
154 - "name": u"ЗОСШ #10 м.Вінниці",  
155 - "kind": "general"  
156 - },  
157 - "value": {  
158 - "amount": 500000,  
159 - "currency": "UAH",  
160 - "valueAddedTaxIncluded": True  
161 - },  
162 - "description": fake.sentence(nb_words=10, variable_nb_words=True),  
163 - "description_en": fake.sentence(nb_words=10, variable_nb_words=True),  
164 - "description_ru": fake.sentence(nb_words=10, variable_nb_words=True),  
165 - "title": fake.catch_phrase(),  
166 - "title_en": fake.catch_phrase(),  
167 - "title_ru": fake.catch_phrase()  
168 - } 91 + data = test_tender_data(intervals)
  92 + del data["submissionMethodDetails"]
  93 + del data["minimalStep"]
  94 + del data["enquiryPeriod"]
  95 + del data["tenderPeriod"]
  96 + data["procuringEntity"]["kind"] = "general"
  97 + data.update({"procurementMethodType": procurement_method_type, "procurementMethod": "limited"})
169 if procurement_method_type == "negotiation": 98 if procurement_method_type == "negotiation":
170 cause_variants = ( 99 cause_variants = (
171 "artContestIP", 100 "artContestIP",
@@ -181,13 +110,12 @@ def test_tender_data_limited(intervals, procurement_method_type): @@ -181,13 +110,12 @@ def test_tender_data_limited(intervals, procurement_method_type):
181 cause_variants = ('quick',) 110 cause_variants = ('quick',)
182 cause = fake.random_element(cause_variants) 111 cause = fake.random_element(cause_variants)
183 data.update({"cause": cause}) 112 data.update({"cause": cause})
184 - if procurement_method_type == "negotiation" \  
185 - or procurement_method_type == "negotiation.quick": 113 + if procurement_method_type in ("negotiation", "negotiation.quick"):
186 data.update({ 114 data.update({
187 "procurementMethodDetails": "quick, accelerator=1440", 115 "procurementMethodDetails": "quick, accelerator=1440",
188 - "causeDescription": fake.sentence(nb_words=10, variable_nb_words=True) 116 + "causeDescription": fake.description()
189 }) 117 })
190 - return data 118 + return munchify(data)
191 119
192 120
193 def test_tender_data_multiple_items(intervals): 121 def test_tender_data_multiple_items(intervals):
@@ -195,16 +123,18 @@ def test_tender_data_multiple_items(intervals): @@ -195,16 +123,18 @@ def test_tender_data_multiple_items(intervals):
195 for _ in range(4): 123 for _ in range(4):
196 new_item = test_item_data() 124 new_item = test_item_data()
197 t_data['items'].append(new_item) 125 t_data['items'].append(new_item)
198 - return t_data 126 + return munchify(t_data)
199 127
200 128
201 def test_tender_data_multiple_lots(intervals): 129 def test_tender_data_multiple_lots(intervals):
202 tender = test_tender_data(intervals) 130 tender = test_tender_data(intervals)
203 first_lot_id = "3c8f387879de4c38957402dbdb8b31af" 131 first_lot_id = "3c8f387879de4c38957402dbdb8b31af"
204 tender['items'][0]['relatedLot'] = first_lot_id 132 tender['items'][0]['relatedLot'] = first_lot_id
205 - tender['lots'] = [test_lot_data()] 133 + tender['lots'] = [test_lot_data(tender['value']['amount'])]
206 tender['lots'][0]['id'] = first_lot_id 134 tender['lots'][0]['id'] = first_lot_id
207 - return tender 135 + max_lot_value_amount = max([lot['value']['amount'] for lot in tender['lots']])
  136 + tender['value']['amount'] = max_lot_value_amount
  137 + return munchify(tender)
208 138
209 139
210 def test_tender_data_meat(intervals): 140 def test_tender_data_meat(intervals):
@@ -215,24 +145,24 @@ def test_tender_data_meat(intervals): @@ -215,24 +145,24 @@ def test_tender_data_meat(intervals):
215 { 145 {
216 "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", 146 "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",
217 "featureOf": "tenderer", 147 "featureOf": "tenderer",
218 - "title": field_with_id('f', "Термін оплати"),  
219 - "description": "Умови відстрочки платежу після поставки товару", 148 + "title": field_with_id("f", fake.title()),
  149 + "description": fake.description(),
220 "enum": [ 150 "enum": [
221 { 151 {
222 "value": 0.15, 152 "value": 0.15,
223 - "title": "180 днів та більше" 153 + "title": fake.word()
224 }, 154 },
225 { 155 {
226 "value": 0.1, 156 "value": 0.1,
227 - "title": "90-179 днів", 157 + "title": fake.word()
228 }, 158 },
229 { 159 {
230 "value": 0.05, 160 "value": 0.05,
231 - "title": "30-89 днів" 161 + "title": fake.word()
232 }, 162 },
233 { 163 {
234 "value": 0, 164 "value": 0,
235 - "title": "Менше 30 днів" 165 + "title": fake.word()
236 } 166 }
237 ] 167 ]
238 }, 168 },
@@ -240,56 +170,35 @@ def test_tender_data_meat(intervals): @@ -240,56 +170,35 @@ def test_tender_data_meat(intervals):
240 "code": "48cfd91612c04125ab406374d7cc8d93", 170 "code": "48cfd91612c04125ab406374d7cc8d93",
241 "featureOf": "item", 171 "featureOf": "item",
242 "relatedItem": item_id, 172 "relatedItem": item_id,
243 - "title": field_with_id('f', "Сорт"),  
244 - "description": "Сорт продукції", 173 + "title": field_with_id("f", fake.title()),
  174 + "description": fake.description(),
245 "enum": [ 175 "enum": [
246 { 176 {
247 "value": 0.05, 177 "value": 0.05,
248 - "title": "Вищий" 178 + "title": fake.word()
249 }, 179 },
250 { 180 {
251 "value": 0.01, 181 "value": 0.01,
252 - "title": "Перший", 182 + "title": fake.word()
253 }, 183 },
254 { 184 {
255 "value": 0, 185 "value": 0,
256 - "title": "Другий" 186 + "title": fake.word()
257 } 187 }
258 ] 188 ]
259 } 189 }
260 ] 190 ]
261 - return tender 191 + return munchify(tender)
262 192
263 193
264 def test_question_data(): 194 def test_question_data():
265 - data = munchify({ 195 + return munchify({
266 "data": { 196 "data": {
267 - "author": {  
268 - "address": {  
269 - "countryName": u"Україна",  
270 - "countryName_ru": u"Украина",  
271 - "countryName_en": "Ukraine",  
272 - "locality": u"м. Вінниця",  
273 - "postalCode": "21100",  
274 - "region": u"Вінницька область",  
275 - "streetAddress": fake.street_address()  
276 - },  
277 - "contactPoint": {  
278 - "name": fake.name(),  
279 - "telephone": fake.phone_number()  
280 - },  
281 - "identifier": {  
282 - "scheme": u"UA-EDR",  
283 - "id": u"{:08d}".format(fake.pyint()),  
284 - "uri": fake.image_url(width=None, height=None)  
285 - },  
286 - "name": fake.company()  
287 - },  
288 - "description": fake.sentence(nb_words=10, variable_nb_words=True),  
289 - "title": field_with_id('q', fake.sentence(nb_words=6, variable_nb_words=True)) 197 + "author": fake.procuringEntity(),
  198 + "description": fake.description(),
  199 + "title": field_with_id("q", fake.title())
290 } 200 }
291 }) 201 })
292 - return data  
293 202
294 203
295 def test_question_answer_data(): 204 def test_question_answer_data():
@@ -302,30 +211,10 @@ def test_question_answer_data(): @@ -302,30 +211,10 @@ def test_question_answer_data():
302 211
303 def test_complaint_data(lot=False): 212 def test_complaint_data(lot=False):
304 data = munchify({ 213 data = munchify({
305 - "data": {  
306 - "author": {  
307 - "address": {  
308 - "countryName": u"Україна",  
309 - "countryName_ru": u"Украина",  
310 - "countryName_en": "Ukraine",  
311 - "locality": u"м. Вінниця",  
312 - "postalCode": "21100",  
313 - "region": u"Вінницька область",  
314 - "streetAddress": fake.street_address()  
315 - },  
316 - "contactPoint": {  
317 - "name": fake.name(),  
318 - "telephone": fake.phone_number()  
319 - },  
320 - "identifier": {  
321 - "scheme": u"UA-EDR",  
322 - "id": u"{:08d}".format(fake.pyint()),  
323 - "uri": fake.image_url(width=None, height=None)  
324 - },  
325 - "name": fake.company()  
326 - },  
327 - "description": fake.sentence(nb_words=10, variable_nb_words=True),  
328 - "title": fake.sentence(nb_words=6, variable_nb_words=True) 214 + "data" : {
  215 + "author": fake.procuringEntity(),
  216 + "description": fake.description(),
  217 + "title": fake.title()
329 } 218 }
330 }) 219 })
331 if lot: 220 if lot:
@@ -336,17 +225,6 @@ def test_complaint_data(lot=False): @@ -336,17 +225,6 @@ def test_complaint_data(lot=False):
336 test_claim_data = test_complaint_data 225 test_claim_data = test_complaint_data
337 226
338 227
339 -def test_complaint_answer_data(complaint_id):  
340 - return munchify({  
341 - "data": {  
342 - "id": complaint_id,  
343 - "status": "answered",  
344 - "resolutionType": "resolved",  
345 - "resolution": fake.sentence(nb_words=40, variable_nb_words=True)  
346 - }  
347 - })  
348 -  
349 -  
350 def test_claim_answer_satisfying_data(claim_id): 228 def test_claim_answer_satisfying_data(claim_id):
351 return munchify({ 229 return munchify({
352 "data": { 230 "data": {
@@ -397,14 +275,6 @@ def test_cancel_claim_data(claim_id, cancellation_reason): @@ -397,14 +275,6 @@ def test_cancel_claim_data(claim_id, cancellation_reason):
397 }) 275 })
398 276
399 277
400 -def test_change_cancellation_document_field_data(key, value):  
401 - return munchify({  
402 - "data": {  
403 - key: value  
404 - }  
405 - })  
406 -  
407 -  
408 def test_confirm_data(id): 278 def test_confirm_data(id):
409 return munchify({ 279 return munchify({
410 "data": { 280 "data": {
@@ -431,42 +301,25 @@ def test_complaint_reply_data(): @@ -431,42 +301,25 @@ def test_complaint_reply_data():
431 }) 301 })
432 302
433 303
434 -def test_bid_data(mode): 304 +def test_bid_data(mode, max_value_amount):
435 bid = munchify({ 305 bid = munchify({
436 "data": { 306 "data": {
437 "tenderers": [ 307 "tenderers": [
438 - {  
439 - "address": {  
440 - "countryName": u"Україна",  
441 - "countryName_ru": u"Украина",  
442 - "countryName_en": "Ukraine",  
443 - "locality": u"м. Вінниця",  
444 - "postalCode": "21100",  
445 - "region": u"Вінницька область",  
446 - "streetAddress": fake.street_address()  
447 - },  
448 - "contactPoint": {  
449 - "name": fake.name(),  
450 - "telephone": fake.phone_number()  
451 - },  
452 - "identifier": {  
453 - "scheme": u"UA-EDR",  
454 - "id": u"{:08d}".format(fake.pyint()),  
455 - },  
456 - "name": fake.company()  
457 - } 308 + fake.procuringEntity()
458 ] 309 ]
459 } 310 }
460 }) 311 })
  312 + bid.data.tenderers[0].address.countryName_en = translate_country_en(bid.data.tenderers[0].address.countryName)
  313 + bid.data.tenderers[0].address.countryName_ru = translate_country_ru(bid.data.tenderers[0].address.countryName)
461 if 'open' in mode: 314 if 'open' in mode:
462 bid.data['selfEligible'] = True 315 bid.data['selfEligible'] = True
463 bid.data['selfQualified'] = True 316 bid.data['selfQualified'] = True
464 if mode == 'multiLot': 317 if mode == 'multiLot':
465 bid.data.lotValues = list() 318 bid.data.lotValues = list()
466 for _ in range(2): 319 for _ in range(2):
467 - bid.data.lotValues.append(test_bid_value()) 320 + bid.data.lotValues.append(test_bid_value(max_value_amount))
468 else: 321 else:
469 - bid.data.update(test_bid_value()) 322 + bid.data.update(test_bid_value(max_value_amount))
470 if mode == 'meat': 323 if mode == 'meat':
471 bid.data.update(test_bid_params()) 324 bid.data.update(test_bid_params())
472 return bid 325 return bid
@@ -486,11 +339,11 @@ def test_bid_params(): @@ -486,11 +339,11 @@ def test_bid_params():
486 ] 339 ]
487 }) 340 })
488 341
489 -def test_bid_value(): 342 +def test_bid_value(max_value_amount):
490 return munchify({ 343 return munchify({
491 "value": { 344 "value": {
492 "currency": "UAH", 345 "currency": "UAH",
493 - "amount": fake.random_int(max=1999), 346 + "amount": round(random.uniform(1, max_value_amount), 2),
494 "valueAddedTaxIncluded": True 347 "valueAddedTaxIncluded": True
495 } 348 }
496 }) 349 })
@@ -500,30 +353,10 @@ def test_supplier_data(): @@ -500,30 +353,10 @@ def test_supplier_data():
500 return munchify({ 353 return munchify({
501 "data": { 354 "data": {
502 "suppliers": [ 355 "suppliers": [
503 - {  
504 - "address": {  
505 - "countryName": u"Україна",  
506 - "locality": u"м. Вінниця",  
507 - "postalCode": "21100",  
508 - "region": u"м. Вінниця",  
509 - "streetAddress": u"вул. Островського, 33"  
510 - },  
511 - "contactPoint": {  
512 - "email": "soleksuk@gmail.com",  
513 - "name": u"Сергій Олексюк",  
514 - "telephone": "+380 (432) 21-69-30"  
515 - },  
516 - "identifier": {  
517 - "id": "13313462",  
518 - "legalName": u"Державне комунальне підприємство громадського харчування «Школяр»",  
519 - "scheme": "UA-EDR",  
520 - "uri": "http://sch10.edu.vn.ua/"  
521 - },  
522 - "name": u"ДКП «Школяр»"  
523 - } 356 + fake.procuringEntity()
524 ], 357 ],
525 "value": { 358 "value": {
526 - "amount": 475000, 359 + "amount": fake.random_int(min=1),
527 "currency": "UAH", 360 "currency": "UAH",
528 "valueAddedTaxIncluded": True 361 "valueAddedTaxIncluded": True
529 } 362 }
@@ -531,52 +364,14 @@ def test_supplier_data(): @@ -531,52 +364,14 @@ def test_supplier_data():
531 }) 364 })
532 365
533 366
534 -def test_award_data():  
535 - return munchify({'data': {}})  
536 -  
537 -  
538 -def test_item_data():  
539 - now = get_now()  
540 - return munchify({  
541 - "description": field_with_id('i', fake.catch_phrase()),  
542 - "deliveryDate": {  
543 - "endDate": (now + timedelta(days=5)).isoformat()  
544 - },  
545 - "deliveryLocation": {  
546 - "latitude": 49.8500,  
547 - "longitude": 24.0167  
548 - },  
549 - "deliveryAddress": {  
550 - "countryName": u"Україна",  
551 - "countryName_ru": u"Украина",  
552 - "countryName_en": "Ukraine",  
553 - "postalCode": fake.postalcode(),  
554 - "region": u"м. Київ",  
555 - "locality": u"м. Київ",  
556 - "streetAddress": fake.street_address()  
557 - },  
558 - "classification": {  
559 - "scheme": u"CPV",  
560 - "id": u"44617100-9",  
561 - "description": u"Картонні коробки",  
562 - "description_ru": u"Большие картонные коробки",  
563 - "description_en": u"Cartons"  
564 - },  
565 - "additionalClassifications": [  
566 - {  
567 - "scheme": u"ДКПП",  
568 - "id": u"17.21.1",  
569 - "description": u"Папір і картон гофровані, паперова й картонна тара"  
570 - }  
571 - ],  
572 - "unit": {  
573 - "name": u"кілограм",  
574 - "name_ru": u"килограмм",  
575 - "name_en": "kilogram",  
576 - "code": u"KGM"  
577 - },  
578 - "quantity": fake.pyint()  
579 - }) 367 +def test_item_data(cpv=None):
  368 + data = fake.fake_item(cpv)
  369 + data["description"] = field_with_id("i", data["description"])
  370 + days = fake.random_int(min=1, max=30)
  371 + data["deliveryDate"] = {"endDate": (get_now() + timedelta(days=days)).isoformat()}
  372 + data["deliveryAddress"]["countryName_en"] = translate_country_en(data["deliveryAddress"]["countryName"])
  373 + data["deliveryAddress"]["countryName_ru"] = translate_country_ru(data["deliveryAddress"]["countryName"])
  374 + return munchify(data)
580 375
581 376
582 def test_invalid_features_data(): 377 def test_invalid_features_data():
@@ -584,16 +379,16 @@ def test_invalid_features_data(): @@ -584,16 +379,16 @@ def test_invalid_features_data():
584 { 379 {
585 "code": "ee3e24bc17234a41bd3e3a04cc28e9c6", 380 "code": "ee3e24bc17234a41bd3e3a04cc28e9c6",
586 "featureOf": "tenderer", 381 "featureOf": "tenderer",
587 - "title": "Термін оплати",  
588 - "description": "Умови відстрочки платежу після поставки товару", 382 + "title": fake.title(),
  383 + "description": fake.description(),
589 "enum": [ 384 "enum": [
590 { 385 {
591 "value": 0.35, 386 "value": 0.35,
592 - "title": "180 днів та більше" 387 + "title": fake.word()
593 }, 388 },
594 { 389 {
595 "value": 0, 390 "value": 0,
596 - "title": "Менше 30 днів" 391 + "title": fake.word()
597 } 392 }
598 ] 393 ]
599 }, 394 },
@@ -601,35 +396,36 @@ def test_invalid_features_data(): @@ -601,35 +396,36 @@ def test_invalid_features_data():
601 "code": "48cfd91612c04125ab406374d7cc8d93", 396 "code": "48cfd91612c04125ab406374d7cc8d93",
602 "featureOf": "item", 397 "featureOf": "item",
603 "relatedItem": "edd0032574bf4402877ad5f362df225a", 398 "relatedItem": "edd0032574bf4402877ad5f362df225a",
604 - "title": "Сорт",  
605 - "description": "Сорт продукції", 399 + "title": fake.title(),
  400 + "description": fake.description(),
606 "enum": [ 401 "enum": [
607 { 402 {
608 "value": 0.35, 403 "value": 0.35,
609 - "title": "Вищий" 404 + "title": fake.word()
610 }, 405 },
611 { 406 {
612 "value": 0, 407 "value": 0,
613 - "title": "Другий" 408 + "title": fake.word()
614 } 409 }
615 ] 410 ]
616 } 411 }
617 ] 412 ]
618 413
619 414
620 -def test_lot_data(): 415 +def test_lot_data(max_value_amount):
  416 + value_amount = round(random.uniform(1, max_value_amount), 2)
621 return munchify( 417 return munchify(
622 { 418 {
623 - "description": fake.sentence(nb_words=10, variable_nb_words=True),  
624 - "title": field_with_id('l', fake.sentence(nb_words=6, variable_nb_words=True)), 419 + "description": fake.description(),
  420 + "title": field_with_id('l', fake.title()),
625 "value": { 421 "value": {
626 "currency": "UAH", 422 "currency": "UAH",
627 - "amount": 2000 + fake.pyfloat(left_digits=4, right_digits=1, positive=True), 423 + "amount": value_amount,
628 "valueAddedTaxIncluded": True 424 "valueAddedTaxIncluded": True
629 }, 425 },
630 "minimalStep": { 426 "minimalStep": {
631 "currency": "UAH", 427 "currency": "UAH",
632 - "amount": 30.0, 428 + "amount": round(random.uniform(0.005, 0.03) * value_amount, 2),
633 "valueAddedTaxIncluded": True 429 "valueAddedTaxIncluded": True
634 }, 430 },
635 "status": "active" 431 "status": "active"
@@ -206,7 +206,8 @@ Get Broker Property By Username @@ -206,7 +206,8 @@ Get Broker Property By Username
206 206
207 207
208 Підготовка даних для створення лоту 208 Підготовка даних для створення лоту
209 - ${lot}= test_lot_data 209 + [Arguments] ${max_lot_value_amount}
  210 + ${lot}= test_lot_data ${max_lot_value_amount}
210 ${reply}= Create Dictionary data=${lot} 211 ${reply}= Create Dictionary data=${lot}
211 [Return] ${reply} 212 [Return] ${reply}
212 213
@@ -238,8 +239,9 @@ Get Broker Property By Username @@ -238,8 +239,9 @@ Get Broker Property By Username
238 239
239 240
240 Підготувати дані для подання пропозиції 241 Підготувати дані для подання пропозиції
241 - ${supplier_data}= test_bid_data ${mode}  
242 - [Return] ${supplier_data} 242 + [Arguments] ${max_value_amount}
  243 + ${bid_data}= test_bid_data ${mode} ${max_value_amount}
  244 + [Return] ${bid_data}
243 245
244 246
245 Підготувати дані про постачальника 247 Підготувати дані про постачальника
@@ -95,7 +95,7 @@ ${mode} meat @@ -95,7 +95,7 @@ ${mode} meat
95 ... provider 95 ... provider
96 ... ${USERS.users['${provider}'].broker} 96 ... ${USERS.users['${provider}'].broker}
97 [Teardown] Оновити LAST_MODIFICATION_DATE 97 [Teardown] Оновити LAST_MODIFICATION_DATE
98 - ${bid}= Підготувати дані для подання пропозиції 98 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
99 ${bidresponses}= Create Dictionary bid=${bid} 99 ${bidresponses}= Create Dictionary bid=${bid}
100 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} 100 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
101 ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} 101 ${resp}= Викликати для учасника ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
@@ -129,7 +129,7 @@ ${mode} meat @@ -129,7 +129,7 @@ ${mode} meat
129 ... ${USERS.users['${provider1}'].broker} 129 ... ${USERS.users['${provider1}'].broker}
130 [Setup] Дочекатись дати початку прийому пропозицій ${provider1} 130 [Setup] Дочекатись дати початку прийому пропозицій ${provider1}
131 [Teardown] Оновити LAST_MODIFICATION_DATE 131 [Teardown] Оновити LAST_MODIFICATION_DATE
132 - ${bid}= Підготувати дані для подання пропозиції 132 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
133 Log ${bid} 133 Log ${bid}
134 ${bidresponses}= Create Dictionary 134 ${bidresponses}= Create Dictionary
135 Set To Dictionary ${bidresponses} bid ${bid} 135 Set To Dictionary ${bidresponses} bid ${bid}
@@ -80,7 +80,7 @@ ${complaint_id} 1 @@ -80,7 +80,7 @@ ${complaint_id} 1
80 ... ${USERS.users['${tender_owner}'].broker} 80 ... ${USERS.users['${tender_owner}'].broker}
81 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} 81 [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
82 [Teardown] Оновити LAST_MODIFICATION_DATE 82 [Teardown] Оновити LAST_MODIFICATION_DATE
83 - ${lot}= Підготовка даних для створення лоту 83 + ${lot}= Підготовка даних для створення лоту ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
84 ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot} 84 ${lot_resp}= Run As ${tender_owner} Створити лот ${TENDER['TENDER_UAID']} ${lot}
85 ${lot_id}= get_id_from_object ${lot.data} 85 ${lot_id}= get_id_from_object ${lot.data}
86 ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id} 86 ${lot_data}= Create Dictionary lot=${lot} lot_resp=${lot_resp} lot_id=${lot_id}
@@ -238,7 +238,7 @@ ${complaint_id} 1 @@ -238,7 +238,7 @@ ${complaint_id} 1
238 ... ${USERS.users['${provider}'].broker} 238 ... ${USERS.users['${provider}'].broker}
239 [Setup] Дочекатись синхронізації з майданчиком ${provider} 239 [Setup] Дочекатись синхронізації з майданчиком ${provider}
240 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots 240 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots
241 - ${bid}= Підготувати дані для подання пропозиції 241 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
242 ${bid_before_bidperiod_resp}= Require Failure ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} 242 ${bid_before_bidperiod_resp}= Require Failure ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}
243 log ${bid_before_bidperiod_resp} 243 log ${bid_before_bidperiod_resp}
244 244
@@ -249,7 +249,7 @@ ${complaint_id} 1 @@ -249,7 +249,7 @@ ${complaint_id} 1
249 ... provider 249 ... provider
250 ... ${USERS.users['${provider}'].broker} 250 ... ${USERS.users['${provider}'].broker}
251 [Setup] Дочекатись дати початку прийому пропозицій ${provider} 251 [Setup] Дочекатись дати початку прийому пропозицій ${provider}
252 - ${bid}= Підготувати дані для подання пропозиції 252 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
253 ${no_lot_bid_resp}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} 253 ${no_lot_bid_resp}= Require Failure ${provider} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid}
254 log ${no_lot_bid_resp} 254 log ${no_lot_bid_resp}
255 255
@@ -259,7 +259,7 @@ ${complaint_id} 1 @@ -259,7 +259,7 @@ ${complaint_id} 1
259 ... ${USERS.users['${provider}'].broker} 259 ... ${USERS.users['${provider}'].broker}
260 [Teardown] Оновити LAST_MODIFICATION_DATE 260 [Teardown] Оновити LAST_MODIFICATION_DATE
261 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots 261 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots
262 - ${bid}= Підготувати дані для подання пропозиції 262 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
263 ${bidresponses}= Create Dictionary bid=${bid} 263 ${bidresponses}= Create Dictionary bid=${bid}
264 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} 264 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
265 ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} 265 ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}
@@ -281,7 +281,7 @@ ${complaint_id} 1 @@ -281,7 +281,7 @@ ${complaint_id} 1
281 [Teardown] Оновити LAST_MODIFICATION_DATE 281 [Teardown] Оновити LAST_MODIFICATION_DATE
282 Дочекатись дати початку прийому пропозицій ${provider} 282 Дочекатись дати початку прийому пропозицій ${provider}
283 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots 283 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider} lots
284 - ${bid}= Підготувати дані для подання пропозиції 284 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
285 ${bidresponses}= Create Dictionary bid=${bid} 285 ${bidresponses}= Create Dictionary bid=${bid}
286 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} 286 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
287 ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} 287 ${resp}= Run As ${provider} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}
@@ -311,7 +311,7 @@ ${complaint_id} 1 @@ -311,7 +311,7 @@ ${complaint_id} 1
311 [Teardown] Оновити LAST_MODIFICATION_DATE 311 [Teardown] Оновити LAST_MODIFICATION_DATE
312 Дочекатись дати початку прийому пропозицій ${provider1} 312 Дочекатись дати початку прийому пропозицій ${provider1}
313 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider1} lots 313 @{lots_ids}= Отримати ідентифікатори об’єктів ${provider1} lots
314 - ${bid}= Підготувати дані для подання пропозиції 314 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
315 ${bidresponses}= Create Dictionary bid=${bid} 315 ${bidresponses}= Create Dictionary bid=${bid}
316 Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses} 316 Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}
317 ${resp}= Run As ${provider1} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} 317 ${resp}= Run As ${provider1} Подати цінову пропозицію на лоти ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}
  1 +# -*- coding: utf-8 -*-
  2 +from faker import Faker
  3 +from faker.providers import BaseProvider
  4 +from munch import Munch
  5 +from json import load
  6 +import os
  7 +
  8 +
  9 +def load_data_from_file(file_name):
  10 + if not os.path.exists(file_name):
  11 + file_name = os.path.join(os.path.dirname(__file__), 'data', file_name)
  12 + with open(file_name) as file_obj:
  13 + if file_name.endswith(".json"):
  14 + return Munch.fromDict(load(file_obj))
  15 + elif file_name.endswith(".yaml"):
  16 + return fromYAML(file_obj)
  17 +
  18 +
  19 +class OP_Provider(BaseProvider):
  20 + __fake_data = load_data_from_file("faker_data.json")
  21 + word_list = __fake_data.words
  22 + procuringEntities = __fake_data.procuringEntities
  23 + addresses = __fake_data.addresses
  24 + classifications = __fake_data.classifications
  25 + units = __fake_data.units
  26 + cpvs = __fake_data.cpvs
  27 + items_base_data = __fake_data.items_base_data
  28 +
  29 +
  30 + @classmethod
  31 + def randomize_nb_elements(self, number=10, le=60, ge=140):
  32 + """
  33 + Returns a random value near number.
  34 +
  35 + :param number: value to which the result must be near
  36 + :param le: lower limit of randomizing (percents). Default - 60
  37 + :param ge: upper limit of randomizing (percents). Default - 140
  38 + :returns: a random int in range [le * number / 100, ge * number / 100]
  39 + with minimum of 1
  40 + """
  41 + if le > ge:
  42 + raise Exception("Lower bound: {} is greater then upper: {}.".format(le, ge))
  43 + return int(number * self.random_int(min=le, max=ge) / 100) + 1
  44 +
  45 +
  46 + @classmethod
  47 + def word(self):
  48 + """
  49 + :example 'Курка'
  50 + """
  51 + return self.random_element(self.word_list)
  52 +
  53 +
  54 + @classmethod
  55 + def words(self, nb=3):
  56 + """
  57 + Generate an array of random words
  58 + :example: array('Надіньте', 'фуражка', 'зелено')
  59 + :param nb: how many words to return
  60 + """
  61 + return [self.word() for _ in range(0, nb)]
  62 +
  63 +
  64 + @classmethod
  65 + def sentence(self, nb_words=5, variable_nb_words=True):
  66 + """
  67 + Generate a random sentence
  68 + :example: 'Курка надіньте пречудовий зелено на.'
  69 + :param nb_words: how many words the sentence should contain
  70 + :param variable_nb_words: set to false if you want exactly $nbWords returned,
  71 + otherwise $nbWords may vary by +/-40% with a minimum of 1
  72 + """
  73 + if nb_words <= 0:
  74 + return ''
  75 +
  76 + if variable_nb_words:
  77 + nb_words = self.randomize_nb_elements(number=nb_words)
  78 +
  79 + words = self.words(nb_words)
  80 + words[0] = words[0].title()
  81 +
  82 + return " ".join(words) + '.'
  83 +
  84 +
  85 + @classmethod
  86 + def title(self):
  87 + return self.sentence(nb_words = 3)
  88 +
  89 +
  90 + @classmethod
  91 + def description(self):
  92 + return self.sentence(nb_words = 10)
  93 +
  94 +
  95 + @classmethod
  96 + def procuringEntity(self):
  97 + return self.random_element(self.procuringEntities)
  98 +
  99 +
  100 + @classmethod
  101 + def cpv(self):
  102 + return self.random_element(self.cpvs)
  103 +
  104 +
  105 + @classmethod
  106 + def fake_item(self, cpv_group=None):
  107 + """
  108 + Generate a random item for openprocurement tenders
  109 +
  110 + :param cpv_group: gives possibility to generate items
  111 + from one cpv group. Cpv group is three digits in the beginning
  112 + of each cpv id.
  113 + """
  114 + if cpv_group is None:
  115 + item_base_data = self.random_element(self.items_base_data)
  116 + else:
  117 + cpv_group = str(cpv_group)
  118 + similar_cpvs = []
  119 + for cpv_element in self.cpvs:
  120 + if cpv_element.startswith(cpv_group):
  121 + similar_cpvs.append(cpv_element)
  122 + cpv = self.random_element(similar_cpvs)
  123 + for entity in self.items_base_data:
  124 + if entity["cpv_id"] == cpv:
  125 + item_base_data = entity
  126 + break
  127 +
  128 + # choose appropriate dkpp classification for item_base_data's cpv
  129 + for entity in self.classifications:
  130 + if entity["classification"]["id"] == item_base_data["cpv_id"]:
  131 + classification = entity
  132 + break
  133 +
  134 + address = self.random_element(self.addresses)
  135 + unit = self.random_element(self.units)
  136 + item = {
  137 + "description": item_base_data["description"],
  138 + "classification": classification["classification"],
  139 + "additionalClassifications": classification["additionalClassifications"],
  140 + "deliveryAddress": address["deliveryAddress"],
  141 + "deliveryLocation": address["deliveryLocation"],
  142 + "unit": item_base_data["unit"],
  143 + "quantity": self.randomize_nb_elements(number=item_base_data["quantity"], le=80, ge=120)
  144 + }
  145 + return item
@@ -20,15 +20,12 @@ from math import radians, cos, sin, asin, sqrt @@ -20,15 +20,12 @@ from math import radians, cos, sin, asin, sqrt
20 from .initial_data import ( 20 from .initial_data import (
21 create_fake_doc, 21 create_fake_doc,
22 create_fake_sentence, 22 create_fake_sentence,
23 - test_award_data,  
24 test_bid_data, 23 test_bid_data,
25 test_cancel_claim_data, 24 test_cancel_claim_data,
26 test_cancel_tender_data, 25 test_cancel_tender_data,
27 - test_change_cancellation_document_field_data,  
28 test_claim_answer_data, 26 test_claim_answer_data,
29 test_claim_answer_satisfying_data, 27 test_claim_answer_satisfying_data,
30 test_claim_data, 28 test_claim_data,
31 - test_complaint_answer_data,  
32 test_complaint_data, 29 test_complaint_data,
33 test_complaint_reply_data, 30 test_complaint_reply_data,
34 test_confirm_data, 31 test_confirm_data,
@@ -369,7 +369,7 @@ ${mode} single @@ -369,7 +369,7 @@ ${mode} single
369 ... provider 369 ... provider
370 ... ${USERS.users['${provider}'].broker} 370 ... ${USERS.users['${provider}'].broker}
371 [Setup] Дочекатись синхронізації з майданчиком ${provider} 371 [Setup] Дочекатись синхронізації з майданчиком ${provider}
372 - ${bid}= Підготувати дані для подання пропозиції 372 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
373 Log ${bid} 373 Log ${bid}
374 ${bidresponses}= Create Dictionary bid=${bid} 374 ${bidresponses}= Create Dictionary bid=${bid}
375 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} 375 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
@@ -420,7 +420,7 @@ ${mode} single @@ -420,7 +420,7 @@ ${mode} single
420 ... ${USERS.users['${provider}'].broker} 420 ... ${USERS.users['${provider}'].broker}
421 [Setup] Дочекатись дати початку прийому пропозицій ${provider} 421 [Setup] Дочекатись дати початку прийому пропозицій ${provider}
422 [Teardown] Оновити LAST_MODIFICATION_DATE 422 [Teardown] Оновити LAST_MODIFICATION_DATE
423 - ${bid}= Підготувати дані для подання пропозиції 423 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
424 Log ${bid} 424 Log ${bid}
425 ${bidresponses}= Create Dictionary bid=${bid} 425 ${bidresponses}= Create Dictionary bid=${bid}
426 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} 426 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
@@ -445,7 +445,7 @@ ${mode} single @@ -445,7 +445,7 @@ ${mode} single
445 ... minimal 445 ... minimal
446 [Setup] Дочекатись дати початку прийому пропозицій ${provider} 446 [Setup] Дочекатись дати початку прийому пропозицій ${provider}
447 [Teardown] Оновити LAST_MODIFICATION_DATE 447 [Teardown] Оновити LAST_MODIFICATION_DATE
448 - ${bid}= Підготувати дані для подання пропозиції 448 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
449 Log ${bid} 449 Log ${bid}
450 ${bidresponses}= Create Dictionary bid=${bid} 450 ${bidresponses}= Create Dictionary bid=${bid}
451 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses} 451 Set To Dictionary ${USERS.users['${provider}']} bidresponses=${bidresponses}
@@ -516,7 +516,7 @@ ${mode} single @@ -516,7 +516,7 @@ ${mode} single
516 ... minimal 516 ... minimal
517 [Setup] Дочекатись дати початку прийому пропозицій ${provider1} 517 [Setup] Дочекатись дати початку прийому пропозицій ${provider1}
518 [Teardown] Оновити LAST_MODIFICATION_DATE 518 [Teardown] Оновити LAST_MODIFICATION_DATE
519 - ${bid}= Підготувати дані для подання пропозиції 519 + ${bid}= Підготувати дані для подання пропозиції ${USERS.users['${tender_owner}'].initial_data.data.value.amount}
520 Log ${bid} 520 Log ${bid}
521 ${bidresponses}= Create Dictionary bid=${bid} 521 ${bidresponses}= Create Dictionary bid=${bid}
522 Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses} 522 Set To Dictionary ${USERS.users['${provider1}']} bidresponses=${bidresponses}
Please register or login to post a comment