aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2021-01-07 23:42:16 +0000
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2021-01-07 23:42:16 +0000
commit1606690e11ccfd4b48c03045ff27ba11060a5239 (patch)
treee0be2fc2384109f9f22a06ec5e05d6f896b59ec3 /tests
parentReplace failing test with a different one (diff)
downloadpaper2remarkable-1606690e11ccfd4b48c03045ff27ba11060a5239.tar.gz
paper2remarkable-1606690e11ccfd4b48c03045ff27ba11060a5239.zip
Bugfix for config merge and unit tests
Diffstat (limited to 'tests')
-rw-r--r--tests/test_ui.py141
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()