diff --git a/spec/controllers/products_controller_spec.rb b/spec/controllers/products_controller_spec.rb index ab915d1..c9808b5 100644 --- a/spec/controllers/products_controller_spec.rb +++ b/spec/controllers/products_controller_spec.rb @@ -45,7 +45,7 @@ describe ProductsController, type: :controller do it 'should redirect to index page' do post :create, product: attributes_for(:product) - expect(response).to redirect_to action: :index + expect(response).to redirect_to action: :barcode end end @@ -58,7 +58,7 @@ describe ProductsController, type: :controller do it 'should render form' do post :create, product: attributes_for(:invalid_product) - expect(response).to render_template(:new) + expect(response).to render_template(:link) end end end @@ -133,7 +133,8 @@ describe ProductsController, type: :controller do describe 'POST from_barcode' do it 'should return a product when barcode in database' do product = create :product - post :from_barcode, barcode: product.barcode + bar = create :barcode, product: product + post :from_barcode, barcode: bar.code expect(JSON.parse(response.body)["id"]).to eq(product.id) end end diff --git a/spec/factories/barcodes.rb b/spec/factories/barcodes.rb new file mode 100644 index 0000000..2bada88 --- /dev/null +++ b/spec/factories/barcodes.rb @@ -0,0 +1,17 @@ +# == Schema Information +# +# Table name: barcodes +# +# id :integer not null, primary key +# product_id :integer +# code :string default(""), not null +# created_at :datetime +# updated_at :datetime +# + +FactoryGirl.define do + factory :barcode do + product + sequence :code + end +end diff --git a/spec/factories/products.rb b/spec/factories/products.rb index 5748ee6..16dfb06 100644 --- a/spec/factories/products.rb +++ b/spec/factories/products.rb @@ -28,7 +28,6 @@ FactoryGirl.define do stock { 30 + rand(30) } calories { rand 20 } avatar { Identicon.data_url_for name } - sequence :barcode factory :invalid_product do name nil diff --git a/spec/models/barcode_spec.rb b/spec/models/barcode_spec.rb new file mode 100644 index 0000000..d2389d7 --- /dev/null +++ b/spec/models/barcode_spec.rb @@ -0,0 +1,27 @@ +describe Barcode do + before :each do + @barcode = create :barcode + end + + it 'has a valid factory' do + expect(@barcode).to be_valid + end + + ############ + # FIELDS # + ############ + + describe 'fields' do + describe 'code' do + it 'should be present' do + @barcode.code = nil + expect(@barcode).to_not be_valid + end + + it 'should be unique' do + barcode = build :barcode, code: @barcode.code + expect(barcode).to_not be_valid + end + end + end +end diff --git a/spec/models/product_spec.rb b/spec/models/product_spec.rb index 476a4fc..e009912 100644 --- a/spec/models/product_spec.rb +++ b/spec/models/product_spec.rb @@ -87,17 +87,6 @@ describe Product do end end - describe 'barcode' do - it 'should be present' do - @product.barcode = nil - expect(@product).to_not be_valid - end - - it 'should be unique' do - expect(build :product, barcode: @product.barcode).to_not be_valid - end - end - describe 'avatar' do it 'should be present' do @product.avatar = nil