api_list_data_source_test.py revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
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 6import unittest 7from api_list_data_source import APIListDataSource 8from compiled_file_system import CompiledFileSystem 9from copy import deepcopy 10from object_store_creator import ObjectStoreCreator 11from test_file_system import TestFileSystem 12 13def _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_infobars.idl', 28 'experimental_power.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_infobars.html', 46 'experimental_power.html', 47 'storage.html', 48 ], 49 }, 50}) 51 52class APIListDataSourceTest(unittest.TestCase): 53 def setUp(self): 54 self._factory = APIListDataSource.Factory( 55 CompiledFileSystem.Factory(TestFileSystem(deepcopy(_TEST_DATA)), 56 ObjectStoreCreator.ForTest()), 57 'api', 58 'public') 59 60 def testApps(self): 61 api_list = self._factory.Create() 62 self.assertEqual([{'name': 'alarms'}, 63 {'name': 'app.window'}, 64 {'name': 'storage', 'last': True}], 65 api_list.get('apps').get('chrome')) 66 67 def testExperimentalApps(self): 68 api_list = self._factory.Create() 69 self.assertEqual([{'name': 'experimental.bluetooth'}, 70 {'name': 'experimental.power', 'last': True}], 71 sorted(api_list.get('apps').get('experimental'))) 72 73 def testExtensions(self): 74 api_list = self._factory.Create() 75 self.assertEqual([{'name': 'alarms'}, 76 {'name': 'browserAction'}, 77 {'name': 'storage', 'last': True}], 78 sorted(api_list.get('extensions').get('chrome'))) 79 80 def testExperimentalApps(self): 81 api_list = self._factory.Create() 82 self.assertEqual([{'name': 'experimental.history'}, 83 {'name': 'experimental.infobars'}, 84 {'name': 'experimental.power', 'last': True}], 85 sorted(api_list.get('extensions').get('experimental'))) 86 87if __name__ == '__main__': 88 unittest.main() 89