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