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