1 #!/usr/bin/env python 2 # Copyright 2013 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 6 import unittest 7 from api_list_data_source import APIListDataSource 8 from compiled_file_system import CompiledFileSystem 9 from copy import deepcopy 10 from object_store_creator import ObjectStoreCreator 11 from test_file_system import TestFileSystem 12 13 def _ToTestData(obj): 14 '''Transforms |obj| into test data by turning a list of files into an object 15 mapping that file to its contents (derived from its name). 16 ''' 17 return (dict((name, name) for name in obj) if isinstance(obj, list) else 18 dict((key, _ToTestData(value)) for key, value in obj.items())) 19 20 _TEST_DATA = _ToTestData({ 21 'api': [ 22 'alarms.idl', 23 'app_window.idl', 24 'browser_action.json', 25 'experimental_bluetooth.idl', 26 'experimental_history.idl', 27 'experimental_power.idl', 28 'infobars.idl', 29 'something_internal.idl', 30 'something_else_internal.json', 31 'storage.json', 32 ], 33 'public': { 34 'apps': [ 35 'alarms.html', 36 'app_window.html', 37 'experimental_bluetooth.html', 38 'experimental_power.html', 39 'storage.html', 40 ], 41 'extensions': [ 42 'alarms.html', 43 'browserAction.html', 44 'experimental_history.html', 45 'experimental_power.html', 46 'infobars.html', 47 'storage.html', 48 ], 49 }, 50 }) 51 52 class APIListDataSourceTest(unittest.TestCase): 53 def setUp(self): 54 file_system = TestFileSystem(deepcopy(_TEST_DATA)) 55 self._factory = APIListDataSource.Factory( 56 CompiledFileSystem.Factory( 57 file_system, ObjectStoreCreator.ForTest()), 58 file_system, 59 'api', 60 'public') 61 62 def testApps(self): 63 api_list = self._factory.Create() 64 self.assertEqual([{'name': 'alarms'}, 65 {'name': 'app.window'}, 66 {'name': 'storage', 'last': True}], 67 api_list.get('apps').get('chrome')) 68 69 def testExperimentalApps(self): 70 api_list = self._factory.Create() 71 self.assertEqual([{'name': 'experimental.bluetooth'}, 72 {'name': 'experimental.power', 'last': True}], 73 sorted(api_list.get('apps').get('experimental'))) 74 75 def testExtensions(self): 76 api_list = self._factory.Create() 77 self.assertEqual([{'name': 'alarms'}, 78 {'name': 'browserAction'}, 79 {'name': 'infobars'}, 80 {'name': 'storage', 'last': True}], 81 sorted(api_list.get('extensions').get('chrome'))) 82 83 def testExperimentalApps(self): 84 api_list = self._factory.Create() 85 self.assertEqual([{'name': 'experimental.history'}, 86 {'name': 'experimental.power', 'last': True}], 87 sorted(api_list.get('extensions').get('experimental'))) 88 89 if __name__ == '__main__': 90 unittest.main() 91