Sha256: 7726c36c782ed439d457128594a7e013a21ffad9de8d3c2b1ce942994386a64a
Contents?: true
Size: 1.86 KB
Versions: 1
Compression:
Stored size: 1.86 KB
Contents
# encoding: utf-8 require 'spec_helper' describe 'Grouped mappers' do let(:env) do Environment.setup(test: 'memory://test') do schema do base_relation :users do repository :test attribute :id, Integer attribute :name, String key :id end base_relation :tasks do repository :test attribute :id, Integer attribute :title, String key :id end end mapping do relation(:users) do model User map :id, :name end relation(:tasks) do model Task map :id, :title end end end end before do User = mock_model(:id, :name, :tasks) Task = mock_model(:id, :title) end after do Object.send(:remove_const, :User) if defined?(User) Object.send(:remove_const, :Task) if defined?(Task) end subject(:mapper) { env[:users].mapper.group(:tasks => env[:tasks].mapper) } specify 'loading grouped tuples' do tuple = { :id => 1, :name => 'Jane', :tasks => [ { :id => 2, :title => 'Task 1' }, { :id => 3, :title => 'Task 2' } ] } task1 = Task.new(tuple[:tasks].first) task2 = Task.new(tuple[:tasks].last) user = User.new(:id => tuple[:id], :name => tuple[:name], :tasks => [task1, task2]) expect(mapper.load(tuple)).to eql(user) end specify 'dumping grouped tuples' do tuple = { :id => 1, :name => 'Jane', :tasks => [ { :id => 2, :title => 'Task 1' }, { :id => 3, :title => 'Task 2' } ] } task1 = Task.new(tuple[:tasks].first) task2 = Task.new(tuple[:tasks].last) user = User.new(:id => tuple[:id], :name => tuple[:name], :tasks => [task1, task2]) expect(mapper.dump(user)).to eql([1, 'Jane', [[2, 'Task 1'], [3, 'Task 2']]]) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-0.2.0 | spec/integration/grouped_mappers_spec.rb |