From b46d77342ffdcad3adda96cdd459503ca1b934bb Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Sat, 28 Dec 2019 00:37:19 +0100 Subject: [PATCH] Add tests --- tests/test_cli.py | 50 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index 1cd5441..216be29 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,9 +1,53 @@ +import os import unittest +from click.testing import CliRunner -class MyTestCase(unittest.TestCase): - def test_something(self): - self.assertTrue(True) +from cleantoots.main import cli + + +class SetupConfigTestCase(unittest.TestCase): + def setUp(self) -> None: + self.runner = CliRunner() + + def test_setup_config(self): + with self.runner.isolated_filesystem(): + result = self.runner.invoke(cli, ["-d", ".", "setup-config"]) + self.assertEqual(result.exit_code, 0) + self.assertIn("config.ini written", result.output) + self.assertTrue(os.path.isfile(os.path.join(".", "config.ini"))) + + def test_setup_config_twice_fails(self): + with self.runner.isolated_filesystem(): + self.runner.invoke(cli, ["-d", ".", "setup-config"]) + self.assertTrue(os.path.isfile(os.path.join(".", "config.ini"))) + result = self.runner.invoke(cli, ["-d", ".", "setup-config"]) + self.assertEqual(result.exit_code, 1) + self.assertIn("Not touching anything", result.output) + + def test_config_output(self): + with self.runner.isolated_filesystem(): + self.runner.invoke(cli, ["-d", ".", "setup-config"]) + result = self.runner.invoke(cli, ["-d", ".", "config"]) + expected = [ + "Mastodon.social", + "api_base_url", + "app_secret_file", + "user_secret_file", + "protected_toots", + "boost_limit", + "favorite_limit", + "days_count", + "timezone", + ] + for exp in expected: + self.assertIn(exp, result.output) + + def test_login_output(self): + with self.runner.isolated_filesystem(): + self.runner.invoke(cli, ["-d", ".", "setup-config"]) + result = self.runner.invoke(cli, ["-d", ".", "login"], input="\nFAKECODE") + self.assertIn("Enter code for", result.output) if __name__ == "__main__":