Chromium Code Reviews| Index: chrome/common/extensions/docs/server2/availability_data_source_test.py |
| diff --git a/chrome/common/extensions/docs/server2/availability_data_source_test.py b/chrome/common/extensions/docs/server2/availability_data_source_test.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..c5c5c0a3ef6f1a3c9325b8a5c3e55b3898c6daff |
| --- /dev/null |
| +++ b/chrome/common/extensions/docs/server2/availability_data_source_test.py |
| @@ -0,0 +1,108 @@ |
| +#!/usr/bin/env python |
| +# Copyright (c) 2012 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 os |
| +import unittest |
| + |
| +from api_data_source import APIDataSource |
| +from availability_data_source import AvailabilityDataSource |
| +from compiled_file_system import CompiledFileSystem |
| +from in_memory_object_store import InMemoryObjectStore |
| +from memcache_file_system import MemcacheFileSystem |
| +from test_file_system import TestFileSystem |
| + |
| +_TEST_DIR = 'test_data/test_avail/' |
| + |
| +_FILE_SYSTEMS = json.load( |
|
cduvall
2013/03/28 22:18:35
Instead of making these json objets global, use _R
epeterson
2013/03/28 23:50:36
Done? - Is this an adequate solution?
|
| + open(os.path.join(_TEST_DIR, 'test_avail_file_system.json'), 'r')) |
| + |
| +_BRANCH_DICT = json.load( |
| + open(os.path.join(_TEST_DIR, 'test_avail_branch_list.json'), 'r')) |
| + |
| +# These methods will prevent an api_data_source from actually loading an api, |
| +# since that behavior isn't of interest here; we're only interested in whether |
| +# or not the api is available to be loaded. |
| +def _LoadJsonAPI(self, api, disable_refs): |
| + return {} |
| + |
| +def _LoadIdlAPI(self, api, disable_refs): |
| + return {} |
| + |
| +class _FakeSamplesDataSource(object): |
| + def Create(self, request): |
| + return {} |
| + |
| +class _FakeRefResolver(object): |
| + def Create(self, request): |
| + return {} |
| + |
| +class _FakeChromeVersionDataSource(object): |
| + def GetDataSourceForVersion(self, version_number): |
| + branch_number = _BRANCH_DICT[version_number] |
| + branch_api_data_source = self._CreateMemcacheForBranch(branch_number) |
| + return branch_api_data_source |
| + |
| + def _CreateMemcacheForBranch(self, branch_number): |
| + branch_memcache = InMemoryObjectStore(branch_number) |
| + file_system = MemcacheFileSystem( |
| + TestFileSystem(_FILE_SYSTEMS[branch_number]), |
| + branch_memcache) |
| + cache_factory = CompiledFileSystem.Factory(file_system, branch_memcache) |
| + api_data_source_factory = APIDataSource.Factory(cache_factory, 'api') |
| + api_data_source_factory.SetReferenceResolverFactory(_FakeRefResolver()) |
| + api_data_source_factory.SetSamplesDataSourceFactory( |
| + _FakeSamplesDataSource()) |
| + return api_data_source_factory.Create(None) |
| + |
| +class AvailabilityDataSourceTest(unittest.TestCase): |
| + def setUp(self): |
| + self._availability_ds = AvailabilityDataSource( |
| + _FakeChromeVersionDataSource(), |
| + '26', |
| + InMemoryObjectStore('')) |
| + APIDataSource.Factory._LoadJsonAPI = _LoadJsonAPI |
| + APIDataSource.Factory._LoadIdlAPI = _LoadIdlAPI |
| + |
| + def testCheckExistence(self): |
| + self.assertEquals(False, |
| + self._availability_ds._CheckExistence('gobbledigook', '23')) |
| + self.assertEquals(True, |
| + self._availability_ds._CheckExistence('alarms', '22')) |
| + self.assertEquals(True, |
| + self._availability_ds._CheckExistence('alarms', '21')) |
| + self.assertEquals(False, |
| + self._availability_ds._CheckExistence('alarms', '20')) |
| + self.assertEquals(True, |
| + self._availability_ds._CheckExistence('tabs', '18')) |
| + self.assertEquals(False, |
| + self._availability_ds._CheckExistence('tabs', '17')) |
| + |
| + def testFindEarliestAvailability(self): |
| + self.assertEquals(None, |
| + self._availability_ds.FindEarliestAvailability('gobblediegook')) |
| + self.assertEquals('21', |
| + self._availability_ds.FindEarliestAvailability('alarms')) |
| + self.assertEquals('18', |
| + self._availability_ds.FindEarliestAvailability('bookmarks')) |
| + self.assertEquals('18', |
| + self._availability_ds.FindEarliestAvailability('browserAction')) |
| + self.assertEquals('18', |
| + self._availability_ds.FindEarliestAvailability('contextMenus')) |
| + self.assertEquals('18', |
| + self._availability_ds.FindEarliestAvailability('cookies')) |
| + self.assertEquals('21', |
| + self._availability_ds.FindEarliestAvailability('fileSystem')) |
| + self.assertEquals('24', |
| + self._availability_ds.FindEarliestAvailability('pushMessaging')) |
| + self.assertEquals('21', |
| + self._availability_ds.FindEarliestAvailability('runtime')) |
| + self.assertEquals('19', |
| + self._availability_ds.FindEarliestAvailability('storage')) |
| + self.assertEquals('18', |
| + self._availability_ds.FindEarliestAvailability('tabs')) |
| + |
| +if __name__ == '__main__': |
| + unittest.main() |