sidenav_data_source_test.py revision 868fa2fe829687343ffae624259930155e16dbd8
1#!/usr/bin/env python 2# Copyright (c) 2012 The Chromium Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6import json 7import os 8import sys 9import unittest 10 11from compiled_file_system import CompiledFileSystem 12from local_file_system import LocalFileSystem 13from object_store_creator import ObjectStoreCreator 14from sidenav_data_source import SidenavDataSource 15 16class SamplesDataSourceTest(unittest.TestCase): 17 def setUp(self): 18 self._json_path = 'docs/server2/test_data/sidenav_data_source' 19 self._compiled_fs_factory = CompiledFileSystem.Factory( 20 LocalFileSystem.Create(), 21 ObjectStoreCreator.ForTest()) 22 23 def _CheckLevels(self, items, level=2): 24 for item in items: 25 self.assertEqual(level, item['level']) 26 if 'items' in item: 27 self._CheckLevels(item['items'], level=level + 1) 28 29 def _ReadLocalFile(self, filename): 30 with open(os.path.join(sys.path[0], 31 'test_data', 32 'sidenav_data_source', 33 filename), 'r') as f: 34 return f.read() 35 36 def testLevels(self): 37 sidenav_data_source = SidenavDataSource.Factory(self._compiled_fs_factory, 38 self._json_path, 39 '').Create('') 40 sidenav_json = sidenav_data_source.get('test') 41 self._CheckLevels(sidenav_json) 42 43 def testSelected(self): 44 sidenav_data_source = SidenavDataSource.Factory( 45 self._compiled_fs_factory, 46 self._json_path, 47 '').Create('www.b.com') 48 sidenav_json = sidenav_data_source.get('test') 49 # This will be prettier once JSON is loaded with an OrderedDict. 50 for item in sidenav_json: 51 if item['title'] == 'Jim': 52 self.assertTrue(item.get('child_selected', False)) 53 for next_item in item['items']: 54 if next_item['title'] == 'B': 55 self.assertTrue(next_item.get('selected', False)) 56 return 57 # If we didn't return already, we should fail. 58 self.fail() 59 60 def testAbsolutePath(self): 61 sidenav_data_source = SidenavDataSource.Factory( 62 self._compiled_fs_factory, 63 self._json_path, 64 '/trunk').Create('absolute_path/test.html') 65 sidenav_json = sidenav_data_source.get('absolute_path') 66 self.assertEqual( 67 sidenav_json, 68 json.loads(self._ReadLocalFile('absolute_path_sidenav_expected.json'))) 69 70if __name__ == '__main__': 71 unittest.main() 72