summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElena ``of Valhalla'' Grandi <valhalla@trueelena.org>2022-08-04 19:47:28 +0200
committerElena ``of Valhalla'' Grandi <valhalla@trueelena.org>2022-08-04 19:47:28 +0200
commit088e4cc92e677e03390e7d84a6e8e18c1ef82c3b (patch)
treef1725c929c1babb71e88f9a8f774e74d65c7c3f4
parentb826943adfb9a885ddbe412c8045fe2d3caa7d51 (diff)
Use the hazwaz facilities to test the command line
-rw-r--r--lesana/command.py19
-rwxr-xr-xscripts/lesana21
-rw-r--r--tests/test_commands.py214
3 files changed, 125 insertions, 129 deletions
diff --git a/lesana/command.py b/lesana/command.py
index 8c0ac15..02c44e2 100644
--- a/lesana/command.py
+++ b/lesana/command.py
@@ -434,3 +434,22 @@ class Update(Command):
field=self.args.field,
value=self.args.value,
)
+
+
+class Lesana(hazwaz.MainCommand):
+ """
+ Manage collections
+ """
+
+ commands = (
+ New(),
+ Edit(),
+ Show(),
+ Index(),
+ Search(),
+ GetValues(),
+ Update(),
+ Export(),
+ Init(),
+ Remove(),
+ )
diff --git a/scripts/lesana b/scripts/lesana
index 5c84d56..c2d0eec 100755
--- a/scripts/lesana
+++ b/scripts/lesana
@@ -9,25 +9,6 @@ import hazwaz
import lesana.command
-class Lesana(hazwaz.MainCommand):
- """
- Manage collections
- """
-
- commands = (
- lesana.command.New(),
- lesana.command.Edit(),
- lesana.command.Show(),
- lesana.command.Index(),
- lesana.command.Search(),
- lesana.command.GetValues(),
- lesana.command.Update(),
- lesana.command.Export(),
- lesana.command.Init(),
- lesana.command.Remove(),
- )
-
-
if __name__ == "__main__":
# setup logging for lesana cli
@@ -38,4 +19,4 @@ if __name__ == "__main__":
logger.addHandler(ch)
logger.setLevel(logging.INFO)
- Lesana().run()
+ lesana.command.Lesana().run()
diff --git a/tests/test_commands.py b/tests/test_commands.py
index d52908a..044caa9 100644
--- a/tests/test_commands.py
+++ b/tests/test_commands.py
@@ -4,6 +4,8 @@ import os
import tempfile
import unittest
+import hazwaz.unittest
+
from lesana import command
from . import utils
@@ -40,7 +42,7 @@ class CommandsMixin:
return stream
-class testCommandsSimple(unittest.TestCase, CommandsMixin):
+class testCommandsSimple(hazwaz.unittest.HazwazTestCase, CommandsMixin):
def setUp(self):
self.tmpdir = tempfile.TemporaryDirectory()
utils.copytree(
@@ -48,66 +50,72 @@ class testCommandsSimple(unittest.TestCase, CommandsMixin):
self.tmpdir.name,
dirs_exist_ok=True,
)
+ self.lesana = command.Lesana()
+ for cmd in self.lesana.commands:
+ cmd.editors = [("true", "true")]
# re-index the collection before running each test
args = {
'collection': self.tmpdir.name,
"files": None,
"reset": True,
}
- self._run_command(command.Index(), args)
+ self.run_with_argv(self.lesana, [
+ "lesana",
+ "index",
+ "-c", self.tmpdir.name,
+ "--reset"
+ ])
def tearDown(self):
self.tmpdir.cleanup()
def test_init(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- }
- streams = self._run_command(command.Init(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "init",
+ "-c", self.tmpdir.name,
+ ])
self.assertEqual(streams['stdout'].getvalue(), '')
self.assertEqual(streams['stderr'].getvalue(), '')
def test_new(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- }
- streams = self._run_command(command.New(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "new",
+ "-c", self.tmpdir.name,
+ ])
self.assertEqual(len(streams['stdout'].getvalue()), 33)
self.assertEqual(streams['stderr'].getvalue(), '')
def test_edit(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'eid': '11189ee4',
- }
- streams = self._run_command(command.Edit(), args)
- self.assertTrue(args['eid'] in streams['stdout'].getvalue())
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "edit",
+ "-c", self.tmpdir.name,
+ "11189ee4",
+ ])
+ self.assertTrue("11189ee4" in streams['stdout'].getvalue())
self.assertEqual(streams['stderr'].getvalue(), '')
def test_show(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'eid': '11189ee4',
- 'template': False,
- }
- streams = self._run_command(command.Show(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "show",
+ "-c", self.tmpdir.name,
+ "11189ee4"
+ ])
self.assertTrue(
'name: Another item' in streams['stdout'].getvalue()
)
self.assertEqual(streams['stderr'].getvalue(), '')
def test_index(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'files': None,
- 'reset': True,
- }
- streams = self._run_command(command.Index(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "index",
+ "-c", self.tmpdir.name,
+ "--reset",
+ ])
self.assertEqual(
streams['stdout'].getvalue(),
'Found and indexed 3 entries\n',
@@ -115,32 +123,24 @@ class testCommandsSimple(unittest.TestCase, CommandsMixin):
self.assertEqual(streams['stderr'].getvalue(), '')
def test_search(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'template': False,
- 'query': 'Another',
- 'offset': None,
- 'pagesize': None,
- 'sort': None,
- 'expand_query_template': False,
- 'all': False,
- }
- streams = self._run_command(command.Search(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "search",
+ "-c", self.tmpdir.name,
+ "Another"
+ ])
self.assertTrue(
'11189ee4' in streams['stdout'].getvalue()
)
self.assertEqual(streams['stderr'].getvalue(), '')
def test_get_values(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'template': False,
- 'query': '*',
- 'field': 'position',
- }
- streams = self._run_command(command.GetValues(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "get-values",
+ "-c", self.tmpdir.name,
+ "--field", "position",
+ ])
self.assertIn('somewhere: 2', streams['stdout'].getvalue())
self.assertEqual(streams['stderr'].getvalue(), '')
@@ -155,51 +155,51 @@ class testCommandsSimple(unittest.TestCase, CommandsMixin):
# then remove the cwd change from here
old_cwd = os.getcwd()
os.chdir(self.tmpdir.name)
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'template': 'templates/from_self.yaml',
- 'query': 'Another',
- 'destination': dest_tmpdir,
- }
- streams = self._run_command(command.Export(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "export",
+ "-c", self.tmpdir.name,
+ "--query", "Another",
+ dest_tmpdir,
+ "templates/from_self.yaml",
+ ])
os.chdir(old_cwd)
self.assertEqual(streams['stdout'].getvalue(), '')
self.assertEqual(streams['stderr'].getvalue(), '')
def test_remove(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'entries': ['11189ee4'],
- }
- streams = self._run_command(command.Remove(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "rm",
+ "-c", self.tmpdir.name,
+ "11189ee4"
+ ])
self.assertEqual(streams['stdout'].getvalue(), '')
self.assertEqual(streams['stderr'].getvalue(), '')
# and check that the entry has been removed
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'eid': '11189ee4',
- 'template': False,
- }
- streams = self._run_command(command.Show(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "show",
+ "-c", self.tmpdir.name,
+ "11189ee4"
+ ])
self.assertEqual(streams['stderr'].getvalue(), '')
+ # TODO: check that the file is no longer there
def test_update(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'query': 'Another',
- 'field': 'position',
- 'value': 'here',
- }
- streams = self._run_command(command.Update(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "update",
+ "-c", self.tmpdir.name,
+ "--field", "position",
+ "--value", "here",
+ "Another"
+ ])
self.assertEqual(streams['stdout'].getvalue(), '')
self.assertEqual(streams['stderr'].getvalue(), '')
-class testCommandsComplex(unittest.TestCase, CommandsMixin):
+class testCommandsComplex(hazwaz.unittest.HazwazTestCase, CommandsMixin):
def setUp(self):
self.tmpdir = tempfile.TemporaryDirectory()
utils.copytree(
@@ -207,42 +207,38 @@ class testCommandsComplex(unittest.TestCase, CommandsMixin):
self.tmpdir.name,
dirs_exist_ok=True,
)
+ self.lesana = command.Lesana()
+ for cmd in self.lesana.commands:
+ cmd.editors = [("true", "true")]
# re-index the collection before running each test
- args = {
- 'collection': self.tmpdir.name,
- "files": None,
- "reset": True,
- }
- self._run_command(command.Index(), args)
+ self.run_with_argv(self.lesana, [
+ "lesana",
+ "index",
+ "-c", self.tmpdir.name,
+ "--reset",
+ ])
def tearDown(self):
self.tmpdir.cleanup()
def test_get_values_from_list(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'template': False,
- 'query': '*',
- 'field': 'tags',
- }
- streams = self._run_command(command.GetValues(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "get-values",
+ "-c", self.tmpdir.name,
+ "--field", "tags",
+ ])
self.assertIn('this: 1', streams['stdout'].getvalue())
self.assertEqual(streams['stderr'].getvalue(), '')
def test_search_template(self):
- args = {
- 'collection': self.tmpdir.name,
- 'git': True,
- 'template': False,
- 'query': '{{ nice }}',
- 'expand_query_template': True,
- 'offset': None,
- 'pagesize': None,
- 'sort': None,
- 'all': False,
- }
- streams = self._run_command(command.Search(), args)
+ streams = self.run_with_argv(self.lesana, [
+ "lesana",
+ "search",
+ "-c", self.tmpdir.name,
+ "--expand-query-template",
+ "{{ nice }}"
+ ])
self.assertIn('8e9fa1ed', streams['stdout'].getvalue())
self.assertIn('5084bc6e', streams['stdout'].getvalue())
self.assertEqual(streams['stderr'].getvalue(), '')