Skip to content

Commit

Permalink
Increase GraphqlDevise::GraphqlController coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
mcelicalderon committed May 24, 2020
1 parent aa9ac82 commit 1acc97b
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 13 deletions.
1 change: 0 additions & 1 deletion spec/rails_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
config.include(Requests::JsonHelpers, type: :request)
config.include(Requests::AuthHelpers, type: :request)
config.include(ActiveSupport::Testing::TimeHelpers)
config.include(Generators::FileHelpers, type: :generator)

config.before(:suite) do
ActionController::Base.allow_forgery_protection = true
Expand Down
60 changes: 60 additions & 0 deletions spec/requests/graphql_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
require 'rails_helper'

RSpec.describe GraphqlDevise::GraphqlController do
let(:password) { 'password123' }
let(:user) { create(:user, :confirmed, password: password) }

context 'when variables are a string' do
it 'parses the string variables' do
post '/api/v1/graphql_auth',
params: {
query: "mutation($email: String!) { userLogin(email: $email, password: \"#{password}\") { user { email name signInCount } } }",
variables: "{\"email\": \"#{user.email}\"}"

}

expect(json_response).to match(
data: { userLogin: { user: { email: user.email, name: user.name, signInCount: 1 } } }
)
end
end

context 'when variables are not a string or hash' do
it 'raises an error' do
expect do
post '/api/v1/graphql_auth',
params: {
query: "mutation($email: String!) { userLogin(email: $email, password: \"#{password}\") { user { email name signInCount } } }",
variables: 1

}
end.to raise_error(ArgumentError)
end
end

context 'when multiplexing queries' do
it 'executes multiple queries in the same request' do
post '/api/v1/graphql_auth',
params: {
_json: [
{ query: "mutation { userLogin(email: \"#{user.email}\", password: \"#{password}\") { user { email name signInCount } } }" },
{ query: "mutation { userLogin(email: \"#{user.email}\", password: \"wrong password\") { user { email name signInCount } } }" }
]
}

expect(json_response).to match(
[
{ data: { userLogin: { user: { email: user.email, name: user.name, signInCount: 1 } } } },
{
data: { userLogin: nil },
errors: [
hash_including(
message: 'Invalid login credentials. Please try again.', extensions: { code: 'USER_ERROR' }
)
]
}
]
)
end
end
end
12 changes: 0 additions & 12 deletions spec/support/generators/file_helpers.rb

This file was deleted.

0 comments on commit 1acc97b

Please sign in to comment.