45 lines
1.2 KiB
Ruby
45 lines
1.2 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe GraphQL::RootElementResolver do
|
|
let(:comment_resolver) { GraphQL::RootElementResolver.new(Comment) }
|
|
let(:geozone_resolver) { GraphQL::RootElementResolver.new(Geozone) }
|
|
|
|
describe '#call' do
|
|
|
|
it 'resolves simple elements' do
|
|
comment = create(:comment)
|
|
|
|
result = comment_resolver.call(nil, {'id' => comment.id}, nil)
|
|
|
|
expect(result).to eq(comment)
|
|
end
|
|
|
|
it 'returns nil when requested element is forbidden' do
|
|
proposal = create(:proposal, :hidden)
|
|
comment = create(:comment, commentable: proposal)
|
|
|
|
result = comment_resolver.call(nil, {'id' => comment.id}, nil)
|
|
|
|
expect(result).to be_nil
|
|
end
|
|
|
|
it 'returns nil when requested element does not exist' do
|
|
result = comment_resolver.call(nil, {'id' => 1}, nil)
|
|
|
|
expect(result).to be_nil
|
|
end
|
|
|
|
it 'uses the public_for_api scope when available' do
|
|
geozone = create(:geozone)
|
|
comment = create(:comment, commentable: create(:proposal, :hidden))
|
|
|
|
geozone_result = geozone_resolver.call(nil, {'id' => geozone.id}, nil)
|
|
comment_result = comment_resolver.call(nil, {'id' => comment.id}, nil)
|
|
|
|
expect(geozone_result).to eq(geozone)
|
|
expect(comment_result).to be_nil
|
|
end
|
|
end
|
|
|
|
end
|