blob: 020d19b9662a92f0efb40e9447390b5edcb10aea [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 server_instance import ServerInstance
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_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'])
])
_TEST_DATA = {
'api': {
'_api_features.json': json.dumps(_TEST_API_FEATURES),
'_manifest_features.json': '{}',
'_permission_features.json': '{}',
},
'docs': {
'templates': {
'json': {
'manifest.json': '{}',
'permissions.json': '{}',
},
'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',
]),
},
},
},
}
class APIListDataSourceTest(unittest.TestCase):
def setUp(self):
server_instance = ServerInstance.ForTest(TestFileSystem(_TEST_DATA))
self._factory = APIListDataSource.Factory(
server_instance.compiled_fs_factory,
server_instance.host_file_system_provider.GetTrunk(),
server_instance.features_bundle,
server_instance.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()