-
-
Save jodosha/a702eff7418f72ba38c7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'test_helper' | |
describe Lotus::Model::Mapping::Coercer do | |
let(:entity) { User.new(name: 'Tyrion Lannister') } | |
let(:collection) { Lotus::Model::Mapping::Collection.new(:users, Lotus::Model::Mapping::Coercer) } | |
let(:coercer) { Lotus::Model::Mapping::Coercer.new(collection) } | |
before do | |
collection.entity(User) | |
collection.attribute :id, Integer | |
collection.attribute :name, String | |
collection.attribute :age, String | |
end | |
describe '#to_record' do | |
it 'should not return identity column' do | |
coercer.to_record(entity).must_equal(name: 'Tyrion Lannister') | |
end | |
describe 'new record' do | |
# Bug: | |
# https://github.com/lotus/model/issues/155 | |
it 'ignores unset values' do | |
entity = User.new(name: 'Daenerys Targaryen') | |
coercer.to_record(entity).must_equal(name: 'Daenerys Targaryen') | |
end | |
it 'forces nil values' do | |
entity = User.new(name: 'Daenerys Targaryen', age: nil) | |
coercer.to_record(entity).must_equal(name: 'Daenerys Targaryen', age: nil) | |
end | |
end | |
it 'should set keys for nil values when updating' do | |
entity = User.new(id: 4, name: 'Daenerys Targaryen', age: nil) | |
coercer.to_record(entity).must_equal(id: 4, name: 'Daenerys Targaryen', age: nil) | |
end | |
describe 'when identity is set' do | |
let(:entity) { User.new(id: 3, name: 'Tyrion Lannister') } | |
it 'should return identity as well' do | |
coercer.to_record(entity).must_equal(id: 3, name: 'Tyrion Lannister', age: nil) | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment