Module: ActionView::TestCase::Behavior
- Extended by:
- ActiveSupport::Concern
- Includes:
- AbstractController::Helpers, ActionController::TemplateAssertions, ActionDispatch::Assertions, ActionDispatch::Routing::PolymorphicRoutes, ActionDispatch::TestProcess, Context, Helpers, RecordIdentifier, RoutingUrlFor, ActiveSupport::Testing::ConstantLookup, Rails::Dom::Testing::Assertions
- Included in:
- ActionView::TestCase
- Defined in:
- lib/action_view/test_case.rb
Defined Under Namespace
Modules: ClassMethods, Locals Classes: RenderedViewContent, RenderedViewsCollection
Constant Summary
Constants included from RecordIdentifier
RecordIdentifier::JOIN, RecordIdentifier::NEW
Constants included from Helpers::UrlHelper
Helpers::UrlHelper::BUTTON_TAG_METHOD_VERBS
Constants included from Helpers::ContentExfiltrationPreventionHelper
Helpers::ContentExfiltrationPreventionHelper::CLOSE_CDATA_COMMENT, Helpers::ContentExfiltrationPreventionHelper::CLOSE_FORM_TAG, Helpers::ContentExfiltrationPreventionHelper::CLOSE_OPTION_TAG, Helpers::ContentExfiltrationPreventionHelper::CLOSE_QUOTES_COMMENT, Helpers::ContentExfiltrationPreventionHelper::CONTENT_EXFILTRATION_PREVENTION_MARKUP
Constants included from Helpers::TagHelper
Helpers::TagHelper::ARIA_PREFIXES, Helpers::TagHelper::BOOLEAN_ATTRIBUTES, Helpers::TagHelper::DATA_PREFIXES, Helpers::TagHelper::PRE_CONTENT_STRINGS, Helpers::TagHelper::TAG_TYPES
Constants included from Helpers::JavaScriptHelper
Helpers::JavaScriptHelper::JS_ESCAPE_MAP
Constants included from Helpers::DateHelper
Helpers::DateHelper::MINUTES_IN_QUARTER_YEAR, Helpers::DateHelper::MINUTES_IN_THREE_QUARTERS_YEAR, Helpers::DateHelper::MINUTES_IN_YEAR
Constants included from Helpers::ControllerHelper
Helpers::ControllerHelper::CONTROLLER_DELEGATES
Constants included from Helpers::AssetUrlHelper
Helpers::AssetUrlHelper::ASSET_EXTENSIONS, Helpers::AssetUrlHelper::ASSET_PUBLIC_DIRECTORIES, Helpers::AssetUrlHelper::URI_REGEXP
Instance Attribute Summary collapse
-
#controller ⇒ Object
Returns the value of attribute controller.
-
#output_buffer ⇒ Object
Returns the value of attribute output_buffer.
-
#rendered ⇒ Object
Returns the value of attribute rendered.
-
#request ⇒ Object
Returns the value of attribute request.
Attributes included from Helpers::TranslationHelper
#raise_on_missing_translations
Attributes included from Context
Instance Method Summary collapse
-
#_routes ⇒ Object
:method: rendered.
- #config ⇒ Object
- #render(options = {}, local_assigns = {}, &block) ⇒ Object
- #rendered_views ⇒ Object
- #setup_with_controller ⇒ Object
Methods included from RoutingUrlFor
Methods included from RecordIdentifier
Methods included from ModelNaming
#convert_to_model, #model_name_from_record_or_class
Methods included from Helpers
Methods included from Helpers::UrlHelper
#button_to, #current_page?, #link_to, #link_to_if, #link_to_unless, #link_to_unless_current, #mail_to, #phone_to, #sms_to, #url_for
Methods included from Helpers::ContentExfiltrationPreventionHelper
Methods included from Helpers::TagHelper
build_tag_values, #cdata_section, #content_tag, ensure_valid_html5_tag_name, #escape_once, #tag, #token_list
Methods included from Helpers::OutputSafetyHelper
#raw, #safe_join, #to_sentence
Methods included from Helpers::CaptureHelper
#capture, #content_for, #content_for?, #provide, #with_output_buffer
Methods included from Helpers::TranslationHelper
Methods included from Helpers::TextHelper
#concat, #current_cycle, #cycle, #excerpt, #highlight, #pluralize, #reset_cycle, #safe_concat, #simple_format, #truncate, #word_wrap
Methods included from Helpers::SanitizeHelper
#sanitize, #sanitize_css, #strip_links, #strip_tags
Methods included from Helpers::RenderingHelper
Methods included from Helpers::NumberHelper
#number_to_currency, #number_to_human, #number_to_human_size, #number_to_percentage, #number_to_phone, #number_with_delimiter, #number_with_precision
Methods included from Helpers::JavaScriptHelper
#escape_javascript, #javascript_cdata_section, #javascript_tag
Methods included from Helpers::FormTagHelper
#button_tag, #checkbox_tag, #color_field_tag, #date_field_tag, #datetime_field_tag, #email_field_tag, #field_id, #field_name, #field_set_tag, #file_field_tag, #form_tag, #hidden_field_tag, #image_submit_tag, #label_tag, #month_field_tag, #number_field_tag, #password_field_tag, #radio_button_tag, #range_field_tag, #search_field_tag, #select_tag, #submit_tag, #telephone_field_tag, #text_field_tag, #textarea_tag, #time_field_tag, #url_field_tag, #utf8_enforcer_tag, #week_field_tag
Methods included from Helpers::FormOptionsHelper
#collection_checkboxes, #collection_radio_buttons, #collection_select, #grouped_collection_select, #grouped_options_for_select, #option_groups_from_collection_for_select, #options_for_select, #options_from_collection_for_select, #select, #time_zone_options_for_select, #time_zone_select, #weekday_options_for_select, #weekday_select
Methods included from Helpers::FormHelper
#_object_for_form_builder, #checkbox, #color_field, #date_field, #datetime_field, #email_field, #fields, #fields_for, #file_field, #form_for, #form_with, #hidden_field, #label, #month_field, #number_field, #password_field, #radio_button, #range_field, #search_field, #telephone_field, #text_field, #textarea, #time_field, #url_field, #week_field
Methods included from Helpers::DebugHelper
Methods included from Helpers::DateHelper
#date_select, #datetime_select, #distance_of_time_in_words, #select_date, #select_datetime, #select_day, #select_hour, #select_minute, #select_month, #select_second, #select_time, #select_year, #time_ago_in_words, #time_select, #time_tag
Methods included from Helpers::CsrfHelper
Methods included from Helpers::CspHelper
Methods included from Helpers::ControllerHelper
#assign_controller, #logger, #respond_to?
Methods included from Helpers::CacheHelper
#cache, #cache_fragment_name, #cache_if, #cache_unless, #caching?, #digest_path_from_template, #uncacheable!
Methods included from Helpers::AtomFeedHelper
Methods included from Helpers::AssetUrlHelper
#asset_path, #asset_url, #audio_path, #audio_url, #compute_asset_extname, #compute_asset_host, #compute_asset_path, #font_path, #font_url, #image_path, #image_url, #javascript_path, #javascript_url, #stylesheet_path, #stylesheet_url, #video_path, #video_url
Methods included from Helpers::AssetTagHelper
#audio_tag, #auto_discovery_link_tag, #favicon_link_tag, #image_tag, #javascript_include_tag, #picture_tag, #preload_link_tag, #stylesheet_link_tag, #video_tag
Methods included from Context
#_layout_for, #_prepare_context
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(selector) ⇒ Object (private)
418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 |
# File 'lib/action_view/test_case.rb', line 418 def method_missing(selector, ...) begin routes = @controller.respond_to?(:_routes) && @controller._routes rescue # Don't call routes, if there is an error on _routes call end if routes && (routes.named_routes.route_defined?(selector) || routes.mounted_helpers.method_defined?(selector)) @controller.__send__(selector, ...) else super end end |
Instance Attribute Details
#controller ⇒ Object
Returns the value of attribute controller.
63 64 65 |
# File 'lib/action_view/test_case.rb', line 63 def controller @controller end |
#output_buffer ⇒ Object
Returns the value of attribute output_buffer.
63 64 65 |
# File 'lib/action_view/test_case.rb', line 63 def output_buffer @output_buffer end |
#rendered ⇒ Object
Returns the value of attribute rendered.
63 64 65 |
# File 'lib/action_view/test_case.rb', line 63 def rendered @rendered end |
#request ⇒ Object
Returns the value of attribute request.
63 64 65 |
# File 'lib/action_view/test_case.rb', line 63 def request @request end |
Instance Method Details
#_routes ⇒ Object
:method: rendered
Returns the content rendered by the last render
call.
The returned object behaves like a string but also exposes a number of methods that allows you to parse the content string in formats registered using .register_parser
.
By default includes the following parsers:
.html
Parse the rendered
content String into HTML. By default, this means a Nokogiri::XML::Node
.
test "renders HTML" do
article = Article.create!(title: "Hello, world")
render partial: "articles/article", locals: { article: article }
assert_pattern { rendered.html.at("main h1") => { content: "Hello, world" } }
end
To parse the rendered content into a Capybara::Simple::Node
, re-register an :html
parser with a call to Capybara.string
:
register_parser :html, -> rendered { Capybara.string(rendered) }
test "renders HTML" do
article = Article.create!(title: "Hello, world")
render partial: article
rendered.html.assert_css "h1", text: "Hello, world"
end
.json
Parse the rendered
content String into JSON. By default, this means a ActiveSupport::HashWithIndifferentAccess
.
test "renders JSON" do
article = Article.create!(title: "Hello, world")
render formats: :json, partial: "articles/article", locals: { article: article }
assert_pattern { rendered.json => { title: "Hello, world" } }
end
297 298 299 |
# File 'lib/action_view/test_case.rb', line 297 def _routes @controller._routes if @controller.respond_to?(:_routes) end |
#config ⇒ Object
232 233 234 |
# File 'lib/action_view/test_case.rb', line 232 def config @controller.config if @controller.respond_to?(:config) end |
#render(options = {}, local_assigns = {}, &block) ⇒ Object
236 237 238 239 240 |
# File 'lib/action_view/test_case.rb', line 236 def render( = {}, local_assigns = {}, &block) view.assign(view_assigns) @rendered << output = view.render(, local_assigns, &block) output end |
#rendered_views ⇒ Object
242 243 244 |
# File 'lib/action_view/test_case.rb', line 242 def rendered_views @_rendered_views ||= RenderedViewsCollection.new end |
#setup_with_controller ⇒ Object
220 221 222 223 224 225 226 227 228 229 230 |
# File 'lib/action_view/test_case.rb', line 220 def setup_with_controller controller_class = Class.new(ActionView::TestCase::TestController) @controller = controller_class.new @request = @controller.request @view_flow = ActionView::OutputFlow.new @output_buffer = ActionView::OutputBuffer.new @rendered = self.class.content_class.new(+"") test_case_instance = self controller_class.define_method(:_test_case) { test_case_instance } end |