added test module for the 'glossary' command
This commit is contained in:
parent
ff6d4ded33
commit
2e0da31150
98
tests/test_glossary_cmd.py
Normal file
98
tests/test_glossary_cmd.py
Normal file
@ -0,0 +1,98 @@
|
||||
import unittest
|
||||
import argparse
|
||||
import tempfile
|
||||
from chatmastermind.configuration import Config
|
||||
from chatmastermind.commands.glossary import (
|
||||
Glossary,
|
||||
GlossaryCmdError,
|
||||
glossary_cmd,
|
||||
get_glossary_file_path,
|
||||
create_glossary,
|
||||
print_glossary,
|
||||
list_glossaries
|
||||
)
|
||||
|
||||
|
||||
class TestGlossaryCmd(unittest.TestCase):
|
||||
|
||||
def setUp(self) -> None:
|
||||
# create DB and cache
|
||||
self.db_dir = tempfile.TemporaryDirectory()
|
||||
self.cache_dir = tempfile.TemporaryDirectory()
|
||||
self.glossaries_dir = tempfile.TemporaryDirectory()
|
||||
# create configuration
|
||||
self.config = Config()
|
||||
self.config.cache = self.cache_dir.name
|
||||
self.config.db = self.db_dir.name
|
||||
self.config.glossaries = self.glossaries_dir.name
|
||||
# create a mock argparse.Namespace
|
||||
self.args = argparse.Namespace(
|
||||
create=True,
|
||||
list=False,
|
||||
print=False,
|
||||
name='new_glossary',
|
||||
file=None,
|
||||
source_lang='en',
|
||||
target_lang='de',
|
||||
description=False,
|
||||
)
|
||||
|
||||
def test_glossary_create_no_glossaries_err(self) -> None:
|
||||
self.config.glossaries = None
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
create_glossary(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "glossaries directory missing")
|
||||
|
||||
def test_glossary_create_no_name_err(self) -> None:
|
||||
self.args.name = None
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
create_glossary(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "missing glossary name")
|
||||
|
||||
def test_glossary_create_no_source_lang_err(self) -> None:
|
||||
self.args.source_lang = None
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
create_glossary(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "missing source language")
|
||||
|
||||
def test_glossary_create_no_target_lang_err(self) -> None:
|
||||
self.args.target_lang = None
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
create_glossary(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "missing target language")
|
||||
|
||||
def test_glossary_print_no_name_err(self) -> None:
|
||||
self.args.name = None
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
print_glossary(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "missing glossary name")
|
||||
|
||||
def test_glossary_list_no_glossaries_err(self) -> None:
|
||||
self.config.glossaries = None
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
list_glossaries(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "glossaries directory missing")
|
||||
|
||||
def test_glossary_create(self) -> None:
|
||||
self.args.create = True
|
||||
self.args.list = False
|
||||
self.args.print = False
|
||||
glossary_cmd(self.args, self.config)
|
||||
expected_path = get_glossary_file_path(self.args.name, self.config)
|
||||
glo = Glossary.from_file(expected_path)
|
||||
self.assertEqual(glo.name, self.args.name)
|
||||
expected_path.unlink()
|
||||
|
||||
def test_glossary_create_twice_err(self) -> None:
|
||||
self.args.create = True
|
||||
self.args.list = False
|
||||
self.args.print = False
|
||||
glossary_cmd(self.args, self.config)
|
||||
expected_path = get_glossary_file_path(self.args.name, self.config)
|
||||
glo = Glossary.from_file(expected_path)
|
||||
self.assertEqual(glo.name, self.args.name)
|
||||
# create glossary with the same name again
|
||||
with self.assertRaises(GlossaryCmdError) as err:
|
||||
create_glossary(self.args, self.config)
|
||||
self.assertIn(str(err.exception).lower(), "already exists")
|
||||
expected_path.unlink()
|
||||
Loading…
x
Reference in New Issue
Block a user