Module: ViewComponent::RenderPreviewHelper
- Defined in:
- lib/view_component/render_preview_helper.rb
Instance Method Summary collapse
-
#render_preview(name) ⇒ Nokogiri::HTML
Render a preview inline.
Instance Method Details
#render_preview(name) ⇒ Nokogiri::HTML
Render a preview inline. Internally sets ‘page` to be a `Capybara::Node::Simple`, allowing for Capybara assertions to be used:
“‘ruby render_preview(:default) assert_text(“Hello, World!”) “`
Note: ‘#rendered_preview` expects a preview to be defined with the same class name as the calling test, but with `Test` replaced with `Preview`:
MyComponentTest -> MyComponentPreview etc.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/view_component/render_preview_helper.rb', line 20 def render_preview(name) begin preview_klass = self.class.name.gsub("Test", "Preview") preview_klass = preview_klass.constantize rescue NameError raise NameError.new( "`render_preview` expected to find #{preview_klass}, but it does not exist." ) end previews_controller = build_controller(ViewComponent::Base.preview_controller.constantize) previews_controller.request.params[:path] = "#{preview_klass.preview_name}/#{name}" previews_controller.response = ActionDispatch::Response.new result = previews_controller.previews @rendered_content = result Nokogiri::HTML.fragment(@rendered_content) end |