Sha256: 460c14b5fe3cabcde0651f1be8912f8811b7208793957e46baa2b3cc703964ec

Contents?: true

Size: 1.83 KB

Versions: 2

Compression:

Stored size: 1.83 KB

Contents

require File.expand_path('../../spec_helper', __FILE__)
require 'rest-assured/routes/response'

describe Response do
  [:get, :post, :put, :delete].each do |verb|
    it "processes an unknown request" do

      Response.should_receive(:perform).with(an_instance_of(RestAssured::Application))
      send verb, '/some/path'
    end
  end

  let(:request) {
    double('Request',
           :request_method => 'GET',
           :fullpath => '/api',
           :env => stub(:to_json => 'env'),
           :body => stub(:read => 'body').as_null_object,
           :params => stub(:to_json => 'params')
          )
  }
  let(:rest_assured_app) { double('App', :request => request).as_null_object }

  it "returns double content if an active one found with the same fullpath and the same method as request" do
    d = Double.create :fullpath => '/some/path', :content => 'content' 
    request.stub(:fullpath).and_return(d.fullpath)

    rest_assured_app.should_receive(:body).with(d.content)
    Response.perform(rest_assured_app)
  end

  it "redirects if double not hit but there is redirect that matches request" do
    r = Redirect.create :to => 'http://exmple.com/api', :pattern => '.*'
    fullpath = '/some/other/path'
    request.stub(:fullpath).and_return(fullpath)

    rest_assured_app.should_receive(:redirect).with(r.to + fullpath)

    Response.perform(rest_assured_app)
  end

  it "returns 404 if neither double nor redirect matches the request" do
    rest_assured_app.should_receive(:status).with(404)
    
    Response.perform(rest_assured_app)
  end

  it 'records request if double matches' do
    requests = double
    Double.stub_chain('where.first').and_return(double(:requests => requests).as_null_object)

    requests.should_receive(:create!).with(:rack_env => 'env', :body => 'body', :params => 'params')

    Response.perform(rest_assured_app)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rest-assured-0.2.0.rc2 spec/functional/response_spec.rb
rest-assured-0.2.0.rc1 spec/functional/response_spec.rb