diff --git a/app/views/fields/has_one/_show.html.erb b/app/views/fields/has_one/_show.html.erb index 8a9ccb4569..b47a9be2f0 100644 --- a/app/views/fields/has_one/_show.html.erb +++ b/app/views/fields/has_one/_show.html.erb @@ -32,7 +32,7 @@ All show page attributes of has_one relationship would be rendered ) %>
- <%= render_field attribute %> + <%= render_field attribute, { page: page } %>
<% end -%> diff --git a/spec/administrate/views/fields/has_one/_show_spec.rb b/spec/administrate/views/fields/has_one/_show_spec.rb index 15e1705cf5..6ca430970b 100644 --- a/spec/administrate/views/fields/has_one/_show_spec.rb +++ b/spec/administrate/views/fields/has_one/_show_spec.rb @@ -23,6 +23,14 @@ it "renders a link to the record" do product = create(:product) product_path = polymorphic_path([:admin, product]) + nested_show = instance_double( + "Administrate::Page::Show", + resource: double( + class: ProductMetaTag, + ), + attributes: [], + resource_name: "Product Tag", + ) has_one = instance_double( "Administrate::Field::HasOne", display_associated_resource: product.name, @@ -43,15 +51,54 @@ expect(rendered.strip).to include(link) end - def nested_show - instance_double( + it "renders nested attribute relationships" do + template.extend Administrate::ApplicationHelper + + product = create(:product) + page = create(:page, product: product) + + nested_has_many = instance_double( + "Administrate::Field::HasMany", + associated_collection: [page], + attribute: :page, + data: [page], + resources: [page], + html_class: "has-many", + name: "Page", + to_partial_path: "fields/has_many/index", + order_from_params: {}, + ) + + nested_show = instance_double( "Administrate::Page::Show", resource: double( class: ProductMetaTag, ), - attributes: [], + attributes: [nested_has_many], resource_name: "Product Tag", ) + + has_one = instance_double( + "Administrate::Field::HasOne", + display_associated_resource: product.name, + data: product, + nested_show: nested_show, + ) + + page_double = instance_double("Administrate::Page::Show") + + render( + partial: "fields/has_one/show.html.erb", + locals: { + field: has_one, + namespace: "admin", + page: page_double, + resource_name: "product_meta_tag", + }, + ) + + has_many_count = "1 page" + expect(rendered.strip).to include(has_many_count) end end end