diff --git a/graphql_api/tests/test_repository.py b/graphql_api/tests/test_repository.py index d1b9ee52b3..df710e18f7 100644 --- a/graphql_api/tests/test_repository.py +++ b/graphql_api/tests/test_repository.py @@ -842,3 +842,15 @@ def test_branch_filter_on_test_results(self) -> None: """testResults(filters: { branch: "main"}) { edges { node { name } } }""", ) assert res["testResults"] == {"edges": [{"node": {"name": test.name}}]} + + def test_resolve_test_results_count(self) -> None: + repo = RepositoryFactory(author=self.owner, active=True, private=True) + TestFactory(repository=repo) + TestFactory(repository=repo) + res = self.fetch_repository(repo.name, """testResultsCount""") + assert res["testResultsCount"] == 2 + + def test_resolve_test_results_count_no_tests(self) -> None: + repo = RepositoryFactory(author=self.owner, active=True, private=True) + res = self.fetch_repository(repo.name, """testResultsCount""") + assert res["testResultsCount"] == 0 diff --git a/graphql_api/types/repository/repository.graphql b/graphql_api/types/repository/repository.graphql index 1135ffca21..f93d45e3b0 100644 --- a/graphql_api/types/repository/repository.graphql +++ b/graphql_api/types/repository/repository.graphql @@ -91,6 +91,7 @@ type Repository { last: Int before: String ): TestResultConnection! @cost(complexity: 10, multipliers: ["first", "last"]) + testResultsCount: Int! } type TestResultConnection { diff --git a/graphql_api/types/repository/repository.py b/graphql_api/types/repository/repository.py index ef45b7c1fb..7fa18e5c4e 100644 --- a/graphql_api/types/repository/repository.py +++ b/graphql_api/types/repository/repository.py @@ -581,3 +581,9 @@ async def resolve_test_results( else OrderingDirection.DESC, **kwargs, ) + + +@repository_bindable.field("testResultsCount") +@sync_to_async +def resolve_test_results_count(repository: Repository, info: GraphQLResolveInfo) -> int: + return Test.objects.filter(repository=repository).count() diff --git a/reports/tests/factories.py b/reports/tests/factories.py index f706c0815f..e92414f86b 100644 --- a/reports/tests/factories.py +++ b/reports/tests/factories.py @@ -104,6 +104,7 @@ class Meta: model = models.Test id = factory.Faker("word") + name = factory.Faker("word") repository = factory.SubFactory(RepositoryFactory)