tests/testthat/test-validation-5.3-argument.R

# load_all(); testthat::test_file(file.path("tests", "testthat", "test-validation-5.3-argument.R")); # nolint




test_that("5.3.1 - Argument Names", {

  "
  {
    dog {
      ...argOnRequiredArg
      ...argOnOptional
    }
  }
  fragment argOnRequiredArg on Dog {
    doesKnowCommand(dogCommand: SIT)
  }
  fragment argOnOptional on Dog {
    isHousetrained(atOtherHomes: true) @include(if: true)
  }
  " %>%
  expect_r6()

  "
  {
    dog {
      ...invalidArgName
    }
  }
  fragment invalidArgName on Dog {
    name(command: CLEAN_UP_HOUSE)
  }
  " %>%
  expect_err("no arguments for field")

  "
  {
    dog {
      ...invalidArgName
    }
  }
  fragment invalidArgName on Dog {
    doesKnowCommand(command: CLEAN_UP_HOUSE)
  }
  " %>%
  expect_err("could not find matching arg value")

  "
  {
    dog {
      ...invalidArgName
    }
  }
  fragment invalidArgName on Dog {
    isHousetrained(atOtherHomes: true) @include(unless: false)
  }
  " %>%
  expect_err("could not find matching arg")


  # order doesn't matter
  "
  {
    arguments {
      ...multipleArgs
      ...multipleArgsReverseOrder
    }
  }
  fragment multipleArgs on Arguments {
    first: multipleReqs(x: 1, y: 2)
  }
  fragment multipleArgsReverseOrder on Arguments {
    second: multipleReqs(y: 1, x: 2)
  }
  " %>%
  expect_r6()

})


test_that("5.3.2 - Argument Uniqueness", {

  "
  {
    arguments {
      ...multipleArgs
    }
  }
  fragment multipleArgs on Arguments {
    multipleReqs(x: 1, y: 2, x: 3)
  }
  " %>%
  expect_err("duplicate arguments with same name")

})


test_that("5.3.3.1 - Compatible Values", {

  "
  {
    arguments {
      ...goodBooleanArg
      ...coercedIntIntoFloatArg
    }
  }
  fragment goodBooleanArg on Arguments {
    booleanArgField(booleanArg: true)
  }
  fragment coercedIntIntoFloatArg on Arguments {
    floatArgField(floatArg: 1)
  }
  " %>%
  expect_r6()




})



test_that("5.3.3.2 - Require Non-Null Arguments", {

  "
  {
    arguments {
      ...goodBooleanArg
      ...goodNonNullArg
      ...goodBooleanArgDefault
    }
  }
  fragment goodBooleanArg on Arguments {
    first: booleanArgField(booleanArg: true)
  }
  fragment goodNonNullArg on Arguments {
    nonNullBooleanArgField(nonNullBooleanArg: true)
  }
  fragment goodBooleanArgDefault on Arguments {
    second: booleanArgField
  }
  " %>%
  expect_r6()

  "
  {
    arguments {
      ...missingRequiredArg
    }
  }
  fragment missingRequiredArg on Arguments {
    nonNullBooleanArgField
  }
  " %>%
  expect_err("null or missing argument not allowed")

  "
  {
    arguments {
      ...missingRequiredArg
    }
  }
  fragment missingRequiredArg on Arguments {
    notNullBooleanArgField(nonNullBooleanArg: null)
  }
  " %>%
  expect_err("not all requested names are found")



})
schloerke/gqlr documentation built on Dec. 7, 2022, 10:54 a.m.