Sha256: dd09d7e181fe2d68f0a9f2c17d904bbd100e7ccbbbfe01d9b773145ebbaf268f
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
require 'test_helper' class FeaturesTest < MiniTest::Spec module Title def title; "Is It A Lie"; end end module Length def length; "2:31"; end end definition = lambda { feature Title feature Length # exec_context: :decorator, so the readers are called on the Decorator instance (which gets readers from features!). property :title, exec_context: :decorator property :length, exec_context: :decorator property :details do property :title, exec_context: :decorator end } let(:song) { OpenStruct.new(:details => Object.new) } describe "Module" do representer! do instance_exec(&definition) end it { song.extend(representer).to_hash.must_equal({"title"=>"Is It A Lie", "length"=>"2:31", "details"=>{"title"=>"Is It A Lie"}}) } end describe "Decorator" do representer!(:decorator => true) do instance_exec(&definition) end it { representer.new(song).to_hash.must_equal({"title"=>"Is It A Lie", "length"=>"2:31", "details"=>{"title"=>"Is It A Lie"}}) } end end class FeatureInclusionOrderTest < MiniTest::Spec module Title def title "I was first!" end end module OverridingTitle def title "I am number two, " + super end end representer!(decorator: true) do feature Title feature OverridingTitle property :title, exec_context: :decorator property :song do property :title, exec_context: :decorator end end it do representer.new(OpenStruct.new(song: Object)).to_hash.must_equal({"title"=>"I am number two, I was first!", "song"=>{"title"=>"I am number two, I was first!"}}) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
representable-3.0.4 | test/features_test.rb |