Generate Unit Tests for github_service.py
Description:
We need to create unit tests for the github_service.py file located in the app/modules/github/ directory. The goal is to ensure that all functions are thoroughly tested for expected behavior, edge cases, and error handling.
Functions to Test:
-
get_github_repo_details: Test the retrieval of GitHub repository details, including handling of invalid repository names and API errors.
-
get_file_content: Validate file content retrieval, including:
- Successful access to private and public repositories.
- Handling of directory paths instead of file paths.
- Correct line selection based on
start_lineandend_line.
-
get_repos_for_user: Validate the retrieval of repositories for a user, including error handling for missing users and tokens.
-
get_combined_user_repos: Test the combination of user repositories and project repositories, ensuring no duplicates.
-
get_branch_list: Validate branch retrieval, including error handling for non-existent repositories.
-
get_public_github_instance: Ensure that a public GitHub instance is returned correctly.
-
get_repo: Test the retrieval of a repository, including handling of both private and public access failures.
-
get_project_structure_async: Validate the fetching of project structure, including caching behavior.
Testing Framework:
- Use
pytestfor writing the unit tests. - Consider using
pytest-mockorunittest.mockto mock external dependencies like GitHub API calls and database interactions.
Acceptance Criteria:
- All functions have corresponding unit tests.
- Tests cover both happy paths and edge cases.
- Code coverage should be at least 80%.
Additional Notes:
- Please ensure that the tests are organized and follow best practices for readability and maintainability.
@dhirenmathur I'd like to take up this issue. The tests should go into which folder?
@Anu-Ra-g that's great, you should create a new folder in the root directory of the project called tests
I'm using this for setting up the tests/module/github/test_github_service.py package, instead of using __init__.py
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../')))
from app.modules.github.github_service import GithubService
Will it be okay?
@Anu-Ra-g I would recommend to stick to creating the init file, this approach could end up being difficult to maintain and run tests from other directories
@Anu-Ra-g let us know if you need any help
@Anu-Ra-g are you still working on this?
Yes, I'm still working on this but I got a little busy. I will make the PR as soon as possible.
Go ahead
@dhirenmathur I'd like to solve this one as well if that is okay.
@simin75simin let's do the issues one at a time so that others have a chance as well, there's already an open PR for this one too :)
@simin75simin let's do the issues one at a time so that others have a chance as well, there's already an open PR for this one too :)
sorry just looking for things to contribute and this one seemed dormant
You are right that this is dormant @simin75simin, if we can validate that no work is needed in the other issue, you can pick this up! Thank you!
Could I try working on this?