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_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_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_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 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 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')