1#!/usr/bin/env python 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 4# found in the LICENSE file. 5 6import unittest 7 8from api_data_source import APIDataSource 9from extensions_paths import CHROME_EXTENSIONS 10from servlet import Request 11from server_instance import ServerInstance 12from test_data.api_data_source.canned_master_fs import CANNED_MASTER_FS_DATA 13from test_file_system import TestFileSystem 14 15 16class APIDataSourceTest(unittest.TestCase): 17 def setUp(self): 18 self.server_instance = ServerInstance.ForTest( 19 TestFileSystem(CANNED_MASTER_FS_DATA, relative_to=CHROME_EXTENSIONS)) 20 21 def testGet(self): 22 api_ds = APIDataSource(self.server_instance, Request.ForTest('/')) 23 jsc_view = api_ds.get('extensions').get('tester') 24 funcs_arr = [{ 25 'availability': None, 26 'callback': { 27 'name': 'callback', 28 'optional': False, 29 'parameters': [{ 30 'array': { 31 'availability': None, 32 'description': None, 33 'events': [], 34 'functions': [], 35 'id': 'type-results-resultsType', 36 'is_object': False, 37 'link': { 38 'name': 'TypeA', 39 'ref': 'tester.TypeA', 40 'text': 'TypeA' 41 }, 42 'name': 'resultsType', 43 'properties': [] 44 }, 45 'availability': None, 46 'description': None, 47 'functions': [], 48 'id': 'property-callback-results', 49 'is_object': False, 50 'last': True, 51 'name': 'results', 52 'optional': None, 53 'parameters': [], 54 'parentName': 'callback', 55 'properties': [], 56 'returns': None 57 }], 58 'simple_type': { 59 'simple_type': 'function' 60 } 61 }, 62 'description': 'Gets stuff.', 63 'id': 'method-get', 64 'name': 'get', 65 'parameters': [{ 66 'availability': None, 67 'choices': [{ 68 'availability': None, 69 'description': None, 70 'events': [], 71 'functions': [], 72 'id': 'type-a-string', 73 'is_object': False, 74 'name': 'string', 75 'properties': [], 76 'simple_type': 'string' 77 }, 78 { 79 'array': { 80 'availability': None, 81 'description': None, 82 'events': [], 83 'functions': [], 84 'id': 'type-strings-stringsType', 85 'is_object': False, 86 'name': 'stringsType', 87 'properties': [], 88 'simple_type': 'string' 89 }, 90 'availability': None, 91 'description': None, 92 'events': [], 93 'functions': [], 94 'id': 'type-a-strings', 95 'is_object': False, 96 'last': True, 97 'name': 'strings', 98 'properties': [] 99 }], 100 'description': 'a param', 101 'functions': [], 102 'id': 'property-get-a', 103 'is_object': False, 104 'name': 'a', 105 'optional': None, 106 'parameters': [], 107 'parentName': 'get', 108 'properties': [], 109 'returns': None 110 }, 111 { 112 'asFunction': { 113 'name': 'callback', 114 'optional': False, 115 'parameters': [{ 116 'array': { 117 'availability': None, 118 'description': None, 119 'events': [], 120 'functions': [], 121 'id': 'type-results-resultsType', 122 'is_object': False, 123 'link': { 124 'name': 'TypeA', 125 'ref': 'tester.TypeA', 126 'text': 'TypeA' 127 }, 128 'name': 'resultsType', 129 'properties': [] 130 }, 131 'availability': None, 132 'description': None, 133 'functions': [], 134 'id': 'property-callback-results', 135 'is_object': False, 136 'last': True, 137 'name': 'results', 138 'optional': None, 139 'parameters': [], 140 'parentName': 'callback', 141 'properties': [], 142 'returns': None 143 }], 144 'simple_type': { 145 'simple_type': 'function' 146 } 147 }, 148 'description': None, 149 'id': 'property-get-callback', 150 'isCallback': True, 151 'last': True, 152 'name': 'callback', 153 'optional': False, 154 'parentName': 'get', 155 'simple_type': 'function' 156 }], 157 'returns': None 158 }] 159 self.assertEquals(funcs_arr, jsc_view['functions']) 160 types_arr = [{ 161 'availability': None, 162 'description': 'A cool thing.', 163 'events': [], 164 'functions': [], 165 'id': 'type-TypeA', 166 'is_object': True, 167 'name': 'TypeA', 168 'properties': [{ 169 'array': { 170 'availability': None, 171 'description': None, 172 'events': [], 173 'functions': [], 174 'id': 'type-b-bType', 175 'is_object': False, 176 'link': { 177 'name': 'TypeA', 178 'ref': 'tester.TypeA', 179 'text': 'TypeA' 180 }, 181 'name': 'bType', 182 'properties': [] 183 }, 184 'availability': None, 185 'description': 'List of TypeA.', 186 'functions': [], 187 'id': 'property-TypeA-b', 188 'is_object': False, 189 'name': 'b', 190 'optional': True, 191 'parameters': [], 192 'parentName': 'TypeA', 193 'properties': [], 194 'returns': None 195 }], 196 'simple_type': 'object' 197 }] 198 self.assertEquals(types_arr, jsc_view['types']) 199 200if __name__ == '__main__': 201 unittest.main() 202