From 371be7c7704b89a73bf1fe95b05ec4f069971562 Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Thu, 5 Sep 2024 12:52:01 +0200 Subject: [PATCH] Add number, object and array fixture props to test code samples, update snapshots --- .../fixtures/types/code-sample-definitions.ts | 14 +- test/fixtures/types/openapi.ts | 15 +- test/fixtures/types/route-types.ts | 10 +- test/fixtures/types/schemas.ts | 7 +- test/snapshots/blueprint.test.ts.md | 280 ++++++++++++++---- test/snapshots/blueprint.test.ts.snap | Bin 4034 -> 4694 bytes 6 files changed, 269 insertions(+), 57 deletions(-) diff --git a/test/fixtures/types/code-sample-definitions.ts b/test/fixtures/types/code-sample-definitions.ts index 83d2dd1..d652138 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 a48af70..0fe7a82 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 55d89a7..dd856ee 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 eb23fdc..2e428c1 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 b4cb2f9..6da1f97 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 2c55dbae3a9ec8c53b6983087abeaa002ff01370..1beee5759f134ef9af4cb5d513db83651f5907a0 100644 GIT binary patch literal 4694 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 J4dvIa{RgKz4l4iv literal 4034 zcmZ9GcQhLe_s5Oegi^a`l^8K(OSsZmuiLljjrsE8P$f?737?NwWdgxV{pJsU;T zruJ@8kJ0}6d)~j^_nvdlx#!-`{hY6sxz?>`o=}*ti`VO0a5;KPve0jy-(5qBHi|FOV^7rXsnOcJknqU!~cHI3W>l%HrF@H>@Dto>BFT9{L5ZNf9+nLvHB+Lsh34 z!&hk@{+1jyj6=ladNnx7xnV*o7As+W4_veM5NOo+yW7|A;Gf*T;WMx7^SM*H#q_=dRb*Z_^w+GW9HKhRi~^PX zSl^SpITS<2oOp-3R(Mq;l3Dal$m2|v;lV-e!H2T9EQPj=ZYjaClO>A-*z;ZzRX?76 zH84io$|BX@|0V>0R7_1b-D9?2Zl*yC``BPYTkK1IU&4wW(L6CFS}u(hIEY>2bQ>R5_AW$fnMD5jvBSRSbLhF2l!%H*b93`bZ18!MQ%5Htam|3FQ_R%%3?F^WE{#&mujgN0hbS)_N zb>Q@9Xe|@ee(^i3>}k4C;Rsng^`;`hnQ~X20D16z#PD5X6Hu(@6!5b}V8X9|a_ zuMX$s&vbYkGYdKy!RgCCozLnmL$l-$^H3I-VCOReqsJCbgs(jvz+BW_{+c`&*fsIz z4C*bLuS}`vL6WZ8bpu?=&S zeIfuDlqF%qf@aS@mT%u?P;(8-vs|jAGPfw0rSCRZc8-XuJbVFab!D%pm@-SvrdpS< zNTbRdra*Dbo}{hemoE+1QhUT zw)ue*3{3SN)9SgcI$wi&k~BXE?FceCI?v|!zj@3)Y`%Fs@Qz!S^>fKdp~J+zo%8nl z^0DJY`a5Nrj0~%V?nuGH4Q+FHP3m(yJzCho&7B8 zl>*@wA2e3HMOF7!*`!9sf3zZQ#0tg4y%lA;VE01yn7KRH)(K+74d$z}d8z-L# zZVNG7t?){VH&v4#;ZyK5gFPJEz}9j0)@6}%WZW);b0N2LwaxW`T@QTvRcC-qi;E5%J&gw#G=(f5!jiE0aiN*oj*2im{ljqQgFozpQsi0s~R0;-c<_< z6BLzr(<|8NS>C(c+C~^N>W!F3go^Ye{i(q35?eAjR1xX5DynTc2i-vYCtJphx z@DXT(^`}5fnV=f3Q_k-2ovtAcyDghQZ{+IrFE1***IzqrY1GutJ&CMjcC zCqej+$l#=pnR~i#pjSXGXp=L|0>@)a| z;P4Hj*WjVZb#o57A?-o%A89bAUpnHWsS7A#uQ)%YE6KDV#>!B_PBJ1;f0+*NQVaYr zQG6I_QTd#0NWdUWR#ZIvT$W@?eKB~A6bk&{e1dYbc#tK|U~oyZOS9MMTnq`6-_3+N zxNEEbvx9rz8!h(7!X7>^_!wgzRcCSV{V)Z28iT6^<~ax~Dy{fbtiS)d(|~>Va_+is zh0FTS%V^k6H-Dd*#arp>cYF@;fD{&`G(F~{$R94ZH6Z+;&-wo>ru8Y>wF6`RnRok` z)!}9+|8uN5BMUkumA?EoBc3}3TorG46j_IV(dy}u!ev|;&%c^c_r*cNmQz9Zz2oKa zJyHuGqz3RikPiV``c1#A(m$o9Q7XRFL+@hCe0l;ys;7gfNU}_o6|CE!<$8TYGpkhv z;i)jeM;@1jSvnOz^I-oD?pB{Xw5cN-nj|b#MEX}ivzP!gOToPT3KSB?6XEWaVIB^6 z3PZfA>k`HRuN}|EJV_{2NVH?fa$OdwJB+d-ueYMKeonLI2Q%QyE(>o)HkLp_Q{C*R zr@QgUvtP)5m(VQUr6X$cdR@xECUS^d=)NwO8+uVm8~UEi8WZNHsD)w+s-?^IdJ{jg z z1KykN;lF0{D{Vs+TtnOTB=zEC8aI67JuXc8|*9 z+1E9x0*qv4$tg@En+5c0f)vuu7P3GmW;;%#Ld{Zj?6ca3^Q71D{%BtQ;i){w^s)u& zmq5l#Bt#@W$&VW#z^3 zNmUs|s1$Re=MEk2Z;$gcDvu&oi`3Gk(=?_B!k7nrrAOxQ0eUvaa2>^UdzX1SCqHL` zj1s;@38}_VYgdKs*aF-!pJJH}ZtAOg`>uCIp}90^n8*J~T6Fl_zRP!bKb@05lBB5A z@Ge6aJV9H)8E|N28zCrJd2OfrkS9M*ZI&*da|xp)(ftS?BGLYCn5Edx9FJ{whVz(1NhV@O|20-c zZ*WClps+KYD0o=2X!^h8@-n#?VqfeI!Gyd4OsM?{ z3cf6%Sipv2rn?PyZdb8pZh+4lYgn=6==Z6IM#4|bJN?(e=Ljr)h&dJ0B(9Wa)a*gK z2c$Sbk@uLiq^gMMq*irXiu@;4gTE}SBhzkcb&m&u3Mo$bWQCjR!doFKIgmR`-CW=V-xpKfTeajtOt4n+Da9^q?_UO>)WylOtjW_!y!K1J)Aw(@ z*2!xJ@|{@c#sY4NowV(T1Ar=GU#cX`km06R7|K1YtqN8uI#clc98tp_LZbgOP0#Le zc%^vOQ2$r=`z!V1z41xFC>&AEr~jW{dm8tx&_ce$X}<9px(l5;roTSP9GITSz zNUnU3tVGL&H4PwTv-JY(QKdFJpP9BPwMLl)kqYDUjjcnYtUao3T6A}Ou9s4!P$F!2 zOH*yLHJ+kggnIbx+CyZsGEyz`q}n`2cwODr2>BA?^PCQWwV?0g!p$Qp_Yw9qVFBgt z{_Ty(WF22g^))~`7Y7l=WStgEU#3PrA=V!n$Z&F$pkw&xzN@}#@NP* kgIXfB9eDa8mp