Sha256: 2f6cd1cc8b3168ef3632a888c8d6c206abff4b585274a6decfa648d76580693c

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

require 'spec_helper'
require 'gris'
require 'rack/test'

describe Gris::RootPresenter do
  include Rack::Test::Methods

  module RootPresenter
    include Gris::RootPresenter
    resource_links :painter, [:sort]
    endpoint_link :painting, [:account_id]
    resource_links :sculptor
    endpoint_link :sculpture
  end

  class ApplicationEndpoint < Grape::API
    format :json
    formatter :json, Grape::Formatter::Roar
    get do
      present self, with: RootPresenter
    end
  end

  def app
    ApplicationEndpoint.new
  end

  before do
    get '/'
    @result = Hashie::Mash.new JSON.parse(last_response.body)
  end

  it 'returns uri template for resource_links with additional arguments' do
    expect(@result['_links']['painters']['href']).to eq "#{Gris::Identity.base_url}/painters{?sort,page,size}"
    expect(@result['_links']['painters']['templated']).to eq true
    expect(@result['_links']['painter']['href']).to eq "#{Gris::Identity.base_url}/painters/{id}"
    expect(@result['_links']['painter']['templated']).to eq true
  end

  it 'returns uri template for resource_links without additional arguments' do
    expect(@result['_links']['sculptors']['href']).to eq "#{Gris::Identity.base_url}/sculptors{?page,size}"
    expect(@result['_links']['sculptors']['templated']).to eq true
    expect(@result['_links']['sculptor']['href']).to eq "#{Gris::Identity.base_url}/sculptors/{id}"
    expect(@result['_links']['sculptor']['templated']).to eq true
  end

  it 'returns uri template for endpoint_link with additional arguments' do
    expect(@result['_links']['painting']['href']).to eq "#{Gris::Identity.base_url}/painting{?account_id}"
    expect(@result['_links']['painting']['templated']).to eq true
  end

  it 'returns uri template for endpoint_link without additional arguments' do
    expect(@result['_links']['sculpture']['href']).to eq "#{Gris::Identity.base_url}/sculpture"
    expect(@result['_links']['sculpture']['templated']).to be_nil
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gris-0.4.5 spec/output_formatters/root_presenter_spec.rb
gris-0.4.4 spec/output_formatters/root_presenter_spec.rb