diff --git a/app/views/fields/rich_text/_form.html.erb b/app/views/fields/rich_text/_form.html.erb index 0a4ed44965..ddc709c9b3 100644 --- a/app/views/fields/rich_text/_form.html.erb +++ b/app/views/fields/rich_text/_form.html.erb @@ -1,3 +1,19 @@ +<%# +# Rich Text Form Partial + +This partial renders a trix-editor element for ActionText::RichText attributes. + +## Local variables: + +- `f`: + A Rails form generator, used to help create the appropriate trix-editor fields. +- `field`: + An instance of [Administrate::Field::RichText][1]. + A wrapper around the tmie attributes pulled from the model. + +[1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/RichText +%> +
<%= f.label field.attribute %>
diff --git a/spec/administrate/views/fields/rich_text/_form_spec.rb b/spec/administrate/views/fields/rich_text/_form_spec.rb index a91e387b21..07180be7cf 100644 --- a/spec/administrate/views/fields/rich_text/_form_spec.rb +++ b/spec/administrate/views/fields/rich_text/_form_spec.rb @@ -17,37 +17,24 @@ def main_app "ProductDashbard::ATTRIBUTE_TYPES", banner: Administrate::Field::RichText ) - product = build(:product, name: nil) + product = build(:product, banner: "
Rich text
") banner = instance_double( "Administrate::Field::RichText", attribute: :banner, - data: nil + data: product.banner ) - render( - partial: "fields/rich_text/form", - locals: {field: banner, f: form_builder(product)} - ) + fields model: product do |f| + render( + partial: "fields/rich_text/form", + locals: {field: banner, f: f} + ) + end expect(rendered).to have_field( - "product_banner_trix_input_product", type: "hidden" - ) - end - - def form_builder(object) - ActionView::Helpers::FormBuilder.new( - object.model_name.singular, - object, - build_template, - {} - ) - end - - def build_template - Object.new.tap do |template| - template.extend ActionView::Helpers::FormHelper - template.extend ActionView::Helpers::FormOptionsHelper - template.extend ActionView::Helpers::FormTagHelper - end + "trix_input_product", type: "hidden", with: product.banner.body.to_trix_html + ).and(have_element( + "trix-editor", input: "trix_input_product" + )) end end diff --git a/spec/administrate/views/fields/select/_edit_spec.rb b/spec/administrate/views/fields/select/_edit_spec.rb index 31781ef81e..20441e495a 100644 --- a/spec/administrate/views/fields/select/_edit_spec.rb +++ b/spec/administrate/views/fields/select/_edit_spec.rb @@ -13,10 +13,12 @@ html_controller: "select" ) - render( - partial: "fields/select/form", - locals: {field: select, f: form_builder(customer)} - ) + fields model: customer do |f| + render( + partial: "fields/select/form", + locals: {field: select, f: f} + ) + end expect(rendered).to have_css( %(select[name="customer[email_subscriber]"][data-controller~=select] @@ -35,31 +37,16 @@ html_controller: "select" ) - render( - partial: "fields/select/form", - locals: {field: select, f: form_builder(customer)} - ) + fields model: customer do |f| + render( + partial: "fields/select/form", + locals: {field: select, f: f} + ) + end expect(rendered).to have_css( %(select[name="customer[email_subscriber]"][data-controller~="select"] option[value=""]), text: "Unknown" ) end - - def form_builder(object) - ActionView::Helpers::FormBuilder.new( - object.model_name.singular, - object, - build_template, - {} - ) - end - - def build_template - Object.new.tap do |template| - template.extend ActionView::Helpers::FormHelper - template.extend ActionView::Helpers::FormOptionsHelper - template.extend ActionView::Helpers::FormTagHelper - end - end end diff --git a/spec/administrate/views/fields/text/_form_spec.rb b/spec/administrate/views/fields/text/_form_spec.rb index adad5ec646..2352cbf34b 100644 --- a/spec/administrate/views/fields/text/_form_spec.rb +++ b/spec/administrate/views/fields/text/_form_spec.rb @@ -31,26 +31,11 @@ def render_partial(field) product = build(:product) - render( - partial: "fields/text/form", - locals: {field: field, f: form_builder(product)} - ) - end - - def form_builder(object) - ActionView::Helpers::FormBuilder.new( - object.model_name.singular, - object, - build_template, - {} - ) - end - - def build_template - Object.new.tap do |template| - template.extend ActionView::Helpers::FormHelper - template.extend ActionView::Helpers::FormOptionsHelper - template.extend ActionView::Helpers::FormTagHelper + fields model: product do |f| + render( + partial: "fields/text/form", + locals: {field: field, f: f} + ) end end end diff --git a/spec/administrate/views/fields/url/_form_spec.rb b/spec/administrate/views/fields/url/_form_spec.rb index 642a3e7aa5..20c69962e9 100644 --- a/spec/administrate/views/fields/url/_form_spec.rb +++ b/spec/administrate/views/fields/url/_form_spec.rb @@ -10,28 +10,13 @@ data: nil ) - render( - partial: "fields/url/form", - locals: {field: url, f: form_builder(product)} - ) + fields model: product do |f| + render( + partial: "fields/url/form", + locals: {field: url, f: f} + ) + end expect(rendered).to have_css(%(input[type="url"][name="product[image_url]"])) end - - def form_builder(object) - ActionView::Helpers::FormBuilder.new( - object.model_name.singular, - object, - build_template, - {} - ) - end - - def build_template - Object.new.tap do |template| - template.extend ActionView::Helpers::FormHelper - template.extend ActionView::Helpers::FormOptionsHelper - template.extend ActionView::Helpers::FormTagHelper - end - end end