OLD | NEW |
(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 Monorail home page.""" |
| 7 |
| 8 import unittest |
| 9 |
| 10 from third_party import ezt |
| 11 |
| 12 import settings |
| 13 from framework import permissions |
| 14 from proto import site_pb2 |
| 15 from services import service_manager |
| 16 from sitewide import hostinghome |
| 17 from sitewide import projectsearch |
| 18 from testing import fake |
| 19 from testing import testing_helpers |
| 20 |
| 21 |
| 22 class MockProjectSearchPipeline(object): |
| 23 |
| 24 def __init__(self, _mr, services, _profiler): |
| 25 self.visible_results = services.mock_visible_results |
| 26 self.pagination = None |
| 27 |
| 28 def SearchForIDs(self): |
| 29 pass |
| 30 |
| 31 def GetProjectsAndPaginate(self, cnxn, list_page_url): |
| 32 pass |
| 33 |
| 34 |
| 35 class HostingHomeTest(unittest.TestCase): |
| 36 |
| 37 def setUp(self): |
| 38 self.services = service_manager.Services( |
| 39 project=fake.ProjectService(), |
| 40 project_star=fake.ProjectStarService()) |
| 41 self.services.mock_visible_results = [] |
| 42 self.project_a = self.services.project.TestAddProject('a', project_id=1) |
| 43 self.project_b = self.services.project.TestAddProject('b', project_id=2) |
| 44 |
| 45 self.servlet = hostinghome.HostingHome('req', 'res', services=self.services) |
| 46 self.mr = testing_helpers.MakeMonorailRequest(user_info={'user_id': 111L}) |
| 47 |
| 48 self.orig_pipeline_class = projectsearch.ProjectSearchPipeline |
| 49 projectsearch.ProjectSearchPipeline = MockProjectSearchPipeline |
| 50 |
| 51 def tearDown(self): |
| 52 projectsearch.ProjectSearchPipeline = self.orig_pipeline_class |
| 53 |
| 54 def testSearch_ZeroResults(self): |
| 55 self.services.mock_visible_results = [] |
| 56 page_data = self.servlet.GatherPageData(self.mr) |
| 57 self.assertEqual([], page_data['projects']) |
| 58 |
| 59 def testSearch_NonzeroResults(self): |
| 60 self.services.mock_visible_results = [self.project_a, self.project_b] |
| 61 page_data = self.servlet.GatherPageData(self.mr) |
| 62 self.assertEqual(['a', 'b'], |
| 63 [pv.project_name for pv in page_data['projects']]) |
| 64 |
| 65 def testStarCounts(self): |
| 66 """Test the display of star counts on each displayed project.""" |
| 67 self.services.mock_visible_results = [self.project_a, self.project_b] |
| 68 self.services.project_star.SetStar('fake cnxn', 1, 111L, True) |
| 69 self.services.project_star.SetStar('fake cnxn', 1, 222L, True) |
| 70 page_data = self.servlet.GatherPageData(self.mr) |
| 71 project_view_a, project_view_b = page_data['projects'] |
| 72 self.assertEqual(2, project_view_a.num_stars) |
| 73 self.assertEqual(0, project_view_b.num_stars) |
| 74 |
| 75 def testStarredProjects(self): |
| 76 self.services.mock_visible_results = [self.project_a, self.project_b] |
| 77 self.services.project_star.SetStar('fake cnxn', 1, 111L, True) |
| 78 page_data = self.servlet.GatherPageData(self.mr) |
| 79 project_view_a, project_view_b = page_data['projects'] |
| 80 self.assertTrue(project_view_a.starred) |
| 81 self.assertFalse(project_view_b.starred) |
| 82 |
| 83 def testGatherPageData(self): |
| 84 mr = testing_helpers.MakeMonorailRequest() |
| 85 page_data = self.servlet.GatherPageData(mr) |
| 86 self.assertEqual(settings.learn_more_link, page_data['learn_more_link']) |
| 87 |
| 88 def testGatherPageData_CanCreateProject(self): |
| 89 mr = testing_helpers.MakeMonorailRequest() |
| 90 mr.perms = permissions.PermissionSet([permissions.CREATE_PROJECT]) |
| 91 page_data = self.servlet.GatherPageData(mr) |
| 92 self.assertEqual( |
| 93 ezt.boolean(settings.project_creation_restriction == |
| 94 site_pb2.UserTypeRestriction.ANYONE), |
| 95 page_data['can_create_project']) |
| 96 |
| 97 mr.perms = permissions.PermissionSet([]) |
| 98 page_data = self.servlet.GatherPageData(mr) |
| 99 self.assertEqual(ezt.boolean(False), page_data['can_create_project']) |
| 100 |
| 101 def testMakeExampleLabelGrid(self): |
| 102 self.assertEqual([], hostinghome._MakeExampleLabelGrid([])) |
| 103 |
| 104 grid = hostinghome._MakeExampleLabelGrid( |
| 105 ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) |
| 106 self.assertEqual(2, len(grid)) |
| 107 self.assertEqual(['a', 'b', 'c', 'd'], grid[0].labels) |
| 108 self.assertEqual(['e', 'f', 'g', 'h'], grid[1].labels) |
| 109 |
| 110 grid = hostinghome._MakeExampleLabelGrid( |
| 111 ['a', 'b', 'c', 'd', 'e', 'f', 'g']) |
| 112 self.assertEqual(2, len(grid)) |
| 113 self.assertEqual(['a', 'b', 'c', 'd'], grid[0].labels) |
| 114 self.assertEqual(['e', 'f', 'g'], grid[1].labels) |
| 115 |
| 116 grid = hostinghome._MakeExampleLabelGrid(['lab'] * 15) |
| 117 self.assertEqual(3, len(grid)) |
| 118 self.assertEqual(5, len(grid[0].labels)) |
| 119 self.assertEqual(5, len(grid[1].labels)) |
| 120 self.assertEqual(5, len(grid[2].labels)) |
| 121 |
| 122 grid = hostinghome._MakeExampleLabelGrid(['lab'] * 24) |
| 123 self.assertEqual(4, len(grid)) |
| 124 self.assertEqual(6, len(grid[0].labels)) |
| 125 self.assertEqual(6, len(grid[1].labels)) |
| 126 self.assertEqual(6, len(grid[2].labels)) |
| 127 self.assertEqual(6, len(grid[3].labels)) |
| 128 |
| 129 if __name__ == '__main__': |
| 130 unittest.main() |
OLD | NEW |