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)
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)
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'")
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') ]
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)
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)
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') ]
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')]
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') ]
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) ]
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)
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')
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') ]
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)
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)