summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bvggrabber/api/__init__.py16
-rw-r--r--tests/test_api.py66
2 files changed, 66 insertions, 16 deletions
diff --git a/bvggrabber/api/__init__.py b/bvggrabber/api/__init__.py
index daaeca0..1e31359 100644
--- a/bvggrabber/api/__init__.py
+++ b/bvggrabber/api/__init__.py
@@ -21,14 +21,14 @@ class Departure():
def __init__(self, start, end, when, line):
self.start = start
self.end = end
+ self.now = datetime.now()
if isinstance(when, (int, float)):
- # We assume to get a UNIX timestamp
+ # We assume to get a UNIX / POSIX timestamp
self.when = datetime.fromtimestamp(when)
elif isinstance(when, str):
self.when = parse(when)
- now = datetime.now()
- if (self.when - now).total_seconds() < 0:
- self.when = self.when.replace(day=self.when.day + 1)
+ #if (self.when - self.now).total_seconds() < -60:
+ # self.when = self.when + timedelta(days=1)
elif isinstance(when, datetime):
self.when = when
else:
@@ -36,11 +36,13 @@ class Departure():
self.line = line
def __str__(self):
- return "Start: %s, End: %s, when: %s, line: %s" % (
- self.start, self.end, fullformat(self.when), self.line)
+ return "Start: %s, End: %s, when: %s, now: %s, line: %s" % (
+ self.start, self.end, fullformat(self.when), fullformat(self.now),
+ self.line)
+ @property
def remaining(self):
- return self.when - datetime.now()
+ return self.when - self.now
def to_json(self):
pass
diff --git a/tests/test_api.py b/tests/test_api.py
index bf50865..8493524 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -2,7 +2,7 @@
import time
import unittest
-from datetime import datetime
+from datetime import datetime, timedelta
from bvggrabber.api import QueryApi, Departure
@@ -16,26 +16,74 @@ class TestQueryApi(unittest.TestCase):
class TestDeparture(unittest.TestCase):
+ def setUp(self):
+ self.td = timedelta(minutes=10)
+
def test_timestamp_futur(self):
when = time.time() + 10 * 60
dep = Departure("from", "to", when, "line")
- self.assertLessEqual(dep.remaining().total_seconds(), 600)
- self.assertGreaterEqual(dep.remaining().total_seconds(), 590)
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, 600)
+ self.assertGreaterEqual(diff, 590)
+
+ def test_timestamp_now(self):
+ when = time.time()
+ dep = Departure("from", "to", when, "line")
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, 5)
+ self.assertGreaterEqual(diff, -5)
+
+ def test_timestamp_past(self):
+ when = time.time() - 10 * 60
+ dep = Departure("from", "to", when, "line")
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, -600)
+ self.assertGreaterEqual(diff, -610)
def test_string_futur(self):
+ when = datetime.now() + self.td
+ when = when.strftime('%Y-%m-%d %H:%M:%S')
+ dep = Departure("from", "to", when, "line")
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, 600)
+ self.assertGreaterEqual(diff, 590)
+
+ def test_string_now(self):
when = datetime.now()
- when = when.replace(minute=when.minute + 10)
when = when.strftime('%Y-%m-%d %H:%M:%S')
dep = Departure("from", "to", when, "line")
- self.assertLessEqual(dep.remaining().total_seconds(), 600)
- self.assertGreaterEqual(dep.remaining().total_seconds(), 590)
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, 5)
+ self.assertGreaterEqual(diff, -5)
+
+ def test_string_past(self):
+ when = datetime.now() - self.td
+ when = when.strftime('%Y-%m-%d %H:%M:%S')
+ dep = Departure("from", "to", when, "line")
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, -600)
+ self.assertGreaterEqual(diff, -610)
def test_datetime_futur(self):
+ when = datetime.now() + self.td
+ dep = Departure("from", "to", when, "line")
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, 600)
+ self.assertGreaterEqual(diff, 590)
+
+ def test_datetime_now(self):
when = datetime.now()
- when = when.replace(minute=when.minute + 10)
dep = Departure("from", "to", when, "line")
- self.assertLessEqual(dep.remaining().total_seconds(), 600)
- self.assertGreaterEqual(dep.remaining().total_seconds(), 590)
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, 5)
+ self.assertGreaterEqual(diff, -5)
+
+ def test_datetime_past(self):
+ when = datetime.now() - self.td
+ dep = Departure("from", "to", when, "line")
+ diff = dep.remaining.total_seconds()
+ self.assertLessEqual(diff, -600)
+ self.assertGreaterEqual(diff, -610)
def test_error(self):
self.assertRaises(ValueError, Departure, "from", "to", "foo", "line")