From d361abc91e9bd672b265d59764840683b5e69a47 Mon Sep 17 00:00:00 2001 From: benji Date: Tue, 1 Dec 2015 20:02:08 +0100 Subject: [PATCH] Add tests for barcode controller --- spec/controllers/barcodes_controller_spec.rb | 72 ++++++++++++++++++++ spec/controllers/products_controller_spec.rb | 10 +-- spec/factories/barcodes.rb | 4 ++ 3 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 spec/controllers/barcodes_controller_spec.rb diff --git a/spec/controllers/barcodes_controller_spec.rb b/spec/controllers/barcodes_controller_spec.rb new file mode 100644 index 0000000..90c10c9 --- /dev/null +++ b/spec/controllers/barcodes_controller_spec.rb @@ -0,0 +1,72 @@ +# product_barcodes POST /products/:product_id/barcodes(.:format) barcodes#create +# barcodes GET /barcodes(.:format) barcodes#index +# barcode GET /barcodes/:id(.:format) barcodes#show +# DELETE /barcodes/:id(.:format) barcodes#destroy +# + +describe BarcodesController, type: :controller do + before :each do + @product = create :product + @admin = create :admin + sign_in @admin + end + + ########## + # POST # + ########## + + describe 'POST create' do + context 'successful' do + it 'should create a barcode' do + expect{ + post :create, product_id: @product, barcode: attributes_for(:barcode) + }.to change{ Barcode.count }.by(1) + end + end + + context 'failed' do + it 'should not create a barcode' do + expect{ + post :create, product_id: @product, barcode: attributes_for(:invalid_barcode) + }.to_not change{ Barcode.count } + end + end + end + + ########### + # INDEX # + ########### + + describe 'GET index' do + it 'should load all the barcodes' do + barcode = create :barcode + get :index + expect(assigns(:barcodes)).to eq([barcode]) + end + end + + ########## + # SHOW # + ########## + + describe 'GET show' do + before :each do + @barcode = create :barcode + end + + it 'should load the correct barcode' do + get :show, id: @barcode + expect(assigns(:barcode)).to eq(@barcode) + end + + it 'should allow friendly id' do + get :show, id: @barcode.code + expect(assigns(:barcode)).to eq(@barcode) + end + + it 'should respond with this barcode' do + get :show, id: @barcode + expect(response.body).to eq @barcode.product.to_json + end + end +end diff --git a/spec/controllers/products_controller_spec.rb b/spec/controllers/products_controller_spec.rb index 35bb79d..ff9e416 100644 --- a/spec/controllers/products_controller_spec.rb +++ b/spec/controllers/products_controller_spec.rb @@ -13,12 +13,12 @@ describe ProductsController, type: :controller do sign_in @admin end - ########## - # POST # - ########## + ############ + # CREATE # + ############ describe 'POST create' do - context 'successfull' do + context 'successful' do it 'should create a product' do expect{ post :create, product: attributes_for(:product) @@ -35,7 +35,7 @@ describe ProductsController, type: :controller do it 'should not create a product' do expect{ post :create, product: attributes_for(:invalid_product) - }.to_not change{Product.count} + }.to_not change{ Product.count} end it 'should render form' do diff --git a/spec/factories/barcodes.rb b/spec/factories/barcodes.rb index 2bada88..eb06c96 100644 --- a/spec/factories/barcodes.rb +++ b/spec/factories/barcodes.rb @@ -13,5 +13,9 @@ FactoryGirl.define do factory :barcode do product sequence :code + + factory :invalid_barcode do + code nil + end end end