wuttasync/tests/cli/test_base.py

90 lines
3 KiB
Python
Raw Normal View History

2024-12-05 21:19:06 -06:00
#-*- coding: utf-8; -*-
import inspect
from unittest import TestCase
from unittest.mock import patch
2024-12-05 21:19:06 -06:00
from wuttasync.cli import base as mod
from wuttjamaican.testing import DataTestCase
class TestImportCommandHandler(DataTestCase):
def make_handler(self, **kwargs):
return mod.ImportCommandHandler(self.config, **kwargs)
def test_import_handler(self):
# none
handler = self.make_handler()
self.assertIsNone(handler.import_handler)
FromCsvToWutta = self.app.load_object('wuttasync.importing.csv:FromCsvToWutta')
# as spec
handler = self.make_handler(import_handler=FromCsvToWutta.get_spec())
self.assertIsInstance(handler.import_handler, FromCsvToWutta)
# as factory
handler = self.make_handler(import_handler=FromCsvToWutta)
self.assertIsInstance(handler.import_handler, FromCsvToWutta)
# as instance
myhandler = FromCsvToWutta(self.config)
handler = self.make_handler(import_handler=myhandler)
self.assertIs(handler.import_handler, myhandler)
def test_run(self):
handler = self.make_handler(import_handler='wuttasync.importing.csv:FromCsvToWutta')
with patch.object(handler, 'list_models') as list_models:
handler.run({'list_models': True})
list_models.assert_called_once_with({'list_models': True})
with patch.object(handler, 'import_handler') as import_handler:
handler.run({'models': []})
import_handler.process_data.assert_called_once_with()
def test_list_models(self):
handler = self.make_handler(import_handler='wuttasync.importing.csv:FromCsvToWutta')
with patch.object(mod, 'sys') as sys:
handler.list_models({})
# just test a few random things we expect to see
self.assertTrue(sys.stdout.write.has_call('ALL MODELS:\n'))
self.assertTrue(sys.stdout.write.has_call('Person'))
self.assertTrue(sys.stdout.write.has_call('User'))
self.assertTrue(sys.stdout.write.has_call('Upgrade'))
2024-12-05 21:19:06 -06:00
class TestImporterCommand(TestCase):
def test_basic(self):
def myfunc(ctx, **kwargs):
pass
sig1 = inspect.signature(myfunc)
self.assertIn('kwargs', sig1.parameters)
self.assertNotIn('dry_run', sig1.parameters)
wrapt = mod.import_command(myfunc)
2024-12-05 21:19:06 -06:00
sig2 = inspect.signature(wrapt)
self.assertNotIn('kwargs', sig2.parameters)
self.assertIn('dry_run', sig2.parameters)
class TestFileImporterCommand(TestCase):
def test_basic(self):
def myfunc(ctx, **kwargs):
pass
sig1 = inspect.signature(myfunc)
self.assertIn('kwargs', sig1.parameters)
self.assertNotIn('dry_run', sig1.parameters)
self.assertNotIn('input_file_path', sig1.parameters)
wrapt = mod.file_import_command(myfunc)
2024-12-05 21:19:06 -06:00
sig2 = inspect.signature(wrapt)
self.assertNotIn('kwargs', sig2.parameters)
self.assertIn('dry_run', sig2.parameters)
self.assertIn('input_file_path', sig2.parameters)