Top Level Namespace

Defined Under Namespace

Modules: Coach, Spring

Instance Method Summary collapse

Instance Method Details

#build_middleware(name) ⇒ Object

rubocop:disable Metrics/AbcSize



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/coach/rspec.rb', line 9

def build_middleware(name)
  Class.new(Coach::Middleware) do
    # To access `name`, we need to use `define_method` instead of `def`
    define_method(:to_s) { "<Middleware#{name}>" }
    define_method(:name) { name }
    define_singleton_method(:name) { name }

    def call
      config[:callback].call if config.include?(:callback)
      (**{ name.to_sym => true })

      response = [name + config.except(:callback).inspect.to_s]

      # Build up a list of middleware called, in the order they were called
      if next_middleware
        response.concat(next_middleware.call)
      else
        response
      end
    end
  end
end

#null_middlewareObject

rubocop:enable Metrics/AbcSize



33
34
35
# File 'lib/coach/rspec.rb', line 33

def null_middleware
  double(call: nil)
end