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

Commit 07a0397

Browse files
feat: Add hasPublicRepos and hasActiveRepos owner props
1 parent 3aea532 commit 07a0397

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

shared/django_apps/codecov_auth/models.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,10 +461,18 @@ def root_organization(self: "Owner") -> Optional["Owner"]:
461461
def nb_active_private_repos(self):
462462
return self.repository_set.filter(active=True, private=True).count()
463463

464+
@property
465+
def has_public_repos(self):
466+
return self.repository_set.filter(private=False).exists()
467+
464468
@property
465469
def has_private_repos(self):
466470
return self.repository_set.filter(private=True).exists()
467471

472+
@property
473+
def has_active_repos(self):
474+
return self.repository_set.filter(active=True).exists()
475+
468476
@property
469477
def repo_credits(self):
470478
# Returns the number of private repo credits remaining

tests/unit/django_apps/codecov_auth/test_codecov_auth_models.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,48 @@ def test_nb_active_private_repos(self):
9393

9494
assert owner.nb_active_private_repos == 1
9595

96+
def test_has_public_repos(self):
97+
owner1 = OwnerFactory()
98+
RepositoryFactory(author=owner1, active=True, private=True)
99+
RepositoryFactory(author=owner1, active=True, private=False)
100+
RepositoryFactory(author=owner1, active=False, private=True)
101+
RepositoryFactory(author=owner1, active=False, private=False)
102+
assert owner1.has_public_repos is True
103+
104+
owner2 = OwnerFactory()
105+
RepositoryFactory(author=owner2, active=True, private=True)
106+
RepositoryFactory(author=owner2, active=False, private=True)
107+
RepositoryFactory(author=owner2, active=False, private=False)
108+
assert owner2.has_public_repos is True
109+
110+
owner3 = OwnerFactory()
111+
RepositoryFactory(author=owner3, active=True, private=True)
112+
RepositoryFactory(author=owner3, active=False, private=True)
113+
assert owner3.has_public_repos is False
114+
115+
owner4 = OwnerFactory()
116+
assert owner4.has_public_repos is False
117+
118+
def test_has_active_repos(self):
119+
owner1 = OwnerFactory()
120+
RepositoryFactory(author=owner1, active=True, private=True)
121+
RepositoryFactory(author=owner1, active=False, private=True)
122+
RepositoryFactory(author=owner1, active=False, private=False)
123+
assert owner1.has_active_repos is True
124+
125+
owner2 = OwnerFactory()
126+
RepositoryFactory(author=owner2, active=False, private=True)
127+
RepositoryFactory(author=owner2, active=True, private=False)
128+
assert owner2.has_active_repos is True
129+
130+
owner3 = OwnerFactory()
131+
RepositoryFactory(author=owner3, active=False, private=False)
132+
RepositoryFactory(author=owner3, active=False, private=True)
133+
assert owner3.has_active_repos is False
134+
135+
owner4 = OwnerFactory()
136+
assert owner4.has_active_repos is False
137+
96138
def test_plan_is_null_when_validating_form(self):
97139
owner = OwnerFactory()
98140
owner.plan = ""

0 commit comments

Comments
 (0)