From aff0cd4454c01179dfd50feb7351dd076c7541a7 Mon Sep 17 00:00:00 2001 From: "Chad W. Taylor" Date: Wed, 4 Feb 2015 18:18:18 -0800 Subject: [PATCH] Create render_jsonapi_test.rb Use of `render` for JSONAPI. --- test/render_jsonapi_test.rb | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 test/render_jsonapi_test.rb diff --git a/test/render_jsonapi_test.rb b/test/render_jsonapi_test.rb new file mode 100644 index 0000000..376bef5 --- /dev/null +++ b/test/render_jsonapi_test.rb @@ -0,0 +1,52 @@ +require 'test_helper' + +class RenderTest < ActionController::TestCase + include Roar::Rails::TestCase + + class SingersController < ActionController::Base + + module SingerRepresenter + include Roar::JSON::JSONAPI + # type :musicians + property :name, :as => :title + end + + module SingersRepresenter + include Representable::JSON::Collection + self.represenation_wrap = :musicians + items :extend => PersonRepresenter + end + + include Roar::Rails::ControllerAdditions + include Roar::Rails::ControllerAdditions::Render + + # NOTE: using :json_api will break + represents :json, :entity => SingerRepresenter, :collection => SingersRepresenter + + def show + singer = Musician.new("Bumi") + render :json => singer, status: 201 + end + + def index + singers = [Musician.new("Bumi"), Musician.new("Iggy")] + render :json => singers, status: 201 + end + + end + + tests SingersController + + test "should use Representer for #render using jsonapi on a single model" do + get :show, :id => "bumi", :format => :json_api + assert_equal response.body, '{"musicians":{"title":"Bumi"}}' + assert_equal 201, response.status + end + + test "should use Representer for #render using jsonapi on a model collection" do + get :index, :format => :json_api + assert_equal response.body, '{"musicians":[{"title":"Bumi"},{"title":"Iggy"}]}' + assert_equal 201, response.status + end + +end