##// END OF EJS Templates
fixes #652 switch to generator approach when doing file annotation to prevent huge memory consumption when executed on large files. Thanks to ALexey Larikov for patch....
fixes #652 switch to generator approach when doing file annotation to prevent huge memory consumption when executed on large files. Thanks to ALexey Larikov for patch. - added pure dulwich method for getting file history.

File last commit:

r2317:c4d8ed62 beta
r3044:c57a3743 beta
Show More
test_changeset_comments.py
152 lines | 6.0 KiB | text/x-python | PythonLexer
/ rhodecode / tests / functional / test_changeset_comments.py
tests for changeset comments
r1715 from rhodecode.tests import *
from rhodecode.model.db import ChangesetComment, Notification, User, \
UserNotification
Mysql fixes...
r2149
class TestChangeSetCommentsController(TestController):
tests for changeset comments
r1715
def setUp(self):
for x in ChangesetComment.query().all():
commit less models...
r1749 self.Session.delete(x)
self.Session.commit()
tests for changeset comments
r1715
for x in Notification.query().all():
commit less models...
r1749 self.Session.delete(x)
self.Session.commit()
tests for changeset comments
r1715
def tearDown(self):
for x in ChangesetComment.query().all():
commit less models...
r1749 self.Session.delete(x)
self.Session.commit()
tests for changeset comments
r1715
for x in Notification.query().all():
commit less models...
r1749 self.Session.delete(x)
self.Session.commit()
tests for changeset comments
r1715
def test_create(self):
self.log_user()
rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
text = u'CommentOnRevision'
Mysql fixes...
r2149 params = {'text': text}
tests for changeset comments
r1715 response = self.app.post(url(controller='changeset', action='comment',
repo_name=HG_REPO, revision=rev),
params=params)
# Test response...
self.assertEqual(response.status, '302 Found')
response.follow()
response = self.app.get(url(controller='changeset', action='index',
repo_name=HG_REPO, revision=rev))
# test DB
self.assertEqual(ChangesetComment.query().count(), 1)
Fixed tests for new i18n changes...
r2317 response.mustcontain('''<div class="comments-number">%s comment '''
'''(0 inline)</div>''' % 1)
tests for changeset comments
r1715
Mysql fixes...
r2149 self.assertEqual(Notification.query().count(), 1)
self.assertEqual(ChangesetComment.query().count(), 1)
tests for changeset comments
r1715
notification = Notification.query().all()[0]
Mysql fixes...
r2149 ID = ChangesetComment.query().first().comment_id
White space cleanup
r2150 self.assertEqual(notification.type_,
Mysql fixes...
r2149 Notification.TYPE_CHANGESET_COMMENT)
sbj = (u'/vcs_test_hg/changeset/'
'27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s' % ID)
print "%s vs %s" % (sbj, notification.subject)
self.assertTrue(sbj in notification.subject)
tests for changeset comments
r1715
def test_create_inline(self):
self.log_user()
rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
text = u'CommentOnRevision'
f_path = 'vcs/web/simplevcs/views/repository.py'
line = 'n1'
Mysql fixes...
r2149 params = {'text': text, 'f_path': f_path, 'line': line}
tests for changeset comments
r1715 response = self.app.post(url(controller='changeset', action='comment',
repo_name=HG_REPO, revision=rev),
params=params)
# Test response...
self.assertEqual(response.status, '302 Found')
response.follow()
response = self.app.get(url(controller='changeset', action='index',
repo_name=HG_REPO, revision=rev))
#test DB
self.assertEqual(ChangesetComment.query().count(), 1)
fixed tests
r2194 response.mustcontain(
Fixed tests for new i18n changes...
r2317 '''<div class="comments-number">0 comments'''
fixed tests
r2194 ''' (%s inline)</div>''' % 1
)
response.mustcontain(
'''<div style="display:none" class="inline-comment-placeholder" '''
'''path="vcs/web/simplevcs/views/repository.py" '''
'''target_id="vcswebsimplevcsviewsrepositorypy">'''
)
tests for changeset comments
r1715
self.assertEqual(Notification.query().count(), 1)
Mysql fixes...
r2149 self.assertEqual(ChangesetComment.query().count(), 1)
tests for changeset comments
r1715
Mysql fixes...
r2149 notification = Notification.query().all()[0]
ID = ChangesetComment.query().first().comment_id
White space cleanup
r2150 self.assertEqual(notification.type_,
Mysql fixes...
r2149 Notification.TYPE_CHANGESET_COMMENT)
sbj = (u'/vcs_test_hg/changeset/'
'27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s' % ID)
print "%s vs %s" % (sbj, notification.subject)
self.assertTrue(sbj in notification.subject)
tests for changeset comments
r1715
def test_create_with_mention(self):
self.log_user()
rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
text = u'@test_regular check CommentOnRevision'
params = {'text':text}
response = self.app.post(url(controller='changeset', action='comment',
repo_name=HG_REPO, revision=rev),
params=params)
# Test response...
self.assertEqual(response.status, '302 Found')
response.follow()
response = self.app.get(url(controller='changeset', action='index',
repo_name=HG_REPO, revision=rev))
# test DB
self.assertEqual(ChangesetComment.query().count(), 1)
Fixed tests for new i18n changes...
r2317 response.mustcontain('''<div class="comments-number">%s '''
'''comment (0 inline)</div>''' % 1)
tests for changeset comments
r1715
self.assertEqual(Notification.query().count(), 2)
users = [x.user.username for x in UserNotification.query().all()]
# test_regular get's notification by @mention
- refactoring to overcome poor usage of global pylons config...
r1723 self.assertEqual(sorted(users), [u'test_admin', u'test_regular'])
tests for changeset comments
r1715
def test_delete(self):
self.log_user()
rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
text = u'CommentOnRevision'
Mysql fixes...
r2149 params = {'text': text}
tests for changeset comments
r1715 response = self.app.post(url(controller='changeset', action='comment',
repo_name=HG_REPO, revision=rev),
params=params)
comments = ChangesetComment.query().all()
self.assertEqual(len(comments), 1)
comment_id = comments[0].comment_id
self.app.delete(url(controller='changeset',
action='delete_comment',
repo_name=HG_REPO,
- refactoring to overcome poor usage of global pylons config...
r1723 comment_id=comment_id))
tests for changeset comments
r1715
comments = ChangesetComment.query().all()
self.assertEqual(len(comments), 0)
response = self.app.get(url(controller='changeset', action='index',
repo_name=HG_REPO, revision=rev))
Fixed tests for new i18n changes...
r2317 response.mustcontain('''<div class="comments-number">0 comments'''
''' (0 inline)</div>''')