Sha256: 4b73c8970552d72ed054f3195dc7a5dac4c2e5576a4d76e1db8a37ff15f0a903
Contents?: true
Size: 1.62 KB
Versions: 21
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
21 entries across 17 versions & 1 rubygems