From b822ee93001f3db06410000628561d860ca8cb4b Mon Sep 17 00:00:00 2001 From: Benjamin Port Date: Thu, 11 Sep 2014 14:59:52 +0200 Subject: [PATCH 1/3] Add unit test for project status and p_remove --- yokadi/tests/projecttestcase.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/yokadi/tests/projecttestcase.py b/yokadi/tests/projecttestcase.py index b7a64dca..4f2f8e42 100644 --- a/yokadi/tests/projecttestcase.py +++ b/yokadi/tests/projecttestcase.py @@ -12,7 +12,7 @@ from yokadi.core import db, dbutils from yokadi.core.db import Project, Keyword, Task from yokadi.core.yokadiexception import YokadiException -from yokadi.ycli.projectcmd import ProjectCmd +from yokadi.ycli.main import YokadiCmd from yokadi.ycli import tui @@ -21,7 +21,7 @@ def setUp(self): db.connectDatabase("", memoryDatabase=True) self.session = db.getSession() tui.clearInputAnswers() - self.cmd = ProjectCmd() + self.cmd = YokadiCmd() def testAdd(self): tui.addInputAnswers("y") @@ -77,4 +77,16 @@ def testRemove(self): self.assertEqual(list(self.session.query(Task).filter_by(id=taskId)), []) + def testStatus(self): + # Create project p1 and test set active and set inactive method + self.cmd.do_p_add("p1") + project = self.session.query(Project).filter_by(id=1).one() + self.assertEqual(project.name, "p1") + + self.assertEqual(project.active, True) + self.cmd.do_p_set_inactive("p1") + self.assertEqual(project.active, False) + self.cmd.do_p_set_active("p1") + self.assertEqual(project.active, True) + # vi: ts=4 sw=4 et From acd8dd81685245bbb6b96b599a0c394afbcc6118 Mon Sep 17 00:00:00 2001 From: Benjamin Port Date: Thu, 11 Sep 2014 18:44:10 +0200 Subject: [PATCH 2/3] Add unittest for Config And fix problem with Config --- yokadi/tests/conftestcase.py | 53 ++++++++++++++++++++++++++++++++++++ yokadi/tests/tests.py | 1 + yokadi/ycli/confcmd.py | 11 +++++--- 3 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 yokadi/tests/conftestcase.py diff --git a/yokadi/tests/conftestcase.py b/yokadi/tests/conftestcase.py new file mode 100644 index 00000000..57c74f76 --- /dev/null +++ b/yokadi/tests/conftestcase.py @@ -0,0 +1,53 @@ +# -*- coding: UTF-8 -*- +""" +Alias test cases +@author: Benjamin Port +@license: GPL v3 or later +""" + +import unittest +import sys +from io import StringIO + +from yokadi.core import db +from yokadi.core.db import setDefaultConfig +from yokadi.core.yokadiexception import YokadiException +from yokadi.ycli import tui +from yokadi.ycli.main import YokadiCmd + + +class ConfTestCase(unittest.TestCase): + def setUp(self): + db.connectDatabase("", memoryDatabase=True) + setDefaultConfig() + self.session = db.getSession() + tui.clearInputAnswers() + self.cmd = YokadiCmd() + + def testConfig(self): + out = StringIO() + oldstdout = sys.stdout + tui.stdout = out + self.cmd.do_c_set("ALARM_DELAY 69") + self.cmd.do_c_get("ALARM_DELAY") + self.assertTrue("ALARM_DELAY" in out.getvalue()) + self.assertTrue("69" in out.getvalue()) + tui.stdout = oldstdout + + def testPositiveValueConfig(self): + self.assertRaises(YokadiException, self.cmd.do_c_set, "ALARM_DELAY -1") + self.assertRaises(YokadiException, self.cmd.do_c_set, "ALARM_SUSPEND -1") + self.assertRaises(YokadiException, self.cmd.do_c_set, "PURGE_DELAY -1") + + def testPassphraseCacheValue(self): + # Test PASSPHRASE_CACHE error + self.assertRaises(YokadiException, self.cmd.do_c_set, "PASSPHRASE_CACHE 2") + + # Test PASSPHRASE_CACHE valid value (if that work we don't have exception) + self.cmd.do_c_set("PASSPHRASE_CACHE 0") + self.cmd.do_c_set("PASSPHRASE_CACHE 1") + + def testWrongKey(self): + # Test PASSPHRASE_CACHE error + self.assertRaises(YokadiException, self.cmd.do_c_set, "BAD_KEY value") + self.assertRaises(YokadiException, self.cmd.do_c_get, "BAD_KEY") diff --git a/yokadi/tests/tests.py b/yokadi/tests/tests.py index d2d9c920..bac70eb9 100755 --- a/yokadi/tests/tests.py +++ b/yokadi/tests/tests.py @@ -38,6 +38,7 @@ from cryptotestcase import CryptoTestCase from tuitestcase import TuiTestCase from helptestcase import HelpTestCase +from conftestcase import ConfTestCase def main(): diff --git a/yokadi/ycli/confcmd.py b/yokadi/ycli/confcmd.py index 55602bc3..148fa500 100644 --- a/yokadi/ycli/confcmd.py +++ b/yokadi/ycli/confcmd.py @@ -5,6 +5,7 @@ @author: Sébastien Renard @license: GPL v3 or later """ +from yokadi.core import db from yokadi.core.db import Config from yokadi.core.yokadiexception import YokadiException, BadUsageException @@ -28,7 +29,8 @@ def do_c_get(self, line): key = args.key if not key: key = "%" - k = Config.select(AND(LIKE(Config.q.name, key), Config.q.system == args.system)) + session = db.getSession() + k = session.query(Config).filter(Config.name.like(key)).filter_by(system=args.system).all() fields = [(x.name, "%s (%s)" % (x.value, x.desc)) for x in k] if fields: tui.renderFields(fields) @@ -44,15 +46,16 @@ def do_c_set(self, line): raise BadUsageException("You should provide two arguments : the parameter key and the value") name = line[0] value = " ".join(line[1:]) - p = Config.select(AND(Config.q.name == name, Config.q.system == False)) + session = db.getSession() + p = session.query(Config).filter_by(name=name, system=False) if p.count() == 0: - tui.error("Sorry, no parameter match") + raise YokadiException("Sorry, no parameter match") else: if self.checkParameterValue(name, value): p[0].value = value tui.info("Parameter updated") else: - tui.error("Parameter value is incorrect") + raise YokadiException("Parameter value is incorrect") complete_c_set = confCompleter From 7ed4eb87ddd50f53ee0197c2ce6f412e72b567ca Mon Sep 17 00:00:00 2001 From: Benjamin Port Date: Fri, 12 Sep 2014 10:04:59 +0200 Subject: [PATCH 3/3] Improve taskcmd test t_mark_new t_remove --- yokadi/tests/tasktestcase.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/yokadi/tests/tasktestcase.py b/yokadi/tests/tasktestcase.py index 1c10337a..f8556fa0 100644 --- a/yokadi/tests/tasktestcase.py +++ b/yokadi/tests/tasktestcase.py @@ -92,6 +92,8 @@ def testMark(self): self.assertEqual(task.status, "new") self.cmd.do_t_mark_started("1") self.assertEqual(task.status, "started") + self.cmd.do_t_mark_new("1") + self.assertEqual(task.status, "new") self.cmd.do_t_mark_done("1") self.assertEqual(task.status, "done") @@ -273,4 +275,12 @@ def testDue(self): for bad_input in ("coucou", "+1s"): self.assertRaises(YokadiException, self.cmd.do_t_due, "1 %s" % bad_input) + def testRemove(self): + tui.addInputAnswers("y") + self.cmd.do_t_add("x t1") + self.assertEqual(self.session.query(Task).count(), 1) + tui.addInputAnswers("y") + self.cmd.do_t_remove("1") + self.assertEqual(self.session.query(Task).count(), 0) + # vi: ts=4 sw=4 et