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

Commit 96322b0

Browse files
committed
fix: add search term
1 parent b228ce3 commit 96322b0

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
@@ -996,8 +996,8 @@ def test_flake_aggregates_7_days(self) -> None:
996996

997997
def test_test_suites(self) -> None:
998998
repo = RepositoryFactory(author=self.owner, active=True, private=True)
999-
test = TestFactory(repository=repo, testsuite="test_suite_1")
1000-
test2 = TestFactory(repository=repo, testsuite="test_suite_2")
999+
test = TestFactory(repository=repo, testsuite="hello_world")
1000+
test2 = TestFactory(repository=repo, testsuite="goodbye_world")
10011001

10021002
repo_flag = RepositoryFlagFactory(repository=repo, flag_name="hello_world")
10031003

@@ -1018,34 +1018,23 @@ def test_test_suites(self) -> None:
10181018
)
10191019
res = self.fetch_test_analytics(
10201020
repo.name,
1021-
"""testSuites""",
1021+
"""testSuites(term: "hello")""",
10221022
)
1023-
assert res["testSuites"] == ["test_suite_1", "test_suite_2"]
1023+
assert res["testSuites"] == ["hello_world"]
10241024

10251025
def test_flags(self) -> None:
10261026
repo = RepositoryFactory(author=self.owner, active=True, private=True)
10271027
test = TestFactory(repository=repo)
10281028
test2 = TestFactory(repository=repo)
10291029

10301030
repo_flag = RepositoryFlagFactory(repository=repo, flag_name="hello_world")
1031+
repo_flag2 = RepositoryFlagFactory(repository=repo, flag_name="goodbye_world")
10311032

10321033
_ = TestFlagBridgeFactory(flag=repo_flag, test=test)
1033-
_ = DailyTestRollupFactory(
1034-
test=test,
1035-
created_at=datetime.datetime.now(),
1036-
repoid=repo.repoid,
1037-
branch="main",
1038-
avg_duration_seconds=0.1,
1039-
)
1040-
_ = DailyTestRollupFactory(
1041-
test=test2,
1042-
created_at=datetime.datetime.now(),
1043-
repoid=repo.repoid,
1044-
branch="main",
1045-
avg_duration_seconds=20.0,
1046-
)
1034+
_ = TestFlagBridgeFactory(flag=repo_flag2, test=test2)
1035+
10471036
res = self.fetch_test_analytics(
10481037
repo.name,
1049-
"""flags""",
1038+
"""flags(term: "hello")""",
10501039
)
10511040
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
@@ -95,13 +95,17 @@ async def resolve_flake_aggregates(
9595

9696

9797
@test_analytics_bindable.field("testSuites")
98-
async def resolve_test_suites(repository: Repository, info: GraphQLResolveInfo, **_):
99-
return await sync_to_async(get_test_suites)(repository.repoid)
98+
async def resolve_test_suites(
99+
repository: Repository, info: GraphQLResolveInfo, term: str | None = None, **_
100+
):
101+
return await sync_to_async(get_test_suites)(repository.repoid, term)
100102

101103

102104
@test_analytics_bindable.field("flags")
103-
async def resolve_flags(repository: Repository, info: GraphQLResolveInfo, **_):
104-
return await sync_to_async(get_flags)(repository.repoid)
105+
async def resolve_flags(
106+
repository: Repository, info: GraphQLResolveInfo, term: str | None = None, **_
107+
):
108+
return await sync_to_async(get_flags)(repository.repoid, term)
105109

106110

107111
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
@@ -563,18 +563,35 @@ def generate_flake_aggregates(
563563
)
564564

565565

566-
def get_test_suites(repoid: int) -> list[str]:
567-
return list(
568-
Test.objects.filter(repository_id=repoid)
569-
.values_list("testsuite", flat=True)
570-
.distinct()
571-
)
566+
def get_test_suites(repoid: int, term: str | None = None) -> list[str]:
567+
if term:
568+
return list(
569+
Test.objects.filter(repository_id=repoid, testsuite__icontains=term)
570+
.values_list("testsuite", flat=True)
571+
.distinct()
572+
)
573+
else:
574+
return list(
575+
Test.objects.filter(repository_id=repoid)
576+
.values_list("testsuite", flat=True)
577+
.distinct()
578+
)
572579

573580

574-
def get_flags(repoid: int) -> list[str]:
575-
return list(
576-
TestFlagBridge.objects.filter(test__repository_id=repoid)
577-
.select_related("flag")
578-
.values_list("flag__flag_name", flat=True)
579-
.distinct()
580-
)
581+
def get_flags(repoid: int, term: str | None = None) -> list[str]:
582+
if term:
583+
return list(
584+
TestFlagBridge.objects.filter(
585+
test__repository_id=repoid, flag__flag_name__icontains=term
586+
)
587+
.select_related("flag")
588+
.values_list("flag__flag_name", flat=True)
589+
.distinct()
590+
)
591+
else:
592+
return list(
593+
TestFlagBridge.objects.filter(test__repository_id=repoid)
594+
.select_related("flag")
595+
.values_list("flag__flag_name", flat=True)
596+
.distinct()
597+
)

0 commit comments

Comments
 (0)