Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: appengine/monorail/tracker/test/issuereindex_test.py

Issue 1868553004: Open Source Monorail (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is govered by a BSD-style
3 # license that can be found in the LICENSE file or at
4 # https://developers.google.com/open-source/licenses/bsd
5
6 """Unittests for monorail.tracker.issuereindex."""
7
8 import unittest
9
10 import mox
11
12 import settings
13 from framework import permissions
14 from framework import template_helpers
15 from services import service_manager
16 from services import tracker_fulltext
17 from testing import fake
18 from testing import testing_helpers
19 from tracker import issuereindex
20
21
22 class IssueReindexTest(unittest.TestCase):
23
24 def setUp(self):
25 self.cnxn = 'fake cnxn'
26 self.services = service_manager.Services(
27 config=fake.ConfigService(),
28 issue=fake.IssueService(),
29 user=fake.UserService(),
30 project=fake.ProjectService())
31 self.project = self.services.project.TestAddProject('proj', project_id=987)
32 self.mox = mox.Mox()
33
34 def tearDown(self):
35 self.mox.UnsetStubs()
36 self.mox.ResetAll()
37
38 def testAssertBasePermission_NoAccess(self):
39 # Non-members and contributors do not have permission to view this page.
40 for permission in (permissions.USER_PERMISSIONSET,
41 permissions.COMMITTER_ACTIVE_PERMISSIONSET):
42 request, mr = testing_helpers.GetRequestObjects(
43 project=self.project, perms=permission)
44 servlet = issuereindex.IssueReindex(
45 request, 'res', services=self.services)
46 try:
47 servlet.AssertBasePermission(mr)
48 self.fail('Expected PermissisonException not thrown.')
49 except permissions.PermissionException, e:
50 self.assertEqual('You are not allowed to administer this project',
51 e.message)
52
53 def testAssertBasePermission_WithAccess(self):
54 # Owners and admins have permission to view this page.
55 for permission in (permissions.OWNER_ACTIVE_PERMISSIONSET,
56 permissions.ADMIN_PERMISSIONSET):
57 request, mr = testing_helpers.GetRequestObjects(
58 project=self.project, perms=permission)
59 servlet = issuereindex.IssueReindex(
60 request, 'res', services=self.services)
61 servlet.AssertBasePermission(mr)
62
63 def testGatherPageData(self):
64 servlet = issuereindex.IssueReindex('req', 'res', services=self.services)
65
66 mr = testing_helpers.MakeMonorailRequest()
67 mr.auto_submit = True
68 ret = servlet.GatherPageData(mr)
69
70 self.assertTrue(ret['auto_submit'])
71 self.assertIsNone(ret['issue_tab_mode'])
72 self.assertTrue(ret['page_perms'].CreateIssue)
73
74 def _callProcessFormData(self, post_data, index_issue_1=True):
75 servlet = issuereindex.IssueReindex('req', 'res', services=self.services)
76
77 mr = testing_helpers.MakeMonorailRequest(project=self.project)
78 mr.cnxn = self.cnxn
79
80 issue1 = fake.MakeTestIssue(
81 project_id=self.project.project_id, local_id=1, summary='sum',
82 status='New', owner_id=111L)
83 issue1.project_name = self.project.project_name
84 self.services.issue.TestAddIssue(issue1)
85
86 self.mox.StubOutWithMock(tracker_fulltext, 'IndexIssues')
87 if index_issue_1:
88 tracker_fulltext.IndexIssues(
89 self.cnxn, [issue1], self.services.user, self.services.issue,
90 self.services.config)
91
92 self.mox.ReplayAll()
93
94 ret = servlet.ProcessFormData(mr, post_data)
95 self.mox.VerifyAll()
96 return ret
97
98 def testProcessFormData_NormalInputs(self):
99 post_data = {'start': 1, 'num': 5}
100 ret = self._callProcessFormData(post_data)
101 self.assertEquals(
102 '/p/None/issues/reindex?start=6&auto_submit=False&num=5', ret)
103
104 def testProcessFormData_LargeInputs(self):
105 post_data = {'start': 0, 'num': 10000000}
106 ret = self._callProcessFormData(post_data)
107 self.assertEquals(
108 '/p/None/issues/reindex?start=%s&auto_submit=False&num=%s' % (
109 settings.max_artifact_search_results_per_page,
110 settings.max_artifact_search_results_per_page),
111 ret)
112
113 def testProcessFormData_WithAutoSubmit(self):
114 post_data = {'start': 1, 'num': 5, 'auto_submit': 1}
115 ret = self._callProcessFormData(post_data)
116 self.assertEquals(
117 '/p/None/issues/reindex?start=6&auto_submit=True&num=5', ret)
118
119 def testProcessFormData_WithAutoSubmitButNoMoreIssues(self):
120 """This project has no issues 6-10, so stop autosubmitting."""
121 post_data = {'start': 6, 'num': 5, 'auto_submit': 1}
122 ret = self._callProcessFormData(post_data, index_issue_1=False)
123 self.assertEquals(
124 '/p/None/issues/reindex?start=11&auto_submit=False&num=5', ret)
125
126
127 if __name__ == '__main__':
128 unittest.main()
OLDNEW
« no previous file with comments | « appengine/monorail/tracker/test/issuepeek_test.py ('k') | appengine/monorail/tracker/test/issuetips_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698