Skip to content

New coerce_input class type check breaks tests #37

Description

@mathieugagne

I'm trying to upgrade from 2.0.1 to 2.0.3. There was a check added in coerce_input that force the value to be of a certain type. My tests work fine prior to that.

Here's my working solution on 2.0.1

let(:query_string) do
  %|
    mutation($input: UpdateSurveyInput!) {
      updateSurvey(input: $input) {
        id
        clientLogoUrl
      }
    }
  |
end

let(:variables) do
  {
    input: {
      id: survey.id,
      attributes: {
        clientLogo: ActionDispatch::Http::UploadedFile.new(
          filename: "lolcat.png",
          type: "image/png",
          tempfile: File.open(Rails.root.join("spec", "data", "lolcat.png"), "rb")
        )
      }
    }
  }
end

Schema.execute(query, {}, variables)

After 2.0.3 I get the following error:

"#<ActionDispatch::Http::UploadedFile:0x0000562e5512a028 @tempfile=#<File:/home/circleci/project/spec/data/lolcat.png>, @original_filename=\"lolcat.png\", @content_type=\"image/png\", @headers=nil> is not a valid upload"

I tried wrapping my helper in your wrapper class like such:

ApolloUploadServer::Wrappers::UploadedFile.new(filename: "lolcat.png", type: "image/png", tempfile: File.open(Rails.root.join("spec", "data", "lolcat.png"), "rb"),

But it yields a different error:

NoMethodError: undefined method `original_filename' for #<Hash:0x000056250eab5ca0>

Willing to provide more information if needed. Hoping it's a quick fix on your end. I'm unsure why there's a is_a? class check. If it quacks like a duck, it should just be fine. Unsure about the as_json override either.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions