From 4b350c4352225c4f20cb70609d203ccf8795993b Mon Sep 17 00:00:00 2001 From: Rula Abu Hasna Date: Tue, 23 Jul 2024 12:43:37 +0200 Subject: [PATCH 1/2] feat: Add number of testResultsCount --- graphql_api/tests/test_repository.py | 10 ++++++++++ graphql_api/types/repository/repository.graphql | 1 + graphql_api/types/repository/repository.py | 6 ++++++ reports/tests/factories.py | 1 + 4 files changed, 18 insertions(+) diff --git a/graphql_api/tests/test_repository.py b/graphql_api/tests/test_repository.py index d1b9ee52b3..43c2a0fb5d 100644 --- a/graphql_api/tests/test_repository.py +++ b/graphql_api/tests/test_repository.py @@ -842,3 +842,13 @@ 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 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) From 63662b203643d635445e2f46f6a2b3431a6f0504 Mon Sep 17 00:00:00 2001 From: Rula Abu Hasna Date: Tue, 23 Jul 2024 12:49:17 +0200 Subject: [PATCH 2/2] more tests --- graphql_api/tests/test_repository.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/graphql_api/tests/test_repository.py b/graphql_api/tests/test_repository.py index 43c2a0fb5d..df710e18f7 100644 --- a/graphql_api/tests/test_repository.py +++ b/graphql_api/tests/test_repository.py @@ -843,12 +843,14 @@ def test_branch_filter_on_test_results(self) -> None: ) 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""" - ) + 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