product controller
This commit is contained in:
parent
f109f5eb18
commit
7cc2ec6a20
|
@ -1,10 +1,10 @@
|
||||||
# from_barcode_products POST /products/barcode(.:format) products#from_barcode
|
# barcode_products GET /products/barcode(.:format) products#barcode
|
||||||
# products GET /products(.:format) products#index
|
# load_barcode_products POST /products/barcode(.:format) products#load_barcode
|
||||||
# POST /products(.:format) products#create
|
# products GET /products(.:format) products#index
|
||||||
# new_product GET /products/new(.:format) products#new
|
# POST /products(.:format) products#create
|
||||||
# edit_product GET /products/:id/edit(.:format) products#edit
|
# edit_product GET /products/:id/edit(.:format) products#edit
|
||||||
# product PATCH /products/:id(.:format) products#update
|
# product PATCH /products/:id(.:format) products#update
|
||||||
# PUT /products/:id(.:format) products#update
|
# PUT /products/:id(.:format) products#update
|
||||||
#
|
#
|
||||||
|
|
||||||
describe ProductsController, type: :controller do
|
describe ProductsController, type: :controller do
|
||||||
|
@ -13,24 +13,6 @@ describe ProductsController, type: :controller do
|
||||||
sign_in @admin
|
sign_in @admin
|
||||||
end
|
end
|
||||||
|
|
||||||
#########
|
|
||||||
# NEW #
|
|
||||||
#########
|
|
||||||
|
|
||||||
describe 'GET new' do
|
|
||||||
it 'should render the form' do
|
|
||||||
get :new
|
|
||||||
expect(response).to render_template(:new)
|
|
||||||
expect(response).to have_http_status(200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should initialize a new product' do
|
|
||||||
get :new
|
|
||||||
expect(assigns(:product).class).to eq(Product)
|
|
||||||
expect(assigns(:product)).to_not be_persisted
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# POST #
|
# POST #
|
||||||
##########
|
##########
|
||||||
|
@ -43,7 +25,7 @@ describe ProductsController, type: :controller do
|
||||||
}.to change{ Product.count }.by(1)
|
}.to change{ Product.count }.by(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should redirect to index page' do
|
it 'should redirect to barcode page' do
|
||||||
post :create, product: attributes_for(:product)
|
post :create, product: attributes_for(:product)
|
||||||
expect(response).to redirect_to action: :barcode
|
expect(response).to redirect_to action: :barcode
|
||||||
end
|
end
|
||||||
|
@ -82,16 +64,18 @@ describe ProductsController, type: :controller do
|
||||||
describe 'GET edit' do
|
describe 'GET edit' do
|
||||||
before :each do
|
before :each do
|
||||||
@product = create :product
|
@product = create :product
|
||||||
|
get :edit, id: @product
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should render the correct form' do
|
it 'should be successful' do
|
||||||
get :edit, id: @product
|
|
||||||
expect(response).to render_template(:edit)
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should render the correct form' do
|
||||||
|
expect(response).to render_template(:edit)
|
||||||
|
end
|
||||||
|
|
||||||
it 'should load the correct product' do
|
it 'should load the correct product' do
|
||||||
get :edit, id: @product
|
|
||||||
expect(assigns :product).to eq(@product)
|
expect(assigns :product).to eq(@product)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -106,7 +90,7 @@ describe ProductsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'loads right product' do
|
it 'loads right product' do
|
||||||
put :edit, id: @product, product: attributes_for(:product)
|
put :update, id: @product, product: attributes_for(:product)
|
||||||
expect(assigns :product).to eq(@product)
|
expect(assigns :product).to eq(@product)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -119,23 +103,69 @@ describe ProductsController, type: :controller do
|
||||||
|
|
||||||
context 'failed' do
|
context 'failed' do
|
||||||
it 'should not update attributes' do
|
it 'should not update attributes' do
|
||||||
old_attributes = @product.attributes
|
old_price = @product.price
|
||||||
put :update, id: @product, product: attributes_for(:invalid_product)
|
put :update, id: @product, product: attributes_for(:invalid_product)
|
||||||
expect(@product.reload.attributes).to eq(old_attributes)
|
expect(@product.reload.price).to eq(old_price)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#############
|
||||||
|
# BARCODE #
|
||||||
|
#############
|
||||||
|
|
||||||
|
describe 'GET barcode' do
|
||||||
|
it 'should be successful' do
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# FROM_BARCODE #
|
# LOAD_BARCODE #
|
||||||
##################
|
##################
|
||||||
|
|
||||||
describe 'POST from_barcode' do
|
describe 'POST load_barcode' do
|
||||||
it 'should return a product when barcode in database' do
|
describe 'new barcode' do
|
||||||
product = create :product
|
before :each do
|
||||||
bar = create :barcode, product: product
|
@code = attributes_for(:barcode)[:code].to_s
|
||||||
post :from_barcode, barcode: bar.code
|
post :load_barcode, barcode: @code
|
||||||
expect(JSON.parse(response.body)["id"]).to eq(product.id)
|
end
|
||||||
|
|
||||||
|
it 'should be successful' do
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be render the link partial' do
|
||||||
|
expect(response).to render_template(:link)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should allow building a new product' do
|
||||||
|
expect(assigns(:product).id).to be nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have a barcode built for the new product' do
|
||||||
|
barcode = assigns(:product).barcodes.first
|
||||||
|
expect(barcode.code).to eq @code
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'existing barcode' do
|
||||||
|
before :each do
|
||||||
|
@barcode = create :barcode
|
||||||
|
post :load_barcode, barcode: @barcode.code
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be successful' do
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be render the stock_entry partial' do
|
||||||
|
expect(response).to render_template(:stock_entry)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have the correct product loaded' do
|
||||||
|
expect(assigns :product).to eq @barcode.product
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue