blob: 32879f6012e320681d1fa0bedd0a14dcf14f3732 [file] [log] [blame]
#!/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()