96 lines
3 KiB
Python
96 lines
3 KiB
Python
import copy
|
|
|
|
from qm_try_analysis.report import remove_duplicates
|
|
|
|
|
|
class MockClient:
|
|
def __init__(self, search_results, remote_bugs):
|
|
self.search_results = copy.deepcopy(search_results)
|
|
self.remote_bugs = copy.deepcopy(remote_bugs)
|
|
|
|
def get_bug(self, bug_id):
|
|
for item in self.search_results:
|
|
if bug_id == item["id"]:
|
|
return copy.deepcopy(item)
|
|
for item in self.remote_bugs:
|
|
if bug_id == item["id"]:
|
|
return copy.deepcopy(item)
|
|
return {"id": bug_id, "dupe_of": None}
|
|
|
|
|
|
def test_duplicate_bug_removal():
|
|
test_cases = [
|
|
{
|
|
"search_results": [
|
|
{"id": "k1", "dupe_of": "k4"},
|
|
{"id": "k3", "dupe_of": "k5"},
|
|
{"id": "k2", "dupe_of": "k6"},
|
|
],
|
|
"remote_bugs": [
|
|
{"id": "k4", "dupe_of": "k2"},
|
|
{"id": "k5", "dupe_of": None},
|
|
{"id": "k6", "dupe_of": "k3"},
|
|
],
|
|
"expected": [{"id": "k5", "dupe_of": None}],
|
|
},
|
|
{
|
|
"search_results": [
|
|
{"id": "k2", "dupe_of": "k6"},
|
|
{"id": "k3", "dupe_of": "k5"},
|
|
{"id": "k1", "dupe_of": "k4"},
|
|
],
|
|
"remote_bugs": [
|
|
{"id": "k4", "dupe_of": "k2"},
|
|
{"id": "k5", "dupe_of": None},
|
|
{"id": "k6", "dupe_of": "k3"},
|
|
],
|
|
"expected": [{"id": "k5", "dupe_of": None}],
|
|
},
|
|
{
|
|
"search_results": [
|
|
{"id": "k1", "dupe_of": "k3"},
|
|
{"id": "k2", "dupe_of": "k4"},
|
|
],
|
|
"remote_bugs": [
|
|
{"id": "k3", "dupe_of": "k2"},
|
|
{"id": "k4", "dupe_of": None},
|
|
],
|
|
"expected": [{"id": "k4", "dupe_of": None}],
|
|
},
|
|
{
|
|
"search_results": [
|
|
{"id": "k1", "dupe_of": "k3"},
|
|
{"id": "k2", "dupe_of": None},
|
|
],
|
|
"remote_bugs": [
|
|
{"id": "k3", "dupe_of": "k4"},
|
|
{"id": "k4", "dupe_of": "k2"},
|
|
],
|
|
"expected": [{"id": "k2", "dupe_of": None}],
|
|
},
|
|
{
|
|
"search_results": [
|
|
{"id": "k1", "dupe_of": "k3"},
|
|
{"id": "k2", "dupe_of": None},
|
|
],
|
|
"remote_bugs": [{"id": "k3", "dupe_of": "k2"}],
|
|
"expected": [{"id": "k2", "dupe_of": None}],
|
|
},
|
|
{
|
|
"search_results": [
|
|
{"id": "k1", "dupe_of": None},
|
|
{"id": "k2", "dupe_of": "k3"},
|
|
],
|
|
"remote_bugs": [{"id": "k3", "dupe_of": "k1"}],
|
|
"expected": [{"id": "k1", "dupe_of": None}],
|
|
},
|
|
]
|
|
|
|
for test_case in test_cases:
|
|
search_results = test_case["search_results"]
|
|
remote_bugs = test_case["remote_bugs"]
|
|
expected = test_case["expected"]
|
|
|
|
mock_client = MockClient(search_results, remote_bugs)
|
|
|
|
assert remove_duplicates(search_results, mock_client) == expected
|