class ActionView::FixtureResolver - actionview-4.2.3 Documentation

# class ActionView::FixtureResolver

Use FixtureResolver in your tests to simulate the presence of files on the file system. This is used internally by Rails' own test suite, and is useful for testing extensions that have no way of knowing what the file system will look like at runtime.

### Attributes

hash[R]

### Public Class Methods

new(hash = {}, pattern=nil) click to toggle source
Calls superclass method ActionView::Resolver.new

    # File lib/action_view/testing/resolvers.rb, line 11
    def initialize(hash = {}, pattern=nil)
      super(pattern)
      @hash = hash
    end

### Public Instance Methods

to_s() click to toggle source

    # File lib/action_view/testing/resolvers.rb, line 16
    def to_s
      @hash.keys.join(', ')
    end

### Private Instance Methods

query(path, exts, formats) click to toggle source

    # File lib/action_view/testing/resolvers.rb, line 22
    def query(path, exts, formats)
      query = ""
      EXTENSIONS.each_key do |ext|
        query << '(' << exts[ext].map {|e| e && Regexp.escape(".#{e}") }.join('|') << '|)'
      end
      query = /^(#{Regexp.escape(path)})#{query}$/

      templates = []
      @hash.each do |_path, array|
        source, updated_at = array
        next unless _path =~ query
        handler, format, variant = extract_handler_and_format_and_variant(_path, formats)
        templates << Template.new(source, _path, handler,
          :virtual_path => path.virtual,
          :format => format,
          :variant => variant,
          :updated_at => updated_at
        )
      end

      templates.sort_by {|t| -t.identifier.match(/^#{query}$/).captures.reject(&:blank?).size }
    end