Home | History | Annotate | Download | only in server2
      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 
      6 import unittest
      7 from api_list_data_source import APIListDataSource
      8 from compiled_file_system import CompiledFileSystem
      9 from copy import deepcopy
     10 from object_store_creator import ObjectStoreCreator
     11 from test_file_system import TestFileSystem
     12 
     13 def _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 
     52 class 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 
     89 if __name__ == '__main__':
     90   unittest.main()
     91