aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/home/tests/test_repodata_helpers.py34
-rw-r--r--pydis_site/apps/home/views/home.py4
2 files changed, 38 insertions, 0 deletions
diff --git a/pydis_site/apps/home/tests/test_repodata_helpers.py b/pydis_site/apps/home/tests/test_repodata_helpers.py
index 34bbdcde..5634bc9b 100644
--- a/pydis_site/apps/home/tests/test_repodata_helpers.py
+++ b/pydis_site/apps/home/tests/test_repodata_helpers.py
@@ -124,3 +124,37 @@ class TestRepositoryMetadataHelpers(TestCase):
metadata = self.home_view._get_repo_data()
self.assertEquals(len(metadata), 0)
+
+ def test_cleans_up_stale_metadata(self):
+ """Tests that we clean up stale metadata when we start the HomeView."""
+ repo_data = RepositoryMetadata(
+ repo_name="python-discord/INVALID",
+ description="testrepo",
+ forks=42,
+ stargazers=42,
+ language="English",
+ last_updated=timezone.now() - timedelta(seconds=HomeView.repository_cache_ttl + 1),
+ )
+ repo_data.save()
+ self.home_view.__init__()
+ cached_repos = RepositoryMetadata.objects.all()
+ cached_names = [repo.repo_name for repo in cached_repos]
+
+ self.assertNotIn("python-discord/INVALID", cached_names)
+
+ def test_dont_clean_up_unstale_metadata(self):
+ """Tests that we don't clean up good metadata when we start the HomeView."""
+ repo_data = RepositoryMetadata(
+ repo_name="python-discord/site",
+ description="testrepo",
+ forks=42,
+ stargazers=42,
+ language="English",
+ last_updated=timezone.now() - timedelta(seconds=HomeView.repository_cache_ttl + 1),
+ )
+ repo_data.save()
+ self.home_view.__init__()
+ cached_repos = RepositoryMetadata.objects.all()
+ cached_names = [repo.repo_name for repo in cached_repos]
+
+ self.assertIn("python-discord/site", cached_names)
diff --git a/pydis_site/apps/home/views/home.py b/pydis_site/apps/home/views/home.py
index 0e5d4edf..e77772fb 100644
--- a/pydis_site/apps/home/views/home.py
+++ b/pydis_site/apps/home/views/home.py
@@ -29,6 +29,10 @@ class HomeView(View):
"python-discord/django-simple-bulma",
]
+ def __init__(self):
+ """Clean up stale RepositoryMetadata."""
+ RepositoryMetadata.objects.exclude(repo_name__in=self.repos).delete()
+
def _get_api_data(self) -> Dict[str, Dict[str, str]]:
"""
Call the GitHub API and get information about our repos.