1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
require 'spec_helper'
describe Virtus::Attribute::EmbeddedValue, '.build' do
subject { described_class.build(type) }
context 'when type is a Virtus.model' do
let(:type) { Class.new { include Virtus.model } }
it { is_expected.to be_frozen }
it { is_expected.to be_instance_of(Virtus::Attribute::EmbeddedValue) }
describe '#coercer' do
subject { super().coercer }
it { is_expected.to be_instance_of(described_class::FromOpenStruct) }
end
end
context 'when type includes Virtus' do
let(:type) { Class.new { include Virtus } }
it { is_expected.to be_frozen }
it { is_expected.to be_instance_of(Virtus::Attribute::EmbeddedValue) }
describe '#coercer' do
subject { super().coercer }
it { is_expected.to be_instance_of(described_class::FromOpenStruct) }
end
end
context 'when type is an OpenStruct subclass' do
let(:type) { Class.new(OpenStruct) }
it { is_expected.to be_frozen }
it { is_expected.to be_instance_of(Virtus::Attribute::EmbeddedValue) }
describe '#coercer' do
subject { super().coercer }
it { is_expected.to be_instance_of(described_class::FromOpenStruct) }
end
end
context 'when type is OpenStruct' do
let(:type) { OpenStruct }
it { is_expected.to be_frozen }
it { is_expected.to be_instance_of(Virtus::Attribute::EmbeddedValue) }
describe '#coercer' do
subject { super().coercer }
it { is_expected.to be_instance_of(described_class::FromOpenStruct) }
end
end
context 'when type is Struct' do
let(:type) { Struct.new(:test) }
it { is_expected.to be_frozen }
it { is_expected.to be_instance_of(Virtus::Attribute::EmbeddedValue) }
describe '#coercer' do
subject { super().coercer }
it { is_expected.to be_instance_of(described_class::FromStruct) }
end
end
end
|