Sha256: 112eb6c22dee0b24423bfca26fed9e2ca580634c6c1cef97c22f277a0ed07ecd

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

module Spec
  module Example
    module BeforeAndAfterHooks
      
      def register_hooks
        language = SpecI18n.natural_language
        language.before_and_after_keywords.each do |key, values|
          values.map { |value| alias_method value, key }
        end
      end
  
      def before_parts(scope)
        
        scope = grep_language_and_scope(scope) || scope
        
        case scope
        when :each; before_each_parts
        when :all; before_all_parts
        when :suite; before_suite_parts
        end
      end
      
      def after_parts(scope)
        
        scope = grep_language_and_scope(scope) || scope
        
        case scope
        when :each; after_each_parts
        when :all; after_all_parts
        when :suite; after_suite_parts
        end
      end
      
      def grep_language_and_scope(scope)
        if SpecI18n.spec_language
          language = SpecI18n.natural_language
          scope = grep_the_scope(scope, language.hooks_params_keywords)
        end
      end

      # Receive a String Scope and return the scope in english for
      # the rspec run the right method
      def grep_the_scope(scope, hooks)
        scopes = [:each, :all, :suite]
        return scope if scopes.include?(scope)
        
        hooks.each do |scope_in_english, language_hooks|
          return scope_in_english.to_sym if language_hooks.include?(scope.to_s)
        end
      end

    end
  end
end

include Spec::Example::BeforeAndAfterHooks

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rspec-i18n-1.0.0 lib/spec-i18n/example/before_and_after_hooks.rb