From a0080757f0edb174321968adfe14c1ba1bc00e0c Mon Sep 17 00:00:00 2001 From: Alexei Pastuchov Date: Mon, 18 May 2020 21:56:21 +0200 Subject: [PATCH 01/11] replace deprecated std::error::Error::description by Display's to_string() --- wundergraph_cli/src/infer_schema_internals/sqlite.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wundergraph_cli/src/infer_schema_internals/sqlite.rs b/wundergraph_cli/src/infer_schema_internals/sqlite.rs index e59890f..0565503 100644 --- a/wundergraph_cli/src/infer_schema_internals/sqlite.rs +++ b/wundergraph_cli/src/infer_schema_internals/sqlite.rs @@ -277,7 +277,7 @@ fn load_table_names_returns_error_when_given_schema_name() { let table_names = load_table_names(&conn, Some("stuff")); match table_names { Ok(_) => panic!("Expected load_table_names to return an error"), - Err(e) => assert!(e.description().starts_with( + Err(e) => assert!(e.to_string().starts_with( "sqlite cannot infer \ schema for databases" )), From 6c70d55c42a33745414805b3b58fca45fce7caa7 Mon Sep 17 00:00:00 2001 From: Alexei Pastuchov Date: Thu, 28 May 2020 20:40:52 +0200 Subject: [PATCH 02/11] Display implementation of GraphqlInsertable filters out primary keys --- wundergraph_cli/src/print_schema/print_helper.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/wundergraph_cli/src/print_schema/print_helper.rs b/wundergraph_cli/src/print_schema/print_helper.rs index c066b28..16636a3 100644 --- a/wundergraph_cli/src/print_schema/print_helper.rs +++ b/wundergraph_cli/src/print_schema/print_helper.rs @@ -475,7 +475,16 @@ impl<'a> Display for GraphqlInsertable<'a> { { let mut out = PadAdapter::new(f); writeln!(out)?; - for c in self.table.column_data.iter().filter(|c| !c.has_default) { + for c in self.table.column_data.iter().filter(|c| { + !c.has_default + && self + .table + .primary_key + .iter() + .filter(|x| **x == c.sql_name) + .count() + == 0 + }) { let t = GraphqlType { sql_type: &c.ty, allow_option: true, From e738f9de4e7ab26811eef8e4338337d925800f11 Mon Sep 17 00:00:00 2001 From: Alexei Pastuchov Date: Thu, 28 May 2020 23:11:24 +0200 Subject: [PATCH 03/11] the structs New{Comment,Post,User} shouldn't provide id parameter --- wundergraph_cli/src/print_schema/snapshots/tests__main.snap | 3 --- 1 file changed, 3 deletions(-) diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__main.snap b/wundergraph_cli/src/print_schema/snapshots/tests__main.snap index 1360c87..76c8a6c 100644 --- a/wundergraph_cli/src/print_schema/snapshots/tests__main.snap +++ b/wundergraph_cli/src/print_schema/snapshots/tests__main.snap @@ -86,7 +86,6 @@ wundergraph::query_object!{ #[graphql(scalar = "WundergraphScalarValue")] #[table_name = "comments"] pub struct NewComment { - id: i32, post: Option, commenter: Option, content: String, @@ -107,7 +106,6 @@ pub struct CommentChangeset { #[graphql(scalar = "WundergraphScalarValue")] #[table_name = "posts"] pub struct NewPost { - id: i32, author: Option, title: String, datetime: Option, @@ -130,7 +128,6 @@ pub struct PostChangeset { #[graphql(scalar = "WundergraphScalarValue")] #[table_name = "users"] pub struct NewUser { - id: i32, name: String, } From 67feb90b6ad5b3b03e3c6cdae2f68cbd4b4f0b66 Mon Sep 17 00:00:00 2001 From: Alexei Pastuchov Date: Thu, 28 May 2020 23:16:11 +0200 Subject: [PATCH 04/11] run round_trip's assertions in separate threads This approach ensures the test reachs killing of client's thread. --- wundergraph_cli/src/print_schema/mod.rs | 61 +++++++++++++------------ 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/wundergraph_cli/src/print_schema/mod.rs b/wundergraph_cli/src/print_schema/mod.rs index cbb2362..6ee59a0 100644 --- a/wundergraph_cli/src/print_schema/mod.rs +++ b/wundergraph_cli/src/print_schema/mod.rs @@ -311,41 +311,44 @@ mod tests { std::thread::sleep(std::time::Duration::from_secs(1)); let query = "{\"query\": \"{ Users { id name } } \"}"; - let mut r = client - .post(&format!("http://{}/graphql", listen_url)) - .body(query) - .header( - reqwest::header::CONTENT_TYPE, - reqwest::header::HeaderValue::from_static("application/json"), - ) - .send() - .unwrap(); - insta::assert_json_snapshot!(r.json::().unwrap()); - let mutation = r#"{"query":"mutation CreateUser {\n CreateUser(NewUser: {name: \"Max\"}) {\n id\n name\n }\n}","variables":null,"operationName":"CreateUser"}"#; - let mut r = client - .post(&format!("http://{}/graphql", listen_url)) - .body(mutation) - .header( - reqwest::header::CONTENT_TYPE, - reqwest::header::HeaderValue::from_static("application/json"), - ) - .send() - .unwrap(); - insta::assert_json_snapshot!(r.json::().unwrap()); + let t1 = request_test(&client, &listen_url, query); + let t2 = request_test(&client, &listen_url, mutation); + let t3 = request_test(&client, &listen_url, query); - let mut r = client + child.kill().unwrap(); + child.wait().unwrap(); + + if t1.is_err() || t2.is_err() || t3.is_err() { + panic!("round_trip failed") + } + } + + fn request_test(client: &reqwest::Client, listen_url: &str, body: &'static str) -> Result<(), std::string::String> { + let r = client .post(&format!("http://{}/graphql", listen_url)) - .body(query) + .body(body) .header( reqwest::header::CONTENT_TYPE, reqwest::header::HeaderValue::from_static("application/json"), ) - .send() - .unwrap(); - insta::assert_json_snapshot!(r.json::().unwrap()); - - child.kill().unwrap(); - child.wait().unwrap(); + .send(); + + match r { + Ok(mut r) => { + let builder = std::thread::Builder::new().name("round_trip".into()); + let handler = builder + .spawn(move || { + insta::assert_json_snapshot!(r.json::().unwrap()) + }) + .unwrap(); + + match handler.join() { + Err(e) => Err(format!("{:?}", e)), + _ => Ok(()), + } + } + Err(e) => Err(format!("{:?}", e)), + } } } From 178a042bc5ee7d5400223f65c4a1a8626e7cc8c7 Mon Sep 17 00:00:00 2001 From: Alexei Pastuchov Date: Fri, 29 May 2020 10:53:13 +0200 Subject: [PATCH 05/11] insta assertion is wrapped into std::panic::catch_unwind an alternative to previous thread based approach --- wundergraph_cli/src/print_schema/mod.rs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/wundergraph_cli/src/print_schema/mod.rs b/wundergraph_cli/src/print_schema/mod.rs index 6ee59a0..d3c9394 100644 --- a/wundergraph_cli/src/print_schema/mod.rs +++ b/wundergraph_cli/src/print_schema/mod.rs @@ -324,7 +324,11 @@ mod tests { } } - fn request_test(client: &reqwest::Client, listen_url: &str, body: &'static str) -> Result<(), std::string::String> { + fn request_test( + client: &reqwest::Client, + listen_url: &str, + body: &'static str, + ) -> Result<(), std::string::String> { let r = client .post(&format!("http://{}/graphql", listen_url)) .body(body) @@ -333,21 +337,14 @@ mod tests { reqwest::header::HeaderValue::from_static("application/json"), ) .send(); - match r { - Ok(mut r) => { - let builder = std::thread::Builder::new().name("round_trip".into()); - let handler = builder - .spawn(move || { - insta::assert_json_snapshot!(r.json::().unwrap()) - }) - .unwrap(); - - match handler.join() { + Ok(mut r) => match r.json::() { + Ok(r) => match std::panic::catch_unwind(|| insta::assert_json_snapshot!(r)) { + Ok(_) => Ok(()), Err(e) => Err(format!("{:?}", e)), - _ => Ok(()), - } - } + }, + Err(e) => Err(format!("{:?}", e)), + }, Err(e) => Err(format!("{:?}", e)), } } From eec8b720d131126e05db71fc1cb7c75e1dccd6e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=9F=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=83=D1=85=D0=BE=D0=B2?= Date: Fri, 29 May 2020 22:52:29 +0200 Subject: [PATCH 06/11] Update wundergraph_cli/src/print_schema/mod.rs Co-authored-by: Georg Semmler --- wundergraph_cli/src/print_schema/mod.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/wundergraph_cli/src/print_schema/mod.rs b/wundergraph_cli/src/print_schema/mod.rs index d3c9394..f2f7d0c 100644 --- a/wundergraph_cli/src/print_schema/mod.rs +++ b/wundergraph_cli/src/print_schema/mod.rs @@ -328,24 +328,22 @@ mod tests { client: &reqwest::Client, listen_url: &str, body: &'static str, - ) -> Result<(), std::string::String> { - let r = client + ) -> Result<(), String> { + fn error_mapper(e: T) -> String { + format!("{:?}", e) + } + + let mut r = client .post(&format!("http://{}/graphql", listen_url)) .body(body) .header( reqwest::header::CONTENT_TYPE, reqwest::header::HeaderValue::from_static("application/json"), ) - .send(); - match r { - Ok(mut r) => match r.json::() { - Ok(r) => match std::panic::catch_unwind(|| insta::assert_json_snapshot!(r)) { - Ok(_) => Ok(()), - Err(e) => Err(format!("{:?}", e)), - }, - Err(e) => Err(format!("{:?}", e)), - }, - Err(e) => Err(format!("{:?}", e)), - } + .send() + .map_err(error_mapper)?; + let r = r.json::().map_err(error_mapper)?; + std::panic::catch_unwind(|| insta::assert_json_snapshot!(r)).map_err(error_mapper)?; + Ok(()) } } From 55e5531b22375d071adea8e4e8152290c05e4eb1 Mon Sep 17 00:00:00 2001 From: Georg Semmler Date: Thu, 4 Jun 2020 16:35:34 +0200 Subject: [PATCH 07/11] Fix infer_schema snapshot for sqlite --- wundergraph_cli/Cargo.toml | 2 +- wundergraph_cli/src/print_schema/mod.rs | 10 +- ...schema__tests__infer_schema@postgres.snap} | 0 ...nt_schema__tests__infer_schema@sqlite.snap | 151 ++++++++++++++++++ 4 files changed, 161 insertions(+), 2 deletions(-) rename wundergraph_cli/src/print_schema/snapshots/{tests__infer_schema.snap => wundergraph_cli__print_schema__tests__infer_schema@postgres.snap} (100%) create mode 100644 wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__infer_schema@sqlite.snap diff --git a/wundergraph_cli/Cargo.toml b/wundergraph_cli/Cargo.toml index f13bf2e..6c79843 100644 --- a/wundergraph_cli/Cargo.toml +++ b/wundergraph_cli/Cargo.toml @@ -17,7 +17,7 @@ diesel = "1.4" [dev-dependencies] dotenv = "0.15" -insta = "0.12" +insta = "0.16" tempdir = "0.3" reqwest = "0.9" serde_json = "1" diff --git a/wundergraph_cli/src/print_schema/mod.rs b/wundergraph_cli/src/print_schema/mod.rs index f2f7d0c..e73ebb0 100644 --- a/wundergraph_cli/src/print_schema/mod.rs +++ b/wundergraph_cli/src/print_schema/mod.rs @@ -82,6 +82,12 @@ mod tests { } } + #[cfg(feature = "postgres")] + const BACKEND: &str = "postgres"; + + #[cfg(feature = "sqlite")] + const BACKEND: &str = "sqlite"; + #[cfg(feature = "postgres")] const MIGRATION: &[&str] = &[ "CREATE SCHEMA infer_test;", @@ -151,7 +157,9 @@ mod tests { print(&conn, None, &mut out).unwrap(); let s = String::from_utf8(out).unwrap(); - insta::assert_snapshot!(&s); + insta::with_settings!({snapshot_suffix => BACKEND}, { + insta::assert_snapshot!(&s); + }); } #[test] diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__infer_schema.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__infer_schema@postgres.snap similarity index 100% rename from wundergraph_cli/src/print_schema/snapshots/tests__infer_schema.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__infer_schema@postgres.snap diff --git a/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__infer_schema@sqlite.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__infer_schema@sqlite.snap new file mode 100644 index 0000000..76c8a6c --- /dev/null +++ b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__infer_schema@sqlite.snap @@ -0,0 +1,151 @@ +--- +source: wundergraph_cli/src/print_schema/mod.rs +expression: "&s" +--- +use wundergraph::query_builder::types::{HasMany, HasOne}; +use wundergraph::scalar::WundergraphScalarValue; +use wundergraph::WundergraphEntity; + +table! { + comments (id) { + id -> Integer, + post -> Nullable, + commenter -> Nullable, + content -> Text, + } +} + +table! { + posts (id) { + id -> Integer, + author -> Nullable, + title -> Text, + datetime -> Nullable, + content -> Nullable, + } +} + +table! { + users (id) { + id -> Integer, + name -> Text, + } +} + +allow_tables_to_appear_in_same_query!( + comments, + posts, + users, +); + + +#[derive(Clone, Debug, Identifiable, WundergraphEntity)] +#[table_name = "comments"] +#[primary_key(id)] +pub struct Comment { + id: i32, + post: Option>, + commenter: Option>, + content: String, +} + +#[derive(Clone, Debug, Identifiable, WundergraphEntity)] +#[table_name = "posts"] +#[primary_key(id)] +pub struct Post { + id: i32, + author: Option>, + title: String, + datetime: Option, + content: Option, + comments: HasMany, +} + +#[derive(Clone, Debug, Identifiable, WundergraphEntity)] +#[table_name = "users"] +#[primary_key(id)] +pub struct User { + id: i32, + name: String, + comments: HasMany, + posts: HasMany, +} + + + +wundergraph::query_object!{ + Query { + Comment, + Post, + User, + } +} + + +#[derive(Insertable, juniper::GraphQLInputObject, Clone, Debug)] +#[graphql(scalar = "WundergraphScalarValue")] +#[table_name = "comments"] +pub struct NewComment { + post: Option, + commenter: Option, + content: String, +} + +#[derive(AsChangeset, Identifiable, juniper::GraphQLInputObject, Clone, Debug)] +#[graphql(scalar = "WundergraphScalarValue")] +#[table_name = "comments"] +#[primary_key(id)] +pub struct CommentChangeset { + id: i32, + post: Option, + commenter: Option, + content: String, +} + +#[derive(Insertable, juniper::GraphQLInputObject, Clone, Debug)] +#[graphql(scalar = "WundergraphScalarValue")] +#[table_name = "posts"] +pub struct NewPost { + author: Option, + title: String, + datetime: Option, + content: Option, +} + +#[derive(AsChangeset, Identifiable, juniper::GraphQLInputObject, Clone, Debug)] +#[graphql(scalar = "WundergraphScalarValue")] +#[table_name = "posts"] +#[primary_key(id)] +pub struct PostChangeset { + id: i32, + author: Option, + title: String, + datetime: Option, + content: Option, +} + +#[derive(Insertable, juniper::GraphQLInputObject, Clone, Debug)] +#[graphql(scalar = "WundergraphScalarValue")] +#[table_name = "users"] +pub struct NewUser { + name: String, +} + +#[derive(AsChangeset, Identifiable, juniper::GraphQLInputObject, Clone, Debug)] +#[graphql(scalar = "WundergraphScalarValue")] +#[table_name = "users"] +#[primary_key(id)] +pub struct UserChangeset { + id: i32, + name: String, +} + +wundergraph::mutation_object!{ + Mutation{ + Comment(insert = NewComment, update = CommentChangeset, ), + Post(insert = NewPost, update = PostChangeset, ), + User(insert = NewUser, update = UserChangeset, ), + } +} + + From ee54e4667b06f82c730f941d300d1a0100d71c7b Mon Sep 17 00:00:00 2001 From: Alexei Pastuchov Date: Thu, 4 Jun 2020 20:41:34 +0200 Subject: [PATCH 08/11] rename round_trip templates +little amemdment in the content --- ... => wundergraph_cli__print_schema__tests__round_trip-2.snap} | 2 +- ... => wundergraph_cli__print_schema__tests__round_trip-3.snap} | 2 +- ...ap => wundergraph_cli__print_schema__tests__round_trip.snap} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename wundergraph_cli/src/print_schema/snapshots/{tests__round_trip-2.snap => wundergraph_cli__print_schema__tests__round_trip-2.snap} (72%) rename wundergraph_cli/src/print_schema/snapshots/{tests__round_trip-3.snap => wundergraph_cli__print_schema__tests__round_trip-3.snap} (74%) rename wundergraph_cli/src/print_schema/snapshots/{tests__round_trip.snap => wundergraph_cli__print_schema__tests__round_trip.snap} (63%) diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__round_trip-2.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-2.snap similarity index 72% rename from wundergraph_cli/src/print_schema/snapshots/tests__round_trip-2.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-2.snap index 50cf6c3..20afe47 100644 --- a/wundergraph_cli/src/print_schema/snapshots/tests__round_trip-2.snap +++ b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-2.snap @@ -1,6 +1,6 @@ --- source: wundergraph_cli/src/print_schema/mod.rs -expression: "r.json::().unwrap()" +expression: r --- { "data": { diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__round_trip-3.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-3.snap similarity index 74% rename from wundergraph_cli/src/print_schema/snapshots/tests__round_trip-3.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-3.snap index d61d514..1705213 100644 --- a/wundergraph_cli/src/print_schema/snapshots/tests__round_trip-3.snap +++ b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-3.snap @@ -1,6 +1,6 @@ --- source: wundergraph_cli/src/print_schema/mod.rs -expression: "r.json::().unwrap()" +expression: r --- { "data": { diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__round_trip.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip.snap similarity index 63% rename from wundergraph_cli/src/print_schema/snapshots/tests__round_trip.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip.snap index 9e80d0f..c278b99 100644 --- a/wundergraph_cli/src/print_schema/snapshots/tests__round_trip.snap +++ b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip.snap @@ -1,6 +1,6 @@ --- source: wundergraph_cli/src/print_schema/mod.rs -expression: "r.json::().unwrap()" +expression: r --- { "data": { From 7cbba1b414aebf2e784a3709b8d62b90da9303cb Mon Sep 17 00:00:00 2001 From: Georg Semmler Date: Thu, 4 Jun 2020 23:14:12 +0200 Subject: [PATCH 09/11] Try to fix CI --- wundergraph_cli/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wundergraph_cli/Cargo.toml b/wundergraph_cli/Cargo.toml index 6c79843..ae1cdfb 100644 --- a/wundergraph_cli/Cargo.toml +++ b/wundergraph_cli/Cargo.toml @@ -17,7 +17,7 @@ diesel = "1.4" [dev-dependencies] dotenv = "0.15" -insta = "0.16" +insta = { version = "0.16", features = ["backtrace"] } tempdir = "0.3" reqwest = "0.9" serde_json = "1" From a6f16aa564e5f2ed948f883182bf7b97c93838e8 Mon Sep 17 00:00:00 2001 From: Georg Semmler Date: Thu, 4 Jun 2020 23:33:05 +0200 Subject: [PATCH 10/11] Better error messages --- wundergraph_cli/src/print_schema/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wundergraph_cli/src/print_schema/mod.rs b/wundergraph_cli/src/print_schema/mod.rs index e73ebb0..75e19e4 100644 --- a/wundergraph_cli/src/print_schema/mod.rs +++ b/wundergraph_cli/src/print_schema/mod.rs @@ -327,9 +327,9 @@ mod tests { child.kill().unwrap(); child.wait().unwrap(); - if t1.is_err() || t2.is_err() || t3.is_err() { - panic!("round_trip failed") - } + t1.unwrap(); + t2.unwrap(); + t3.unwrap(); } fn request_test( From ad775a3703ee27377b64d03aa7152878fa43231c Mon Sep 17 00:00:00 2001 From: Georg Semmler Date: Fri, 5 Jun 2020 11:41:24 +0200 Subject: [PATCH 11/11] Cleanup the snapshot mess --- wundergraph_cli/src/print_schema/mod.rs | 16 +- .../print_schema/snapshots/tests__main-2.snap | 9 -- .../print_schema/snapshots/tests__main-3.snap | 17 -- .../print_schema/snapshots/tests__main-4.snap | 9 -- .../print_schema/snapshots/tests__main.snap | 151 ------------------ ...ma__tests__round_trip_test__mutation.snap} | 0 ...ema__tests__round_trip_test__query_1.snap} | 0 ...ema__tests__round_trip_test__query_2.snap} | 0 8 files changed, 11 insertions(+), 191 deletions(-) delete mode 100644 wundergraph_cli/src/print_schema/snapshots/tests__main-2.snap delete mode 100644 wundergraph_cli/src/print_schema/snapshots/tests__main-3.snap delete mode 100644 wundergraph_cli/src/print_schema/snapshots/tests__main-4.snap delete mode 100644 wundergraph_cli/src/print_schema/snapshots/tests__main.snap rename wundergraph_cli/src/print_schema/snapshots/{wundergraph_cli__print_schema__tests__round_trip-2.snap => wundergraph_cli__print_schema__tests__round_trip_test__mutation.snap} (100%) rename wundergraph_cli/src/print_schema/snapshots/{wundergraph_cli__print_schema__tests__round_trip.snap => wundergraph_cli__print_schema__tests__round_trip_test__query_1.snap} (100%) rename wundergraph_cli/src/print_schema/snapshots/{wundergraph_cli__print_schema__tests__round_trip-3.snap => wundergraph_cli__print_schema__tests__round_trip_test__query_2.snap} (100%) diff --git a/wundergraph_cli/src/print_schema/mod.rs b/wundergraph_cli/src/print_schema/mod.rs index 75e19e4..e906a06 100644 --- a/wundergraph_cli/src/print_schema/mod.rs +++ b/wundergraph_cli/src/print_schema/mod.rs @@ -158,7 +158,7 @@ mod tests { let s = String::from_utf8(out).unwrap(); insta::with_settings!({snapshot_suffix => BACKEND}, { - insta::assert_snapshot!(&s); + insta::assert_snapshot!("infer_schema", &s); }); } @@ -320,9 +320,9 @@ mod tests { let query = "{\"query\": \"{ Users { id name } } \"}"; let mutation = r#"{"query":"mutation CreateUser {\n CreateUser(NewUser: {name: \"Max\"}) {\n id\n name\n }\n}","variables":null,"operationName":"CreateUser"}"#; - let t1 = request_test(&client, &listen_url, query); - let t2 = request_test(&client, &listen_url, mutation); - let t3 = request_test(&client, &listen_url, query); + let t1 = request_test(&client, &listen_url, query, "round_trip_test__query_1"); + let t2 = request_test(&client, &listen_url, mutation, "round_trip_test__mutation"); + let t3 = request_test(&client, &listen_url, query, "round_trip_test__query_2"); child.kill().unwrap(); child.wait().unwrap(); @@ -336,6 +336,7 @@ mod tests { client: &reqwest::Client, listen_url: &str, body: &'static str, + snapshot_name: &'static str, ) -> Result<(), String> { fn error_mapper(e: T) -> String { format!("{:?}", e) @@ -351,7 +352,12 @@ mod tests { .send() .map_err(error_mapper)?; let r = r.json::().map_err(error_mapper)?; - std::panic::catch_unwind(|| insta::assert_json_snapshot!(r)).map_err(error_mapper)?; + std::panic::catch_unwind(|| { + insta::with_settings!({snapshot_suffix => ""}, { + insta::assert_json_snapshot!(snapshot_name, r) + }) + }) + .map_err(error_mapper)?; Ok(()) } } diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__main-2.snap b/wundergraph_cli/src/print_schema/snapshots/tests__main-2.snap deleted file mode 100644 index 9e80d0f..0000000 --- a/wundergraph_cli/src/print_schema/snapshots/tests__main-2.snap +++ /dev/null @@ -1,9 +0,0 @@ ---- -source: wundergraph_cli/src/print_schema/mod.rs -expression: "r.json::().unwrap()" ---- -{ - "data": { - "Users": [] - } -} diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__main-3.snap b/wundergraph_cli/src/print_schema/snapshots/tests__main-3.snap deleted file mode 100644 index 8380f59..0000000 --- a/wundergraph_cli/src/print_schema/snapshots/tests__main-3.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: wundergraph_cli/src/print_schema/mod.rs -expression: "r.json::().unwrap()" ---- -{ - "errors": [ - { - "locations": [ - { - "column": 23, - "line": 2 - } - ], - "message": "Invalid value for argument \"NewUser\", expected type \"NewUser!\"" - } - ] -} diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__main-4.snap b/wundergraph_cli/src/print_schema/snapshots/tests__main-4.snap deleted file mode 100644 index 9e80d0f..0000000 --- a/wundergraph_cli/src/print_schema/snapshots/tests__main-4.snap +++ /dev/null @@ -1,9 +0,0 @@ ---- -source: wundergraph_cli/src/print_schema/mod.rs -expression: "r.json::().unwrap()" ---- -{ - "data": { - "Users": [] - } -} diff --git a/wundergraph_cli/src/print_schema/snapshots/tests__main.snap b/wundergraph_cli/src/print_schema/snapshots/tests__main.snap deleted file mode 100644 index 76c8a6c..0000000 --- a/wundergraph_cli/src/print_schema/snapshots/tests__main.snap +++ /dev/null @@ -1,151 +0,0 @@ ---- -source: wundergraph_cli/src/print_schema/mod.rs -expression: "&s" ---- -use wundergraph::query_builder::types::{HasMany, HasOne}; -use wundergraph::scalar::WundergraphScalarValue; -use wundergraph::WundergraphEntity; - -table! { - comments (id) { - id -> Integer, - post -> Nullable, - commenter -> Nullable, - content -> Text, - } -} - -table! { - posts (id) { - id -> Integer, - author -> Nullable, - title -> Text, - datetime -> Nullable, - content -> Nullable, - } -} - -table! { - users (id) { - id -> Integer, - name -> Text, - } -} - -allow_tables_to_appear_in_same_query!( - comments, - posts, - users, -); - - -#[derive(Clone, Debug, Identifiable, WundergraphEntity)] -#[table_name = "comments"] -#[primary_key(id)] -pub struct Comment { - id: i32, - post: Option>, - commenter: Option>, - content: String, -} - -#[derive(Clone, Debug, Identifiable, WundergraphEntity)] -#[table_name = "posts"] -#[primary_key(id)] -pub struct Post { - id: i32, - author: Option>, - title: String, - datetime: Option, - content: Option, - comments: HasMany, -} - -#[derive(Clone, Debug, Identifiable, WundergraphEntity)] -#[table_name = "users"] -#[primary_key(id)] -pub struct User { - id: i32, - name: String, - comments: HasMany, - posts: HasMany, -} - - - -wundergraph::query_object!{ - Query { - Comment, - Post, - User, - } -} - - -#[derive(Insertable, juniper::GraphQLInputObject, Clone, Debug)] -#[graphql(scalar = "WundergraphScalarValue")] -#[table_name = "comments"] -pub struct NewComment { - post: Option, - commenter: Option, - content: String, -} - -#[derive(AsChangeset, Identifiable, juniper::GraphQLInputObject, Clone, Debug)] -#[graphql(scalar = "WundergraphScalarValue")] -#[table_name = "comments"] -#[primary_key(id)] -pub struct CommentChangeset { - id: i32, - post: Option, - commenter: Option, - content: String, -} - -#[derive(Insertable, juniper::GraphQLInputObject, Clone, Debug)] -#[graphql(scalar = "WundergraphScalarValue")] -#[table_name = "posts"] -pub struct NewPost { - author: Option, - title: String, - datetime: Option, - content: Option, -} - -#[derive(AsChangeset, Identifiable, juniper::GraphQLInputObject, Clone, Debug)] -#[graphql(scalar = "WundergraphScalarValue")] -#[table_name = "posts"] -#[primary_key(id)] -pub struct PostChangeset { - id: i32, - author: Option, - title: String, - datetime: Option, - content: Option, -} - -#[derive(Insertable, juniper::GraphQLInputObject, Clone, Debug)] -#[graphql(scalar = "WundergraphScalarValue")] -#[table_name = "users"] -pub struct NewUser { - name: String, -} - -#[derive(AsChangeset, Identifiable, juniper::GraphQLInputObject, Clone, Debug)] -#[graphql(scalar = "WundergraphScalarValue")] -#[table_name = "users"] -#[primary_key(id)] -pub struct UserChangeset { - id: i32, - name: String, -} - -wundergraph::mutation_object!{ - Mutation{ - Comment(insert = NewComment, update = CommentChangeset, ), - Post(insert = NewPost, update = PostChangeset, ), - User(insert = NewUser, update = UserChangeset, ), - } -} - - diff --git a/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-2.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip_test__mutation.snap similarity index 100% rename from wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-2.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip_test__mutation.snap diff --git a/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip_test__query_1.snap similarity index 100% rename from wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip_test__query_1.snap diff --git a/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-3.snap b/wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip_test__query_2.snap similarity index 100% rename from wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip-3.snap rename to wundergraph_cli/src/print_schema/snapshots/wundergraph_cli__print_schema__tests__round_trip_test__query_2.snap