Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce a new render_in_view_context test helper to render arbitrary logic in the view #1339

Merged
merged 10 commits into from
May 12, 2022

Conversation

camertron
Copy link
Contributor

Summary

I'm currently working on a forms framework at GitHub that uses view components. Forms are rendered like so:

form_with(...) do |builder|
  render(FormClass.new(builder, ...))
end

The render_inline test helper works great for individual component instances, but doesn't let me also test the wrapping form_with call. I propose a modification to render_inline that evaluates the block in the view context using instance_exec so this is possible:

render_inline do
  form_with(...) do |builder|
    render(FormClass.new(builder, ...))
  end
end

assert_selector ".whatever"

@camertron camertron requested a review from a team as a code owner April 23, 2022 04:35
@camertron camertron changed the title Render inline block Augment the render_inline test helper to render arbitrary logic in the view context Apr 23, 2022
@camertron camertron requested a review from joelhawksley April 26, 2022 23:07
@camertron
Copy link
Contributor Author

Consensus on the team is to define another method for this, since it's potentially surprising/confusing that the block is evaluated in the view context. Maybe call it render_in_view_context or in_view_context.

docs/api.md Outdated Show resolved Hide resolved
camertron and others added 2 commits May 11, 2022 16:06
@camertron camertron requested a review from joelhawksley May 11, 2022 23:15
lib/view_component/test_helpers.rb Outdated Show resolved Hide resolved
docs/api.md Outdated Show resolved Hide resolved
@camertron camertron requested a review from joelhawksley May 12, 2022 17:54
@camertron camertron changed the title Augment the render_inline test helper to render arbitrary logic in the view context Introduce a new render_in_view_context test helper to render arbitrary logic in the view May 12, 2022
@joelhawksley joelhawksley merged commit 98363ef into main May 12, 2022
@joelhawksley joelhawksley deleted the render_inline_block branch May 12, 2022 23:55
claudiob pushed a commit to claudiob/view_component that referenced this pull request Dec 22, 2023
…y logic in the view (ViewComponent#1339)

* Enable rendering arbitrary block contents in the view context in tests

* Add CHANGELOG entry

* Fix linting and coverage

* Update docs

* Update lib/view_component/test_helpers.rb

* Update docs/api.md

Co-authored-by: Joel Hawksley <joel@hawksley.org>

* Move functionality to new render_in_view_context method

* Revert autogen docs changes; add yard comment back in

* Add missing space

Co-authored-by: Joel Hawksley <joel@hawksley.org>
claudiob pushed a commit to claudiob/view_component that referenced this pull request Jan 3, 2024
…y logic in the view (ViewComponent#1339)

* Enable rendering arbitrary block contents in the view context in tests

* Add CHANGELOG entry

* Fix linting and coverage

* Update docs

* Update lib/view_component/test_helpers.rb

* Update docs/api.md

Co-authored-by: Joel Hawksley <joel@hawksley.org>

* Move functionality to new render_in_view_context method

* Revert autogen docs changes; add yard comment back in

* Add missing space

Co-authored-by: Joel Hawksley <joel@hawksley.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants