main
1# frozen_string_literal: true
2
3require 'spec_helper'
4
5RSpec.describe Del::Repository do
6 subject { described_class.new(storage: storage, mapper: mapper) }
7 let(:storage) { {} }
8 let(:mapper) { double(:mapper, map_from: nil) }
9
10 describe '#[]' do
11 let(:jid) { SecureRandom.uuid }
12 let(:attributes) { { 'jid' => jid, 'name' => 'Teren Delvon Jones' } }
13 let(:user) { instance_double(Del::User) }
14
15 before do
16 subject.upsert(jid, attributes)
17 allow(mapper).to receive(:map_from).with(attributes).and_return(user)
18 end
19
20 specify { expect(subject[jid]).to eql(user) }
21 specify { expect(subject.find(jid)).to eql(user) }
22 specify { expect(subject.find(SecureRandom.uuid)).to be_nil }
23 end
24
25 describe '#all' do
26 let(:del_attributes) { { 'name' => 'Teren Delvon Jones' } }
27 let(:ice_cube_attributes) { { 'name' => "O'Shea Jackson Sr." } }
28 let(:del) { instance_double(Del::User) }
29 let(:cube) { instance_double(Del::User) }
30
31 it 'returns each item' do
32 subject.upsert(SecureRandom.uuid, del_attributes)
33 subject.upsert(SecureRandom.uuid, ice_cube_attributes)
34 allow(mapper).to receive(:map_from).with(del_attributes).and_return(del)
35 allow(mapper).to receive(:map_from).with(ice_cube_attributes).and_return(cube)
36
37 expect(subject.all).to match_array([del, cube])
38 end
39 end
40end