Http positional arguments in rails 5

This commit is contained in:
Brenda Wallace
2018-01-04 17:23:10 +13:00
parent 46cfe527bc
commit 2f9610a60f
20 changed files with 145 additions and 130 deletions

View File

@@ -39,10 +39,6 @@ Layout/AlignParameters:
Metrics/LineLength:
Max: 120
# turn these back on in Rails 5
Rails/HttpPositionalArguments: # See https://github.com/bbatsov/rubocop/issues/3629
Enabled: false
Style/Documentation:
Enabled: false

View File

@@ -6,12 +6,12 @@ describe Admin::OrdersController do
describe "GET search" do
it "assigns @orders" do
order = FactoryBot.create(:order)
get :search, search_by: 'order_id', search_text: order.id
get :search, params: { search_by: 'order_id', search_text: order.id }
assigns(:orders).should eq([order])
end
it "sets an error message if nothing found" do
get :search, search_by: 'order_id', search_text: 'foo'
get :search, params: { search_by: 'order_id', search_text: 'foo' }
flash[:alert].should have_text "Couldn't find order with"
end
end

View File

@@ -4,16 +4,15 @@ describe AdminController do
login_member(:admin_member)
describe "GET admin/newsletter" do
it 'fetches the admin newsletter page' do
get :newsletter
response.should be_success
response.should render_template("admin/newsletter")
before { get :newsletter }
describe 'fetches the admin newsletter page' do
it { expect(response).to be_success }
it { expect(response).to render_template("admin/newsletter") }
end
it 'assigns @members' do
m = FactoryBot.create(:newsletter_recipient_member)
get :newsletter
assigns(:members).should eq [m]
describe 'assigns @members' do
let!(:m) { FactoryBot.create(:newsletter_recipient_member) }
it { expect(assigns(:members)).to eq [m] }
end
end
end

View File

@@ -29,7 +29,7 @@ describe CommentsController do
let(:post) { FactoryBot.create(:post) }
describe "with valid params" do
before { get :new, post_id: post.id }
before { get :new, params: { post_id: post.id } }
it "picks up post from params" do
assigns(:post).should eq(post)
@@ -49,7 +49,7 @@ describe CommentsController do
describe "GET edit" do
let(:post) { FactoryBot.create(:post) }
before { get :edit, id: comment.to_param }
before { get :edit, params: { id: comment.to_param } }
describe "my comment" do
let!(:comment) { FactoryBot.create :comment, author: member, post: post }
@@ -66,7 +66,7 @@ describe CommentsController do
end
describe "PUT update" do
before { put :update, id: comment.to_param, comment: valid_attributes }
before { put :update, params: { id: comment.to_param, comment: valid_attributes } }
describe "my comment" do
let(:comment) { FactoryBot.create :comment, author: member }
@@ -74,10 +74,12 @@ describe CommentsController do
expect(response).to redirect_to(comment.post)
end
end
describe "not my comment" do
let(:comment) { FactoryBot.create :comment }
it { expect(response).not_to be_success }
end
describe "attempting to change post_id" do
let(:post) { FactoryBot.create :post, subject: 'our post' }
let(:other_post) { FactoryBot.create :post, subject: 'the other post' }
@@ -91,7 +93,7 @@ describe CommentsController do
end
describe "DELETE destroy" do
before { delete :destroy, id: comment.to_param }
before { delete :destroy, params: { id: comment.to_param } }
describe "my comment" do
let(:comment) { FactoryBot.create :comment, author: member }

View File

@@ -7,7 +7,7 @@ RSpec.describe GardensController, type: :controller do
context "when not signed in" do
let(:garden) { double('garden') }
describe 'GET new' do
before { get :new, id: garden.to_param }
before { get :new, params: { id: garden.to_param } }
it { expect(response).to redirect_to(new_member_session_path) }
end
describe 'PUT create' do
@@ -25,15 +25,15 @@ RSpec.describe GardensController, type: :controller do
expect(garden).not_to receive(:destroy)
end
describe 'GET edit' do
before { get :edit, id: garden.to_param }
before { get :edit, params: { id: garden.to_param } }
it { expect(response).to redirect_to(new_member_session_path) }
end
describe 'POST update' do
before { post :update, id: garden.to_param, garden: valid_params }
before { post :update, params: { id: garden.to_param, garden: valid_params } }
it { expect(response).to redirect_to(new_member_session_path) }
end
describe 'DELETE' do
before { delete :destroy, id: garden.to_param, params: { garden: valid_params } }
before { delete :destroy, params: { id: garden.to_param, params: { garden: valid_params } } }
it { expect(response).to redirect_to(new_member_session_path) }
end
end
@@ -55,15 +55,15 @@ RSpec.describe GardensController, type: :controller do
end
describe 'GET edit' do
before { get :edit, id: not_my_garden.to_param }
before { get :edit, params: { id: not_my_garden.to_param } }
it { expect(response).to redirect_to(root_path) }
end
describe 'POST update' do
before { post :update, id: not_my_garden.to_param, garden: valid_params }
before { post :update, params: { id: not_my_garden.to_param, garden: valid_params } }
it { expect(response).to redirect_to(root_path) }
end
describe 'DELETE' do
before { delete :destroy, id: not_my_garden.to_param, params: { garden: valid_params } }
before { delete :destroy, params: { id: not_my_garden.to_param, params: { garden: valid_params } } }
it { expect(response).to redirect_to(root_path) }
end
end

View File

@@ -21,18 +21,18 @@ describe HarvestsController do
let(:harvest2) { FactoryBot.create(:harvest, owner_id: member2.id, crop_id: maize.id) }
describe "assigns all harvests as @harvests" do
before { get :index, {} }
before { get :index, params: {} }
it { assigns(:harvests).should =~ [harvest1, harvest2] }
end
describe "picks up owner from params and shows owner's harvests only" do
before { get :index, owner: member1.slug }
before { get :index, params: { owner: member1.slug } }
it { expect(assigns(:owner)).to eq member1 }
it { expect(assigns(:harvests)).to eq [harvest1] }
end
describe "picks up crop from params and shows the harvests for the crop only" do
before { get :index, crop: maize.name }
before { get :index, params: { crop: maize.name } }
it { expect(assigns(:crop)).to eq maize }
it { expect(assigns(:harvests)).to eq [harvest2] }
end
@@ -46,13 +46,13 @@ describe HarvestsController do
describe "GET show" do
let(:harvest) { Harvest.create! valid_attributes }
describe "assigns the requested harvest as @harvest" do
before { get :show, id: harvest.to_param }
before { get :show, params: { id: harvest.to_param } }
it { expect(assigns(:harvest)).to eq(harvest) }
end
end
describe "GET new" do
before { get :new, {} }
before { get :new, params: {} }
describe "assigns a new harvest as @harvest" do
it { expect(assigns(:harvest)).to be_a_new(Harvest) }
@@ -66,7 +66,7 @@ describe HarvestsController do
describe "GET edit" do
let(:harvest) { Harvest.create! valid_attributes }
describe "assigns the requested harvest as @harvest" do
before { get :edit, id: harvest.to_param }
before { get :edit, params: { id: harvest.to_param } }
it { expect(assigns(:harvest)).to eq(harvest) }
end
end
@@ -75,24 +75,24 @@ describe HarvestsController do
describe "with valid params" do
it "creates a new Harvest" do
expect do
post :create, harvest: valid_attributes
post :create, params: { harvest: valid_attributes }
end.to change(Harvest, :count).by(1)
end
it "assigns a newly created harvest as @harvest" do
post :create, harvest: valid_attributes
post :create, params: { harvest: valid_attributes }
assigns(:harvest).should be_a(Harvest)
assigns(:harvest).should be_persisted
end
it "redirects to the created harvest" do
post :create, harvest: valid_attributes
post :create, params: { harvest: valid_attributes }
response.should redirect_to(Harvest.last)
end
describe "links to planting" do
let(:planting) { FactoryBot.create(:planting, owner_id: member.id, garden: member.gardens.first) }
before { post :create, harvest: valid_attributes.merge(planting_id: planting.id) }
before { post :create, params: { harvest: valid_attributes.merge(planting_id: planting.id) } }
it { expect(Harvest.last.planting.id).to eq(planting.id) }
end
end
@@ -101,13 +101,13 @@ describe HarvestsController do
it "assigns a newly created but unsaved harvest as @harvest" do
# Trigger the behavior that occurs when invalid params are submitted
Harvest.any_instance.stub(:save).and_return(false)
post :create, harvest: { "crop_id" => "invalid value" }
post :create, params: { harvest: { "crop_id" => "invalid value" } }
assigns(:harvest).should be_a_new(Harvest)
end
it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
post :create, harvest: { "crop_id" => "invalid value" }
post :create, params: { harvest: { "crop_id" => "invalid value" } }
response.should render_template("new")
end
end
@@ -119,7 +119,7 @@ describe HarvestsController do
describe "does not save planting_id" do
before do
allow(Harvest).to receive(:new).and_return(harvest)
post :create, harvest: valid_attributes.merge(planting_id: not_my_planting.id)
post :create, params: { harvest: valid_attributes.merge(planting_id: not_my_planting.id) }
end
it { expect(harvest.planting_id).not_to eq(not_my_planting.id) }
end
@@ -135,18 +135,18 @@ describe HarvestsController do
# receives the :update message with whatever params are
# submitted in the request.
Harvest.any_instance.should_receive(:update).with("crop_id" => "1", "owner_id": member.id)
put :update, id: harvest.to_param, harvest: { "crop_id" => "1" }
put :update, params: { id: harvest.to_param, harvest: { "crop_id" => "1" } }
end
it "assigns the requested harvest as @harvest" do
harvest = Harvest.create! valid_attributes
put :update, id: harvest.to_param, harvest: valid_attributes
put :update, params: { id: harvest.to_param, harvest: valid_attributes }
assigns(:harvest).should eq(harvest)
end
it "redirects to the harvest" do
harvest = Harvest.create! valid_attributes
put :update, id: harvest.to_param, harvest: valid_attributes
put :update, params: { id: harvest.to_param, harvest: valid_attributes }
response.should redirect_to(harvest)
end
end
@@ -156,13 +156,13 @@ describe HarvestsController do
harvest = Harvest.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Harvest.any_instance.stub(:save).and_return(false)
put :update, id: harvest.to_param, harvest: { "crop_id" => "invalid value" }
put :update, params: { id: harvest.to_param, harvest: { "crop_id" => "invalid value" } }
assigns(:harvest).should eq(harvest)
end
it "re-renders the 'edit' template" do
harvest = Harvest.create! valid_attributes
put :update, id: harvest.to_param, harvest: { "crop_id" => "invalid value" }
put :update, params: { id: harvest.to_param, harvest: { "crop_id" => "invalid value" } }
response.should render_template("edit")
end
end
@@ -172,8 +172,8 @@ describe HarvestsController do
let(:harvest) { FactoryBot.create(:harvest) }
describe "does not save planting_id" do
before do
put :update, id: harvest.to_param,
harvest: valid_attributes.merge(planting_id: not_my_planting.id)
put :update, params: { id: harvest.to_param,
harvest: valid_attributes.merge(planting_id: not_my_planting.id) }
end
it { expect(harvest.planting_id).to eq(nil) }
end
@@ -184,13 +184,13 @@ describe HarvestsController do
it "destroys the requested harvest" do
harvest = Harvest.create! valid_attributes
expect do
delete :destroy, id: harvest.to_param
delete :destroy, params: { id: harvest.to_param }
end.to change(Harvest, :count).by(-1)
end
it "redirects to the harvests list" do
harvest = Harvest.create! valid_attributes
delete :destroy, id: harvest.to_param
delete :destroy, params: { id: harvest.to_param }
response.should redirect_to(harvests_url)
end
end

View File

@@ -10,7 +10,7 @@ describe LikesController do
describe "POST create" do
it { expect(response.content_type).to eq "application/json" }
before { post :create, post_id: blogpost.id, format: :json }
before { post :create, params: { post_id: blogpost.id, format: :json } }
it { expect(Like.last.likeable_id).to eq(blogpost.id) }
it { expect(Like.last.likeable_type).to eq('Post') }
it { JSON.parse(response.body)["description"] == "1 like" }
@@ -25,7 +25,7 @@ describe LikesController do
end
describe "DELETE destroy" do
before { delete :destroy, id: like.id, format: :json }
before { delete :destroy, params: { id: like.id, format: :json } }
it { expect(response.content_type).to eq "application/json" }
describe "un-liking something i liked before" do

View File

@@ -10,7 +10,7 @@ describe MembersController do
describe "GET index" do
it "assigns only confirmed members as @members" do
get :index, {}
get :index, params: {}
assigns(:members).should eq([@member])
end
end
@@ -24,38 +24,38 @@ describe MembersController do
describe "GET show" do
it "provides JSON for member profile" do
get :show, id: @member.id, format: 'json'
get :show, params: { id: @member.id }, format: 'json'
response.should be_success
end
it "assigns @posts with the member's posts" do
get :show, id: @member.id
get :show, params: { id: @member.id }
assigns(:posts).should eq(@posts)
end
it "assigns @twitter_auth" do
get :show, id: @member.id
get :show, params: { id: @member.id }
assigns(:twitter_auth).should eq(@twitter_auth)
end
it "assigns @flickr_auth" do
get :show, id: @member.id
get :show, params: { id: @member.id }
assigns(:flickr_auth).should eq(@flickr_auth)
end
it "doesn't show completely nonsense members" do
lambda { get :show, id: 9999 }.should raise_error(ActiveRecord::RecordNotFound)
lambda { get :show, params: { id: 9999 } }.should raise_error(ActiveRecord::RecordNotFound)
end
it "doesn't show unconfirmed members" do
@member2 = FactoryBot.create(:unconfirmed_member)
lambda { get :show, id: @member2.id }.should raise_error(ActiveRecord::RecordNotFound)
lambda { get :show, params: { id: @member2.id } }.should raise_error(ActiveRecord::RecordNotFound)
end
end
describe "GET member's RSS feed" do
it "returns an RSS feed" do
get :show, id: @member.to_param, format: "rss"
get :show, params: { id: @member.to_param }, format: "rss"
response.should be_success
response.should render_template("members/show")
response.content_type.should eq("application/rss+xml")

View File

@@ -31,7 +31,7 @@ describe NotificationsController do
describe "GET index" do
it "assigns all notifications as @notifications" do
notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id)
get :index, {}
get :index, params: {}
assigns(:notifications).should eq([notification])
end
end
@@ -39,14 +39,14 @@ describe NotificationsController do
describe "GET show" do
it "assigns the requested notification as @notification" do
notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id)
get :show, id: notification.to_param
get :show, params: { id: notification.to_param }
assigns(:notification).should eq(notification)
end
it "assigns the reply link for a post comment" do
notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id)
get :show, id: notification.to_param
get :show, params: { id: notification.to_param }
assigns(:reply_link).should_not be_nil
assigns(:reply_link).should eq new_comment_url(
post_id: notification.post.id
@@ -55,7 +55,7 @@ describe NotificationsController do
it "marks notifications as read" do
notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id)
get :show, id: notification.to_param
get :show, params: { id: notification.to_param }
# we need to fetch it from the db again, can't test against the old one
n = Notification.find(notification.id)
n.read.should eq true
@@ -65,7 +65,7 @@ describe NotificationsController do
describe "GET reply" do
it "marks notifications as read" do
notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id)
get :reply, id: notification.to_param
get :reply, params: { id: notification.to_param }
# we need to fetch it from the db again, can't test against the old one
n = Notification.find(notification.id)
n.read.should eq true
@@ -75,7 +75,7 @@ describe NotificationsController do
describe "GET new" do
it "assigns a recipient" do
@recipient = FactoryBot.create(:member)
get :new, recipient_id: @recipient.id
get :new, params: { recipient_id: @recipient.id }
assigns(:recipient).should be_an_instance_of(Member)
end
end
@@ -84,7 +84,7 @@ describe NotificationsController do
describe "with valid params" do
it "redirects to the recipient's profile" do
@recipient = FactoryBot.create(:member)
post :create, notification: { recipient_id: @recipient.id, subject: 'foo' }
post :create, params: { notification: { recipient_id: @recipient.id, subject: 'foo' } }
response.should redirect_to(notifications_path)
end
end

View File

@@ -19,7 +19,9 @@ describe OrderItemsController do
describe "POST create" do
describe "redirects to order" do
before do
post :create, order_item: { order_id: order.id, product_id: product.id, price: product.min_price }
post :create, params: {
order_item: { order_id: order.id, product_id: product.id, price: product.min_price }
}
end
it { expect(response).to redirect_to(OrderItem.last.order) }
it { expect(OrderItem.last.order).to be_an_instance_of Order }
@@ -28,9 +30,11 @@ describe OrderItemsController do
describe 'creates an order for you' do
it do
expect do
post :create, order_item: {
product_id: product.id,
price: product.min_price
post :create, params: {
order_item: {
product_id: product.id,
price: product.min_price
}
}
end.to change(Order, :count).by(1)
end
@@ -41,7 +45,9 @@ describe OrderItemsController do
order = FactoryBot.create(:order, member: member)
product = FactoryBot.create(:product, min_price: 1)
expect do
post :create, order_item: { order_id: order.id, product_id: product.id, price: 3.33 }
post :create, params: {
order_item: { order_id: order.id, product_id: product.id, price: 3.33 }
}
end.to change(OrderItem, :count).by(1)
OrderItem.last.price.should eq 333
end

View File

@@ -16,7 +16,7 @@ describe OrdersController do
member = FactoryBot.create(:member)
sign_in member
order = Order.create!(member_id: member.id)
get :checkout, id: order.to_param, referral_code: 'FOOBAR'
get :checkout, params: { id: order.to_param, referral_code: 'FOOBAR' }
order.reload
order.referral_code.should eq 'FOOBAR'
end
@@ -25,7 +25,7 @@ describe OrdersController do
member = FactoryBot.create(:member)
sign_in member
order = Order.create!(member_id: member.id)
get :checkout, id: order.to_param
get :checkout, params: { id: order.to_param }
response.status.should eq 302
response.redirect_url.should match(/paypal\.com/)
end
@@ -36,7 +36,7 @@ describe OrdersController do
member = FactoryBot.create(:member)
sign_in member
order = Order.create!(member_id: member.id)
get :complete, id: order.to_param
get :complete, params: { id: order.to_param }
assigns(:order).should eq(order)
end
end
@@ -46,7 +46,7 @@ describe OrdersController do
member = FactoryBot.create(:member)
sign_in member
order = Order.create!(member_id: member.id)
delete :destroy, id: order.id
delete :destroy, params: { id: order.id }
response.should redirect_to(shop_url)
end
end

View File

@@ -19,7 +19,7 @@ describe PhotoAssociationsController do
let(:photo) { FactoryBot.create :photo, owner: member }
it "removes link" do
expect { delete :destroy, valid_params }.to change { photo.harvests.count }.by(-1)
expect { delete :destroy, params: valid_params }.to change { photo.harvests.count }.by(-1)
end
end
@@ -29,13 +29,13 @@ describe PhotoAssociationsController do
it do
expect do
begin
delete :destroy, valid_params
delete :destroy, params: valid_params
rescue
nil
end
end.not_to change(photo.harvests, :count)
end
it { expect { delete :destroy, valid_params }.to raise_error(ActiveRecord::RecordNotFound) }
it { expect { delete :destroy, params: valid_params }.to raise_error(ActiveRecord::RecordNotFound) }
end
end
end

View File

@@ -38,7 +38,7 @@ describe PhotosController do
end
describe "planting photos" do
before(:each) { get :new, type: "planting", id: planting.id }
before(:each) { get :new, params: { type: "planting", id: planting.id } }
it { assigns(:flickr_auth).should be_an_instance_of(Authentication) }
it { assigns(:item).should eq planting }
it { expect(flash[:alert]).not_to be_present }
@@ -46,7 +46,7 @@ describe PhotosController do
end
describe "harvest photos" do
before { get :new, type: "harvest", id: harvest.id }
before { get :new, params: { type: "harvest", id: harvest.id } }
it { assigns(:item).should eq harvest }
it { expect(flash[:alert]).not_to be_present }
end
@@ -76,15 +76,22 @@ describe PhotosController do
describe "with valid params" do
before { controller.stub(:current_member) { member } }
it "attaches the photo to a planting" do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id },
type: "planting", id: planting.id
}
expect(flash[:alert]).not_to be_present
Photo.last.plantings.first.should eq planting
end
describe "doesn't attach a photo to a planting twice" do
before do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id
}
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id
}
end
it { expect(flash[:alert]).not_to be_present }
it { expect(Photo.last.plantings.size).to eq 1 }
@@ -97,8 +104,12 @@ describe PhotosController do
end
it "doesn't attach a photo to a harvest twice" do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id
}
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id
}
expect(flash[:alert]).not_to be_present
Photo.last.harvests.size.should eq 1
end
@@ -106,20 +117,19 @@ describe PhotosController do
it "doesn't attach photo to a comment" do
comment = FactoryBot.create(:comment)
expect do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "comment", id: comment.id
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "comment", id: comment.id
}
end.to raise_error
end
end
describe "for the second time" do
let(:planting) { FactoryBot.create :planting, owner: member }
let(:valid_params) { { photo: { flickr_photo_id: 1 }, id: planting.id, type: 'planting' } }
it "does not add a photo twice" do
expect do
post :create, photo: { flickr_photo_id: 1 }, id: planting.id, type: 'planting'
end.to change(Photo, :count).by(1)
expect do
post :create, photo: { flickr_photo_id: 1 }, id: planting.id, type: 'planting'
end.to change(Photo, :count).by(0)
expect { post :create, params: valid_params }.to change(Photo, :count).by(1)
expect { post :create, params: valid_params }.not_to change(Photo, :count)
end
end
@@ -128,15 +138,15 @@ describe PhotosController do
it "creates the planting/photo link" do
planting = FactoryBot.create(:planting, garden: garden, owner: member)
photo = FactoryBot.create(:photo, owner: member)
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id
post :create, params: { photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id }
expect(flash[:alert]).not_to be_present
Photo.last.plantings.first.should eq planting
expect(Photo.last.plantings.first).to eq planting
end
it "creates the harvest/photo link" do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id
expect(flash[:alert]).not_to be_present
Photo.last.harvests.first.should eq harvest
describe "creates the harvest/photo link" do
before { post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id }
it { expect(flash[:alert]).not_to be_present }
it { expect(Photo.last.harvests.first).to eq harvest }
end
end
@@ -146,7 +156,9 @@ describe PhotosController do
# members will be auto-created, and different
another_planting = FactoryBot.create(:planting)
expect do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: another_planting.id
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: another_planting.id
}
end.to raise_error(ActiveRecord::RecordNotFound)
Photo.last.plantings.first.should_not eq another_planting
end
@@ -155,7 +167,9 @@ describe PhotosController do
# members will be auto-created, and different
another_harvest = FactoryBot.create(:harvest)
expect do
post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: another_harvest.id
post :create, params: {
photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: another_harvest.id
}
end.to raise_error(ActiveRecord::RecordNotFound)
Photo.last.harvests.first.should_not eq another_harvest
end

View File

@@ -12,19 +12,19 @@ describe PlacesController do
end
it "assigns place name" do
get :show, place: @member_london.location
get :show, params: { place: @member_london.location }
assigns(:place).should eq @member_london.location
end
it "assigns nearby members" do
get :show, place: @member_london.location
get :show, params: { place: @member_london.location }
assigns(:nearby_members).should eq [@member_london, @member_south_pole]
end
end
describe "GET search" do
it "redirects to the new place" do
get :search, new_place: "foo"
get :search, params: { new_place: "foo" }
response.should redirect_to place_path("foo")
end
end

View File

@@ -24,13 +24,13 @@ describe PlantingsController do
end
describe "picks up owner from params and shows owner's plantings only" do
before { get :index, owner: member1.slug }
before { get :index, params: { owner: member1.slug } }
it { expect(assigns(:owner)).to eq member1 }
it { expect(assigns(:plantings)).to eq [planting1] }
end
describe "picks up crop from params and shows the plantings for the crop only" do
before { get :index, crop: maize.name }
before { get :index, params: { crop: maize.name } }
it { expect(assigns(:crop)).to eq maize }
it { expect(assigns(:plantings)).to eq [planting2] }
end
@@ -39,44 +39,44 @@ describe PlantingsController do
describe "GET new" do
describe "picks up crop from params" do
let(:crop) { FactoryBot.create(:crop) }
before { get :new, crop_id: crop.id }
before { get :new, params: { crop_id: crop.id } }
it { expect(assigns(:crop)).to eq(crop) }
end
describe "doesn't die if no crop specified" do
before { get :new, {} }
before { get :new, params: {} }
it { expect(assigns(:crop)).to be_a_new(Crop) }
end
describe "picks up member's garden from params" do
let(:garden) { FactoryBot.create(:garden, owner: member) }
before { get :new, garden_id: garden.id }
before { get :new, params: { garden_id: garden.id } }
it { expect(assigns(:garden)).to eq(garden) }
end
describe "Doesn't display another member's garden on planting form" do
let(:another_member) { FactoryBot.create(:member) } # over-riding member from login_member()
let(:garden) { FactoryBot.create(:garden, owner: another_member) }
before { get :new, garden_id: garden.id }
before { get :new, params: { garden_id: garden.id } }
it { expect(assigns(:garden)).not_to eq(garden) }
end
describe "Doesn't display un-approved crops on planting form" do
let(:crop) { FactoryBot.create(:crop, approval_status: 'pending') }
let!(:garden) { FactoryBot.create(:garden, owner: member) }
before { get :new, crop_id: crop.id }
before { get :new, params: { crop_id: crop.id } }
it { expect(assigns(:crop)).not_to eq(crop) }
end
describe "Doesn't display rejected crops on planting form" do
let(:crop) { FactoryBot.create(:crop, approval_status: 'rejected', reason_for_rejection: 'nope') }
let!(:garden) { FactoryBot.create(:garden, owner: member) }
before { get :new, crop_id: crop.id }
before { get :new, params: { crop_id: crop.id } }
it { expect(assigns(:crop)).not_to eq(crop) }
end
describe "doesn't die if no garden specified" do
before { get :new, {} }
before { get :new, params: {} }
it { expect(assigns(:garden)).to be_a_new(Garden) }
end
@@ -86,7 +86,7 @@ describe PlantingsController do
end
describe "sets the owner automatically" do
before { post :create, planting: valid_attributes }
before { post :create, params: { planting: valid_attributes } }
it { expect(assigns(:planting).owner).to eq subject.current_member }
end
end

View File

@@ -11,19 +11,19 @@ describe PostsController do
describe "GET RSS feed" do
it "returns an RSS feed" do
get :index, format: "rss"
response.should be_success
response.should render_template("posts/index")
response.content_type.should eq("application/rss+xml")
expect(response).to be_success
expect(response).to render_template("posts/index")
expect(response).to.should eq("application/rss+xml")
end
end
describe "GET RSS feed for individual post" do
it "returns an RSS feed" do
post = Post.create! valid_attributes
get :show, format: "rss", id: post.slug
response.should be_success
response.should render_template("posts/show")
response.content_type.should eq("application/rss+xml")
get :show, format: "rss", params: { id: post.slug }
expect(response).to be_success
expect(response).to render_template("posts/show")
expect(response).to.should eq("application/rss+xml")
end
end
end

View File

@@ -10,7 +10,7 @@ describe RolesController do
describe "GET index" do
it "assigns all roles as @roles" do
role = Role.create! valid_attributes
get :index, {}
get :index, params: {}
# note that admin role exists because of login_admin_member
assigns(:roles).should eq([Role.find_by(name: 'admin'), role])
end

View File

@@ -3,17 +3,15 @@ require 'rails_helper'
describe ScientificNamesController do
login_member(:crop_wrangling_member)
before(:each) do
@crop = FactoryBot.create(:tomato)
end
let!(:crop) { FactoryBot.create(:tomato) }
def valid_attributes
{ name: 'Solanum lycopersicum', crop_id: @crop.id }
{ name: 'Solanum lycopersicum', crop_id: crop.id }
end
describe "GET new" do
it "assigns crop if specified" do
get :new, crop_id: 1
get :new, params: { crop_id: crop.id }
assigns(:crop).should be_an_instance_of Crop
end
end

View File

@@ -2,10 +2,10 @@ require 'rails_helper'
describe SeedsController do
describe "GET index" do
it "picks up owner from params" do
owner = FactoryBot.create(:member)
get :index, owner: owner.slug
assigns(:owner).should eq(owner)
let(:owner) { FactoryBot.create(:member) }
describe "picks up owner from params" do
before { get :index, params: { owner: owner.slug } }
it { expect(assigns(:owner)).to eq(owner) }
end
end
end

View File

@@ -6,7 +6,7 @@ describe ShopController do
describe "GET index" do
describe 'not logged in' do
before { get :index, {} }
before { get :index, params: {} }
describe "assigns all products as @products ordered by name" do
it { expect(assigns(:products)).to eq([product1, product2]) }
@@ -26,7 +26,7 @@ describe ShopController do
let!(:order) { FactoryBot.create(:order, member: member) }
before do
sign_in member
get :index, {}
get :index, params: {}
end
it { expect(assigns(:order)).to eq order }
end