import os.path from cpl_core.utils import String from unittests_cli.abc.command_test_case import CommandTestCase from unittests_cli.constants import PLAYGROUND_PATH from unittests_shared.cli_commands import CLICommands class GenerateTestCase(CommandTestCase): _project = 'test-console' _t_path = 'test' @classmethod def setUpClass(cls): CommandTestCase.setUpClass() CLICommands.new('console', cls._project, '--ab', '--s', '--venv') def setUp(self): os.chdir(PLAYGROUND_PATH) def _test_file(self, schematic: str, suffix: str, path=None): file = f'GeneratedFile{"OnReady" if schematic == "event" else ""}' expected_path = f'generated_file{"_on_ready" if schematic == "event" else ""}{suffix}.py' if path is not None: file = f'{path}/{file}' expected_path = f'{path}/{expected_path}' CLICommands.generate(schematic, file) file_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, expected_path)) file_exists = os.path.exists(file_path) self.assertTrue(file_exists) def _test_file_with_project(self, schematic: str, suffix: str, path=None, enter=True): file = f'GeneratedFile{"OnReady" if schematic == "event" else ""}' excepted_path = f'generated_file{"_on_ready" if schematic == "event" else ""}{suffix}.py' if path is not None: excepted_path = f'{self._project}/src/{String.convert_to_snake_case(self._project)}/{path}/generated_file_in_project{"_on_ready" if schematic == "event" else ""}{suffix}.py' if enter: os.chdir(path) excepted_path = f'{path}/src/{String.convert_to_snake_case(self._project)}/generated_file_in_project{"_on_ready" if schematic == "event" else ""}{suffix}.py' file = f'{path}/GeneratedFileInProject{"OnReady" if schematic == "event" else ""}' CLICommands.generate(schematic, file) file_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, excepted_path)) self.assertTrue(os.path.exists(file_path)) def test_abc(self): self._test_file('abc', '_abc') self._test_file('abc', '_abc', path=self._t_path) self._test_file('abc', '_abc', path=f'{self._t_path}/{self._t_path}') self._test_file_with_project('abc', '_abc', path=self._project) os.chdir(f'src/{String.convert_to_snake_case(self._project)}') self._test_file_with_project('abc', '_abc', path='test', enter=False) def test_class(self): self._test_file('class', '') self._test_file('class', '', path=self._t_path) self._test_file_with_project('class', '', path=self._project) def test_enum(self): self._test_file('enum', '_enum') self._test_file('enum', '_enum', path=self._t_path) self._test_file_with_project('enum', '_enum', path=self._project) os.chdir(f'src/{String.convert_to_snake_case(self._project)}') self._test_file_with_project('enum', '_enum', path='test', enter=False) def test_pipe(self): self._test_file('pipe', '_pipe') self._test_file('pipe', '_pipe', path=self._t_path) self._test_file_with_project('pipe', '_pipe', path=self._project) def test_service(self): self._test_file('service', '_service') self._test_file_with_project('service', '_service', path=self._project) def test_settings(self): self._test_file('settings', '_settings') self._test_file_with_project('settings', '_settings', path=self._project) def test_test_case(self): self._test_file('test-case', '_test_case') self._test_file_with_project('test-case', '_test_case', path=self._project) def test_thread(self): self._test_file('thread', '_thread') self._test_file_with_project('thread', '_thread', path=self._project) def test_validator(self): self._test_file('validator', '_validator') self._test_file_with_project('validator', '_validator', path=self._project) def test_discord_command(self): self._test_file('command', '_command') self._test_file_with_project('command', '_command', path=self._project) def test_discord_event(self): self._test_file('event', '_event') self._test_file_with_project('event', '_event', path=self._project)