| Index: appengine/monorail/sitewide/test/hostinghome_test.py
|
| diff --git a/appengine/monorail/sitewide/test/hostinghome_test.py b/appengine/monorail/sitewide/test/hostinghome_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a7d86f8e4cd09d4cb00a368357cf2952aee91885
|
| --- /dev/null
|
| +++ b/appengine/monorail/sitewide/test/hostinghome_test.py
|
| @@ -0,0 +1,130 @@
|
| +# Copyright 2016 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is govered by a BSD-style
|
| +# license that can be found in the LICENSE file or at
|
| +# https://developers.google.com/open-source/licenses/bsd
|
| +
|
| +"""Tests for the Monorail home page."""
|
| +
|
| +import unittest
|
| +
|
| +from third_party import ezt
|
| +
|
| +import settings
|
| +from framework import permissions
|
| +from proto import site_pb2
|
| +from services import service_manager
|
| +from sitewide import hostinghome
|
| +from sitewide import projectsearch
|
| +from testing import fake
|
| +from testing import testing_helpers
|
| +
|
| +
|
| +class MockProjectSearchPipeline(object):
|
| +
|
| + def __init__(self, _mr, services, _profiler):
|
| + self.visible_results = services.mock_visible_results
|
| + self.pagination = None
|
| +
|
| + def SearchForIDs(self):
|
| + pass
|
| +
|
| + def GetProjectsAndPaginate(self, cnxn, list_page_url):
|
| + pass
|
| +
|
| +
|
| +class HostingHomeTest(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + self.services = service_manager.Services(
|
| + project=fake.ProjectService(),
|
| + project_star=fake.ProjectStarService())
|
| + self.services.mock_visible_results = []
|
| + self.project_a = self.services.project.TestAddProject('a', project_id=1)
|
| + self.project_b = self.services.project.TestAddProject('b', project_id=2)
|
| +
|
| + self.servlet = hostinghome.HostingHome('req', 'res', services=self.services)
|
| + self.mr = testing_helpers.MakeMonorailRequest(user_info={'user_id': 111L})
|
| +
|
| + self.orig_pipeline_class = projectsearch.ProjectSearchPipeline
|
| + projectsearch.ProjectSearchPipeline = MockProjectSearchPipeline
|
| +
|
| + def tearDown(self):
|
| + projectsearch.ProjectSearchPipeline = self.orig_pipeline_class
|
| +
|
| + def testSearch_ZeroResults(self):
|
| + self.services.mock_visible_results = []
|
| + page_data = self.servlet.GatherPageData(self.mr)
|
| + self.assertEqual([], page_data['projects'])
|
| +
|
| + def testSearch_NonzeroResults(self):
|
| + self.services.mock_visible_results = [self.project_a, self.project_b]
|
| + page_data = self.servlet.GatherPageData(self.mr)
|
| + self.assertEqual(['a', 'b'],
|
| + [pv.project_name for pv in page_data['projects']])
|
| +
|
| + def testStarCounts(self):
|
| + """Test the display of star counts on each displayed project."""
|
| + self.services.mock_visible_results = [self.project_a, self.project_b]
|
| + self.services.project_star.SetStar('fake cnxn', 1, 111L, True)
|
| + self.services.project_star.SetStar('fake cnxn', 1, 222L, True)
|
| + page_data = self.servlet.GatherPageData(self.mr)
|
| + project_view_a, project_view_b = page_data['projects']
|
| + self.assertEqual(2, project_view_a.num_stars)
|
| + self.assertEqual(0, project_view_b.num_stars)
|
| +
|
| + def testStarredProjects(self):
|
| + self.services.mock_visible_results = [self.project_a, self.project_b]
|
| + self.services.project_star.SetStar('fake cnxn', 1, 111L, True)
|
| + page_data = self.servlet.GatherPageData(self.mr)
|
| + project_view_a, project_view_b = page_data['projects']
|
| + self.assertTrue(project_view_a.starred)
|
| + self.assertFalse(project_view_b.starred)
|
| +
|
| + def testGatherPageData(self):
|
| + mr = testing_helpers.MakeMonorailRequest()
|
| + page_data = self.servlet.GatherPageData(mr)
|
| + self.assertEqual(settings.learn_more_link, page_data['learn_more_link'])
|
| +
|
| + def testGatherPageData_CanCreateProject(self):
|
| + mr = testing_helpers.MakeMonorailRequest()
|
| + mr.perms = permissions.PermissionSet([permissions.CREATE_PROJECT])
|
| + page_data = self.servlet.GatherPageData(mr)
|
| + self.assertEqual(
|
| + ezt.boolean(settings.project_creation_restriction ==
|
| + site_pb2.UserTypeRestriction.ANYONE),
|
| + page_data['can_create_project'])
|
| +
|
| + mr.perms = permissions.PermissionSet([])
|
| + page_data = self.servlet.GatherPageData(mr)
|
| + self.assertEqual(ezt.boolean(False), page_data['can_create_project'])
|
| +
|
| + def testMakeExampleLabelGrid(self):
|
| + self.assertEqual([], hostinghome._MakeExampleLabelGrid([]))
|
| +
|
| + grid = hostinghome._MakeExampleLabelGrid(
|
| + ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
|
| + self.assertEqual(2, len(grid))
|
| + self.assertEqual(['a', 'b', 'c', 'd'], grid[0].labels)
|
| + self.assertEqual(['e', 'f', 'g', 'h'], grid[1].labels)
|
| +
|
| + grid = hostinghome._MakeExampleLabelGrid(
|
| + ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
|
| + self.assertEqual(2, len(grid))
|
| + self.assertEqual(['a', 'b', 'c', 'd'], grid[0].labels)
|
| + self.assertEqual(['e', 'f', 'g'], grid[1].labels)
|
| +
|
| + grid = hostinghome._MakeExampleLabelGrid(['lab'] * 15)
|
| + self.assertEqual(3, len(grid))
|
| + self.assertEqual(5, len(grid[0].labels))
|
| + self.assertEqual(5, len(grid[1].labels))
|
| + self.assertEqual(5, len(grid[2].labels))
|
| +
|
| + grid = hostinghome._MakeExampleLabelGrid(['lab'] * 24)
|
| + self.assertEqual(4, len(grid))
|
| + self.assertEqual(6, len(grid[0].labels))
|
| + self.assertEqual(6, len(grid[1].labels))
|
| + self.assertEqual(6, len(grid[2].labels))
|
| + self.assertEqual(6, len(grid[3].labels))
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|