api_list_data_source_test.py revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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 json 7import unittest 8from api_list_data_source import APIListDataSource 9from compiled_file_system import CompiledFileSystem 10from copy import deepcopy 11from features_bundle import FeaturesBundle 12from object_store_creator import ObjectStoreCreator 13from test_file_system import TestFileSystem 14 15def _ToTestData(obj): 16 '''Transforms |obj| into test data by turning a list of files into an object 17 mapping that file to its contents (derived from its name). 18 ''' 19 return dict((name, name) for name in obj) 20 21def _ToTestFeatures(names): 22 '''Transforms a list of strings into a minimal JSON features object. 23 ''' 24 return dict((name, { 25 'name': name, 26 'platforms': platforms 27 }) for name, platforms in names) 28 29_TEST_DATA = { 30 'public': { 31 'apps': _ToTestData([ 32 'alarms.html', 33 'app_window.html', 34 'experimental_bluetooth.html', 35 'experimental_power.html', 36 'storage.html', 37 ]), 38 'extensions': _ToTestData([ 39 'alarms.html', 40 'browserAction.html', 41 'experimental_history.html', 42 'experimental_power.html', 43 'infobars.html', 44 'storage.html', 45 ]), 46 }, 47} 48 49_TEST_API_FEATURES = _ToTestFeatures([ 50 ('alarms', ['apps', 'extensions']), 51 ('app.window', ['apps']), 52 ('browserAction', ['extensions']), 53 ('experimental.bluetooth', ['apps']), 54 ('experimental.history', ['extensions']), 55 ('experimental.power', ['apps', 'extensions']), 56 ('infobars', ['extensions']), 57 ('something_internal', ['apps']), 58 ('something_else_internal', ['extensions']), 59 ('storage', ['apps', 'extensions']) 60]) 61 62 63class _FakeFeaturesBundle(object): 64 def GetAPIFeatures(self): 65 return _TEST_API_FEATURES 66 67 68class APIListDataSourceTest(unittest.TestCase): 69 def setUp(self): 70 object_store_creator = ObjectStoreCreator.ForTest() 71 self._factory = APIListDataSource.Factory( 72 CompiledFileSystem.Factory(object_store_creator), 73 TestFileSystem(deepcopy(_TEST_DATA)), 74 'public', 75 _FakeFeaturesBundle(), 76 object_store_creator) 77 78 def testApps(self): 79 api_list = self._factory.Create() 80 self.assertEqual([ 81 { 82 'name': 'alarms', 83 'platforms': ['apps', 'extensions'] 84 }, 85 { 86 'name': 'app.window', 87 'platforms': ['apps'] 88 }, 89 { 90 'name': 'storage', 91 'platforms': ['apps', 'extensions'], 92 'last': True 93 }], 94 api_list.get('apps').get('chrome')) 95 96 def testExperimentalApps(self): 97 api_list = self._factory.Create() 98 self.assertEqual([ 99 { 100 'name': 'experimental.bluetooth', 101 'platforms': ['apps'] 102 }, 103 { 104 'name': 'experimental.power', 105 'platforms': ['apps', 'extensions'], 106 'last': True 107 }], 108 sorted(api_list.get('apps').get('experimental'))) 109 110 def testExtensions(self): 111 api_list = self._factory.Create() 112 self.assertEqual([ 113 { 114 'name': 'alarms', 115 'platforms': ['apps', 'extensions'] 116 }, 117 { 118 'name': 'browserAction', 119 'platforms': ['extensions'] 120 }, 121 { 122 'name': 'infobars', 123 'platforms': ['extensions'] 124 }, 125 { 126 'name': 'storage', 127 'platforms': ['apps', 'extensions'], 128 'last': True 129 }], 130 sorted(api_list.get('extensions').get('chrome'))) 131 132 def testExperimentalExtensions(self): 133 api_list = self._factory.Create() 134 self.assertEqual([ 135 { 136 'name': 'experimental.history', 137 'platforms': ['extensions'] 138 }, 139 { 140 'name': 'experimental.power', 141 'platforms': ['apps', 'extensions'], 142 'last': True 143 }], 144 sorted(api_list.get('extensions').get('experimental'))) 145 146if __name__ == '__main__': 147 unittest.main() 148