Sha256: b088e866f514f0bc306adb9f3785feff79dab5592b45092c8d620db358a4a915

Contents?: true

Size: 1.73 KB

Versions: 2

Compression:

Stored size: 1.73 KB

Contents

require 'minitest/autorun'
require 'bundler'

# Configure Rails
ENV['RAILS_ENV'] = 'test'

Bundler.require

require 'action_dispatch'

require 'responders'
require 'decorate-responder'

Responders::Routes = ActionDispatch::Routing::RouteSet.new
Responders::Routes.draw do
  get '/index' => 'app#index'
  get '/ex' => 'explicit_decorate#index'
  get '/ctx' => 'decorate_with_context#index'
end

class ActiveSupport::TestCase
  setup { @routes = Responders::Routes }
end

class AppResponder < ActionController::Responder
  include Responders::DecorateResponder
end

class User
  attr_reader :name
  def initialize(name)
    @name = name
  end

  def decorate(*args)
    UserDecorator.new self, *args
  end
end

class UserDecorator < Draper::Decorator
  decorates User

  def as_json(_options)
    { class: 'UserDecorator' }.merge(context)
  end
end

class MyDecorator < Draper::Decorator
  def as_json(_options)
    { class: 'MyDecorator' }
  end
end

class AppController < ActionController::Base
  include Responders::Routes.url_helpers

  cattr_accessor :resource

  self.responder = AppResponder
  respond_to :json

  def index
    respond_with self.class.resource
  end
end

class ExplicitDecorateController < ActionController::Base
  include Responders::Routes.url_helpers

  cattr_accessor :resource

  self.responder = AppResponder
  respond_to :json

  def index
    respond_with self.class.resource
  end

  def decorate(resource)
    MyDecorator.new(resource)
  end
end

class DecorateWithContextController < ActionController::Base
  include Responders::Routes.url_helpers

  cattr_accessor :resource

  self.responder = AppResponder
  respond_to :json

  def index
    respond_with self.class.resource
  end

  def decoration_context
    {foo: 'bar'}
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
decorate-responder-2.1.0 test/test_helper.rb
decorate-responder-2.0.0 test/test_helper.rb