Guide auto fixing links implemented
This commit is contained in:
@@ -1134,6 +1134,77 @@ class UGCCategoryTests(UGCMediaTestCase, UGCGatedTestCase):
|
||||
resp = self.client.get(reverse('library:guide_doc', args=['guide', version.pk, vf.file.uuid]))
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
|
||||
def test_guide_rewrites_links_to_separately_uploaded_files(self):
|
||||
self.project = Project.objects.create(
|
||||
slug='guide', title='Guide', category='guide', owner=self.alice,
|
||||
)
|
||||
self._upload_version(
|
||||
'README.md', b'# Title\n\n\n', content_type='text/markdown',
|
||||
)
|
||||
self._upload_version('images/logo.png', b'PNGDATA', content_type='image/png')
|
||||
self._upload_version_form()
|
||||
version = self.project.versions.first()
|
||||
md_vf = version.files.get(kind='markdown')
|
||||
self.gate()
|
||||
resp = self.client.get(reverse('library:guide_doc', args=['guide', version.pk, md_vf.file.uuid]))
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertContains(resp, '<img src="/api/files/', count=1)
|
||||
self.assertNotContains(resp, 'images/logo.png')
|
||||
|
||||
def test_guide_zip_docs_listed_and_links_rewritten(self):
|
||||
self.project = Project.objects.create(
|
||||
slug='guide', title='Guide', category='guide', owner=self.alice,
|
||||
)
|
||||
self._upload_version('guide.zip', _zip_bytes({
|
||||
'README.md': '# Read\n\n\n\nNext: [part two](part2.md)\n',
|
||||
'images/a.png': b'PNG2',
|
||||
'part2.md': '# Two\n',
|
||||
}))
|
||||
self._upload_version_form()
|
||||
version = self.project.versions.first()
|
||||
self.gate()
|
||||
# Both .md members appear in the guide switcher.
|
||||
resp = self.client.get(reverse('library:project_detail', args=['guide']))
|
||||
self.assertContains(resp, 'README.md')
|
||||
self.assertContains(resp, 'part2.md')
|
||||
# Zip doc renders with image + cross-doc link rewritten.
|
||||
resp = self.client.get(reverse('library:guide_zip_doc', args=['guide', version.pk, 'README.md']))
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertContains(resp, '<img src="/packs/guide/versions/%d/asset/images/a.png"' % version.pk, count=1)
|
||||
self.assertContains(resp, 'href="/packs/guide/guide/zip/%d/part2.md"' % version.pk, count=1)
|
||||
|
||||
def test_guide_zip_doc_rejects_non_guide_or_missing(self):
|
||||
self.project = Project.objects.create(
|
||||
slug='guide', title='Guide', category='guide', owner=self.alice,
|
||||
)
|
||||
self._upload_version('guide.zip', _zip_bytes({'README.md': '# Read\n'}))
|
||||
self._upload_version_form()
|
||||
version = self.project.versions.first()
|
||||
self.gate()
|
||||
self.assertEqual(
|
||||
self.client.get(reverse('library:guide_zip_doc', args=['guide', version.pk, 'missing.md'])).status_code,
|
||||
404,
|
||||
)
|
||||
self.assertEqual(
|
||||
self.client.get(reverse('library:guide_zip_doc', args=['guide', version.pk, 'data.json'])).status_code,
|
||||
404,
|
||||
)
|
||||
|
||||
def test_guide_links_not_rewritten_outside_guide_category(self):
|
||||
self.project = Project.objects.create(
|
||||
slug='pack', title='Pack', category='non_pack', owner=self.alice,
|
||||
)
|
||||
self._upload_version(
|
||||
'notes.md', b'# Notes\n\n\n', content_type='text/markdown',
|
||||
)
|
||||
self._upload_version_form()
|
||||
version = self.project.versions.first()
|
||||
md_vf = version.files.get(kind='markdown')
|
||||
self.gate()
|
||||
resp = self.client.get(reverse('library:guide_doc', args=['pack', version.pk, md_vf.file.uuid]))
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertContains(resp, 'src="images/x.png"')
|
||||
|
||||
def test_regular_category_has_no_extra_metadata(self):
|
||||
self.project = Project.objects.create(
|
||||
slug='mod', title='Mod', category='mod', owner=self.alice,
|
||||
|
||||
Reference in New Issue
Block a user