Skip to content

Commit

Permalink
Merge pull request #47 from bport/unittest
Browse files Browse the repository at this point in the history
Add unittests, port Config code to SQLAlchemy
  • Loading branch information
agateau committed Dec 1, 2014
2 parents c779849 + 7ed4eb8 commit e225b19
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 6 deletions.
53 changes: 53 additions & 0 deletions yokadi/tests/conftestcase.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# -*- coding: UTF-8 -*-
"""
Alias test cases
@author: Benjamin Port <benjamin.port@ben2367.fr>
@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")
16 changes: 14 additions & 2 deletions yokadi/tests/projecttestcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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")
Expand Down Expand Up @@ -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
10 changes: 10 additions & 0 deletions yokadi/tests/tasktestcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down Expand Up @@ -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
1 change: 1 addition & 0 deletions yokadi/tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
from cryptotestcase import CryptoTestCase
from tuitestcase import TuiTestCase
from helptestcase import HelpTestCase
from conftestcase import ConfTestCase


def main():
Expand Down
11 changes: 7 additions & 4 deletions yokadi/ycli/confcmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
@author: Sébastien Renard <sebastien.renard@digitalfox.org>
@license: GPL v3 or later
"""
from yokadi.core import db

from yokadi.core.db import Config
from yokadi.core.yokadiexception import YokadiException, BadUsageException
Expand All @@ -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)
Expand All @@ -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

Expand Down

0 comments on commit e225b19

Please sign in to comment.