Esempio n. 1
0
 def test_kata_name_with_spaces(
         self, tmp_path: Path,
         init_kata_service: InitKataService):
     with pytest.raises(InvalidKataName):
         name_with_spaces = 'this is a kata name with spaces'
         init_kata_service.init_kata(tmp_path, name_with_spaces,
                                     NOT_USED, NOT_USED)
Esempio n. 2
0
            def test_with_valid_template(
                    self, tmp_path: Path,
                    kata_language_repo: HardCoded.KataLanguageRepo,
                    kata_template_repo: HardCoded.KataTemplateRepo,
                    mock_grepo: MagicMock, init_kata_service: InitKataService):
                # Given: Template is available and parent_dir is valid
                kata_language_repo.available_languages = ['java']
                kata_template_repo.available_templates = {
                    'java': ['junit5', 'hamcrest']
                }
                kata_name = 'my_kata'
                template_lang = 'java'
                template_name = 'junit5'
                parent_dir = tmp_path

                # When: Initializing the Kata
                init_kata_service.init_kata(parent_dir, kata_name,
                                            template_lang, template_name)

                # Then:
                # - File URLs have been been fetched with the correct Username/GithubRepo/Subpath
                mock_grepo.get_files_to_download.assert_called_with(
                    user=DEFAULT_CONFIG['KataGRepo']['User'],
                    repo=DEFAULT_CONFIG['KataGRepo']['Repo'],
                    path='java/junit5')
                # - Files are requested to be downloaded in parent_dir/kata_name
                #   Note: MOCK_FILES_TO_DOWNLOAD are set in the mock_grepo fixture initialization
                mock_grepo.download_files_at_location.assert_called_with(
                    parent_dir / kata_name, MOCK_FILES_TO_DOWNLOAD)
Esempio n. 3
0
            def test_invalid_parent_dir(self,
                                        init_kata_service: InitKataService):
                with pytest.raises(FileNotFoundError) as expected_error:
                    invalid_dir = Path('i_do_not_exist')
                    init_kata_service.init_kata(invalid_dir,
                                                kata_name=NOT_USED,
                                                template_language=NOT_USED,
                                                template_name=NOT_USED)

                expected_error.match(r"Invalid Directory: '.*i_do_not_exist'")
Esempio n. 4
0
 def test_language_doesnt_exist(
         self, init_kata_service: InitKataService,
         kata_language_repo: HardCoded.KataLanguageRepo,
         kata_template_repo: HardCoded.KataTemplateRepo):
     kata_language_repo.available_languages = ['java']
     kata_template_repo.available_templates = {
         'java': ['junit5', 'hamcrest']
     }
     with pytest.raises(
             KataLanguageNotFound) as language_not_found_error:
         init_kata_service.list_available_templates('python')
     assert language_not_found_error.value.available_languages == [
         KataLanguage('java')
     ]
Esempio n. 5
0
                def test_kata_name_with_special_char_besides_underscore(
                        self, tmp_path: Path,
                        init_kata_service: InitKataService):
                    with pytest.raises(InvalidKataName):
                        name_with_special_chars = 'this/a/kata/name/with/special/char'
                        init_kata_service.init_kata(tmp_path,
                                                    name_with_special_chars,
                                                    NOT_USED, NOT_USED)

                    with pytest.raises(InvalidKataName):
                        name_with_special_chars = 'special?char'
                        init_kata_service.init_kata(tmp_path,
                                                    name_with_special_chars,
                                                    NOT_USED, NOT_USED)
Esempio n. 6
0
 def init_domain():
     self.grepo = GRepo(self.api, self.file_writer, self.executor)
     self.init_kata_service = InitKataService(self.kata_language_repo,
                                              self.kata_template_repo,
                                              self.grepo,
                                              self.config_repo)
     self.login_service = LoginService(self.config_repo)
Esempio n. 7
0
 def test_valid_case(self, init_kata_service: InitKataService,
                     kata_language_repo: HardCoded.KataLanguageRepo):
     kata_language_repo.available_languages = ['java', 'python']
     available_languages = init_kata_service.list_available_languages()
     assert available_languages == [
         KataLanguage('java'),
         KataLanguage('python')
     ]
Esempio n. 8
0
                def test_template_name_isnt_given_but_multiple_options_are_available(
                        self, tmp_path: Path,
                        init_kata_service: InitKataService,
                        kata_language_repo: HardCoded.KataLanguageRepo,
                        kata_template_repo: HardCoded.KataTemplateRepo):
                    with pytest.raises(
                            KataTemplateNotFound) as template_not_found_error:
                        kata_language_repo.available_languages = ['java']
                        kata_template_repo.available_templates = {
                            'java': ['junit5', 'hamcrest']
                        }
                        init_kata_service.init_kata(tmp_path, VALID_KATA_NAME,
                                                    'java', None)

                    assert template_not_found_error.value.available_templates == \
                           [KataTemplate(KataLanguage('java'), 'junit5'),
                            KataTemplate(KataLanguage('java'), 'hamcrest')]
Esempio n. 9
0
                def test_language_doesnt_exist(
                        self, tmp_path: Path,
                        init_kata_service: InitKataService,
                        kata_language_repo: HardCoded.KataLanguageRepo,
                        kata_template_repo: HardCoded.KataTemplateRepo):
                    with pytest.raises(
                            KataLanguageNotFound) as language_not_found_error:
                        kata_language_repo.available_languages = ['java']
                        kata_template_repo.available_templates = {
                            'java': ['junit5', 'hamcrest']
                        }
                        init_kata_service.init_kata(tmp_path, VALID_KATA_NAME,
                                                    'python', NOT_USED)

                    assert language_not_found_error.value.available_languages == [
                        KataLanguage('java')
                    ]
Esempio n. 10
0
                def test_template_name_doesnt_exist_template_at_root(
                        self, tmp_path: Path,
                        init_kata_service: InitKataService,
                        kata_language_repo: HardCoded.KataLanguageRepo,
                        kata_template_repo: HardCoded.KataTemplateRepo):
                    with pytest.raises(
                            KataTemplateNotFound) as template_not_found_error:
                        kata_language_repo.available_languages = ['java']
                        kata_template_repo.available_templates = {
                            'java': [None]
                        }
                        init_kata_service.init_kata(
                            tmp_path, VALID_KATA_NAME, 'java',
                            'some_framework_thats_not_junit5')

                    assert template_not_found_error.value.available_templates == [
                        KataTemplate(KataLanguage('java'), None)
                    ]
Esempio n. 11
0
 def __init__(self):
     self.executor = ThreadPoolExecutor(100)
     self.api = GithubApi()
     self.file_writer = FileWriter()
     self.grepo = GRepo(self.api, self.file_writer, self.executor)
     self.kata_template_repo = HardCoded.KataTemplateRepo()
     self.real_kata_template_repo = KataTemplateRepo(self.api)
     self.sandbox_dir = Path('../sandbox')
     self.init_kata_service = InitKataService(self.kata_template_repo,
                                              self.grepo)
Esempio n. 12
0
                def test_only_one_template_at_root(
                        self, tmp_path: Path,
                        kata_language_repo: HardCoded.KataLanguageRepo,
                        kata_template_repo: HardCoded.KataTemplateRepo,
                        mock_grepo: MagicMock,
                        init_kata_service: InitKataService):
                    # Given: Template name not specified but only one available at root (sub-path == None)
                    kata_language_repo.available_languages = ['java']
                    kata_template_repo.available_templates = {'java': [None]}
                    kata_name = 'my_kata'
                    template_lang = 'java'
                    template_name = None

                    # When: Initializing the Kata
                    init_kata_service.init_kata(tmp_path, kata_name,
                                                template_lang, template_name)

                    # Then: File URLs have been been fetched without any sub-path
                    mock_grepo.get_files_to_download.assert_called_with(
                        user=DEFAULT_CONFIG['KataGRepo']['User'],
                        repo=DEFAULT_CONFIG['KataGRepo']['Repo'],
                        path='java')
Esempio n. 13
0
 def test_valid_language(
         self, init_kata_service: InitKataService,
         kata_language_repo: HardCoded.KataLanguageRepo,
         kata_template_repo: HardCoded.KataTemplateRepo):
     kata_language_repo.available_languages = ['java']
     kata_template_repo.available_templates = {
         'java': ['junit5', 'hamcrest']
     }
     available_templates_for_java = init_kata_service.list_available_templates(
         'java')
     assert available_templates_for_java == [
         KataTemplate(KataLanguage('java'), 'junit5'),
         KataTemplate(KataLanguage('java'), 'hamcrest')
     ]
Esempio n. 14
0
 def init_kata_service(self, kata_language_repo, kata_template_repo,
                       mock_grepo, config_repo):
     return InitKataService(kata_language_repo, kata_template_repo,
                            mock_grepo, config_repo)
Esempio n. 15
0
 def test_kata_name_empty(self, tmp_path: Path,
                          init_kata_service: InitKataService):
     with pytest.raises(InvalidKataName):
         empty_name = ''
         init_kata_service.init_kata(tmp_path, empty_name,
                                     NOT_USED, NOT_USED)