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

Side by Side Diff: appengine/monorail/framework/test/reap_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 """Tests for the reap module."""
7
8 import unittest
9
10 import mox
11
12 from framework import reap
13 from framework import sql
14 from proto import project_pb2
15 from services import service_manager
16 from testing import fake
17 from testing import testing_helpers
18
19
20 class ReapTest(unittest.TestCase):
21
22 def setUp(self):
23 self.project_service = fake.ProjectService()
24 self.issue_service = fake.IssueService()
25 self.issue_star_service = fake.IssueStarService()
26 self.config_service = fake.ConfigService()
27 self.features_service = fake.FeaturesService()
28 self.project_star_service = fake.ProjectStarService()
29 self.services = service_manager.Services(
30 project=self.project_service,
31 issue=self.issue_service,
32 issue_star=self.issue_star_service,
33 config=self.config_service,
34 features=self.features_service,
35 project_star=self.project_star_service,
36 user=fake.UserService(),
37 usergroup=fake.UserGroupService())
38
39 self.proj1_id = 1001
40 self.proj1_issue_id = 111
41 self.proj1 = self.project_service.TestAddProject(
42 name='proj1', project_id=self.proj1_id)
43 self.proj2_id = 1002
44 self.proj2_issue_id = 112
45 self.proj2 = self.project_service.TestAddProject(
46 name='proj2', project_id=self.proj2_id)
47
48 self.mox = mox.Mox()
49 self.cnxn = self.mox.CreateMock(sql.MonorailConnection)
50 self.project_service.project_tbl = self.mox.CreateMock(sql.SQLTableManager)
51 self.issue_service.issue_tbl = self.mox.CreateMock(sql.SQLTableManager)
52
53 def tearDown(self):
54 self.mox.UnsetStubs()
55 self.mox.ResetAll()
56
57 def setUpMarkDoomedProjects(self):
58 self.project_service.project_tbl.Select(
59 self.cnxn, cols=['project_id'], limit=1000, state='archived',
60 where=mox.IgnoreArg()).AndReturn([[self.proj1_id]])
61
62 def testMarkDoomedProjects(self):
63 self.setUpMarkDoomedProjects()
64 reaper = reap.Reap('req', 'resp', services=self.services)
65
66 self.mox.ReplayAll()
67 doomed_project_ids = reaper._MarkDoomedProjects(self.cnxn)
68 self.mox.VerifyAll()
69
70 self.assertEquals([self.proj1_id], doomed_project_ids)
71 self.assertEquals(project_pb2.ProjectState.DELETABLE, self.proj1.state)
72 self.assertEquals('DELETABLE_%s' % self.proj1_id , self.proj1.project_name)
73
74 def setUpExpungeParts(self):
75 self.project_service.project_tbl.Select(
76 self.cnxn, cols=['project_id'], limit=100,
77 state='deletable').AndReturn([[self.proj1_id], [self.proj2_id]])
78 self.issue_service.issue_tbl.Select(
79 self.cnxn, cols=['id'], limit=1000,
80 project_id=self.proj1_id).AndReturn([[self.proj1_issue_id]])
81 self.issue_service.issue_tbl.Select(
82 self.cnxn, cols=['id'], limit=1000,
83 project_id=self.proj2_id).AndReturn([[self.proj2_issue_id]])
84
85 def testExpungeDeletableProjects(self):
86 self.setUpExpungeParts()
87 reaper = reap.Reap('req', 'resp', services=self.services)
88
89 self.mox.ReplayAll()
90 expunged_project_ids = reaper._ExpungeDeletableProjects(self.cnxn)
91 self.mox.VerifyAll()
92
93 self.assertEquals([self.proj1_id, self.proj2_id], expunged_project_ids)
94 # Verify all expected expunge methods were called.
95 self.assertEquals([self.proj1_issue_id, self.proj2_issue_id],
96 self.services.issue_star.expunged_item_ids)
97 self.assertEquals([self.proj1_issue_id, self.proj2_issue_id],
98 self.services.issue.expunged_issues)
99 self.assertEquals([self.proj1_id, self.proj2_id],
100 self.services.config.expunged_configs)
101 self.assertEquals([self.proj1_id, self.proj2_id],
102 self.services.features.expunged_saved_queries)
103 self.assertEquals([self.proj1_id, self.proj2_id],
104 self.services.features.expunged_filter_rules)
105 self.assertEquals([self.proj1_id, self.proj2_id],
106 self.services.issue.expunged_former_locations)
107 self.assertEquals([self.proj1_id, self.proj2_id],
108 self.services.issue.expunged_local_ids)
109 self.assertEquals([self.proj1_id, self.proj2_id],
110 self.services.features.expunged_quick_edit)
111 self.assertEquals([self.proj1_id, self.proj2_id],
112 self.services.project_star.expunged_item_ids)
113 self.assertEquals(0, len(self.services.project.test_projects))
114
115
116 if __name__ == '__main__':
117 unittest.main()
OLDNEW
« no previous file with comments | « appengine/monorail/framework/test/ratelimiter_test.py ('k') | appengine/monorail/framework/test/registerpages_helpers_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698