Skip to content

Commit 2414389

Browse files
committed
Fill up codegen tests
1 parent 4b4c48d commit 2414389

29 files changed

+240
-11
lines changed

juniper_codegen/src/graphql_input_object/derive.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,16 @@ fn parse_enum_variant(
149149
.map_err(diagnostic::emit_error)
150150
.ok()?;
151151

152+
let ignored = field_attr.ignore.is_some();
152153
if let Some(default) = &field_attr.default {
153154
ERR.emit_custom(
154155
default.span_ident(),
155-
"field of `@oneOf` input object cannot have default value",
156+
if ignored {
157+
"`default` attribute argument has no meaning for ignored variants, as they are \
158+
never constructed"
159+
} else {
160+
"field cannot have default value in `@oneOf` input object"
161+
},
156162
);
157163
}
158164

@@ -185,7 +191,7 @@ fn parse_enum_variant(
185191
name,
186192
description: field_attr.description.map(SpanContainer::into_inner),
187193
deprecated: field_attr.deprecated.map(SpanContainer::into_inner),
188-
ignored: field_attr.ignore.is_some(),
194+
ignored,
189195
})
190196
}
191197

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
use juniper::GraphQLInputObject;
2+
3+
#[derive(GraphQLInputObject)]
4+
union Test { id: i32 }
5+
6+
fn main() {}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
error: GraphQL input object cannot be derived on unions
2+
--> fail/input_object/derive_wrong_item.rs:4:1
3+
|
4+
4 | union Test { id: i32 }
5+
| ^^^^^
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
use juniper::GraphQLInputObject;
2+
3+
#[derive(GraphQLInputObject)]
4+
enum Object {
5+
#[graphql(ignore)]
6+
Field(String),
7+
}
8+
9+
fn main() {}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
error: GraphQL input object expected at least 1 non-ignored field
2+
--> fail/input_object/enum/derive_all_variants_ignored.rs:5:5
3+
|
4+
5 | #[graphql(ignore)]
5+
| ^
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
use juniper::GraphQLInputObject;
2+
3+
#[derive(GraphQLInputObject)]
4+
enum Object {
5+
#[graphql(default)]
6+
Test(String),
7+
}
8+
9+
fn main() {}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
error: GraphQL input object field cannot have default value in `@oneOf` input object
2+
· note: https://spec.graphql.org/October2021#sec-Input-Objects
3+
--> fail/input_object/enum/derive_default_value.rs:5:15
4+
|
5+
5 | #[graphql(default)]
6+
| ^^^^^^^
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
use juniper::GraphQLInputObject;
2+
3+
#[derive(GraphQLInputObject)]
4+
enum Object {
5+
Num(i32),
6+
#[graphql(ignore, default = "none")]
7+
Test(String),
8+
#[graphql(skip, default)]
9+
Test2(String),
10+
}
11+
12+
fn main() {}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
error: GraphQL input object `default` attribute argument has no meaning for ignored variants, as they are never constructed
2+
· note: https://spec.graphql.org/October2021#sec-Input-Objects
3+
--> fail/input_object/enum/derive_ignored_with_default_value.rs:6:23
4+
|
5+
6 | #[graphql(ignore, default = "none")]
6+
| ^^^^^^^
7+
8+
error: GraphQL input object `default` attribute argument has no meaning for ignored variants, as they are never constructed
9+
· note: https://spec.graphql.org/October2021#sec-Input-Objects
10+
--> fail/input_object/enum/derive_ignored_with_default_value.rs:8:21
11+
|
12+
8 | #[graphql(skip, default)]
13+
| ^^^^^^^
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
use juniper::{GraphQLInputObject, GraphQLObject};
2+
3+
#[derive(GraphQLObject)]
4+
struct ObjectA {
5+
test: String,
6+
}
7+
8+
#[derive(GraphQLInputObject)]
9+
enum Object {
10+
Field(ObjectA),
11+
}
12+
13+
fn main() {}

0 commit comments

Comments
 (0)