diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2021-01-07 23:42:16 +0000 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2021-01-07 23:42:16 +0000 |
| commit | 1606690e11ccfd4b48c03045ff27ba11060a5239 (patch) | |
| tree | e0be2fc2384109f9f22a06ec5e05d6f896b59ec3 /tests | |
| parent | Replace failing test with a different one (diff) | |
| download | paper2remarkable-1606690e11ccfd4b48c03045ff27ba11060a5239.tar.gz paper2remarkable-1606690e11ccfd4b48c03045ff27ba11060a5239.zip | |
Bugfix for config merge and unit tests
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_ui.py | 141 |
1 files changed, 140 insertions, 1 deletions
diff --git a/tests/test_ui.py b/tests/test_ui.py index d36c5b3..1f4dab7 100644 --- a/tests/test_ui.py +++ b/tests/test_ui.py @@ -33,7 +33,11 @@ from paper2remarkable.providers import ( PubMed, Springer, ) -from paper2remarkable.ui import choose_provider +from paper2remarkable.ui import ( + build_argument_parser, + choose_provider, + merge_options, +) class TestUI(unittest.TestCase): @@ -220,6 +224,141 @@ class TestUI(unittest.TestCase): with self.assertRaises(InvalidURLError): choose_provider(url) + def test_merge_options_1(self): + config = None + source = "/tmp/local.pdf" # doesn't need to exist + + parser = build_argument_parser() + args = parser.parse_args([source]) + + # empty config and default args + opts = merge_options(args, config) + self.assertEqual(opts["core"]["blank"], False) + self.assertEqual(opts["core"]["crop"], "left") + self.assertEqual(opts["core"]["experimental"], False) + self.assertEqual(opts["core"]["upload"], True) + self.assertEqual(opts["core"]["verbose"], False) + + test_sys = lambda s: self.assertEqual(opts["system"][s], s) + for s in ["gs", "pdftoppm", "pdftk", "qpdf", "rmapi"]: + with self.subTest(s): + test_sys(s) + + self.assertIsNone(opts["html"]["css"]) + self.assertIsNone(opts["html"]["font_urls"]) + + def test_merge_options_2(self): + config = None + source = "/tmp/local.pdf" # doesn't need to exist + + parser = build_argument_parser() + args = parser.parse_args(["-v", "-n", source]) + + # empty config and default args + opts = merge_options(args, config) + + self.assertEqual(opts["core"]["blank"], False) + self.assertEqual(opts["core"]["crop"], "left") + self.assertEqual(opts["core"]["experimental"], False) + self.assertEqual(opts["core"]["upload"], False) + self.assertEqual(opts["core"]["verbose"], True) + + test_sys = lambda s: self.assertEqual(opts["system"][s], s) + for s in ["gs", "pdftoppm", "pdftk", "qpdf", "rmapi"]: + with self.subTest(s): + test_sys(s) + + self.assertIsNone(opts["html"]["css"]) + self.assertIsNone(opts["html"]["font_urls"]) + + def test_merge_options_3(self): + source = "/tmp/local.pdf" # doesn't need to exist + + parser = build_argument_parser() + args = parser.parse_args(["-v", "-n", "-k", source]) + config = {"core": {"blank": True, "upload": True, "verbose": False}} + + # empty config and default args + opts = merge_options(args, config) + + self.assertEqual(opts["core"]["blank"], True) + self.assertEqual(opts["core"]["crop"], "none") + self.assertEqual(opts["core"]["experimental"], False) + self.assertEqual(opts["core"]["upload"], False) + self.assertEqual(opts["core"]["verbose"], True) + + test_sys = lambda s: self.assertEqual(opts["system"][s], s) + for s in ["gs", "pdftoppm", "pdftk", "qpdf", "rmapi"]: + with self.subTest(s): + test_sys(s) + + self.assertIsNone(opts["html"]["css"]) + self.assertIsNone(opts["html"]["font_urls"]) + + def test_merge_options_4(self): + source = "/tmp/local.pdf" # doesn't need to exist + + parser = build_argument_parser() + args = parser.parse_args(["-n", "-c", source]) + gs_path = "/path/to/gs" + config = { + "core": {"upload": False, "verbose": True}, + "system": {"gs": gs_path}, + } + + # empty config and default args + opts = merge_options(args, config) + + self.assertEqual(opts["core"]["blank"], False) + self.assertEqual(opts["core"]["crop"], "center") + self.assertEqual(opts["core"]["experimental"], False) + self.assertEqual(opts["core"]["upload"], False) + self.assertEqual(opts["core"]["verbose"], True) + + self.assertEqual(opts["system"]["gs"], gs_path) + test_sys = lambda s: self.assertEqual(opts["system"][s], s) + for s in ["pdftoppm", "pdftk", "qpdf", "rmapi"]: + with self.subTest(s): + test_sys(s) + + self.assertIsNone(opts["html"]["css"]) + self.assertIsNone(opts["html"]["font_urls"]) + + def test_merge_options_5(self): + source = "/tmp/local.pdf" # doesn't need to exist + + parser = build_argument_parser() + args = parser.parse_args(["-n", "-c", source]) + gs_path = "/path/to/gs" + qpdf_path = "/path/to/qpdf" + config = { + "core": {"upload": False, "verbose": True}, + "system": {"gs": gs_path, "qpdf": qpdf_path}, + "html": { + "css": "Hello, World!\n", + "font_urls": ["url_1", "url_2"], + }, + } + + # empty config and default args + opts = merge_options(args, config) + + self.assertEqual(opts["core"]["blank"], False) + self.assertEqual(opts["core"]["crop"], "center") + self.assertEqual(opts["core"]["experimental"], False) + self.assertEqual(opts["core"]["upload"], False) + self.assertEqual(opts["core"]["verbose"], True) + + self.assertEqual(opts["system"]["gs"], gs_path) + self.assertEqual(opts["system"]["qpdf"], qpdf_path) + test_sys = lambda s: self.assertEqual(opts["system"][s], s) + for s in ["pdftoppm", "pdftk", "rmapi"]: + with self.subTest(s): + test_sys(s) + + self.assertEquals(opts["html"]["css"], "Hello, World!\n") + self.assertEquals(opts["html"]["font_urls"], ["url_1", "url_2"]) + if __name__ == "__main__": unittest.main() |
