Sha256: de9e7ebefaeefbe7cd05f0914f086e8688105dc480f2caef7de17bd593355300
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
# encoding: utf-8 describe Eigindir do let(:coercer) { ->(value) { value.to_s } } let(:klass) do Class.new do include Eigindir private def coercer(value) value.to_s end end end subject(:instance) { klass.new } describe ".included" do it "extends class with API" do expect(klass).to be_kind_of Eigindir::API end end # describe .included describe "#attributes" do subject do instance.instance_eval "@foo = 1" instance.attributes end it "returns coerced attributes" do klass.attribute :foo, coerce: ->(val) { val.to_s } expect(subject).to eq(foo: "1") end it "returns attributes with getter" do klass.attribute_reader :foo, coerce: ->(val) { val.to_s } expect(subject).to eq(foo: "1") end it "skips attributes without getter" do klass.attribute_writer :foo, coerce: ->(val) { val.to_s } expect(subject).to eq({}) end it "skips non-attributes" do klass.send :attr_accessor, :foo expect(subject).to eq({}) end end # describe #attributes describe "#attributes=" do subject do instance.attributes = { "foo" => 1 } instance.instance_eval "@foo" end it "sets values to coerced attributes" do klass.attribute :foo, coerce: ->(val) { val.to_s } expect(subject).to eq "1" end it "sets values to attributes with setter" do klass.attribute_writer :foo, coerce: ->(val) { val.to_s } expect(subject).to eq "1" end it "skips attributes without setter" do klass.attribute_reader :foo, coerce: ->(val) { val.to_s } expect(subject).to be_nil end it "skips non-attributes" do klass.send :attr_accessor, :foo expect(subject).to be_nil end end # describe #attributes= end # describe Eigindir
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
eigindir-0.0.1 | spec/tests/eigindir_spec.rb |