Skip to content
This repository was archived by the owner on May 5, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions shared/django_apps/codecov_auth/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,10 +461,18 @@ def root_organization(self: "Owner") -> Optional["Owner"]:
def nb_active_private_repos(self):
return self.repository_set.filter(active=True, private=True).count()

@property
def has_public_repos(self):
return self.repository_set.filter(private=False).exists()

@property
def has_private_repos(self):
return self.repository_set.filter(private=True).exists()

@property
def has_active_repos(self):
return self.repository_set.filter(active=True).exists()

@property
def repo_credits(self):
# Returns the number of private repo credits remaining
Expand Down
42 changes: 42 additions & 0 deletions tests/unit/django_apps/codecov_auth/test_codecov_auth_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,48 @@ def test_nb_active_private_repos(self):

assert owner.nb_active_private_repos == 1

def test_has_public_repos(self):
owner1 = OwnerFactory()
RepositoryFactory(author=owner1, active=True, private=True)
RepositoryFactory(author=owner1, active=True, private=False)
RepositoryFactory(author=owner1, active=False, private=True)
RepositoryFactory(author=owner1, active=False, private=False)
assert owner1.has_public_repos is True

owner2 = OwnerFactory()
RepositoryFactory(author=owner2, active=True, private=True)
RepositoryFactory(author=owner2, active=False, private=True)
RepositoryFactory(author=owner2, active=False, private=False)
assert owner2.has_public_repos is True

owner3 = OwnerFactory()
RepositoryFactory(author=owner3, active=True, private=True)
RepositoryFactory(author=owner3, active=False, private=True)
assert owner3.has_public_repos is False

owner4 = OwnerFactory()
assert owner4.has_public_repos is False

def test_has_active_repos(self):
owner1 = OwnerFactory()
RepositoryFactory(author=owner1, active=True, private=True)
RepositoryFactory(author=owner1, active=False, private=True)
RepositoryFactory(author=owner1, active=False, private=False)
assert owner1.has_active_repos is True

owner2 = OwnerFactory()
RepositoryFactory(author=owner2, active=False, private=True)
RepositoryFactory(author=owner2, active=True, private=False)
assert owner2.has_active_repos is True

owner3 = OwnerFactory()
RepositoryFactory(author=owner3, active=False, private=False)
RepositoryFactory(author=owner3, active=False, private=True)
assert owner3.has_active_repos is False

owner4 = OwnerFactory()
assert owner4.has_active_repos is False

def test_plan_is_null_when_validating_form(self):
owner = OwnerFactory()
owner.plan = ""
Expand Down