0

I’m trying to mock the service as in the docs example http://dev.apollodata.com/tools/graphql-tools/mocking.html#Default-mock-example

I’m exporting my schema with the standard introspection query, building a schema object and using this when trying to run a query as mentioned in the docs.

import * as introspectionResult from "../../graphql/schema.json"
const GRAPHQL_QUERY = `
query eventsFeatured(
  $type: String!,
  $entity_type: String,
  $market__role: String,
  $outcome__odds_rank_unique: Int,
  $limit: Int
) {
  featured(
    type: $type,
    entity_type: $entity_type,
    market__role: $market__role,
    outcome__odds_rank_unique: $outcome__odds_rank_unique,
    limit: $limit
  ) {
    ...FeaturedFragment
    media {
      description
      extralarge
      large
      medium
      preview
      __typename
    }
    event {
      ...EventFragment
      market {
        ...MarketFragment
        outcome {
          ...OutcomeFragment
          media_logo {
            preview
            small
            __typename
          }
          bookie {
            ...BookieFragment
            __typename
          }
          __typename
        }
        __typename
      }
      article {
        ...ArticleFragment
        __typename
      }
      category3 {
        ...AllCategoriesFragment
        __typename
      }
      __typename
    }
    offer {
      id
      name
      conditions
      deeplink
      domain {
        ...EventFragment
        __typename
      }
      __typename
    }
    __typename
  }
}

fragment EventFragment on Event {
  id
  name
  canonicalised_name
  display_name
  date
  date_human
  date_short
  type
  __typename
}

fragment MarketFragment on Market {
  id
  name
  display_name
  canonicalised_name
  type
  role {
    name
    __typename
  }
  __typename
}

fragment OutcomeFragment on Outcome {
  id
  name
  display_name
  canonicalised_name
  odds
  odds_decimal
  odds_rank
  deeplink
  home_or_away
  type
  __typename
}

fragment BookieFragment on Bookie {
  name
  __typename
}

fragment ArticleFragment on BaseArticle {
  title
  body
  excerpt
  author
  date_no_time
  date_stamp
  date_human
  date_short
  date
  __typename
}

fragment AllCategoriesFragment on Category3 {
  ...Category3Fragment
  category2 {
    ...Category2Fragment
    category1 {
      ...Category1Fragment
      __typename
    }
    __typename
  }
  __typename
}

fragment Category1Fragment on Category1 {
  name
  canonicalised_name
  __typename
}

fragment Category2Fragment on Category2 {
  name
  canonicalised_name
  __typename
}

fragment Category3Fragment on Category3 {
  name
  canonicalised_name
  __typename
}

fragment FeaturedFragment on Featured {
  id
  type
  display_order
  __typename
}
`

// this builds our mock apollo schema
const schema = buildClientSchema(introspectionResult) 
addMockFunctionsToSchema({ schema })

// execute the supplied apollo query
    graphql(schema, GRAPHQL_QUERY, {
      options: (props) => ({
        variables: {
          type: "IMAGEGRIDHOMEPAGE"
        },
      })})
      .then(graphqlResult => {
.... etc
```

However, I am seeing the following error:

```
{ errors:
       [ GraphQLError {
           message: 'Variable "$type" of required type "String!" was not provided.',
           locations: [Object],
           path: undefined } ] }

It seems that the graphql function does not recognise the standard options object, at least not the variables definitions when used in this context of having a schema object as first arg. I have tried digging into the source here but my typescript ain’t the best - https://github.com/apollographql/react-apollo/blob/master/src/graphql.tsx

1
  • Hmmm, dilly of a pickle there elmpp. I wander if anyone knows the answer to this Commented Oct 6, 2017 at 9:53

1 Answer 1

0

user error - as can be seen in the docs, the graphql function here is from the base graphql library, not indeed the apollo-react one.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.