module ViewComponent::TestHelpers

def render_preview(name, from: __vc_test_helpers_preview_class, params: {})

Returns:
  • (Nokogiri::HTML) -

Parameters:
  • params (Hash) -- Parameters to be passed to the preview.
  • from (ViewComponent::Preview) -- The class of the preview to be rendered.
  • name (String) -- The name of the preview to be rendered.
def render_preview(name, from: __vc_test_helpers_preview_class, params: {})
  previews_controller = __vc_test_helpers_build_controller(Rails.application.config.view_component.preview_controller.constantize)
  # From what I can tell, it's not possible to overwrite all request parameters
  # at once, so we set them individually here.
  params.each do |k, v|
    previews_controller.request.params[k] = v
  end
  previews_controller.request.params[:path] = "#{from.preview_name}/#{name}"
  previews_controller.set_response!(ActionDispatch::Response.new)
  result = previews_controller.previews
  @rendered_content = result
  Nokogiri::HTML.fragment(@rendered_content)
end