| Index: chrome/common/extensions/docs/server2/features_model_test.py
|
| diff --git a/chrome/common/extensions/docs/server2/features_model_test.py b/chrome/common/extensions/docs/server2/features_model_test.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..352e7752e7474ff5727a8b5bdbb8663cb1fa4d3c
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/server2/features_model_test.py
|
| @@ -0,0 +1,170 @@
|
| +#!/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.
|
| +
|
| +from copy import deepcopy
|
| +import unittest
|
| +
|
| +from features_model import FeaturesModel
|
| +
|
| +raw_features_json = {
|
| + 'doc1': {
|
| + 'extension_types': ['extension', 'platform_app']
|
| + },
|
| + 'doc2': {
|
| + 'extension_types': ['hosted_app', 'packaged_app']
|
| + },
|
| + 'doc3': {
|
| + 'whitelist': 'hashhashashhashashhashashhash'
|
| + },
|
| + 'doc4': [
|
| + {
|
| + 'extension_types': 'all'
|
| + },
|
| + {
|
| + 'whitelist': 'hashhashashhashashhashashhash'
|
| + }
|
| + ],
|
| + 'doc5': {
|
| + 'extension_types': ['extension']
|
| + },
|
| + 'doc1.sub1': {
|
| + 'extension_types': ['platform_app', 'hosted_app', 'packaged_app']
|
| + }
|
| +}
|
| +
|
| +class FeaturesUtilityTest(unittest.TestCase):
|
| + def testFeatureFile(self):
|
| + init_json = {
|
| + 'doc1': {
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc1'
|
| + },
|
| + 'doc2': {
|
| + 'platform': [],
|
| + 'name': 'doc2'
|
| + },
|
| + 'doc4': {
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc4'
|
| + },
|
| + 'doc5': {
|
| + 'platform': ['extension'],
|
| + 'name': 'doc5'
|
| + },
|
| + 'doc1.sub1': {
|
| + 'platform': ['app'],
|
| + 'name': 'doc1.sub1'
|
| + }
|
| + }
|
| +
|
| + features_model = FeaturesModel().LoadFeaturesJson(raw_features_json)
|
| + self.assertEqual(init_json, features_model.Get())
|
| +
|
| + additional_dict = {
|
| + 'doc1': {
|
| + 'documentation': 'http://documentation'
|
| + },
|
| + 'doc2': {
|
| + 'children': {
|
| + 'sub': {
|
| + 'name': 'sub'
|
| + }
|
| + }
|
| + },
|
| + 'doc5': {
|
| + 'example': {}
|
| + }
|
| + }
|
| +
|
| + expected_merge_result = {
|
| + 'doc1': {
|
| + 'documentation': 'http://documentation',
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc1'
|
| + },
|
| + 'doc2': {
|
| + 'platform': [],
|
| + 'name': 'doc2',
|
| + 'children': {
|
| + 'sub': {
|
| + 'name': 'sub'
|
| + }
|
| + }
|
| + },
|
| + 'doc4': {
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc4'
|
| + },
|
| + 'doc5': {
|
| + 'platform': ['extension'],
|
| + 'name': 'doc5',
|
| + 'example': {}
|
| + },
|
| + 'doc1.sub1': {
|
| + 'platform': ['app'],
|
| + 'name': 'doc1.sub1'
|
| + }
|
| + }
|
| +
|
| + features_model = features_model.MergeWith(additional_dict)
|
| + self.assertEqual(expected_merge_result, features_model.Get())
|
| +
|
| + expected_filter = {
|
| + 'doc1': {
|
| + 'documentation': 'http://documentation',
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc1'
|
| + },
|
| + 'doc4': {
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc4'
|
| + },
|
| + 'doc5': {
|
| + 'platform': ['extension'],
|
| + 'name': 'doc5',
|
| + 'example': {}
|
| + }
|
| + }
|
| +
|
| + self.assertEqual(
|
| + expected_filter, features_model.Filter('extension').Get())
|
| +
|
| + expecting = {
|
| + 'doc1': {
|
| + 'documentation': 'http://documentation',
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc1',
|
| + 'children': {
|
| + 'sub1': {
|
| + 'name': 'sub1',
|
| + 'platform': ['app']
|
| + }
|
| + }
|
| + },
|
| + 'doc2': {
|
| + 'platform': [],
|
| + 'name': 'doc2',
|
| + 'children': {
|
| + 'sub': {
|
| + 'name': 'sub'
|
| + }
|
| + }
|
| + },
|
| + 'doc4': {
|
| + 'platform': ['extension', 'app'],
|
| + 'name': 'doc4'
|
| + },
|
| + 'doc5': {
|
| + 'platform': ['extension'],
|
| + 'name': 'doc5',
|
| + 'example': {}
|
| + }
|
| + }
|
| +
|
| + self.assertEqual(
|
| + expecting, features_model.RestructureChildren())
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|