Sha256: 6f8139503befe72d692f5fb5a373a78ccc4dc311fcf4df78331834277b40f6ed

Contents?: true

Size: 1.62 KB

Versions: 2

Compression:

Stored size: 1.62 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){}
    lambda{ get "/home" }.should raise_error("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){}
      lambda{ get "/home" }.should_not raise_error("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

2 entries across 2 versions & 1 rubygems

Version Path
grape-rabl-0.1.0 spec/grape_rabl_spec.rb
grape-rabl-0.0.6 spec/grape_rabl_spec.rb