Skip to content

Commit

Permalink
Auto-generated Rails specs for Ib::Order modified to pass
Browse files Browse the repository at this point in the history
  • Loading branch information
arvicco committed Aug 10, 2012
1 parent 354e0db commit a889632
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 55 deletions.
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
resources :contracts
resources :contract_details
resources :executions
resources :orders
resources :order_states
resources :underlyings

Expand Down
109 changes: 65 additions & 44 deletions rails_spec/controllers/ib/orders_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,85 +18,105 @@
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.

describe OrdersController do
describe Ib::OrdersController, :type => :controller do

# This should return the minimal set of attributes required to create a valid
# Order. As you add validations to Order, be sure to
# Ib::Order. As you add validations to Ib::Order, be sure to
# update the return value of this method accordingly.
def valid_attributes
{}
{:local_id => 23,
:order_ref => 'Test',
:client_id => 1111,
:perm_id => 173276893,
:parent_id => 0,
:side => :buy,
:tif => :good_till_cancelled,
:order_type => :market_if_touched,
:limit_price => 0.1,
:quantity => 100,
:open_close => :close,
:oca_group => '',
:oca_type => :reduce_no_block,
:origin => :firm,
:designated_location => "WHATEVER",
:exempt_code => 123,
:delta_neutral_order_type => :market,
:transmit => false,
:outside_rth => true,
:what_if => true,
:not_held => true}
end

# This should return the minimal set of values that should be in the session
# in order to pass any filters (e.g. authentication) defined in
# OrdersController. Be sure to keep this updated too.
# Ib::OrdersController. Be sure to keep this updated too.
def valid_session
{}
end

describe "GET index" do
it "assigns all orders as @orders" do
order = Order.create! valid_attributes
get :index, {}, valid_session
order = Ib::Order.create! valid_attributes
get :index, { :use_route => true}, valid_session
assigns(:orders).should eq([order])
end
end

describe "GET show" do
it "assigns the requested order as @order" do
order = Order.create! valid_attributes
get :show, {:id => order.to_param}, valid_session
order = Ib::Order.create! valid_attributes
get :show, {:id => order.to_param, :use_route => true}, valid_session
assigns(:order).should eq(order)
end
end

describe "GET new" do
it "assigns a new order as @order" do
get :new, {}, valid_session
assigns(:order).should be_a_new(Order)
get :new, { :use_route => true}, valid_session
assigns(:order).should be_a_new(Ib::Order)
end
end

describe "GET edit" do
it "assigns the requested order as @order" do
order = Order.create! valid_attributes
get :edit, {:id => order.to_param}, valid_session
order = Ib::Order.create! valid_attributes
get :edit, {:id => order.to_param, :use_route => true}, valid_session
assigns(:order).should eq(order)
end
end

describe "POST create" do
describe "with valid params" do
it "creates a new Order" do
it "creates a new Ib::Order" do
expect {
post :create, {:order => valid_attributes}, valid_session
}.to change(Order, :count).by(1)
post :create, {:order => valid_attributes, :use_route => true}, valid_session
}.to change(Ib::Order, :count).by(1)
end

it "assigns a newly created order as @order" do
post :create, {:order => valid_attributes}, valid_session
assigns(:order).should be_a(Order)
post :create, {:order => valid_attributes, :use_route => true}, valid_session
assigns(:order).should be_a(Ib::Order)
assigns(:order).should be_persisted
end

it "redirects to the created order" do
post :create, {:order => valid_attributes}, valid_session
response.should redirect_to(Order.last)
post :create, {:order => valid_attributes, :use_route => true}, valid_session
response.should redirect_to(Ib::Order.last)
end
end

describe "with invalid params" do
it "assigns a newly created but unsaved order as @order" do
# Trigger the behavior that occurs when invalid params are submitted
Order.any_instance.stub(:save).and_return(false)
post :create, {:order => {}}, valid_session
assigns(:order).should be_a_new(Order)
Ib::Order.any_instance.stub(:save).and_return(false)
post :create, {:order => {}, :use_route => true}, valid_session
assigns(:order).should be_a_new(Ib::Order)
end

it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
Order.any_instance.stub(:save).and_return(false)
post :create, {:order => {}}, valid_session
Ib::Order.any_instance.stub(:save).and_return(false)
post :create, {:order => {}, :use_route => true}, valid_session
response.should render_template("new")
end
end
Expand All @@ -105,58 +125,59 @@ def valid_session
describe "PUT update" do
describe "with valid params" do
it "updates the requested order" do
order = Order.create! valid_attributes
order = Ib::Order.create! valid_attributes
# Assuming there are no other orders in the database, this
# specifies that the Order created on the previous line
# specifies that the Ib::Order created on the previous line
# receives the :update_attributes message with whatever params are
# submitted in the request.
Order.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
put :update, {:id => order.to_param, :order => {'these' => 'params'}}, valid_session
Ib::Order.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
put :update, {:id => order.to_param, :order => {'these' => 'params'}, :use_route => true}, valid_session
end

it "assigns the requested order as @order" do
order = Order.create! valid_attributes
put :update, {:id => order.to_param, :order => valid_attributes}, valid_session
order = Ib::Order.create! valid_attributes
put :update, {:id => order.to_param, :order => valid_attributes, :use_route => true}, valid_session
assigns(:order).should eq(order)
end

it "redirects to the order" do
order = Order.create! valid_attributes
put :update, {:id => order.to_param, :order => valid_attributes}, valid_session
order = Ib::Order.create! valid_attributes
put :update, {:id => order.to_param, :order => valid_attributes, :use_route => true}, valid_session
response.should redirect_to(order)
end
end

describe "with invalid params" do
it "assigns the order as @order" do
order = Order.create! valid_attributes
order = Ib::Order.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Order.any_instance.stub(:save).and_return(false)
put :update, {:id => order.to_param, :order => {}}, valid_session
Ib::Order.any_instance.stub(:save).and_return(false)
put :update, {:id => order.to_param, :order => {}, :use_route => true}, valid_session
assigns(:order).should eq(order)
end

it "re-renders the 'edit' template" do
order = Order.create! valid_attributes
order = Ib::Order.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Order.any_instance.stub(:save).and_return(false)
put :update, {:id => order.to_param, :order => {}}, valid_session
Ib::Order.any_instance.stub(:save).and_return(false)
put :update, {:id => order.to_param, :order => {}, :use_route => true}, valid_session
response.should render_template("edit")
end
end
end

describe "DELETE destroy" do
it "destroys the requested order" do
order = Order.create! valid_attributes
order = Ib::Order.create! valid_attributes
expect {
delete :destroy, {:id => order.to_param}, valid_session
}.to change(Order, :count).by(-1)
delete :destroy, {:id => order.to_param, :use_route => true}, valid_session
}.to change(Ib::Order, :count).by(-1)
end

it "redirects to the orders list" do
order = Order.create! valid_attributes
delete :destroy, {:id => order.to_param}, valid_session
pending 'Something is wrong with RSpecs redirect_to matcher'
order = Ib::Order.create! valid_attributes
delete :destroy, {:id => order.to_param, :use_route => true}, valid_session
response.should redirect_to(orders_url)
end
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
require 'spec_helper'

describe "Orders" do
describe "GET /ib_orders" do
describe "Orders", :type => :request do
describe "GET /orders" do
it "works! (now write some real specs)" do
# Run the generator again with the --webrat flag if you want to use webrat methods/matchers
get ib_orders_path
get orders_path
response.status.should be(200)
end
end
Expand Down
18 changes: 10 additions & 8 deletions rails_spec/routing/ib/orders_routing_spec.rb
Original file line number Diff line number Diff line change
@@ -1,34 +1,36 @@
require "spec_helper"

describe OrdersController do
describe Ib::OrdersController, :type => :routing do
describe "routing" do

before(:each) { @routes = Ib::Engine.routes }

it "routes to #index" do
get("/orders").should route_to("orders#index")
get("/orders").should route_to("ib/orders#index")
end

it "routes to #new" do
get("/orders/new").should route_to("orders#new")
get("/orders/new").should route_to("ib/orders#new")
end

it "routes to #show" do
get("/orders/1").should route_to("orders#show", :id => "1")
get("/orders/1").should route_to("ib/orders#show", :id => "1")
end

it "routes to #edit" do
get("/orders/1/edit").should route_to("orders#edit", :id => "1")
get("/orders/1/edit").should route_to("ib/orders#edit", :id => "1")
end

it "routes to #create" do
post("/orders").should route_to("orders#create")
post("/orders").should route_to("ib/orders#create")
end

it "routes to #update" do
put("/orders/1").should route_to("orders#update", :id => "1")
put("/orders/1").should route_to("ib/orders#update", :id => "1")
end

it "routes to #destroy" do
delete("/orders/1").should route_to("orders#destroy", :id => "1")
delete("/orders/1").should route_to("ib/orders#destroy", :id => "1")
end

end
Expand Down

0 comments on commit a889632

Please sign in to comment.