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