diff --git a/test/fixtures/types/code-sample-definitions.ts b/test/fixtures/types/code-sample-definitions.ts index 83d2dd19..d6521383 100644 --- a/test/fixtures/types/code-sample-definitions.ts +++ b/test/fixtures/types/code-sample-definitions.ts @@ -13,7 +13,12 @@ export default [ foo: { foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, + array_prop: ['foo', 'bar'], }, }, }, @@ -31,7 +36,12 @@ export default [ { foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, + array_prop: ['foo', 'bar'], }, ], }, diff --git a/test/fixtures/types/openapi.ts b/test/fixtures/types/openapi.ts index a48af70b..0fe7a821 100644 --- a/test/fixtures/types/openapi.ts +++ b/test/fixtures/types/openapi.ts @@ -28,11 +28,24 @@ export default { type: 'string', 'x-undocumented': 'This prop is intentionally left undocumented.', }, - nullable_property: { + nullable_prop: { description: 'This prop is nullable', type: 'string', nullable: true, }, + number_prop: { + description: 'This prop is a number', + type: 'number', + format: 'float', + }, + object_prop: { + type: 'object', + properties: { foo: { type: 'string' } }, + }, + array_prop: { + type: 'array', + items: { type: 'string' }, + }, }, required: ['foo_id', 'name'], }, diff --git a/test/fixtures/types/route-types.ts b/test/fixtures/types/route-types.ts index 55d89a75..dd856ee0 100644 --- a/test/fixtures/types/route-types.ts +++ b/test/fixtures/types/route-types.ts @@ -12,7 +12,10 @@ export interface Routes { name: string deprecated_prop?: string undocumented_prop?: string - nullable_property?: string + nullable_prop?: string + number_prop?: number + object_prop?: Record + array_prop?: string[] } } } @@ -29,7 +32,10 @@ export interface Routes { name: string deprecated_prop?: string undocumented_prop?: string - nullable_property?: string + nullable_prop?: string + number_prop?: number + object_prop?: Record + array_prop?: string[] } } } diff --git a/test/fixtures/types/schemas.ts b/test/fixtures/types/schemas.ts index eb23fdc4..2e428c14 100644 --- a/test/fixtures/types/schemas.ts +++ b/test/fixtures/types/schemas.ts @@ -1,9 +1,12 @@ -import { z } from 'zod' +import { array, z } from 'zod' export const foo = z.object({ foo_id: z.string().uuid(), name: z.string(), deprecated_prop: z.string().optional(), undocumented_prop: z.string().optional(), - nullable_property: z.string().optional().nullable(), + nullable_prop: z.string().optional().nullable(), + number_prop: z.number().optional(), + object_prop: z.record(z.string(), z.any()).optional(), + array_prop: array(z.string()).optional(), }) diff --git a/test/snapshots/blueprint.test.ts.md b/test/snapshots/blueprint.test.ts.md index b4cb2f98..6da1f976 100644 --- a/test/snapshots/blueprint.test.ts.md +++ b/test/snapshots/blueprint.test.ts.md @@ -56,7 +56,45 @@ Generated by [AVA](https://avajs.dev). isDeprecated: false, isUndocumented: false, jsonType: 'string', - name: 'nullable_property', + name: 'nullable_prop', + }, + { + deprecationMessage: '', + description: 'This prop is a number', + format: 'number', + isDeprecated: false, + isUndocumented: false, + jsonType: 'number', + name: 'number_prop', + }, + { + deprecationMessage: '', + description: '', + format: 'object', + isDeprecated: false, + isUndocumented: false, + jsonType: 'object', + name: 'object_prop', + properties: [ + { + deprecationMessage: '', + description: '', + format: 'string', + isDeprecated: false, + isUndocumented: false, + jsonType: 'string', + name: 'foo', + }, + ], + }, + { + deprecationMessage: '', + description: '', + format: 'list', + isDeprecated: false, + isUndocumented: false, + jsonType: 'array', + name: 'array_prop', }, ], resourceType: 'foo', @@ -72,7 +110,7 @@ Generated by [AVA](https://avajs.dev). javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', response_syntax: 'javascript', title: 'JavaScript', }, @@ -80,28 +118,33 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}', + response: `["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]`, response_syntax: 'json', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -116,9 +159,17 @@ Generated by [AVA](https://avajs.dev). response: { body: { foo: { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, }, }, @@ -154,7 +205,7 @@ Generated by [AVA](https://avajs.dev). javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', response_syntax: 'javascript', title: 'JavaScript', }, @@ -162,28 +213,33 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}', + response: `["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]`, response_syntax: 'json', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -198,9 +254,17 @@ Generated by [AVA](https://avajs.dev). response: { body: { foo: { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, }, }, @@ -236,7 +300,7 @@ Generated by [AVA](https://avajs.dev). javascript: { request: 'await seam.foos.list()', request_syntax: 'javascript', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]', + response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'javascript', title: 'JavaScript', }, @@ -244,28 +308,33 @@ Generated by [AVA](https://avajs.dev). request: `foos->list()`, request_syntax: 'php', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]', + response: `[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]]`, response_syntax: 'json', title: 'PHP', }, python: { request: 'seam.foos.list()', request_syntax: 'python', - response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)]', + response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.list()', request_syntax: 'ruby', - response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}]', + response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos list ', request_syntax: 'bash', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]', + response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', title: 'Seam CLI', }, @@ -279,9 +348,17 @@ Generated by [AVA](https://avajs.dev). body: { foos: [ { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, ], }, @@ -318,7 +395,7 @@ Generated by [AVA](https://avajs.dev). javascript: { request: 'await seam.foos.list()', request_syntax: 'javascript', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]', + response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'javascript', title: 'JavaScript', }, @@ -326,28 +403,33 @@ Generated by [AVA](https://avajs.dev). request: `foos->list()`, request_syntax: 'php', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]', + response: `[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]]`, response_syntax: 'json', title: 'PHP', }, python: { request: 'seam.foos.list()', request_syntax: 'python', - response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)]', + response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.list()', request_syntax: 'ruby', - response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}]', + response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos list ', request_syntax: 'bash', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]', + response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', title: 'Seam CLI', }, @@ -361,9 +443,17 @@ Generated by [AVA](https://avajs.dev). body: { foos: [ { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, ], }, @@ -457,7 +547,45 @@ Generated by [AVA](https://avajs.dev). isDeprecated: false, isUndocumented: false, jsonType: 'string', - name: 'nullable_property', + name: 'nullable_prop', + }, + { + deprecationMessage: '', + description: 'This prop is a number', + format: 'number', + isDeprecated: false, + isUndocumented: false, + jsonType: 'number', + name: 'number_prop', + }, + { + deprecationMessage: '', + description: '', + format: 'object', + isDeprecated: false, + isUndocumented: false, + jsonType: 'object', + name: 'object_prop', + properties: [ + { + deprecationMessage: '', + description: '', + format: 'string', + isDeprecated: false, + isUndocumented: false, + jsonType: 'string', + name: 'foo', + }, + ], + }, + { + deprecationMessage: '', + description: '', + format: 'list', + isDeprecated: false, + isUndocumented: false, + jsonType: 'array', + name: 'array_prop', }, ], resourceType: 'foo', @@ -475,7 +603,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// javascript␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, response_syntax: 'javascript', title: 'JavaScript', }, @@ -485,7 +613,12 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]`, response_syntax: 'json', title: 'PHP', }, @@ -494,7 +627,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -503,7 +636,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -512,7 +645,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -527,9 +660,17 @@ Generated by [AVA](https://avajs.dev). response: { body: { foo: { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, }, }, @@ -567,7 +708,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// javascript␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, response_syntax: 'javascript', title: 'JavaScript', }, @@ -577,7 +718,12 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]`, response_syntax: 'json', title: 'PHP', }, @@ -586,7 +732,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -595,7 +741,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -604,7 +750,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -619,9 +765,17 @@ Generated by [AVA](https://avajs.dev). response: { body: { foo: { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, }, }, @@ -659,7 +813,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.list()`, request_syntax: 'javascript', response: `// javascript␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]`, + [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, response_syntax: 'javascript', title: 'JavaScript', }, @@ -669,7 +823,12 @@ Generated by [AVA](https://avajs.dev). $seam->foos->list()`, request_syntax: 'php', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]`, + [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]]`, response_syntax: 'json', title: 'PHP', }, @@ -678,7 +837,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.list()`, request_syntax: 'python', response: `// python␊ - [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)]`, + [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, response_syntax: 'python', title: 'Python', }, @@ -687,7 +846,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.list()`, request_syntax: 'ruby', response: `// ruby␊ - [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}]`, + [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, response_syntax: 'ruby', title: 'Ruby', }, @@ -696,7 +855,7 @@ Generated by [AVA](https://avajs.dev). seam foos list `, request_syntax: 'bash', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]`, + [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, response_syntax: 'json', title: 'Seam CLI', }, @@ -710,9 +869,17 @@ Generated by [AVA](https://avajs.dev). body: { foos: [ { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, ], }, @@ -751,7 +918,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.list()`, request_syntax: 'javascript', response: `// javascript␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]`, + [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, response_syntax: 'javascript', title: 'JavaScript', }, @@ -761,7 +928,12 @@ Generated by [AVA](https://avajs.dev). $seam->foos->list()`, request_syntax: 'php', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]`, + [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => [␊ + "foo" => "bar"␊ + ],"array_prop" => [␊ + "foo",␊ + "bar"␊ + ]]]`, response_syntax: 'json', title: 'PHP', }, @@ -770,7 +942,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.list()`, request_syntax: 'python', response: `// python␊ - [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_property=None)]`, + [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, response_syntax: 'python', title: 'Python', }, @@ -779,7 +951,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.list()`, request_syntax: 'ruby', response: `// ruby␊ - [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_property" => nil}]`, + [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, response_syntax: 'ruby', title: 'Ruby', }, @@ -788,7 +960,7 @@ Generated by [AVA](https://avajs.dev). seam foos list `, request_syntax: 'bash', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_property":null}]`, + [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, response_syntax: 'json', title: 'Seam CLI', }, @@ -802,9 +974,17 @@ Generated by [AVA](https://avajs.dev). body: { foos: [ { + array_prop: [ + 'foo', + 'bar', + ], foo_id: '8d7e0b3a-b889-49a7-9164-4b71a0506a33', name: 'Best foo', - nullable_property: null, + nullable_prop: null, + number_prop: 10, + object_prop: { + foo: 'bar', + }, }, ], }, diff --git a/test/snapshots/blueprint.test.ts.snap b/test/snapshots/blueprint.test.ts.snap index 2c55dbae..1beee575 100644 Binary files a/test/snapshots/blueprint.test.ts.snap and b/test/snapshots/blueprint.test.ts.snap differ