Sha256: 79dd289c7ffe0034450ff965961650ee345143f9de8a0a52f65b8358e0eb22bf
Contents?: true
Size: 1.64 KB
Versions: 1
Compression:
Stored size: 1.64 KB
Contents
# encoding: utf-8 require 'spec_helper' describe Mapper::Builder, '.call' do let(:header) { [[:id, Integer], [:user_name, String], [:age, Integer], [:email, String]] } let(:relation) { Axiom::Relation::Base.new(:users, header) } let(:model) { mock_model(:id, :name, :email) } let(:env) { Environment.setup(test: 'memory://test') } let(:schema) { Hash[users: relation] } context 'when attribute mapping is used' do let(:mapper) { subject.mappers[:users] } subject do user_model = model Mapper::Builder.call(schema) do relation(:users) do model user_model map :id, :email map :name, from: :user_name end end end it 'builds rom mapper' do expect(mapper.header.map(&:name)).to eql([:id, :email, :name]) expect(mapper.header.map(&:type)).to eql([Integer, String, String]) end it 'sets up the model' do object = mapper.new_object(id: 1, name: 'Jane', email: 'jane@rom.org') expect(object).to be_instance_of(model) end end context 'when custom mapper is injected' do subject do custom_mapper = test_mapper Mapper::Builder.call(schema) { relation(:users) { mapper(custom_mapper) } } end let(:test_mapper) { TestMapper.new(header, model) } it 'sets the custom mapper' do expect(subject.mappers[:users]).to be(test_mapper) end end context 'when unknown relation name is used' do subject { described_class.call(schema) { not_here(1, 'a') {} } } it 'raises error' do expect { subject }.to raise_error( NoMethodError, /undefined method `not_here'/ ) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-0.2.0 | spec/unit/rom/mapper/builder/class_methods/call_spec.rb |