def test_ignores_undecorated_functions(self): observed = _build_doubles.extract_schemas_from_source( dedent(''' def my_view(): pass ''')) self.assertEqual([], observed)
def test_can_extract_multiple_names_for_one_view(self): # This is helpful when in the process of renaming a view. [schema1, schema2] = _build_doubles.extract_schemas_from_source( dedent(''' service = AcceptableService('vendor') old_api = service.api('/old', 'old') new_api = service.api('/new', 'new') @old_api.view(introduced_at='1.0') @new_api.view(introduced_at='1.0') @validate_body({'type': 'object'}) @validate_output({'type': 'array'}) def my_view(): """Documentation.""" ''')) self.assertEqual('old', schema1.view_name) self.assertEqual('/old', schema1.url) self.assertEqual('1.0', schema1.version) self.assertEqual(['GET'], schema1.methods) self.assertEqual('Documentation.', schema1.doc) self.assertEqual({'type': 'object'}, schema1.input_schema) self.assertEqual({'type': 'array'}, schema1.output_schema) self.assertEqual('new', schema2.view_name) self.assertEqual('/new', schema2.url) self.assertEqual('1.0', schema2.version) self.assertEqual(['GET'], schema2.methods) self.assertEqual('Documentation.', schema2.doc) self.assertEqual({'type': 'object'}, schema2.input_schema) self.assertEqual({'type': 'array'}, schema2.output_schema)
def test_can_specify_version_as_arg(self): [schema] = _build_doubles.extract_schemas_from_source( dedent(''' service = AcceptableService('vendor') root_api = service.api('/foo', 'root') @root_api.view('1.5') def my_view(): """Documentation.""" ''')) self.assertEqual('1.5', schema.version)
def test_can_extract_multiple_versioned_schemas(self): [schema1, schema2] = _build_doubles.extract_schemas_from_source( dedent(''' service = AcceptableService('vendor') root_api = service.api('/foo', 'root') @root_api.view(introduced_at='1.1') def my_view(): """Documentation.""" @root_api.view(introduced_at='1.2') def my_view(): """Documentation.""" ''')) self.assertEqual('1.1', schema1.version)
def test_can_extract_acceptable_view_no_docstring(self): [schema] = _build_doubles.extract_schemas_from_source( dedent(''' service = AcceptableService('vendor') root_api = service.api('/', 'root') @root_api.view(introduced_at='1.0') def my_view(): pass ''')) self.assertEqual('root', schema.view_name) self.assertEqual('/', schema.url) self.assertEqual('1.0', schema.version) self.assertEqual(['GET'], schema.methods) self.assertEqual(None, schema.doc) self.assertEqual(None, schema.input_schema) self.assertEqual(None, schema.output_schema)
def test_can_extract_version_with_kwarg(self): [schema] = _build_doubles.extract_schemas_from_source( dedent(''' service = AcceptableService('vendor') root_api = service.api('/foo', 'root') @root_api.view(introduced_at='1.1') def my_view(): """Documentation.""" ''')) self.assertEqual('root', schema.view_name) self.assertEqual('/foo', schema.url) self.assertEqual('1.1', schema.version) self.assertEqual(['GET'], schema.methods) self.assertEqual('Documentation.', schema.doc) self.assertEqual(None, schema.input_schema) self.assertEqual(None, schema.output_schema)
def test_can_extract_schema_with_input_schema(self): [schema] = _build_doubles.extract_schemas_from_source( dedent(''' service = AcceptableService('vendor') root_api = service.api('/', 'root') @root_api.view(introduced_at='1.0') @validate_body({'type': 'object'}) def my_view(): """Documentation.""" ''')) self.assertEqual('root', schema.view_name) self.assertEqual('/', schema.url) self.assertEqual('1.0', schema.version) self.assertEqual(['GET'], schema.methods) self.assertEqual({'type': 'object'}, schema.input_schema) self.assertEqual('Documentation.', schema.doc) self.assertEqual(None, schema.output_schema)
def test_returns_empty_list_on_empty_source(self): self.assertEqual([], _build_doubles.extract_schemas_from_source(''))
def test_handles_other_assignments(self): self.assertEqual( [], _build_doubles.extract_schemas_from_source('foo = {}'))