diff --git a/app/models/list.rb b/app/models/list.rb index ec6991c1..1c0ea8e7 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -118,7 +118,7 @@ class List def self.get_suppliers_users_count(lists, supplier_id: nil) unique_supplier_user_ids = Set.new lists.each do |list| - list.user_ids.each do |uid| + Array.wrap(list.user_ids).each do |uid| unique_supplier_user_ids << [list.supplier_id, uid] end end @@ -140,7 +140,7 @@ class List def self.enrich_users_number_of_lists_at_supplier(supplier_id, lists) counts = get_suppliers_users_count(lists, supplier_id: supplier_id) lists.each do |list| - list.users.each do |user| + Array.wrap(list.users).each do |user| user.number_of_lists_at_supplier = counts[user.id] || 1 end end diff --git a/spec/controllers/dashboard_controller_spec.rb b/spec/controllers/dashboard_controller_spec.rb index 074be7f7..7fa07ee9 100644 --- a/spec/controllers/dashboard_controller_spec.rb +++ b/spec/controllers/dashboard_controller_spec.rb @@ -1,5 +1,6 @@ # encoding: UTF-8 require 'rails_helper' + describe DashboardController, type: :controller do before :each do setup_supplier_for_controller @@ -9,13 +10,19 @@ describe DashboardController, type: :controller do it "does render the svg image" do table = create :table, supplier: @supplier, number: 7 get :table_qr_image, params: {table_id: table.id}, format: :svg - expect(response.body).to include %[id="tspan3801">7] + doc = Nokogiri.parse(response.body) + element = doc.at_css('#tspan3801') + #expect(response.body).to include %[id="tspan3801">7] + expect(element.text).to eq '7' end it "does render the svg image with table label if present" do table = create :table, supplier: @supplier, number: 7, label: "The love seat" get :table_qr_image, params: {table_id: table.id}, format: :svg - expect(response.body).to include %[id="tspan3801">7 - The love seat] + doc = Nokogiri.parse(response.body) + element = doc.at_css('#tspan3801') + #expect(response.body).to include %[id="tspan3801">7 - The love seat] + expect(element.text).to eq '7 - The love seat' end end end diff --git a/spec/controllers/suppliers/lists_controller_spec.rb b/spec/controllers/suppliers/lists_controller_spec.rb index da74b542..38775712 100644 --- a/spec/controllers/suppliers/lists_controller_spec.rb +++ b/spec/controllers/suppliers/lists_controller_spec.rb @@ -38,19 +38,19 @@ describe Suppliers::ListsController, type: :controller do describe "GET #show" do it "assigns the requested list to @list" do list = create :list, supplier: @supplier - get :show, id: list + get :show, params: {id: list.id} assigns(:list).should eq(list) end it "should not display a list of another supplier" do list = create :list - get :show, id: list + get :show, params: {id: list.id} response.status.should == 404 end it "renders the #show view" do list = create :list, supplier: @supplier - get :show, id: list + get :show, params: {id: list.id} response.body.should include 'orders' end end @@ -66,13 +66,13 @@ describe Suppliers::ListsController, type: :controller do context "with valid attributes" do it "creates a new list" do expect{ - post :create, list: valid_attributes + post :create, params: {list: valid_attributes} }.to change(List, :count).by(1) end it "should not be possible to create a list for another supplier" do supplier2 = create :supplier - post :create, list: valid_attributes.merge(price: '6.66', supplier_id: supplier2.id) + post :create, params: {list: valid_attributes.merge(price: '6.66', supplier_id: supplier2.id)} expect( List.find_by_price(6.66).supplier_id ).to eq @supplier.id end end @@ -80,13 +80,13 @@ describe Suppliers::ListsController, type: :controller do context "with invalid attributes", broken: true do it "does not save the new list" do expect{ - post :create, format: :json, list: invalid_params + post :create, params: {list: invalid_params}, format: :json }.not_to change{ List.count } List.count.should be_zero end it 'returns an error object' do - post :create, format: :json, list: invalid_params + post :create, params: {list: invalid_params}, format: :json expect( JSON.parse(response.body)['errors'] ).to be_present end end @@ -99,27 +99,27 @@ describe Suppliers::ListsController, type: :controller do context "valid attributes" do it "located the requested list" do - put :update, id: @list, list: valid_attributes + put :update, params: {id: @list.id, list: valid_attributes} @list.reload assigns(:list).should eq(@list) end it "changes @list's price attribute" do - put :update, id: @list, list: valid_attributes.merge(price: '7.22') + put :update, params: {id: @list.id, list: valid_attributes.merge(price: '7.22')} @list.reload @list.price.should eq(7.22) end it "should not be possible to update a list to another supplier" do supplier2 = create :supplier - put :update, id: @list, list: valid_attributes.merge(supplier_id: supplier2.id) + put :update, params: {id: @list.id, list: valid_attributes.merge(supplier_id: supplier2.id)} @list.reload @list.supplier_id.should == @supplier.id end it "should not be possible to update a list of another supplier" do list = create :list, price: '7.22' - put :update, id: list, list: {price: '6.66'} + put :update, params: {id: list.id, list: {price: '6.66'}} list.reload list.price.should == 7.22 end @@ -127,7 +127,7 @@ describe Suppliers::ListsController, type: :controller do context "invalid attributes", broken: true do it "returns an error response" do - put :update, id: @list, format: :json, list: invalid_params + put :update, params: {id: @list, list: invalid_params}, format: :json expect( JSON.parse( response.body )['errors']).to be_present end end @@ -140,14 +140,14 @@ describe Suppliers::ListsController, type: :controller do it "deletes the list" do expect{ - delete :destroy, id: @list + delete :destroy, params: {id: @list.id} }.to change(List, :count).by(-1) end it "should not be possible to delete a list of another supplier" do list = create :list expect{ - delete :destroy, id: list + delete :destroy, params: {id: list.id} }.to_not change(List, :count) end end diff --git a/spec/controllers/suppliers/product_categories_controller_spec.rb b/spec/controllers/suppliers/product_categories_controller_spec.rb index 9620d953..610aeac2 100644 --- a/spec/controllers/suppliers/product_categories_controller_spec.rb +++ b/spec/controllers/suppliers/product_categories_controller_spec.rb @@ -27,13 +27,13 @@ describe Suppliers::ProductCategoriesController, type: :controller do describe "GET #show" do it "assigns the requested product_category to @product_category" do product_category = create :product_category, supplier: @supplier - get :show, id: product_category, format: :json + get :show, params: {id: product_category}, format: :json assigns(:product_category).should eq(product_category) end it "should not display a product_category of another supplier" do product_category = create :product_category - get :show, id: product_category, format: :json + get :show, params: {id: product_category}, format: :json response.status.should == 404 end end @@ -42,18 +42,18 @@ describe Suppliers::ProductCategoriesController, type: :controller do context "with valid attributes" do it "creates a new product_category" do expect{ - post :create, product_category: valid_attributes, format: :json + post :create, params: {product_category: valid_attributes}, format: :json }.to change(ProductCategory, :count).by(1) end it "redirects to the new product_category" do - post :create, product_category: valid_attributes + post :create, params: {product_category: valid_attributes} response.should redirect_to [:suppliers, :product_categories] end it "should not be possible to create a product category for another supplier" do supplier2 = create :supplier - post :create, product_category: valid_attributes.merge(name: 'Trying to hack', supplier_id: supplier2.id) + post :create, params: {product_category: valid_attributes.merge(name: 'Trying to hack', supplier_id: supplier2.id)} expect( ProductCategory.find_by_name('Trying to hack').supplier_id ).to eq @supplier.id end end @@ -61,12 +61,12 @@ describe Suppliers::ProductCategoriesController, type: :controller do context "with invalid attributes" do it "does not save the new product_category" do expect{ - post :create, product_category: invalid_attributes, format: :json + post :create, params: {product_category: invalid_attributes}, format: :json }.not_to change{ ProductCategory.count } end it 'returns an error object' do - post :create, format: :json, product_category: invalid_attributes, format: :json + post :create, params: {product_category: invalid_attributes}, format: :json expect( JSON.parse(response.body)['errors'] ).to be_present end end @@ -79,20 +79,20 @@ describe Suppliers::ProductCategoriesController, type: :controller do context "valid attributes" do it "located the requested product_category" do - put :update, id: @product_category, product_category: valid_attributes + put :update, params: {id: @product_category, product_category: valid_attributes} @product_category.reload assigns(:product_category).should eq(@product_category) end it "changes @product_category's attributes" do - put :update, id: @product_category, product_category: valid_attributes.merge(name: "ChangedByTest") + put :update, params: {id: @product_category, product_category: valid_attributes.merge(name: "ChangedByTest")} @product_category.reload @product_category.name.should eq("ChangedByTest") end it "should not be possible to update a product category to another supplier" do supplier2 = create :supplier - put :update, id: @product_category, product_category: valid_attributes.merge(name: "Trying to hack", supplier_id: supplier2.id) + put :update, params: {id: @product_category, product_category: valid_attributes.merge(name: "Trying to hack", supplier_id: supplier2.id)} @product_category.reload expect( @product_category.name ).to eq 'Trying to hack' expect( @product_category.supplier_id ).to eq @supplier.id @@ -100,7 +100,7 @@ describe Suppliers::ProductCategoriesController, type: :controller do it "should not be possible to update a product_category of another supplier" do product_category = create :product_category, name: 'Other supplier product_category' - put :update, id: product_category, product_category: {name: "Trying to hack"} + put :update, params: {id: product_category, product_category: {name: "Trying to hack"}} expect(response.status).to eq 404 product_category.reload product_category.name.should == 'Other supplier product_category' @@ -109,7 +109,7 @@ describe Suppliers::ProductCategoriesController, type: :controller do context "with invalid attributes" do it "returns an error response" do - put :update, id: @product_category, format: :json, product_category: invalid_attributes + put :update, params: {id: @product_category, product_category: invalid_attributes}, format: :json expect( JSON.parse( response.body )['errors']).to be_present end end @@ -122,14 +122,14 @@ describe Suppliers::ProductCategoriesController, type: :controller do it "deletes the product_category" do expect{ - delete :destroy, id: @product_category + delete :destroy, params: {id: @product_category.id} }.to change(ProductCategory, :count).by(-1) end it "should not be possible to delete a product category of another supplier" do product_category = create :product_category expect{ - delete :destroy, id: product_category + delete :destroy, params: {id: product_category.id} }.to_not change{ProductCategory.count } end end diff --git a/spec/controllers/suppliers/sections_controller_spec.rb b/spec/controllers/suppliers/sections_controller_spec.rb index a9f54348..318c7ee7 100644 --- a/spec/controllers/suppliers/sections_controller_spec.rb +++ b/spec/controllers/suppliers/sections_controller_spec.rb @@ -27,13 +27,13 @@ describe Suppliers::SectionsController, type: :controller do describe "GET #show" do it "assigns the requested section to @section" do section = create :section, supplier: @supplier - get :show, id: section.id, format: :json + get :show, params: {id: section.id}, format: :json assigns(:section).should eq(section) end it "should not display a section of another supplier" do section = create :section - get :show, id: section, format: :json + get :show, params: {id: section.id}, format: :json response.status.should == 404 end end @@ -42,14 +42,14 @@ describe Suppliers::SectionsController, type: :controller do context "with valid attributes" do it "creates a new section" do expect{ - post :create, section: valid_attributes + post :create, params: {section: valid_attributes} }.to change(Section, :count).by(1) expect( Section.last.supplier_id ).to eq @supplier.id end it "should not be possible to create a section for another supplier" do supplier2 = create :supplier - post :create, section: valid_attributes.merge(title: 'Trying to hack', supplier_id: supplier2.id) + post :create, params: {section: valid_attributes.merge(title: 'Trying to hack', supplier_id: supplier2.id)} expect( Section.find_by_title('Trying to hack').supplier_id ).to eq @supplier.id end end @@ -57,12 +57,12 @@ describe Suppliers::SectionsController, type: :controller do context "with invalid attributes" do it "does not save the new section" do expect{ - post :create, format: :json, section: invalid_attributes + post :create, params: {section: invalid_attributes}, format: :json }.to_not change(Section, :count) end it "returns an error response" do - post :create, format: :json, section: invalid_attributes + post :create, params: {section: invalid_attributes}, format: :json expect( JSON.parse(response.body )['errors'] ).to be_present end end @@ -75,27 +75,27 @@ describe Suppliers::SectionsController, type: :controller do context "valid attributes" do it "located the requested section" do - put :update, id: @section, format: :json, section: valid_attributes + put :update, params: {id: @section, section: valid_attributes}, format: :json @section.reload assigns(:section).should eq(@section) end it "changes @section's attributes" do - put :update, id: @section.id, format: :json, section: valid_attributes.merge(title: "ChangedByTest") + put :update, params: {id: @section.id, section: valid_attributes.merge(title: "ChangedByTest")}, format: :json @section.reload expect( @section.title ).to eq "ChangedByTest" end it "should not be possible to update a section to another supplier" do supplier2 = create :supplier - put :update, id: @section, section: valid_attributes.merge(title: "Trying to hack", supplier_id: supplier2.id) + put :update, params: {id: @section, section: valid_attributes.merge(title: "Trying to hack", supplier_id: supplier2.id)} @section.reload @section.supplier_id.should == @supplier.id end it "should not be possible to update a section of another supplier" do section = create :section, title: 'Other supplier section' - put :update, id: section.id, format: :json, section: {title: "Trying to hack"} + put :update, params: {id: section.id, section: {title: "Trying to hack"}}, format: :json expect( response ).to be_not_found section.reload section.title.should == 'Other supplier section' @@ -104,12 +104,12 @@ describe Suppliers::SectionsController, type: :controller do context "invalid attributes" do it "locates the requested section" do - put :update, id: @section, format: :json, section: invalid_attributes + put :update, params: {id: @section, section: invalid_attributes}, format: :json assigns(:section).should eq(@section) end it "returns an error response" do - put :update, id: @section.id, format: :json, section: invalid_attributes + put :update, params: {id: @section.id, section: invalid_attributes}, format: :json expect( JSON.parse(response.body )['errors'] ).to be_present end end @@ -122,14 +122,14 @@ describe Suppliers::SectionsController, type: :controller do it "deletes the section" do expect{ - delete :destroy, id: @section + delete :destroy, params: {id: @section.id} }.to change(Section, :count).by(-1) end it "should not be possible to delete a section of another supplier" do section = create :section expect{ - delete :destroy, id: section + delete :destroy, params: {id: section.id} }.to_not change(Section, :count) end end diff --git a/spec/controllers/suppliers/tables_controller_spec.rb b/spec/controllers/suppliers/tables_controller_spec.rb index c99fcdda..597e3074 100644 --- a/spec/controllers/suppliers/tables_controller_spec.rb +++ b/spec/controllers/suppliers/tables_controller_spec.rb @@ -24,7 +24,7 @@ describe Suppliers::TablesController, type: :controller do describe "GET #show" do it "assigns the requested table to @table" do table = create :table, supplier: @supplier - get :show, params: {id: table}, format: :json + get :show, params: {id: table.id}, format: :json assigns(:table).should eq(table) end diff --git a/spec/integrety/persistance_spec.rb b/spec/integrety/persistance_spec.rb index 3dee648f..a85435aa 100644 --- a/spec/integrety/persistance_spec.rb +++ b/spec/integrety/persistance_spec.rb @@ -2,20 +2,45 @@ require 'spec_helper' describe "persistance" do let(:db){CouchPotato.database.couchrest_database} - let(:db_uri){ File.join(db.host, db.name)} + let(:debug) { StringIO.new } + + #let(:db_uri){ File.join(db.uri.host, db.name)} + describe "database format" do it "persists with proper ruby class" do employee = create :employee - response = Net::HTTP.get URI(File.join(db_uri, employee.id)) - response.should include %|"ruby_class":"Employee"| - response.should_not include %|"id":| + uri = URI.parse(File.join(db.uri, employee.id)) + + http = Net::HTTP.new uri.host, uri.port + http.set_debug_output(debug) + + request = Net::HTTP::Get.new(uri.request_uri) + request.basic_auth uri.user, uri.password + + response = http.request(request) + + doc = JSON.parse(response.body) + doc['ruby_class'].should eq 'Employee' + doc.should_not have_key 'id' + #response.should include %|"ruby_class":"Employee"| + #response.should_not include %|"id":| end it "stores time in UTC iso8601 format" do time = Time.utc(1981, 3, 9, 13, 22, 2).in_time_zone Timecop.travel time do employee_shift = create :employee_shift, start_from: time, end_on: time + 2.hours - response = JSON.parse Net::HTTP.get URI(File.join(db_uri, employee_shift.id)) + + uri = URI.parse(File.join(db.uri, employee_shift.id)) + + http = Net::HTTP.new uri.host, uri.port + http.set_debug_output(debug) + + request = Net::HTTP::Get.new(uri.request_uri) + request.basic_auth uri.user, uri.password + + response = http.request(request) + response = JSON.parse response.body response['created_at'].should eq "1981-03-09T13:22:02Z" response['updated_at'].should eq "1981-03-09T13:22:02Z" response['start_from'].should eq "1981-03-09T13:22:02Z"