Sha256: 32b6891f96eefbc19fffc8a7bd51ad7c2093dae4dc8bb86a913915319f96f7ce

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

require 'spec_helper'

describe Grape::Rabl do
  subject do
    Class.new(Grape::API)
  end

  before do
    subject.format :json
    subject.formatter :json, Grape::Formatter::Rabl
  end

  def app
    subject
  end

  it 'should work without rabl template' do
    subject.get("/home") {"Hello World"}
    get "/home"
    last_response.body.should == "Hello World"
  end

  it "should raise error about root directory" do
    subject.get("/home", :rabl => true){}
    get "/home"
    last_response.status.should == 500
    last_response.body.should include "Use Rack::Config to set 'api.tilt.root' in config.ru"
  end


  context "titl root is setup"  do
    before do
      subject.before { env["api.tilt.root"] = "#{File.dirname(__FILE__)}/views" }
    end

    it "should respond with proper content-type" do
      subject.get("/home", :rabl => "user"){}
      get("/home")
      last_response.headers["Content-Type"].should == "application/json"
    end

    it "should not raise error about root directory" do
      subject.get("/home", :rabl => true){}
      get "/home"
      last_response.status.should == 500
      last_response.body.should_not include "Use Rack::Config to set 'api.tilt.root' in config.ru"
    end

    ["user", "user.rabl"].each do |rabl_option|
      it "should render rabl template (#{rabl_option})" do
        subject.get("/home", :rabl => rabl_option) do
          @user = OpenStruct.new(:name => "LTe", :email => "email@example.com")
          @project = OpenStruct.new(:name => "First")
        end

        get "/home"
        last_response.body.should == '{"user":{"name":"LTe","email":"email@example.com","project":{"name":"First"}}}'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grape-rabl-0.2.0 spec/grape_rabl_spec.rb