diff --git a/src/core/config/transformer/type_merger/snapshots/tailcall__core__config__transformer__type_merger__type_merger__test__list_field_types.snap b/src/core/config/transformer/type_merger/snapshots/tailcall__core__config__transformer__type_merger__type_merger__test__list_field_types.snap new file mode 100644 index 0000000000..181488ecdd --- /dev/null +++ b/src/core/config/transformer/type_merger/snapshots/tailcall__core__config__transformer__type_merger__type_merger__test__list_field_types.snap @@ -0,0 +1,28 @@ +--- +source: src/core/config/transformer/type_merger/type_merger.rs +expression: config.to_sdl() +--- +schema @server(hostname: "0.0.0.0", port: 8000) @upstream(baseURL: "http://jsonplaceholder.typicode.com", httpCache: 42) { + query: Query +} + +type F2 { + user: [User] +} + +type F3 { + user: User +} + +type Query { + user(id: Int!): F3 @http(path: "/users/{{.args.id}}") + users: F2 @http(path: "/users") +} + +type User { + email: String! + id: Int! + name: String! + phone: String + username: String! +} diff --git a/src/core/config/transformer/type_merger/type_merger.rs b/src/core/config/transformer/type_merger/type_merger.rs index 87a0b5e798..91d805f221 100644 --- a/src/core/config/transformer/type_merger/type_merger.rs +++ b/src/core/config/transformer/type_merger/type_merger.rs @@ -316,4 +316,12 @@ mod test { let config = TypeMerger::default().transform(config).to_result().unwrap(); insta::assert_snapshot!(config.to_sdl()); } + + #[test] + fn test_list_field_types() { + let sdl = std::fs::read_to_string(tailcall_fixtures::configs::USER_LIST).unwrap(); + let config = Config::from_sdl(&sdl).to_result().unwrap(); + let config = TypeMerger::default().transform(config).to_result().unwrap(); + insta::assert_snapshot!(config.to_sdl()); + } } diff --git a/tailcall-fixtures/fixtures/configs/user-list.graphql b/tailcall-fixtures/fixtures/configs/user-list.graphql new file mode 100644 index 0000000000..442b1a3a67 --- /dev/null +++ b/tailcall-fixtures/fixtures/configs/user-list.graphql @@ -0,0 +1,26 @@ +schema + @server(port: 8000, hostname: "0.0.0.0") + @upstream(baseURL: "http://jsonplaceholder.typicode.com", httpCache: 42) { + query: Query +} + +type F2 { + user: [User] +} + +type F3 { + user: User +} + +type User { + id: Int! + name: String! + username: String! + email: String! + phone: String +} + +type Query { + users: F2 @http(path: "/users") + user(id: Int!): F3 @http(path: "/users/{{.args.id}}") +}