Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit ca2cd18

Browse files
committed
fix: add search term
1 parent 48985eb commit ca2cd18

File tree

4 files changed

+48
-38
lines changed

4 files changed

+48
-38
lines changed

graphql_api/tests/test_test_analytics.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,8 +1137,8 @@ def test_flake_aggregates_7_days(self) -> None:
11371137

11381138
def test_test_suites(self) -> None:
11391139
repo = RepositoryFactory(author=self.owner, active=True, private=True)
1140-
test = TestFactory(repository=repo, testsuite="test_suite_1")
1141-
test2 = TestFactory(repository=repo, testsuite="test_suite_2")
1140+
test = TestFactory(repository=repo, testsuite="hello_world")
1141+
test2 = TestFactory(repository=repo, testsuite="goodbye_world")
11421142

11431143
repo_flag = RepositoryFlagFactory(repository=repo, flag_name="hello_world")
11441144

@@ -1159,34 +1159,23 @@ def test_test_suites(self) -> None:
11591159
)
11601160
res = self.fetch_test_analytics(
11611161
repo.name,
1162-
"""testSuites""",
1162+
"""testSuites(term: "hello")""",
11631163
)
1164-
assert res["testSuites"] == ["test_suite_1", "test_suite_2"]
1164+
assert res["testSuites"] == ["hello_world"]
11651165

11661166
def test_flags(self) -> None:
11671167
repo = RepositoryFactory(author=self.owner, active=True, private=True)
11681168
test = TestFactory(repository=repo)
11691169
test2 = TestFactory(repository=repo)
11701170

11711171
repo_flag = RepositoryFlagFactory(repository=repo, flag_name="hello_world")
1172+
repo_flag2 = RepositoryFlagFactory(repository=repo, flag_name="goodbye_world")
11721173

11731174
_ = TestFlagBridgeFactory(flag=repo_flag, test=test)
1174-
_ = DailyTestRollupFactory(
1175-
test=test,
1176-
created_at=datetime.datetime.now(),
1177-
repoid=repo.repoid,
1178-
branch="main",
1179-
avg_duration_seconds=0.1,
1180-
)
1181-
_ = DailyTestRollupFactory(
1182-
test=test2,
1183-
created_at=datetime.datetime.now(),
1184-
repoid=repo.repoid,
1185-
branch="main",
1186-
avg_duration_seconds=20.0,
1187-
)
1175+
_ = TestFlagBridgeFactory(flag=repo_flag2, test=test2)
1176+
11881177
res = self.fetch_test_analytics(
11891178
repo.name,
1190-
"""flags""",
1179+
"""flags(term: "hello")""",
11911180
)
11921181
assert res["flags"] == ["hello_world"]

graphql_api/types/test_analytics/test_analytics.graphql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ type TestAnalytics {
1818
"Flake aggregates are flake totals across all tests"
1919
flakeAggregates(interval: MeasurementInterval): FlakeAggregates
2020

21-
testSuites: [String!]!
21+
testSuites(term: String): [String!]!
2222

2323
"Only flag names relevant to Test Analytics"
24-
flags: [String!]!
24+
flags(term: String): [String!]!
2525
}
2626

2727
type TestResultConnection {

graphql_api/types/test_analytics/test_analytics.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,17 @@ async def resolve_flake_aggregates(
9191

9292

9393
@test_analytics_bindable.field("testSuites")
94-
async def resolve_test_suites(repository: Repository, info: GraphQLResolveInfo, **_):
95-
return await sync_to_async(get_test_suites)(repository.repoid)
94+
async def resolve_test_suites(
95+
repository: Repository, info: GraphQLResolveInfo, term: str | None = None, **_
96+
):
97+
return await sync_to_async(get_test_suites)(repository.repoid, term)
9698

9799

98100
@test_analytics_bindable.field("flags")
99-
async def resolve_flags(repository: Repository, info: GraphQLResolveInfo, **_):
100-
return await sync_to_async(get_flags)(repository.repoid)
101+
async def resolve_flags(
102+
repository: Repository, info: GraphQLResolveInfo, term: str | None = None, **_
103+
):
104+
return await sync_to_async(get_flags)(repository.repoid, term)
101105

102106

103107
def convert_interval_to_timedelta(interval: MeasurementInterval | None) -> timedelta:

utils/test_results.py

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -626,18 +626,35 @@ def generate_flake_aggregates(
626626
)
627627

628628

629-
def get_test_suites(repoid: int) -> list[str]:
630-
return list(
631-
Test.objects.filter(repository_id=repoid)
632-
.values_list("testsuite", flat=True)
633-
.distinct()
634-
)
629+
def get_test_suites(repoid: int, term: str | None = None) -> list[str]:
630+
if term:
631+
return list(
632+
Test.objects.filter(repository_id=repoid, testsuite__icontains=term)
633+
.values_list("testsuite", flat=True)
634+
.distinct()
635+
)
636+
else:
637+
return list(
638+
Test.objects.filter(repository_id=repoid)
639+
.values_list("testsuite", flat=True)
640+
.distinct()
641+
)
635642

636643

637-
def get_flags(repoid: int) -> list[str]:
638-
return list(
639-
TestFlagBridge.objects.filter(test__repository_id=repoid)
640-
.select_related("flag")
641-
.values_list("flag__flag_name", flat=True)
642-
.distinct()
643-
)
644+
def get_flags(repoid: int, term: str | None = None) -> list[str]:
645+
if term:
646+
return list(
647+
TestFlagBridge.objects.filter(
648+
test__repository_id=repoid, flag__flag_name__icontains=term
649+
)
650+
.select_related("flag")
651+
.values_list("flag__flag_name", flat=True)
652+
.distinct()
653+
)
654+
else:
655+
return list(
656+
TestFlagBridge.objects.filter(test__repository_id=repoid)
657+
.select_related("flag")
658+
.values_list("flag__flag_name", flat=True)
659+
.distinct()
660+
)

0 commit comments

Comments
 (0)