diff --git a/tests/test_progit_flask_ui_docs.py b/tests/test_progit_flask_ui_docs.py index 9b6fb69..2d9cf16 100644 --- a/tests/test_progit_flask_ui_docs.py +++ b/tests/test_progit_flask_ui_docs.py @@ -11,12 +11,13 @@ __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources +import json import unittest import shutil import sys import os -import json +import pygit2 from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( @@ -89,6 +90,111 @@ class ProgitFlaskDocstests(tests.Modeltests): output = self.app.get('/test/docs', follow_redirects=True) self.assertEqual(output.status_code, 404) + def test_view_docs(self): + """ Test the view_docs endpoint. """ + tests.create_projects(self.session) + repo = pygit2.init_repository( + os.path.join(tests.HERE, 'docs', 'test.git'), bare=True) + + output = self.app.get('/test/docs') + self.assertEqual(output.status_code, 200) + self.assertTrue('

Docs

' in output.data) + self.assertTrue('

This repo is brand new!

' in output.data) + self.assertTrue( + 'git clone git@progit.fedorahosted.org:docs/test.git' + in output.data) + + # forked doc repo + docrepo = os.path.join(tests.HERE, 'docs', 'test', 'test.git') + repo = pygit2.init_repository(docrepo) + + # Create files in that git repo + with open(os.path.join(docrepo, 'sources'), 'w') as stream: + stream.write('foo\n bar') + repo.index.add('sources') + repo.index.write() + + folderpart = os.path.join(docrepo, 'folder1', 'folder2') + os.makedirs(folderpart) + with open(os.path.join(folderpart, 'test_file'), 'w') as stream: + stream.write('row1\nrow2\nrow3') + repo.index.add(os.path.join('folder1', 'folder2', 'test_file')) + repo.index.write() + + # Commits the files added + tree = repo.index.write_tree() + author = pygit2.Signature( + 'Alice Author', 'alice@authors.tld') + committer = pygit2.Signature( + 'Cecil Committer', 'cecil@committers.tld') + repo.create_commit( + 'refs/heads/master', # the name of the reference to update + author, + committer, + 'Add test files and folder', + # binary string representing the tree object ID + tree, + # list of binary strings representing parents of the new commit + [] + ) + + # Push the changes to the bare repo + remote = repo.create_remote( + 'origin', os.path.join(tests.HERE, 'docs', 'test.git')) + remote.push('refs/heads/master:refs/heads/master') + + # Now check the UI + + output = self.app.get('/test/docs') + self.assertEqual(output.status_code, 200) + self.assertTrue('

Docs

' in output.data) + self.assertFalse('

This repo is brand new!

' in output.data) + self.assertTrue( + '' in output.data) + self.assertTrue( + '' in output.data) + + output = self.app.get('/test/docs/master/sources') + self.assertEqual(output.status_code, 200) + self.assertTrue('

Docs

' in output.data) + self.assertTrue('
' in output.data) + + output = self.app.get('/test/docs/master/folder1/folder2') + self.assertEqual(output.status_code, 200) + self.assertTrue('

Docs

' in output.data) + self.assertTrue( + '
  • \n ' + '' + in output.data) + + output = self.app.get('/test/docs/master/folder1/folder2/test_file') + self.assertEqual(output.status_code, 200) + self.assertTrue('

    Docs

    ' in output.data) + self.assertTrue( + '
    \n row1\nrow2\n' + 'row3\n
    ' in output.data) + + output = self.app.get('/test/docs/master/folder1') + self.assertEqual(output.status_code, 200) + self.assertTrue('

    Docs

    ' in output.data) + self.assertTrue( + '
  • \n ' + '' + in output.data) + + output = self.app.get('/test/docs/master/folder1/foo') + self.assertEqual(output.status_code, 200) + self.assertTrue('

    Docs

    ' in output.data) + self.assertTrue( + '
  • File folder1/foo not found
  • ' + in output.data) + + output = self.app.get('/test/docs/master/folder1/foo/folder2') + self.assertEqual(output.status_code, 200) + self.assertTrue( + '
  • File folder1/foo/folder2 not found
  • ' + in output.data) + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase(ProgitFlaskDocstests)