mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-03 12:20:38 +08:00
120 lines
4.1 KiB
Python
120 lines
4.1 KiB
Python
import pytest
|
|
from pr_agent.git_providers.codecommit_provider import CodeCommitFile
|
|
from pr_agent.git_providers.codecommit_provider import CodeCommitProvider
|
|
from pr_agent.git_providers.git_provider import EDIT_TYPE
|
|
|
|
|
|
class TestCodeCommitFile:
|
|
# Test that a CodeCommitFile object is created successfully with valid parameters.
|
|
# Generated by CodiumAI
|
|
def test_valid_parameters(self):
|
|
a_path = "path/to/file_a"
|
|
a_blob_id = "12345"
|
|
b_path = "path/to/file_b"
|
|
b_blob_id = "67890"
|
|
edit_type = EDIT_TYPE.ADDED
|
|
|
|
file = CodeCommitFile(a_path, a_blob_id, b_path, b_blob_id, edit_type)
|
|
|
|
assert file.a_path == a_path
|
|
assert file.a_blob_id == a_blob_id
|
|
assert file.b_path == b_path
|
|
assert file.b_blob_id == b_blob_id
|
|
assert file.edit_type == edit_type
|
|
assert file.filename == b_path
|
|
|
|
|
|
class TestCodeCommitProvider:
|
|
def test_parse_pr_url(self):
|
|
url = "https://us-east-1.console.aws.amazon.com/codesuite/codecommit/repositories/my_test_repo/pull-requests/321"
|
|
repo_name, pr_number = CodeCommitProvider._parse_pr_url(url)
|
|
assert repo_name == "my_test_repo"
|
|
assert pr_number == 321
|
|
|
|
# Test that an error is raised when an invalid CodeCommit URL is provided to the set_pr() method of the CodeCommitProvider class.
|
|
# Generated by CodiumAI
|
|
def test_invalid_codecommit_url(self):
|
|
provider = CodeCommitProvider()
|
|
with pytest.raises(ValueError):
|
|
provider.set_pr("https://example.com/codecommit/repositories/my_test_repo/pull-requests/4321")
|
|
|
|
def test_get_file_extensions(self):
|
|
filenames = [
|
|
"app.py",
|
|
"cli.py",
|
|
"composer.json",
|
|
"composer.lock",
|
|
"hello.py",
|
|
"image1.jpg",
|
|
"image2.JPG",
|
|
"index.js",
|
|
"provider.py",
|
|
"README",
|
|
"test.py",
|
|
]
|
|
expected_extensions = [
|
|
".py",
|
|
".py",
|
|
".json",
|
|
".lock",
|
|
".py",
|
|
".jpg",
|
|
".jpg",
|
|
".js",
|
|
".py",
|
|
"",
|
|
".py",
|
|
]
|
|
extensions = CodeCommitProvider._get_file_extensions(filenames)
|
|
assert extensions == expected_extensions
|
|
|
|
def test_get_language_percentages(self):
|
|
extensions = [
|
|
".py",
|
|
".py",
|
|
".json",
|
|
".lock",
|
|
".py",
|
|
".jpg",
|
|
".jpg",
|
|
".js",
|
|
".py",
|
|
"",
|
|
".py",
|
|
]
|
|
percentages = CodeCommitProvider._get_language_percentages(extensions)
|
|
assert percentages[".py"] == 45
|
|
assert percentages[".json"] == 9
|
|
assert percentages[".lock"] == 9
|
|
assert percentages[".jpg"] == 18
|
|
assert percentages[".js"] == 9
|
|
assert percentages[""] == 9
|
|
|
|
# The _get_file_extensions function needs the "." prefix on the extension,
|
|
# but the _get_language_percentages function will work with or without the "." prefix
|
|
extensions = [
|
|
"txt",
|
|
"py",
|
|
"py",
|
|
]
|
|
percentages = CodeCommitProvider._get_language_percentages(extensions)
|
|
assert percentages["py"] == 67
|
|
assert percentages["txt"] == 33
|
|
|
|
# test an empty list
|
|
percentages = CodeCommitProvider._get_language_percentages([])
|
|
assert percentages == {}
|
|
|
|
def test_get_edit_type(self):
|
|
assert CodeCommitProvider._get_edit_type("A") == EDIT_TYPE.ADDED
|
|
assert CodeCommitProvider._get_edit_type("D") == EDIT_TYPE.DELETED
|
|
assert CodeCommitProvider._get_edit_type("M") == EDIT_TYPE.MODIFIED
|
|
assert CodeCommitProvider._get_edit_type("R") == EDIT_TYPE.RENAMED
|
|
|
|
assert CodeCommitProvider._get_edit_type("a") == EDIT_TYPE.ADDED
|
|
assert CodeCommitProvider._get_edit_type("d") == EDIT_TYPE.DELETED
|
|
assert CodeCommitProvider._get_edit_type("m") == EDIT_TYPE.MODIFIED
|
|
assert CodeCommitProvider._get_edit_type("r") == EDIT_TYPE.RENAMED
|
|
|
|
assert CodeCommitProvider._get_edit_type("X") is None
|