# File lib/action_controller/assertions/selector_assertions.rb, line 367
      def assert_select_rjs(*args, &block)
        rjs_type = nil
        arg      = args.shift

        # If the first argument is a symbol, it's the type of RJS statement we're looking
        # for (update, replace, insertion, etc). Otherwise, we're looking for just about
        # any RJS statement.
        if arg.is_a?(Symbol)
          rjs_type = arg
          if rjs_type == :insert
            arg = args.shift
            insertion = "insert_#{arg}".to_sym
            raise ArgumentError, "Unknown RJS insertion type #{arg}" unless RJS_STATEMENTS[insertion]
            statement = "(#{RJS_STATEMENTS[insertion]})"
          else
            raise ArgumentError, "Unknown RJS statement type #{rjs_type}" unless RJS_STATEMENTS[rjs_type]
            statement = "(#{RJS_STATEMENTS[rjs_type]})"
          end
          arg = args.shift
        else
          statement = "#{RJS_STATEMENTS[:any]}"
        end

        # Next argument we're looking for is the element identifier. If missing, we pick
        # any element.
        if arg.is_a?(String)
          id = Regexp.quote(arg)
          arg = args.shift
        else
          id = "[^\"]*"
        end

        pattern =
          case rjs_type
            when :chained_replace, :chained_replace_html
              Regexp.new("\\$\\(\"#{id}\"\\)#{statement}\\(#{RJS_PATTERN_HTML}\\)", Regexp::MULTILINE)
            else
              Regexp.new("#{statement}\\(\"#{id}\", #{RJS_PATTERN_HTML}\\)", Regexp::MULTILINE)
          end

        # Duplicate the body since the next step involves destroying it.
        matches = nil
        @response.body.gsub(pattern) do |match|
          html = unescape_rjs($2)
          matches ||= []
          matches.concat HTML::Document.new(html).root.children.select { |n| n.tag? }
          ""
        end
        if matches
          if block_given?
            begin
              in_scope, @selected = @selected, matches
              yield matches
            ensure
              @selected = in_scope
            end
          end
          matches
        else
          # RJS statement not found.
          flunk args.shift || "No RJS statement that replaces or inserts HTML content."
        end
      end