# -*- 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)