Skip to content

Commit

Permalink
Add tests for @defer and fragments
Browse files Browse the repository at this point in the history
  • Loading branch information
tninesling committed Mar 28, 2024
1 parent 03b9fa5 commit e606124
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 6 deletions.
23 changes: 17 additions & 6 deletions apollo-router/src/plugins/demand_control/basic_cost_calculator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -408,19 +408,30 @@ mod tests {
assert_eq!(estimated_cost(schema, query), 0.0)
}

#[test]
fn requires_adds_required_field_cost() {
#[test(tokio::test)]
async fn federated_query_with_requires() {
let schema = include_str!("./fixtures/federated_ships_schema.graphql");
let query = include_str!("./fixtures/federated_ships_required_query.graphql");

assert_eq!(estimated_cost(schema, query), 10200.0)
assert_eq!(estimated_cost(schema, query), 10200.0);
assert_eq!(planned_cost(schema, query).await, 10400.0);
}

#[test(tokio::test)]
async fn query_plan_cost() {
async fn federated_query_with_fragments() {
let schema = include_str!("./fixtures/federated_ships_schema.graphql");
let query = include_str!("./fixtures/federated_ships_required_query.graphql");
let query = include_str!("./fixtures/federated_ships_fragment_query.graphql");

assert_eq!(estimated_cost(schema, query), 300.0);
assert_eq!(planned_cost(schema, query).await, 400.0);
}

#[test(tokio::test)]
async fn federated_query_with_defer() {
let schema = include_str!("./fixtures/federated_ships_schema.graphql");
let query = include_str!("./fixtures/federated_ships_deferred_query.graphql");

assert_eq!(planned_cost(schema, query).await, 10400.0)
assert_eq!(estimated_cost(schema, query), 10200.0);
assert_eq!(planned_cost(schema, query).await, 10400.0);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
ships {
name
... @defer {
registrationFee
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
fragment nameAndLicense on User {
licenseNumber
name
}

{
ships {
owner {
...nameAndLicense
}
}
users {
...nameAndLicense
}
}

0 comments on commit e606124

Please sign in to comment.