diff --git a/lib/administrate/field/base.rb b/lib/administrate/field/base.rb index de2cbdfcfa65a320714b4fac4f1c6a2d4d8b9d44..4f33b71f9e814e5240c2329528a5c1545397e7eb 100644 --- a/lib/administrate/field/base.rb +++ b/lib/administrate/field/base.rb @@ -16,8 +16,9 @@ module Administrate false end - def initialize(attribute, data, page, options = {}) + def initialize(attribute, resource, data, page, options = {}) @attribute = attribute + @resource = resource @data = data @page = page @options = options @@ -39,7 +40,7 @@ module Administrate "/fields/#{self.class.field_type}/#{page}" end - attr_reader :attribute, :data, :page + attr_reader :attribute, :resource, :data, :page protected diff --git a/lib/administrate/page/base.rb b/lib/administrate/page/base.rb index 4f5d52296c0b0672ee69d5aa422b422425911b18..a3c9df1f5d407c4e3a5c35c560a895b7c67642e7 100644 --- a/lib/administrate/page/base.rb +++ b/lib/administrate/page/base.rb @@ -16,7 +16,7 @@ module Administrate def attribute_field(dashboard, resource, attribute_name, page) value = get_attribute_value(resource, attribute_name) field = dashboard.attribute_type_for(attribute_name) - field.new(attribute_name, value, page) + field.new(attribute_name, resource, value, page) end def get_attribute_value(resource, attribute_name) diff --git a/spec/generators/field_generator_spec.rb b/spec/generators/field_generator_spec.rb index 7abdaaa1718bb4b238e944940e9662b04d4021bc..57e71e5324fffc33f41b5c9a609dc9a32b0159fb 100644 --- a/spec/generators/field_generator_spec.rb +++ b/spec/generators/field_generator_spec.rb @@ -9,7 +9,7 @@ describe Administrate::Generators::FieldGenerator, :generator do run_generator ["foobar"] load file("app/fields/foobar_field.rb") - field = FoobarField.new(:attr_name, "value", "show") + field = FoobarField.new(:attr_name, nil, "value", "show") expect(field.name).to eq("attr_name") expect(field.data).to eq("value") diff --git a/spec/lib/fields/belongs_to_spec.rb b/spec/lib/fields/belongs_to_spec.rb index ee1eb2143d8f4e1d67ce04ae580da8b8da76c003..49843ac17519982ee160a0acb4828c545ac8c634 100644 --- a/spec/lib/fields/belongs_to_spec.rb +++ b/spec/lib/fields/belongs_to_spec.rb @@ -11,7 +11,7 @@ describe Administrate::Field::BelongsTo do it "returns a partial based on the page being rendered" do page = :show owner = double - field = Administrate::Field::BelongsTo.new(:owner, owner, page) + field = Administrate::Field::BelongsTo.new(:owner, nil, owner, page) path = field.to_partial_path @@ -27,7 +27,7 @@ describe Administrate::Field::BelongsTo do association = Administrate::Field::BelongsTo. with_options(class_name: "Foo") - field = association.new(:customers, [], :show) + field = association.new(:customers, nil, [], :show) candidates = field.associated_resource_options expect(Foo).to have_received(:all) diff --git a/spec/lib/fields/boolean_spec.rb b/spec/lib/fields/boolean_spec.rb index 05d1d704ea17c2a19911f920216353ff9240e9af..7bf2d5cd05d54e7e03b7a028708cc3cc7813574f 100644 --- a/spec/lib/fields/boolean_spec.rb +++ b/spec/lib/fields/boolean_spec.rb @@ -9,7 +9,7 @@ describe Administrate::Field::Boolean do it "returns a partial based on the page being rendered" do page = :show boolean = double - field = Administrate::Field::Boolean.new(:price, boolean, page) + field = Administrate::Field::Boolean.new(:price, nil, boolean, page) path = field.to_partial_path @@ -21,8 +21,8 @@ describe Administrate::Field::Boolean do describe "#to_s" do it "prints true or false" do - t = Administrate::Field::Boolean.new(:quantity, true, :show) - f = Administrate::Field::Boolean.new(:quantity, false, :show) + t = Administrate::Field::Boolean.new(:quantity, nil, true, :show) + f = Administrate::Field::Boolean.new(:quantity, nil, false, :show) expect(t.to_s).to eq("true") expect(f.to_s).to eq("false") @@ -30,7 +30,7 @@ describe Administrate::Field::Boolean do context "when data is nil" do it "returns a dash" do - boolean = Administrate::Field::Boolean.new(:boolean, nil, :page) + boolean = Administrate::Field::Boolean.new(:boolean, nil, nil, :page) expect(boolean.to_s).to eq("-") end diff --git a/spec/lib/fields/email_spec.rb b/spec/lib/fields/email_spec.rb index 150001cb06f4397478a81eed378c94ca391f8b08..5c1ac05df763686d91a06818346b98dfab624952 100644 --- a/spec/lib/fields/email_spec.rb +++ b/spec/lib/fields/email_spec.rb @@ -4,7 +4,8 @@ describe Administrate::Field::Email do describe "#to_partial_path" do it "returns a partial based on the page being rendered" do page = :show - field = Administrate::Field::Email.new(:email, "foo@example.com", page) + field = Administrate::Field::Email.new(:email, nil, "foo@example.com", + page) path = field.to_partial_path diff --git a/spec/lib/fields/has_many_spec.rb b/spec/lib/fields/has_many_spec.rb index 1b635a893cb43baf0b448df9f46349f505560916..d116583cac2885b0a97b229f38c562844ea2c948 100644 --- a/spec/lib/fields/has_many_spec.rb +++ b/spec/lib/fields/has_many_spec.rb @@ -7,7 +7,7 @@ describe Administrate::Field::HasMany do it "returns a partial based on the page being rendered" do page = :show items = double - field = Administrate::Field::HasMany.new(:items, items, page) + field = Administrate::Field::HasMany.new(:items, nil, items, page) path = field.to_partial_path @@ -20,7 +20,7 @@ describe Administrate::Field::HasMany do begin WidgetDashboard = Class.new widgets = [] - field = Administrate::Field::HasMany.new(:widgets, widgets, :show) + field = Administrate::Field::HasMany.new(:widgets, nil, widgets, :show) page = field.associated_collection @@ -40,7 +40,7 @@ describe Administrate::Field::HasMany do association = Administrate::Field::HasMany. with_options(class_name: "Foo") - field = association.new(:customers, [], :show) + field = association.new(:customers, nil, [], :show) collection = field.associated_collection attributes = collection.attribute_names @@ -58,7 +58,7 @@ describe Administrate::Field::HasMany do resources = MockRelation.new([:a] * (limit + 1)) association = Administrate::Field::HasMany - field = association.new(:customers, resources, :show) + field = association.new(:customers, nil, resources, :show) expect(field.more_than_limit?).to eq(true) end @@ -68,7 +68,7 @@ describe Administrate::Field::HasMany do resources = MockRelation.new([:a] * limit) association = Administrate::Field::HasMany - field = association.new(:customers, resources, :show) + field = association.new(:customers, nil, resources, :show) expect(field.more_than_limit?).to eq(false) end @@ -80,7 +80,7 @@ describe Administrate::Field::HasMany do resources = MockRelation.new([:a] * (limit + 1)) association = Administrate::Field::HasMany - field = association.new(:customers, resources, :show) + field = association.new(:customers, nil, resources, :show) expect(field.resources).to eq([:a] * limit) end @@ -90,7 +90,7 @@ describe Administrate::Field::HasMany do resources = MockRelation.new([:a, :b, :c]) association = Administrate::Field::HasMany.with_options(limit: 1) - field = association.new(:customers, resources, :show) + field = association.new(:customers, nil, resources, :show) expect(field.resources).to eq([:a]) end diff --git a/spec/lib/fields/has_one_spec.rb b/spec/lib/fields/has_one_spec.rb index c9d1c53d3d4776dda235a92e44a40e7a1229a6a8..09b1a14fa4aaa3943000db4cc50453920f80c557 100644 --- a/spec/lib/fields/has_one_spec.rb +++ b/spec/lib/fields/has_one_spec.rb @@ -6,7 +6,7 @@ describe Administrate::Field::HasOne do it "returns a partial based on the page being rendered" do page = :show owner = double - field = Administrate::Field::HasOne.new(:owner, owner, page) + field = Administrate::Field::HasOne.new(:owner, nil, owner, page) path = field.to_partial_path diff --git a/spec/lib/fields/image_spec.rb b/spec/lib/fields/image_spec.rb index 52b79e39d6cc5309c23344b34fb71c078bd8ba07..8d6db612256173578e686964d6e76011875b95df 100644 --- a/spec/lib/fields/image_spec.rb +++ b/spec/lib/fields/image_spec.rb @@ -4,7 +4,7 @@ describe Administrate::Field::Image do describe "#to_partial_path" do it "returns a partial based on the page being rendered" do page = :show - field = Administrate::Field::Image.new(:image, "/a.jpg", page) + field = Administrate::Field::Image.new(:image, nil, "/a.jpg", page) path = field.to_partial_path diff --git a/spec/lib/fields/number_spec.rb b/spec/lib/fields/number_spec.rb index 095f12750a4e4f71ae1998b148da50728d031e9a..1b342890b6a50d60fd0d7f793f990c7108c3d8b3 100644 --- a/spec/lib/fields/number_spec.rb +++ b/spec/lib/fields/number_spec.rb @@ -8,7 +8,7 @@ describe Administrate::Field::Number do it "returns a partial based on the page being rendered" do page = :show number = double - field = Administrate::Field::Number.new(:price, number, page) + field = Administrate::Field::Number.new(:price, nil, number, page) path = field.to_partial_path @@ -20,8 +20,8 @@ describe Administrate::Field::Number do describe "#to_s" do it "defaults to displaying no decimal points" do - int = Administrate::Field::Number.new(:quantity, 3, :show) - float = Administrate::Field::Number.new(:quantity, 3.1415926, :show) + int = Administrate::Field::Number.new(:quantity, nil, 3, :show) + float = Administrate::Field::Number.new(:quantity, nil, 3.1415926, :show) expect(int.to_s).to eq("3") expect(float.to_s).to eq("3") @@ -55,14 +55,14 @@ describe Administrate::Field::Number do context "when data is nil" do it "returns a dash" do - number = Administrate::Field::Number.new(:number, nil, :page) + number = Administrate::Field::Number.new(:number, nil, nil, :page) expect(number.to_s).to eq("-") end end def number_with_options(num, options) - Administrate::Field::Number.new(:number, num, :page, options) + Administrate::Field::Number.new(:number, nil, num, :page, options) end end end diff --git a/spec/lib/fields/polymorphic_spec.rb b/spec/lib/fields/polymorphic_spec.rb index c0e27f7ae010560a83bfab97e42d37a18c2bebef..83a674735a2944ef637fd4e7e1607ae9e8ab5906 100644 --- a/spec/lib/fields/polymorphic_spec.rb +++ b/spec/lib/fields/polymorphic_spec.rb @@ -8,7 +8,7 @@ describe Administrate::Field::Polymorphic do describe "#to_partial_path" do it "returns a partial based on the page being rendered" do page = :show - field = Administrate::Field::Polymorphic.new(:foo, "hello", page) + field = Administrate::Field::Polymorphic.new(:foo, nil, "hello", page) path = field.to_partial_path @@ -28,7 +28,8 @@ describe Administrate::Field::Polymorphic do end end - field = Administrate::Field::Polymorphic.new(:foo, Thing.new, :show) + field = Administrate::Field::Polymorphic.new(:foo, nil, Thing.new, + :show) display = field.display_associated_resource expect(display).to eq :success diff --git a/spec/lib/fields/string_spec.rb b/spec/lib/fields/string_spec.rb index 02518b12e67965494f6513f1c90946d6a81da83a..5bf99918116f171ffc89424f5d736d6da2ac82c3 100644 --- a/spec/lib/fields/string_spec.rb +++ b/spec/lib/fields/string_spec.rb @@ -7,7 +7,7 @@ describe Administrate::Field::String do describe "#to_partial_path" do it "returns a partial based on the page being rendered" do page = :show - field = Administrate::Field::String.new(:string, "hello", page) + field = Administrate::Field::String.new(:string, nil, "hello", page) path = field.to_partial_path @@ -19,14 +19,15 @@ describe Administrate::Field::String do describe "#truncate" do it "renders an empty string for nil" do - string = Administrate::Field::String.new(:description, nil, :show) + string = Administrate::Field::String.new(:description, nil, nil, :show) expect(string.truncate).to eq("") end it "defaults to displaying up to 50 characters" do - short = Administrate::Field::String.new(:title, lorem(30), :show) - long = Administrate::Field::String.new(:description, lorem(60), :show) + short = Administrate::Field::String.new(:title, nil, lorem(30), :show) + long = Administrate::Field::String.new(:description, nil, lorem(60), + :show) expect(short.truncate).to eq(lorem(30)) expect(long.truncate).to eq(lorem(50)) @@ -42,7 +43,7 @@ describe Administrate::Field::String do end def string_with_options(string, options) - Administrate::Field::String.new(:string, string, :page, options) + Administrate::Field::String.new(:string, nil, string, :page, options) end def lorem(n)