Commit bac19112c2a01c86aad97eb5fb89917dd9a276d6
Merge pull request #129 from mykhaly/update_time_comparison
Update time comparison
Showing
5 changed files
with
53 additions
and
13 deletions
| @@ -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