Sha256: e78fa11f4ed22269c451109567160058f83204e61ef060e38d6c09d2d1131ce7

Contents?: true

Size: 1.81 KB

Versions: 4

Compression:

Stored size: 1.81 KB

Contents

#
# Helpers for integration testing
#
# @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
#
module IntegrationExampleGroup
  def self.included(base)
    base.instance_eval do
      metadata[:type] = :integration

      after do
        if Object.const_defined?(:Successor)
          Object.send(:remove_const, :Successor)
        end
        Object.send(:remove_const, :Wrapper) if Object.const_defined?(:Wrapper)
      end

      if WrapIt.rails?
        let(:template) do
          @context ||= ActionView::LookupContext.new(
            RailsApp::Application.root
          )
          template_class.new(ActionView::TemplateRenderer.new(@context))
        end

        let(:template_class) do
          mod = helpers_module
          Class.new(ActionView::Base) do
            include mod
          end
        end
      else
      end

      let(:rendered) { @rendered }

      let(:helpers_module) do
        Object.send(:remove_const, :Helpers) if Object.const_defined?(:Helpers)
        Object.send(:const_set, :Helpers, WrapIt.register_module)
        if described_class.is_a?(Class)
          if Object.const_defined?(:Successor)
            Object.send(:remove_const, :Successor)
          end
          Object.const_set(:Successor, successor_class)
          Helpers.register :helper, 'Successor'
        else
          if Object.const_defined?(:Wrapper)
            Object.send(:remove_const, :Wrapper)
          end
          Object.const_set(:Wrapper, wrapper_class)
          Helpers.register :helper, 'Wrapper'
        end
        Helpers
      end
    end
  end

  def render(code)
    if WrapIt.rails?
      @rendered = template.render(inline: code)
    else
    end
  end

  RSpec.configure do |config|
    config.include(
      self,
      type: :integration,
      example_group: { file_path: /spec\/integration/ }
    )
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
wrap_it-1.0.2 spec/support/example_groups/integration_example_group.rb
wrap_it-1.0.1 spec/support/example_groups/integration_example_group.rb
wrap_it-1.0.0 spec/support/example_groups/integration_example_group.rb
wrap_it-0.2.0 spec/support/example_groups/integration_example_group.rb