Sha256: 58c50e8d33effab599da1e99c27fbf786f8e2c652fbb86a3a4b3f109bdb7c966
Contents?: true
Size: 1.78 KB
Versions: 2
Compression:
Stored size: 1.78 KB
Contents
require 'json' require 'rom-repository' RSpec.describe ROM::HTTP::Relation do subject(:users) { container.relation(:users).by_id(id).filter(params) } include_context 'setup' let(:relation) do Class.new(ROM::HTTP::Relation) do schema(:users) do attribute :id, ROM::Types::Int attribute :name, ROM::Types::String end def by_id(id) append_path(id.to_s) end def filter(params) with_params(params) end end end let(:response) { tuples.to_json } let(:tuples) { [{ id: 1337, name: 'John' }] } let(:id) { 1337 } let(:params) { { filters: { first_name: 'John' } } } let(:dataset) do ROM::HTTP::Dataset.new( { uri: uri, headers: headers, request_handler: request_handler, response_handler: response_handler, name: :users }, path: "users/#{id}", params: params ) end before do configuration.register_relation(relation) allow(request_handler).to receive(:call).and_return(response) allow(response_handler).to receive(:call).and_return(tuples) end it 'returns relation tuples' do expect(users.to_a).to eql(tuples) expect(request_handler).to have_received(:call).with(dataset).once expect(response_handler).to have_received(:call).with(response, dataset).once end context 'using a repo' do let(:repo) do Class.new(ROM::Repository) { relations :users }.new(container) end it 'returns structs' do user = repo.users.by_id(1337).filter(params).one expect(user.id).to be(1337) expect(user.name).to eql('John') expect(request_handler).to have_received(:call).with(dataset).once expect(response_handler).to have_received(:call).with(response, dataset).once end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rom-http-0.6.0 | spec/integration/abstract/relation_spec.rb |
rom-http-0.6.0.rc1 | spec/integration/abstract/relation_spec.rb |