Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use media availability instead of querying the filesystem #6428

Merged
merged 1 commit into from Dec 3, 2019
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 4 additions & 3 deletions readthedocs/builds/models.py
Expand Up @@ -379,17 +379,18 @@ def get_downloads(self, pretty=False):
def prettify(k):
return k if pretty else k.lower()

if project.has_pdf(self.slug, version_type=self.type):
if self.has_pdf:
data[prettify('PDF')] = project.get_production_media_url(
'pdf',
self.slug,
)
if project.has_htmlzip(self.slug, version_type=self.type):

if self.has_htmlzip:
data[prettify('HTML')] = project.get_production_media_url(
'htmlzip',
self.slug,
)
if project.has_epub(self.slug, version_type=self.type):
if self.has_epub:
data[prettify('Epub')] = project.get_production_media_url(
'epub',
self.slug,
Expand Down
19 changes: 10 additions & 9 deletions readthedocs/rtd_tests/tests/test_footer.py
Expand Up @@ -12,7 +12,6 @@
from readthedocs.builds.models import Version
from readthedocs.core.middleware import FooterNoSessionMiddleware
from readthedocs.projects.models import Project
from readthedocs.rtd_tests.mocks.paths import fake_paths_by_regex
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😮



class Testmaker(APITestCase):
Expand Down Expand Up @@ -74,23 +73,25 @@ def test_footer_uses_version_compare(self):
self.assertEqual(r.data['version_compare'], {'MOCKED': True})

def test_pdf_build_mentioned_in_footer(self):
with fake_paths_by_regex(r'\.pdf$'):
response = self.render()
self.latest.has_pdf = True
self.latest.save()

response = self.render()
self.assertIn('pdf', response.data['html'])

def test_pdf_not_mentioned_in_footer_when_doesnt_exists(self):
with fake_paths_by_regex(r'\.pdf$', exists=False):
response = self.render()
response = self.render()
self.assertNotIn('pdf', response.data['html'])

def test_epub_build_mentioned_in_footer(self):
with fake_paths_by_regex(r'\.epub$'):
response = self.render()
self.latest.has_epub = True
self.latest.save()

response = self.render()
self.assertIn('epub', response.data['html'])

def test_epub_not_mentioned_in_footer_when_doesnt_exists(self):
with fake_paths_by_regex(r'\.epub$', exists=False):
response = self.render()
response = self.render()
self.assertNotIn('epub', response.data['html'])

def test_no_session_logged_out(self):
Expand Down
12 changes: 12 additions & 0 deletions readthedocs/rtd_tests/tests/test_version.py
Expand Up @@ -82,3 +82,15 @@ def test_version_does_not_support_wipe(self):

def test_version_supports_wipe(self):
self.assertTrue(self.branch_version.supports_wipe)

def test_get_downloads(self):
self.assertDictEqual(self.branch_version.get_downloads(), {})

self.branch_version.has_pdf = True
self.branch_version.has_epub = True
self.branch_version.save()
expected = {
'epub': '//readthedocs.org/projects/pip/downloads/epub/stable/',
'pdf': '//readthedocs.org/projects/pip/downloads/pdf/stable/',
}
self.assertDictEqual(self.branch_version.get_downloads(), expected)