| #!/usr/bin/env python |
| # Copyright 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import json |
| import unittest |
| from api_list_data_source import APIListDataSource |
| from compiled_file_system import CompiledFileSystem |
| from copy import deepcopy |
| from features_bundle import FeaturesBundle |
| from object_store_creator import ObjectStoreCreator |
| from test_file_system import TestFileSystem |
| |
| def _ToTestData(obj): |
| '''Transforms |obj| into test data by turning a list of files into an object |
| mapping that file to its contents (derived from its name). |
| ''' |
| return dict((name, name) for name in obj) |
| |
| def _ToTestFeatures(names): |
| '''Transforms a list of strings into a minimal JSON features object. |
| ''' |
| return dict((name, { |
| 'name': name, |
| 'platforms': platforms |
| }) for name, platforms in names) |
| |
| _TEST_DATA = { |
| 'public': { |
| 'apps': _ToTestData([ |
| 'alarms.html', |
| 'app_window.html', |
| 'experimental_bluetooth.html', |
| 'experimental_power.html', |
| 'storage.html', |
| ]), |
| 'extensions': _ToTestData([ |
| 'alarms.html', |
| 'browserAction.html', |
| 'experimental_history.html', |
| 'experimental_power.html', |
| 'infobars.html', |
| 'storage.html', |
| ]), |
| }, |
| } |
| |
| _TEST_API_FEATURES = _ToTestFeatures([ |
| ('alarms', ['apps', 'extensions']), |
| ('app.window', ['apps']), |
| ('browserAction', ['extensions']), |
| ('experimental.bluetooth', ['apps']), |
| ('experimental.history', ['extensions']), |
| ('experimental.power', ['apps', 'extensions']), |
| ('infobars', ['extensions']), |
| ('something_internal', ['apps']), |
| ('something_else_internal', ['extensions']), |
| ('storage', ['apps', 'extensions']) |
| ]) |
| |
| |
| class _FakeFeaturesBundle(object): |
| def GetAPIFeatures(self): |
| return _TEST_API_FEATURES |
| |
| |
| class APIListDataSourceTest(unittest.TestCase): |
| def setUp(self): |
| object_store_creator = ObjectStoreCreator.ForTest() |
| self._factory = APIListDataSource.Factory( |
| CompiledFileSystem.Factory(object_store_creator), |
| TestFileSystem(deepcopy(_TEST_DATA)), |
| 'public', |
| _FakeFeaturesBundle(), |
| object_store_creator) |
| |
| def testApps(self): |
| api_list = self._factory.Create() |
| self.assertEqual([ |
| { |
| 'name': 'alarms', |
| 'platforms': ['apps', 'extensions'] |
| }, |
| { |
| 'name': 'app.window', |
| 'platforms': ['apps'] |
| }, |
| { |
| 'name': 'storage', |
| 'platforms': ['apps', 'extensions'], |
| 'last': True |
| }], |
| api_list.get('apps').get('chrome')) |
| |
| def testExperimentalApps(self): |
| api_list = self._factory.Create() |
| self.assertEqual([ |
| { |
| 'name': 'experimental.bluetooth', |
| 'platforms': ['apps'] |
| }, |
| { |
| 'name': 'experimental.power', |
| 'platforms': ['apps', 'extensions'], |
| 'last': True |
| }], |
| sorted(api_list.get('apps').get('experimental'))) |
| |
| def testExtensions(self): |
| api_list = self._factory.Create() |
| self.assertEqual([ |
| { |
| 'name': 'alarms', |
| 'platforms': ['apps', 'extensions'] |
| }, |
| { |
| 'name': 'browserAction', |
| 'platforms': ['extensions'] |
| }, |
| { |
| 'name': 'infobars', |
| 'platforms': ['extensions'] |
| }, |
| { |
| 'name': 'storage', |
| 'platforms': ['apps', 'extensions'], |
| 'last': True |
| }], |
| sorted(api_list.get('extensions').get('chrome'))) |
| |
| def testExperimentalExtensions(self): |
| api_list = self._factory.Create() |
| self.assertEqual([ |
| { |
| 'name': 'experimental.history', |
| 'platforms': ['extensions'] |
| }, |
| { |
| 'name': 'experimental.power', |
| 'platforms': ['apps', 'extensions'], |
| 'last': True |
| }], |
| sorted(api_list.get('extensions').get('experimental'))) |
| |
| if __name__ == '__main__': |
| unittest.main() |