module ViewComponent::TestHelpers
def render_preview(name, from: __vc_test_helpers_preview_class, params: {})
-
(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