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 |