93 lines
3.1 KiB
Python
93 lines
3.1 KiB
Python
# -*- coding: utf-8; -*-
|
|
|
|
import inspect
|
|
from unittest import TestCase
|
|
from unittest.mock import patch
|
|
|
|
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"))
|
|
|
|
|
|
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)
|
|
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)
|
|
sig2 = inspect.signature(wrapt)
|
|
self.assertNotIn("kwargs", sig2.parameters)
|
|
self.assertIn("dry_run", sig2.parameters)
|
|
self.assertIn("input_file_path", sig2.parameters)
|