Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: chrome/common/extensions/docs/server2/api_data_source_test.py

Issue 12996003: Dynamically generate a heading for Extension Docs API pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moving logic into availability_data_source Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import json 6 import json
7 import os 7 import os
8 import sys 8 import sys
9 import unittest 9 import unittest
10 10
(...skipping 10 matching lines...) Expand all
21 import third_party.json_schema_compiler.model as model 21 import third_party.json_schema_compiler.model as model
22 22
23 def _MakeLink(href, text): 23 def _MakeLink(href, text):
24 return '<a href="%s">%s</a>' % (href, text) 24 return '<a href="%s">%s</a>' % (href, text)
25 25
26 def _GetType(dict_, name): 26 def _GetType(dict_, name):
27 for type_ in dict_['types']: 27 for type_ in dict_['types']:
28 if type_['name'] == name: 28 if type_['name'] == name:
29 return type_ 29 return type_
30 30
31 class FakeAvailabilityDataSourceFactory(object):
32 def Create(self):
33 return {}
34
35 def _FakeGetAvailability(self):
36 return 'Not Currently Available'
37
31 class FakeSamplesDataSource(object): 38 class FakeSamplesDataSource(object):
32 def Create(self, request): 39 def Create(self, request):
33 return {} 40 return {}
34 41
35 class FakeAPIAndListDataSource(object): 42 class FakeAPIAndListDataSource(object):
36 def __init__(self, json_data): 43 def __init__(self, json_data):
37 self._json = json_data 44 self._json = json_data
38 45
39 def Create(self, *args, **kwargs): 46 def Create(self, *args, **kwargs):
40 return self 47 return self
41 48
42 def get(self, key): 49 def get(self, key):
43 if key not in self._json: 50 if key not in self._json:
44 raise FileNotFoundError(key) 51 raise FileNotFoundError(key)
45 return self._json[key] 52 return self._json[key]
46 53
47 def GetAllNames(self): 54 def GetAllNames(self):
48 return self._json.keys() 55 return self._json.keys()
49 56
50 class APIDataSourceTest(unittest.TestCase): 57 class APIDataSourceTest(unittest.TestCase):
51 def setUp(self): 58 def setUp(self):
52 self._base_path = os.path.join(sys.path[0], 'test_data', 'test_json') 59 self._base_path = os.path.join(sys.path[0], 'test_data', 'test_json')
60 _JSCModel._GetAvailability = _FakeGetAvailability
53 61
54 def _ReadLocalFile(self, filename): 62 def _ReadLocalFile(self, filename):
55 with open(os.path.join(self._base_path, filename), 'r') as f: 63 with open(os.path.join(self._base_path, filename), 'r') as f:
56 return f.read() 64 return f.read()
57 65
58 def _CreateRefResolver(self, filename): 66 def _CreateRefResolver(self, filename):
59 data_source = FakeAPIAndListDataSource( 67 data_source = FakeAPIAndListDataSource(
60 self._LoadJSON(filename)) 68 self._LoadJSON(filename))
61 return ReferenceResolver.Factory(data_source, 69 return ReferenceResolver.Factory(data_source,
62 data_source, 70 data_source,
(...skipping 21 matching lines...) Expand all
84 test3.pop('samples') 92 test3.pop('samples')
85 self.assertEqual(expected, test3) 93 self.assertEqual(expected, test3)
86 self.assertRaises(FileNotFoundError, data_source.get, 'junk') 94 self.assertRaises(FileNotFoundError, data_source.get, 'junk')
87 95
88 def _LoadJSON(self, filename): 96 def _LoadJSON(self, filename):
89 return json.loads(self._ReadLocalFile(filename)) 97 return json.loads(self._ReadLocalFile(filename))
90 98
91 def testCreateId(self): 99 def testCreateId(self):
92 data_source = FakeAPIAndListDataSource( 100 data_source = FakeAPIAndListDataSource(
93 self._LoadJSON('test_file_data_source.json')) 101 self._LoadJSON('test_file_data_source.json'))
102 fake_avail_factory = FakeAvailabilityDataSourceFactory()
94 dict_ = _JSCModel(self._LoadJSON('test_file.json')[0], 103 dict_ = _JSCModel(self._LoadJSON('test_file.json')[0],
95 self._CreateRefResolver('test_file_data_source.json'), 104 self._CreateRefResolver('test_file_data_source.json'),
96 False).ToDict() 105 False,
106 fake_avail_factory).ToDict()
97 self.assertEquals('type-TypeA', dict_['types'][0]['id']) 107 self.assertEquals('type-TypeA', dict_['types'][0]['id'])
98 self.assertEquals('property-TypeA-b', 108 self.assertEquals('property-TypeA-b',
99 dict_['types'][0]['properties'][0]['id']) 109 dict_['types'][0]['properties'][0]['id'])
100 self.assertEquals('method-get', dict_['functions'][0]['id']) 110 self.assertEquals('method-get', dict_['functions'][0]['id'])
101 self.assertEquals('event-EventA', dict_['events'][0]['id']) 111 self.assertEquals('event-EventA', dict_['events'][0]['id'])
102 112
103 # TODO(kalman): re-enable this when we have a rebase option. 113 # TODO(kalman): re-enable this when we have a rebase option.
104 def DISABLED_testToDict(self): 114 def DISABLED_testToDict(self):
105 filename = 'test_file.json' 115 filename = 'test_file.json'
106 expected_json = self._LoadJSON('expected_' + filename) 116 expected_json = self._LoadJSON('expected_' + filename)
107 data_source = FakeAPIAndListDataSource( 117 data_source = FakeAPIAndListDataSource(
108 self._LoadJSON('test_file_data_source.json')) 118 self._LoadJSON('test_file_data_source.json'))
109 dict_ = _JSCModel(self._LoadJSON(filename)[0], 119 dict_ = _JSCModel(self._LoadJSON(filename)[0],
110 self._CreateRefResolver('test_file_data_source.json'), 120 self._CreateRefResolver('test_file_data_source.json'),
111 False).ToDict() 121 False).ToDict()
112 self.assertEquals(expected_json, dict_) 122 self.assertEquals(expected_json, dict_)
113 123
114 def testFormatValue(self): 124 def testFormatValue(self):
115 self.assertEquals('1,234,567', _FormatValue(1234567)) 125 self.assertEquals('1,234,567', _FormatValue(1234567))
116 self.assertEquals('67', _FormatValue(67)) 126 self.assertEquals('67', _FormatValue(67))
117 self.assertEquals('234,567', _FormatValue(234567)) 127 self.assertEquals('234,567', _FormatValue(234567))
118 128
119 def testFormatDescription(self): 129 def testFormatDescription(self):
130 fake_avail_factory = FakeAvailabilityDataSourceFactory()
120 dict_ = _JSCModel(self._LoadJSON('ref_test.json')[0], 131 dict_ = _JSCModel(self._LoadJSON('ref_test.json')[0],
121 self._CreateRefResolver('ref_test_data_source.json'), 132 self._CreateRefResolver('ref_test_data_source.json'),
122 False).ToDict() 133 False,
134 fake_avail_factory).ToDict()
123 self.assertEquals(_MakeLink('ref_test.html#type-type2', 'type2'), 135 self.assertEquals(_MakeLink('ref_test.html#type-type2', 'type2'),
124 _GetType(dict_, 'type1')['description']) 136 _GetType(dict_, 'type1')['description'])
125 self.assertEquals( 137 self.assertEquals(
126 'A %s, or %s' % (_MakeLink('ref_test.html#type-type3', 'type3'), 138 'A %s, or %s' % (_MakeLink('ref_test.html#type-type3', 'type3'),
127 _MakeLink('ref_test.html#type-type2', 'type2')), 139 _MakeLink('ref_test.html#type-type2', 'type2')),
128 _GetType(dict_, 'type2')['description']) 140 _GetType(dict_, 'type2')['description'])
129 self.assertEquals( 141 self.assertEquals(
130 '%s != %s' % (_MakeLink('other.html#type-type2', 'other.type2'), 142 '%s != %s' % (_MakeLink('other.html#type-type2', 'other.type2'),
131 _MakeLink('ref_test.html#type-type2', 'type2')), 143 _MakeLink('ref_test.html#type-type2', 'type2')),
132 _GetType(dict_, 'type3')['description']) 144 _GetType(dict_, 'type3')['description'])
133 145
134 def testRemoveNoDocs(self): 146 def testRemoveNoDocs(self):
135 d = self._LoadJSON('nodoc_test.json') 147 d = self._LoadJSON('nodoc_test.json')
136 _RemoveNoDocs(d) 148 _RemoveNoDocs(d)
137 self.assertEqual(self._LoadJSON('expected_nodoc.json'), d) 149 self.assertEqual(self._LoadJSON('expected_nodoc.json'), d)
138 150
139 if __name__ == '__main__': 151 if __name__ == '__main__':
140 unittest.main() 152 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698