From e039547762a8ed4abbdbab722d07dd7fce6d09e2 Mon Sep 17 00:00:00 2001
From: Maxime Beauchemin <maximebeauchemin@gmail.com>
Date: Wed, 10 Feb 2016 09:34:09 -0800
Subject: [PATCH] More tests using doctests

---
 panoramix/utils.py  | 20 ++++++++++++++++++--
 tests/core_tests.py |  8 ++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/panoramix/utils.py b/panoramix/utils.py
index 951094897180f..1a3b31ac0a79d 100644
--- a/panoramix/utils.py
+++ b/panoramix/utils.py
@@ -1,4 +1,4 @@
-from datetime import datetime
+from datetime import datetime, date, timedelta
 import functools
 import hashlib
 import json
@@ -52,6 +52,7 @@ def parse_human_datetime(s):
     >>> parse_human_datetime("now") <= datetime.now()
     True
     >>> parse_human_datetime("yesterday") <= datetime.now()
+    True
     >>> date.today() - timedelta(1) == parse_human_datetime('yesterday').date()
     True
     """
@@ -118,6 +119,15 @@ def __init__(self, hash_based=False):
         self.hash_based = hash_based
 
     def get(self, s):
+        """
+        >>> cf = ColorFactory()
+        >>> cf.get('item_1')
+        '#ff5a5f'
+        >>> cf.get('item_2')
+        '#7b0051'
+        >>> cf.get('item_1')
+        '#ff5a5f'
+        """
         if self.hash_based:
             s = s.encode('utf-8')
             h = hashlib.md5(s)
@@ -202,6 +212,9 @@ def wrapper(*args, **kwargs):
 
 
 def datetime_f(dttm):
+    """
+    Formats datetime to take less room is recent
+    """
     if dttm:
         dttm = dttm.isoformat()
         now_iso = datetime.now().isoformat()
@@ -215,7 +228,10 @@ def datetime_f(dttm):
 def json_iso_dttm_ser(obj):
     """
     json serializer that deals with dates
-    usage: json.dumps(object, default=utils.json_ser)
+
+    >>> dttm = datetime(1970, 1, 1)
+    >>> json.dumps({'dttm': dttm}, default=json_iso_dttm_ser)
+    '{"dttm": "1970-01-01T00:00:00"}'
     """
     if isinstance(obj, datetime):
         obj = obj.isoformat()
diff --git a/tests/core_tests.py b/tests/core_tests.py
index 09a1bff82d98b..7101b5dd79b95 100644
--- a/tests/core_tests.py
+++ b/tests/core_tests.py
@@ -1,4 +1,5 @@
 import imp
+import doctest
 import os
 import unittest
 os.environ['PANORAMIX_CONFIG'] = 'tests.panoramix_test_config'
@@ -43,6 +44,13 @@ def test_dashboard(self):
         for dash in db.session.query(models.Dashboard).all():
             self.client.get(dash.url)
 
+    def test_doctests(self):
+        modules = [utils]
+        for mod in modules:
+            failed, tests = doctest.testmod(mod)
+            if failed:
+                raise Exception("Failed a doctest")
+
     def tearDown(self):
         pass