test/definition_test.rb in representable-2.3.0 vs test/definition_test.rb in representable-2.4.0.rc1

- old
+ new

@@ -12,18 +12,19 @@ definition = Definition.new(:song, :extend => Module) do |options| options[:awesome] = true options[:parse_filter] << 1 # default variables - options[:as].must_equal "song" + options[:as].must_equal nil options[:extend].must_equal Module end + definition.name.must_equal "song" # definition[:awesome].must_equal true - definition[:parse_filter].instance_variable_get(:@value).must_equal Representable::Pipeline[1] - definition[:render_filter].instance_variable_get(:@value).must_equal Representable::Pipeline[] + definition[:parse_filter].must_equal Representable::Pipeline[1] + definition[:render_filter].must_equal Representable::Pipeline[] end end describe "#[]" do let (:definition) { Definition.new(:song) } @@ -60,27 +61,27 @@ # options[:extend].must_equal Module end definition[:awesome].must_equal true definition[:something].must_equal true - definition[:render_filter].instance_variable_get(:@value).must_equal Representable::Pipeline[1] - definition[:parse_filter].instance_variable_get(:@value).must_equal Representable::Pipeline[] + definition[:render_filter].must_equal Representable::Pipeline[1] + definition[:parse_filter].must_equal Representable::Pipeline[] end describe "with :parse_filter" do let (:definition) { Definition.new(:title, :parse_filter => 1) } # merges :parse_filter and :render_filter. it do merged = definition.merge!(:parse_filter => 2)[:parse_filter] - merged.instance_variable_get(:@value).must_be_kind_of Representable::Pipeline - merged.instance_variable_get(:@value).size.must_equal 2 + merged.must_be_kind_of Representable::Pipeline + merged.size.must_equal 2 end # :parse_filter can also be array. - it { definition.merge!(:parse_filter => [2, 3])[:parse_filter].instance_variable_get(:@value).size.must_equal 3 } + it { definition.merge!(:parse_filter => [2, 3])[:parse_filter].size.must_equal 3 } end # does not change arguments it do Definition.new(:title).merge!(options = {:whatever => 1}) @@ -98,11 +99,11 @@ it { definition.delete!(:serialize)[:serialize].must_equal nil } end # #inspect describe "#inspect" do - it { Definition.new(:songs).inspect.must_equal "#<Representable::Definition ==>songs @options={:parse_filter=>[], :render_filter=>[], :as=>\"songs\"}>" } + it { Definition.new(:songs).inspect.must_equal "#<Representable::Definition ==>songs @options={:name=>\"songs\", :parse_filter=>[], :render_filter=>[]}>" } end describe "generic API" do before do @@ -152,11 +153,19 @@ it "responds to #setter" do assert_equal :"songs=", @def.setter end + describe "nested: FIXME" do + it do + dfn = Representable::Definition.new(:songs, nested: Module) + assert dfn.typed? + dfn[:extend].(nil).must_equal Module + end + end + describe "#clone" do subject { Representable::Definition.new(:title, :volume => 9, :clonable => Uber::Options::Value.new(1)) } it { subject.clone.must_be_kind_of Representable::Definition } it { subject.clone[:clonable].evaluate(nil).must_equal 1 } @@ -168,38 +177,10 @@ cloned.merge!(:volume => 8) assert_equal @def[:volume], 9 assert_equal cloned[:volume], 8 end - - # cloning of Cloneables in @options. - it do - definition = Representable::Definition.new(:title) - definition.merge!(deserializer: Representable::Inheritable::Hash.new) - - clone = definition.clone - clone[:deserializer].merge!(b: 2) - - definition[:deserializer].object_id.wont_equal clone[:deserializer].object_id - end - - # pipeline gets cloned properly - describe "pipeline cloning" do - subject { Definition.new(:title, :render_filter => 1) } - - it ("yy")do - cloned = subject.clone - - cloned.merge!(:render_filter => 2) - - subject.instance_variable_get(:@options)[:render_filter].must_equal [1] - cloned.instance_variable_get(:@options)[:render_filter].must_equal [1,2] - - subject[:render_filter].instance_variable_get(:@value).must_equal [1] - cloned[:render_filter].instance_variable_get(:@value).must_equal [1,2] - end - end end end describe "#has_default?" do it "returns false if no :default set" do @@ -223,11 +204,10 @@ end describe "#create_binding" do it "executes the block (without special context)" do definition = Representable::Definition.new(:title, :binding => lambda { |*args| @binding = Representable::Binding.new(*args) }) - definition.create_binding(object=Object.new).must_equal @binding - @binding.instance_variable_get(:@parent_decorator).must_equal object + definition.create_binding.must_equal @binding end end describe ":collection => true" do before do