Sha256: e21e5f17660180566affddddbdfdf0b98137860c96b1f2b55ff28b7a12aff026

Contents?: true

Size: 1.76 KB

Versions: 1

Compression:

Stored size: 1.76 KB

Contents

module Teabag
  class Suite

    attr_accessor :config, :name
    delegate :stylesheets, :helper, to: :config

    def initialize(options = {})
      @options = options
      @name = (@options[:suite] || :default).to_s
      @config = suite_configuration
    end

    def javascripts
      [core_javascripts, spec_javascripts].flatten
    end

    def core_javascripts
      config.javascripts
    end

    def spec_javascripts
      [helper, specs].flatten
    end

    def suites
      {all: Teabag.configuration.suites.keys, active: name}
    end

    def spec_files
      glob.map { |file| {path: file, name: asset_from_file(file)} }
    end

    def link(params = {})
      query = "?#{params.to_query}" if params.present?
      [Teabag.configuration.mount_at, name, query].compact.join("/")
    end

    protected

    def specs
      files = specs_from_file
      return files unless files.empty?
      glob.map { |file| asset_from_file(file) }
    end

    def glob
      Dir[config.matcher.present? ? Teabag.configuration.root.join(config.matcher) : ""]
    end

    def suite_configuration
      config = Teabag.configuration.suites[name]
      raise Teabag::UnknownSuite unless config.present?
      Teabag::Configuration::Suite.new(&config)
    end

    def specs_from_file
      Array(@options[:file]).map do |filename|
        asset_from_file(File.expand_path(Teabag.configuration.root.join(filename)))
      end
    end

    def asset_from_file(original)
      filename = original
      Rails.application.config.assets.paths.each do |path|
        filename = filename.gsub(%r(^#{path}[\/|\\]), "")
      end
      raise Teabag::AssetNotServable, "#{filename} is not within an asset path" if filename == original
      filename.gsub(/(\.js\.coffee|\.coffee)$/, ".js")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
teabag-0.5.2 lib/teabag/suite.rb