Sha256: a6d3a2b03933dfd9d58ec0f7c9bdd04c1edebc0824d6df7e45eaf736ccfd03a7
Contents?: true
Size: 1.06 KB
Versions: 2
Compression:
Stored size: 1.06 KB
Contents
# encoding: utf-8 require 'spec_helper' describe Session::Mapper, '#load' do subject { object.load(tuple) } let(:object) { described_class.new(mapper, tracker, im) } let(:mapper) { fake(:mapper) { ROM::Mapper } } let(:tuple) { Hash[id: 1, name: 'Jane'] } let(:user) { model.new(tuple) } let(:model) { mock_model(:id, :name) } let(:im) { Session::IdentityMap.build } let(:tracker) { Session::Tracker.new } before do stub(mapper).identity_from_tuple(tuple) { 1 } end context 'when IM does not include the loaded object' do it 'loads the object' do stub(mapper).load(tuple) { user } expect(subject).to be(user) mapper.should have_received.load(tuple) end it 'stores persisted state in the tracker' do expect(tracker.fetch(subject)).to be_persisted end end context 'when IM includes the loaded object' do before do im.store(1, user, tuple) end it 'returns already loaded object' do expect(subject).to be(user) mapper.should_not have_received.load(tuple) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rom-session-0.1.1 | spec/unit/rom/session/mapper/load_spec.rb |
rom-session-0.1.0 | spec/unit/rom/session/mapper/load_spec.rb |