Package tracopt :: Package ticket :: Package tests :: Module commit_updater

Source Code for Module tracopt.ticket.tests.commit_updater

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # Copyright (C) 2013-2020 Edgewall Software 
  4  # All rights reserved. 
  5  # 
  6  # This software is licensed as described in the file COPYING, which 
  7  # you should have received as part of this distribution. The terms 
  8  # are also available at https://trac.edgewall.org/wiki/TracLicense. 
  9  # 
 10  # This software consists of voluntary contributions made by many 
 11  # individuals. For the exact contribution history, see the revision 
 12  # history and logs, available at https://trac.edgewall.org/log/. 
 13   
 14  import unittest 
 15  from datetime import datetime 
 16   
 17  from trac.test import EnvironmentStub, Mock 
 18  from trac.tests.contentgen import random_sentence 
 19  from trac.ticket.model import Ticket 
 20  from trac.util.datefmt import utc 
 21  from trac.versioncontrol.api import Repository, RepositoryManager 
 22  from trac.wiki.tests import formatter 
 23  from tracopt.ticket.commit_updater import CommitTicketUpdater 
 24   
 25   
26 -class CommitTicketUpdaterTestCase(unittest.TestCase):
27
28 - def setUp(self):
29 self.env = EnvironmentStub(enable=['trac.*', 30 'tracopt.ticket.commit_updater.*']) 31 self.env.config.set('ticket', 'commit_ticket_update_check_perms', False) 32 self.repos = Mock(Repository, 'repos1', {'name': 'repos1', 'id': 1}, 33 self.env.log, normalize_rev=lambda rev: 1) 34 self.updater = CommitTicketUpdater(self.env)
35
36 - def tearDown(self):
37 self.env.reset_db()
38
39 - def _make_tickets(self, num):
40 self.tickets = [] 41 for i in xrange(0, num): 42 ticket = Ticket(self.env) 43 ticket['reporter'] = 'someone' 44 ticket['summary'] = random_sentence() 45 ticket.insert() 46 self.tickets.append(ticket)
47
48 - def test_changeset_added(self):
49 self._make_tickets(1) 50 message = 'This is the first comment. Refs #1.' 51 chgset = Mock(repos=self.repos, rev=1, message=message, author='joe', 52 date=datetime(2001, 1, 1, 1, 1, 1, 0, utc)) 53 self.updater.changeset_added(self.repos, chgset) 54 self.assertEqual("""\ 55 In [changeset:"1/repos1" 1/repos1]: 56 {{{ 57 #!CommitTicketReference repository="repos1" revision="1" 58 This is the first comment. Refs #1. 59 }}}""", self.tickets[0].get_change(cnum=1)['fields']['comment']['new'])
60
61 - def test_changeset_modified(self):
62 self._make_tickets(2) 63 message = 'This is the first comment. Refs #1.' 64 old_chgset = Mock(repos=self.repos, rev=1, 65 message=message, author='joe', 66 date=datetime(2001, 1, 1, 1, 1, 1, 0, utc)) 67 message = 'This is the first comment after an edit. Refs #1, #2.' 68 new_chgset = Mock(repos=self.repos, rev=1, 69 message=message, author='joe', 70 date=datetime(2001, 1, 2, 1, 1, 1, 0, utc)) 71 self.updater.changeset_added(self.repos, old_chgset) 72 self.updater.changeset_modified(self.repos, new_chgset, old_chgset) 73 self.assertEqual("""\ 74 In [changeset:"1/repos1" 1/repos1]: 75 {{{ 76 #!CommitTicketReference repository="repos1" revision="1" 77 This is the first comment. Refs #1. 78 }}}""", self.tickets[0].get_change(cnum=1)['fields']['comment']['new']) 79 self.assertEqual("""\ 80 In [changeset:"1/repos1" 1/repos1]: 81 {{{ 82 #!CommitTicketReference repository="repos1" revision="1" 83 This is the first comment after an edit. Refs #1, #2. 84 }}}""", self.tickets[1].get_change(cnum=1)['fields']['comment']['new'])
85 86
87 -def macro_setup(tc):
88 tc.env = EnvironmentStub(enable=('trac.*', 89 'tracopt.ticket.commit_updater.*',)) 90 ticket = Ticket(tc.env) 91 ticket['summary'] = 'the summary' 92 ticket['status'] = 'new' 93 ticket.insert() 94 def _get_repository(reponame): 95 return Mock(get_changeset=_get_changeset, resource=None)
96 def _get_changeset(rev=None): 97 return Mock(message="the message. refs #1. ", rev=rev) 98 setattr(RepositoryManager(tc.env), 'get_repository', _get_repository) 99 100 101 COMMIT_TICKET_REFERENCE_MACRO_TEST_CASES = u"""\ 102 ============================== No arguments 103 [[CommitTicketReference]] 104 ------------------------------ 105 <p> 106 </p><div class="message"><p> 107 the message. refs <a class="new ticket" href="/ticket/1" title="the summary (new)">#1</a>. <br /> 108 </p> 109 </div><p> 110 </p> 111 ------------------------------ 112 """ 113 114
115 -def suite():
116 suite = unittest.TestSuite() 117 suite.addTest(unittest.makeSuite(CommitTicketUpdaterTestCase)) 118 suite.addTest(formatter.suite(COMMIT_TICKET_REFERENCE_MACRO_TEST_CASES, 119 macro_setup, __file__, 120 context=('ticket', 1))) 121 return suite
122 123 124 if __name__ == '__main__': 125 unittest.main(defaultTest='suite') 126