Module: Arbre::Rails::RSpec::ArbreSupport

Defined in:
lib/arbre/rails/rspec/arbre_support.rb

Overview

Adds support for an Arbre context.

Instance Method Summary collapse

Instance Method Details

#arbre_contextObject Also known as: arbre

Simulates how ArbreTemplateHandler sets up a context, but using the context build block.



10
11
12
# File 'lib/arbre/rails/rspec/arbre_support.rb', line 10

def arbre_context
  @arbre_context ||= Arbre::Context.new(assigns, helpers)
end

#assignsObject

Override to provide default assigns (or define let(:assigns) {…}).



16
17
18
# File 'lib/arbre/rails/rspec/arbre_support.rb', line 16

def assigns
  @assigns ||= {}
end

#build_helpersObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/arbre/rails/rspec/arbre_support.rb', line 25

def build_helpers
  helpers = ActionView::Base.new

  # Simulate a default controller & request.
  allow(helpers).to receive(:controller).and_return(controller)
  allow(helpers).to receive(:request).and_return(request)

  # Include all application controller's helpers.
  if defined?(ApplicationController)
    helpers.singleton_class.send :include, ApplicationController._helpers
  end

  # Stub asset_path
  allow(helpers).to receive(:asset_path) { |asset| "/assets/#{asset}" }

  helpers
end

#controllerObject



43
44
45
46
47
# File 'lib/arbre/rails/rspec/arbre_support.rb', line 43

def controller
  @controller ||= ActionController::Base.new.tap do |controller|
    controller.request = request
  end
end

#helpersObject

Override to provide default helpers (or define let(:helpers) {…}).



21
22
23
# File 'lib/arbre/rails/rspec/arbre_support.rb', line 21

def helpers
  @helpers ||= build_helpers
end

#requestObject



49
50
51
# File 'lib/arbre/rails/rspec/arbre_support.rb', line 49

def request
  @request ||= ActionDispatch::Request.new('rack.input' => '')
end