Commit bac19112c2a01c86aad97eb5fb89917dd9a276d6

Authored by Yurii Mykhalchuk
2 parents ff6ef809 385a437f

Merge pull request #129 from mykhaly/update_time_comparison

Update time comparison
@@ -380,15 +380,15 @@ Get Broker Property By Username @@ -380,15 +380,15 @@ Get Broker Property By Username
380 380
381 381
382 Звірити дату тендера 382 Звірити дату тендера
383 - [Arguments] ${username} ${tender_data} ${field} 383 + [Arguments] ${username} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False}
384 ${left}= Get_From_Object ${tender_data.data} ${field} 384 ${left}= Get_From_Object ${tender_data.data} ${field}
385 - Звірити дату тендера із значенням ${username} ${left} ${field} 385 + Звірити дату тендера із значенням ${username} ${left} ${field} accuracy=${accuracy} absolute_delta=${absolute_delta}
386 386
387 387
388 Звірити дату тендера із значенням 388 Звірити дату тендера із значенням
389 - [Arguments] ${username} ${left} ${field} ${object_id}=${None} 389 + [Arguments] ${username} ${left} ${field} ${object_id}=${None} ${accuracy}=60 ${absolute_delta}=${False}
390 ${right}= Отримати дані із тендера ${username} ${field} ${object_id} 390 ${right}= Отримати дані із тендера ${username} ${field} ${object_id}
391 - Порівняти дати ${left} ${right} 391 + Порівняти дати ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta}
392 392
393 393
394 Порівняти дати 394 Порівняти дати
@@ -399,12 +399,12 @@ Get Broker Property By Username @@ -399,12 +399,12 @@ Get Broker Property By Username
399 ... The keyword will fail if the difference between 399 ... The keyword will fail if the difference between
400 ... ``left`` and ``right`` dates is more than ``accuracy``, 400 ... ``left`` and ``right`` dates is more than ``accuracy``,
401 ... otherwise it will pass. 401 ... otherwise it will pass.
402 - [Arguments] ${left} ${right} ${accuracy}=60 402 + [Arguments] ${left} ${right} ${accuracy}=60 ${absolute_delta}=${False}
403 Log ${left} 403 Log ${left}
404 Log ${right} 404 Log ${right}
405 Should Not Be Equal ${left} ${None} 405 Should Not Be Equal ${left} ${None}
406 Should Not Be Equal ${right} ${None} 406 Should Not Be Equal ${right} ${None}
407 - ${status}= compare_date ${left} ${right} ${accuracy} 407 + ${status}= compare_date ${left} ${right} accuracy=${accuracy} absolute_delta=${absolute_delta}
408 Should Be True ${status} msg=Dates are not equal: ${left} != ${right} 408 Should Be True ${status} msg=Dates are not equal: ${left} != ${right}
409 409
410 410
@@ -418,12 +418,12 @@ Get Broker Property By Username @@ -418,12 +418,12 @@ Get Broker Property By Username
418 418
419 419
420 Звірити дату предметів закупівлі багатопредметного тендера 420 Звірити дату предметів закупівлі багатопредметного тендера
421 - [Arguments] ${username} ${tender_data} ${field} 421 + [Arguments] ${username} ${tender_data} ${field} ${accuracy}=60 ${absolute_delta}=${False}
422 @{items}= Get_From_Object ${tender_data.data} items 422 @{items}= Get_From_Object ${tender_data.data} items
423 ${len_of_items}= Get Length ${items} 423 ${len_of_items}= Get Length ${items}
424 :FOR ${index} IN RANGE ${len_of_items} 424 :FOR ${index} IN RANGE ${len_of_items}
425 \ Log ${index} 425 \ Log ${index}
426 - \ Звірити дату тендера ${viewer} ${tender_data} items[${index}].${field} 426 + \ Звірити дату тендера ${viewer} ${tender_data} items[${index}].${field} accuracy=${accuracy} absolute_delta=${absolute_delta}
427 427
428 428
429 Отримати дані із тендера 429 Отримати дані із тендера
@@ -310,6 +310,8 @@ Resource resource.robot @@ -310,6 +310,8 @@ Resource resource.robot
310 Звірити дату тендера ${viewer} 310 Звірити дату тендера ${viewer}
311 ... ${USERS.users['${tender_owner}'].initial_data} 311 ... ${USERS.users['${tender_owner}'].initial_data}
312 ... items[${ITEMS_NUM}].deliveryDate.endDate 312 ... items[${ITEMS_NUM}].deliveryDate.endDate
  313 + ... day
  314 + ... absolute_delta=${True}
313 315
314 316
315 Відображення координат широти доставки номенклатури закупівлі 317 Відображення координат широти доставки номенклатури закупівлі
@@ -49,7 +49,7 @@ ${mode} multiItem @@ -49,7 +49,7 @@ ${mode} multiItem
49 ... viewer 49 ... viewer
50 ... ${USERS.users['${viewer}'].broker} 50 ... ${USERS.users['${viewer}'].broker}
51 ... level3 51 ... level3
52 - Звірити дату предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryDate.endDate 52 + Звірити дату предметів закупівлі багатопредметного тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} deliveryDate.endDate day absolute_delta=${True}
53 53
54 Відображення координат широти доставки позицій закупівлі багатопредметного тендера 54 Відображення координат широти доставки позицій закупівлі багатопредметного тендера
55 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера 55 [Tags] ${USERS.users['${viewer}'].broker}: Відображення полів предметів багатопредметного тендера
@@ -60,7 +60,7 @@ def get_current_tzdate(): @@ -60,7 +60,7 @@ def get_current_tzdate():
60 60
61 61
62 def add_minutes_to_date(date, minutes): 62 def add_minutes_to_date(date, minutes):
63 - return (parse_date(date) + timedelta(minutes=int(minutes))).isoformat() 63 + return (parse(date) + timedelta(minutes=float(minutes))).isoformat()
64 64
65 65
66 def get_file_contents(path): 66 def get_file_contents(path):
@@ -68,16 +68,54 @@ def get_file_contents(path): @@ -68,16 +68,54 @@ def get_file_contents(path):
68 return unicode(f.read()) or u'' 68 return unicode(f.read()) or u''
69 69
70 70
71 -def compare_date(date1, date2, accuracy): 71 +def compare_date(date1, date2, accuracy="minute", absolute_delta=True):
  72 + '''Compares dates with specified accuracy
  73 +
  74 + Before comparison dates are parsed into datetime.datetime format
  75 + and localized.
  76 +
  77 + :param date1: First date
  78 + :param date2: Second date
  79 + :param accuracy: Max difference between dates to consider them equal
  80 + Default value - "minute"
  81 + Possible values - "day", "hour", "minute" or float value
  82 + of seconds
  83 + :param absolute_delta: Type of comparison. If set to True, then no matter which date order. If set to
  84 + False then date2 must be lower then date1 for accuracy value.
  85 + Default value - True
  86 + Possible values - True and False or something what can be casted into them
  87 + :returns: Boolean value
  88 +
  89 + :error: ValueError when there is problem with converting accuracy
  90 + into float value. When it will be catched warning will be
  91 + given and accuracy will be set to 60.
  92 +
  93 + '''
72 date1 = parse(date1) 94 date1 = parse(date1)
73 date2 = parse(date2) 95 date2 = parse(date2)
  96 +
74 if date1.tzinfo is None: 97 if date1.tzinfo is None:
75 date1 = TZ.localize(date1) 98 date1 = TZ.localize(date1)
76 if date2.tzinfo is None: 99 if date2.tzinfo is None:
77 date2 = TZ.localize(date2) 100 date2 = TZ.localize(date2)
78 101
79 delta = (date1 - date2).total_seconds() 102 delta = (date1 - date2).total_seconds()
80 - if abs(delta) > accuracy: 103 +
  104 + if accuracy == "day":
  105 + accuracy = 24 * 60 * 60 - 1
  106 + elif accuracy == "hour":
  107 + accuracy = 60 * 60 - 1
  108 + elif accuracy == "minute":
  109 + accuracy = 60 - 1
  110 + else:
  111 + try:
  112 + accuracy = float(accuracy)
  113 + except ValueError:
  114 + LOGGER.log_message(Message("Could not convert from {} to float. Accuracy is set to 60 seconds.".format(accuracy), "WARN"))
  115 + accuracy = 60
  116 + if absolute_delta:
  117 + delta = abs(delta)
  118 + if delta > accuracy:
81 return False 119 return False
82 return True 120 return True
83 121
@@ -166,7 +166,7 @@ ${mode} single @@ -166,7 +166,7 @@ ${mode} single
166 ... viewer 166 ... viewer
167 ... ${USERS.users['${viewer}'].broker} 167 ... ${USERS.users['${viewer}'].broker}
168 ... level3 168 ... level3
169 - Звірити дату тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryDate.endDate 169 + Звірити дату тендера ${viewer} ${USERS.users['${tender_owner}'].initial_data} items[0].deliveryDate.endDate day absolute_delta=${True}
170 170
171 171
172 Відображення координат широти доставки номенклатури однопредметного тендера 172 Відображення координат широти доставки номенклатури однопредметного тендера
Please register or login to post a comment