Make the products controller specs green
This commit is contained in:
@@ -17,13 +17,13 @@ describe Suppliers::ProductsController, type: :controller do
|
||||
describe "GET #show" do
|
||||
it "assigns the requested product to @product" do
|
||||
product = create :product, supplier: @supplier
|
||||
get :show, id: product
|
||||
get :show, params: {id: product}
|
||||
assigns(:product).should eq(product)
|
||||
end
|
||||
|
||||
it "should not display a product of another supplier" do
|
||||
product = create :product
|
||||
get :show, id: product
|
||||
get :show, params: {id: product}
|
||||
expect(response.status).to eq 404
|
||||
end
|
||||
end
|
||||
@@ -39,18 +39,18 @@ describe Suppliers::ProductsController, type: :controller do
|
||||
context "with valid attributes" do
|
||||
it "creates a new product" do
|
||||
expect{
|
||||
post :create, product: valid_attributes
|
||||
post :create, params: {product: valid_attributes}
|
||||
}.to change(Product, :count).by(1)
|
||||
end
|
||||
|
||||
it "redirects to the new product" do
|
||||
post :create, product: valid_attributes
|
||||
post :create, params: {product: valid_attributes}
|
||||
response.should redirect_to [:suppliers, :products]
|
||||
end
|
||||
|
||||
it "should not be possible to create a product for another supplier" do
|
||||
supplier2 = create :supplier
|
||||
post :create, product: valid_attributes.merge(name: 'Trying to hack', supplier_id: supplier2.id)
|
||||
post :create, params: {product: valid_attributes.merge(name: 'Trying to hack', supplier_id: supplier2.id)}
|
||||
expect( Product.find_by_name('Trying to hack').supplier_id ).to eq @supplier.id
|
||||
end
|
||||
end
|
||||
@@ -58,12 +58,12 @@ describe Suppliers::ProductsController, type: :controller do
|
||||
context "with invalid attributes" do
|
||||
it "does not save the new product" do
|
||||
expect{
|
||||
post :create, product: invalid_attributes
|
||||
post :create, params: {product: invalid_attributes}
|
||||
}.to_not change(Product, :count)
|
||||
end
|
||||
|
||||
it 'returns an error object' do
|
||||
post :create, format: :json, product: invalid_attributes
|
||||
post :create, params: {format: :json, product: invalid_attributes}
|
||||
expect( JSON.parse(response.body)['errors'] ).to be_present
|
||||
end
|
||||
end
|
||||
@@ -76,26 +76,26 @@ describe Suppliers::ProductsController, type: :controller do
|
||||
|
||||
context "valid attributes" do
|
||||
it "located the requested product" do
|
||||
put :update, id: @product, product: valid_attributes
|
||||
put :update, params: {id: @product, product: valid_attributes}
|
||||
@product.reload
|
||||
assigns(:product).should eq(@product)
|
||||
end
|
||||
|
||||
it "changes @product's attributes" do
|
||||
put :update, id: @product, product: valid_attributes.merge(name: "ChangedByTest")
|
||||
put :update, params: {id: @product, product: valid_attributes.merge(name: "ChangedByTest")}
|
||||
@product.reload
|
||||
@product.name.should eq("ChangedByTest")
|
||||
end
|
||||
|
||||
it "should not be possible to update a product to another supplier" do
|
||||
supplier2 = create :supplier
|
||||
put :update, id: @product, product: valid_attributes.merge(name: "Trying to hack", supplier_id: supplier2.id)
|
||||
put :update, params: {id: @product, product: valid_attributes.merge(name: "Trying to hack", supplier_id: supplier2.id)}
|
||||
expect( Product.find_by_name('Trying to hack' ).supplier_id ).to eq @supplier.id
|
||||
end
|
||||
|
||||
it "should not be possible to update a product of another supplier" do
|
||||
product = create :product, name: 'Other supplier product'
|
||||
put :update, id: product, product: {name: "Trying to hack"}
|
||||
put :update, params: {id: product, product: {name: "Trying to hack"}}
|
||||
product.reload
|
||||
expect( product.name ).to eq 'Other supplier product'
|
||||
end
|
||||
@@ -103,7 +103,7 @@ describe Suppliers::ProductsController, type: :controller do
|
||||
|
||||
context "with invalid attributes" do
|
||||
it "returns an error response" do
|
||||
put :update, id: @product, format: :json, product: invalid_attributes
|
||||
put :update, params: {id: @product, format: :json, product: invalid_attributes}
|
||||
expect( JSON.parse( response.body )['errors']).to be_present
|
||||
end
|
||||
end
|
||||
@@ -116,14 +116,14 @@ describe Suppliers::ProductsController, type: :controller do
|
||||
|
||||
it "deletes the product" do
|
||||
expect{
|
||||
delete :destroy, id: @product
|
||||
delete :destroy, params: {id: @product}
|
||||
}.to change(Product, :count).by(-1)
|
||||
end
|
||||
|
||||
it "should not be possible to delete a product of another supplier" do
|
||||
product = create :product
|
||||
expect{
|
||||
delete :destroy, id: product.id
|
||||
delete :destroy, params: {id: product.id}
|
||||
}.to_not change(Product, :count)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user