Skip to content

Commit 5729d3e

Browse files
committed
moved helper functions to utils.py + added tests
1 parent c759b46 commit 5729d3e

File tree

3 files changed

+75
-16
lines changed

3 files changed

+75
-16
lines changed

tests/test_utils.py

+50
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
safe_save,
2828
parse_tags,
2929
PY2,
30+
isTime,
31+
isDateTime,
32+
getDateTimeToday,
33+
getMergedDateTime
3034
)
3135
from . import mock_datetime
3236

@@ -228,3 +232,49 @@ def test_confirm_tags_reject_raises_abort(confirm):
228232
watson_tags = ['a', 'b']
229233
with pytest.raises(Abort):
230234
confirm_project(tags, watson_tags)
235+
236+
237+
@pytest.mark.parametrize("date_time_string, result", [
238+
("2018-05-28 7:00", False),
239+
("2018-05.28 7:00", False),
240+
("7:00", True),
241+
("17:00", True),
242+
("117:00", False),
243+
("117", False),
244+
])
245+
def test_isTime(date_time_string, result):
246+
assert isTime(date_time_string) == result
247+
248+
249+
@pytest.mark.parametrize("date_time_string, result", [
250+
("2018-05-28 7:00", True),
251+
("2018-05-28 07:00", True),
252+
("2018-05-28 127:00", False),
253+
("2018-05-f 7:00", False),
254+
("2018-05-28 7.00", False),
255+
("7:00", False),
256+
])
257+
def test_isDateTime(date_time_string, result):
258+
assert isDateTime(date_time_string) == result
259+
260+
261+
@pytest.mark.parametrize("date_time, time_string", [
262+
("2014-04-01", "07:00"),
263+
("2014-04-01", "17:00"),
264+
])
265+
def test_getMergedDateTime(date_time, time_string):
266+
result = arrow.get("{} {}".format(date_time, time_string), 'YYYY-MM-DD HH:mm')
267+
date = arrow.get(date_time, 'YYYY-MM-DD')
268+
assert getMergedDateTime(date, time_string) == result
269+
270+
271+
@pytest.mark.parametrize("time_string", [
272+
("07:00"),
273+
("17:00"),
274+
("09:05"),
275+
("13:37"),
276+
])
277+
def test_getDateTimeToday(time_string):
278+
today = datetime.date.today().strftime("%Y-%m-%d")
279+
result = arrow.get("{} {}".format(today, time_string), 'YYYY-MM-DD HH:mm').replace(tzinfo='local')
280+
assert getDateTimeToday(time_string) == result

watson/cli.py

+4-16
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
sorted_groupby,
2727
style,
2828
parse_tags,
29+
isTime,
30+
isDateTime,
31+
getDateTimeToday,
32+
getMergedDateTime
2933
)
3034

3135

@@ -1013,22 +1017,6 @@ def frames(watson):
10131017
for frame in watson.frames:
10141018
click.echo(style('short_id', frame.id))
10151019

1016-
def isTime(date_time_string):
1017-
match = re.search("^\d{1,2}:\d{1,2}$", date_time_string)
1018-
return match != None
1019-
1020-
def isDateTime(date_time_string):
1021-
match = re.search("^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}$", date_time_string)
1022-
return match != None
1023-
1024-
def getDateTimeToday(time_string):
1025-
date_today = arrow.now().floor("day")
1026-
return getMergedDateTime(date_today, time_string)
1027-
1028-
def getMergedDateTime(date_time, time_string):
1029-
hours, minutes = time_string.split(":")
1030-
return date_time.shift(hours=int(hours), minutes=int(minutes))
1031-
10321020
@cli.command(context_settings={'ignore_unknown_options': True})
10331021
@click.argument('args', nargs=-1)
10341022
@click.option('-f', '--from', 'from_', required=True,

watson/utils.py

+21
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import click
1111
import arrow
12+
import re
1213

1314
from .fullmoon import get_last_full_moon
1415

@@ -282,3 +283,23 @@ def parse_tags(values_list):
282283
))
283284
for i, w in enumerate(values_list) if w.startswith('+')
284285
)))) # pile of pancakes !
286+
287+
288+
def isTime(date_time_string):
289+
match = re.search("^\d{1,2}:\d{1,2}$", date_time_string)
290+
return match != None
291+
292+
293+
def isDateTime(date_time_string):
294+
match = re.search("^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}$", date_time_string)
295+
return match != None
296+
297+
298+
def getDateTimeToday(time_string):
299+
date_today = arrow.now().floor("day")
300+
return getMergedDateTime(date_today, time_string)
301+
302+
303+
def getMergedDateTime(date_time, time_string):
304+
hours, minutes = time_string.split(":")
305+
return date_time.shift(hours=int(hours), minutes=int(minutes))

0 commit comments

Comments
 (0)