manifest_data_source_test.py revision ca12bfac764ba476d6cd062bf1dde12cc64c3f40
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 json
7import unittest
8
9from compiled_file_system import CompiledFileSystem
10from manifest_data_source import ManifestDataSource
11from object_store_creator import ObjectStoreCreator
12from test_file_system import TestFileSystem
13
14file_system = TestFileSystem({
15  "_manifest_features.json": json.dumps({
16    'req0': {
17      'extension_types': ['platform_app', 'extension']
18    },
19    'req1': {
20      'extension_types': 'all'
21    },
22    'opt0': {
23      'extension_types': ['extension']
24    },
25    'opt1': {
26      'extension_types': ['hosted_app']
27    },
28    'free0': {
29      'extension_types': ['platform_app']
30    },
31    'free1': {
32      'extension_types': ['platform_app', 'hosted_app', 'extension']
33    },
34    'only0': {
35      'extension_types': 'all'
36    },
37    'only1': {
38      'extension_types': ['platform_app']
39    },
40    'rec0': {
41    'extension_types': ['extension']
42    },
43    'rec1': {
44      'extension_types': ['platform_app', 'extension']
45    }
46  }),
47  "manifest.json": json.dumps({
48    'required': [
49      {
50        'name': 'req0',
51        'example': 'Extension'
52      },
53      {'name': 'req1'}
54    ],
55    'only_one': [
56      {'name': 'only0'},
57      {'name': 'only1'}
58    ],
59    'recommended': [
60      {'name': 'rec0'},
61      {'name': 'rec1'}
62    ],
63    'optional': [
64      {'name': 'opt0'},
65      {'name': 'opt1'}
66    ]
67  })
68})
69
70class ManifestDataSourceTest(unittest.TestCase):
71  def testCreateManifestData(self):
72    expected_extensions = {
73      'required': [
74        {
75          'name': 'req0',
76          'example': 'Extension'
77        },
78        {'name': 'req1'}
79      ],
80      'recommended': [
81        {'name': 'rec0'},
82        {'name': 'rec1'}
83      ],
84      'only_one': [
85        {'name': 'only0'}
86      ],
87      'optional': [
88        {'name': 'free1'},
89        {
90          'name': 'opt0',
91          'is_last': True
92        }
93      ]
94    }
95
96    expected_apps = {
97      'required': [
98        {
99          'name': 'req0',
100          'example': 'Application'
101        },
102        {'name': 'req1'}
103      ],
104      'recommended': [
105        {'name': 'rec1'}
106      ],
107      'only_one': [
108        {'name': 'only0'},
109        {'name': 'only1'}
110      ],
111      'optional': [
112        {'name': 'free0'},
113        {
114          'name': 'free1',
115          'is_last': True
116        }
117      ]
118    }
119
120    mds = ManifestDataSource(
121        CompiledFileSystem.Factory(file_system, ObjectStoreCreator.ForTest()),
122        file_system, 'manifest.json', '_manifest_features.json')
123
124    self.assertEqual(expected_extensions, mds.get('extensions'))
125    self.assertEqual(expected_apps, mds.get('apps'))
126
127if __name__ == '__main__':
128  unittest.main()
129