ruby on rails - Uncountable model testing with rspec and capybara -


i using rails 5.0.0.1 build small inventory type system equipment lone people. 1 of models named equipment of course uncountable model (singular , plural of equipment same). when try write feature tests model 1 of 2 possible errors when try visit index page. if use "visit equipment_url" told there no route "show" because there no id. correct error if wanted go show don't. if try "visit equipment_index_url" told there no method visit.

routes                 prefix verb   uri pattern                             controller#action                   root    /                                       inventory#index       delete_equipment    /equipment/:id/delete(.:format)         equipment#delete                        delete /equipment/:id/delete(.:format)         equipment#destroy        equipment_index    /equipment(.:format)                    equipment#index                        post   /equipment(.:format)                    equipment#create          new_equipment    /equipment/new(.:format)                equipment#new         edit_equipment    /equipment/:id/edit(.:format)           equipment#edit              equipment    /equipment/:id(.:format)                equipment#show                        patch  /equipment/:id(.:format)                equipment#update                        put    /equipment/:id(.:format)                equipment#update                        delete /equipment/:id(.:format)                equipment#destroy       delete_specialty    /specialties/:id/delete(.:format)       specialties#delete                        delete /specialties/:id/delete(.:format)       specialties#destroy            specialties    /specialties(.:format)                  specialties#index                        post   /specialties(.:format)                  specialties#create          new_specialty    /specialties/new(.:format)              specialties#new         edit_specialty    /specialties/:id/edit(.:format)         specialties#edit              specialty    /specialties/:id(.:format)              specialties#show                        patch  /specialties/:id(.:format)              specialties#update                        put    /specialties/:id(.:format)              specialties#update                        delete /specialties/:id(.:format)              specialties#destroy           delete_event    /events/:id/delete(.:format)            events#delete                        delete /events/:id/delete(.:format)            events#destroy                 events    /events(.:format)                       events#index                        post   /events(.:format)                       events#create              new_event    /events/new(.:format)                   events#new             edit_event    /events/:id/edit(.:format)              events#edit                  event    /events/:id(.:format)                   events#show                        patch  /events/:id(.:format)                   events#update                        put    /events/:id(.:format)                   events#update                        delete /events/:id(.:format)                   events#destroy            delete_type    /types/:id/delete(.:format)             types#delete                        delete /types/:id/delete(.:format)             types#destroy                  types    /types(.:format)                        types#index                        post   /types(.:format)                        types#create               new_type    /types/new(.:format)                    types#new              edit_type    /types/:id/edit(.:format)               types#edit                   type    /types/:id(.:format)                    types#show                        patch  /types/:id(.:format)                    types#update                        put    /types/:id(.:format)                    types#update                        delete /types/:id(.:format)                    types#destroy delete_event_specialty    /event_specialties/:id/delete(.:format) event_specialties#delete                        delete /event_specialties/:id/delete(.:format) event_specialties#destroy      event_specialties    /event_specialties(.:format)            event_specialties#index                        post   /event_specialties(.:format)            event_specialties#create    new_event_specialty    /event_specialties/new(.:format)        event_specialties#new   edit_event_specialty    /event_specialties/:id/edit(.:format)   event_specialties#edit        event_specialty    /event_specialties/:id(.:format)        event_specialties#show                        patch  /event_specialties/:id(.:format)        event_specialties#update                        put    /event_specialties/:id(.:format)        event_specialties#update                        delete /event_specialties/:id(.:format)        event_specialties#destroy 

spec/features/equipment_spec.rb

require 'rails_helper'  rspec.describe "equipment", type: :request   describe "get /equipment"     "adds new equipment"         @types = factorygirl.create_list(:multitype, 25)         @specialties = factorygirl.create_list(:multispecialty, 25)         visit equipment_index_url         expect{             click_link 'new equipment'             fill_in "equipment no", with: "2"             fill_in "serial", with: "123456"             fill_in "description", with: "test equipment"             select "radio10", from: "equipment_type_id"             select "tech13", from: "equipment_specialty_id"             click_button "create equipment"         }.to change(equipment, :count).by(1)         expect(page).to have_content("equipment created")     end      "deletes without javascript"         equipment = factorygirl.create(:equipment)         visit equipment_url         expect {             click_link "destroy"         }.to change(equipment, :count).by(-1)         expect(page).to have_content("equipment destroyed")     end      "edits equipment"         equipment = factorygirl.create(:equipment)         visit equipment_url         click_link 'edit'         fill_in "serial", with: "456789"         click_button "update equipment"         expect(page).to have_content("equipment updated")         expect(page).to have_content("serial: 456789")     end      "shows equipment"         equipment = factorygirl.create(:equipment)         visit equipment_url         click_link 'show'         expect(page).to have_content("serial: rad123")         expect(page).to have_link("edit")         expect(page).to have_link("back", href: equipment_path)     end   end end 

errors

equipment   /equipment     adds new equipment (failed - 1)     deletes without javascript (failed - 2)     edits equipment (failed - 3)     shows equipment (failed - 4) 

failures:

1) equipment /equipment adds new equipment failure/error: visit equipment_index_url

 nomethoderror:    undefined method `visit' #<rspec::examplegroups::equipment::getequipment:0x000000065c32e8>  # ./spec/features/equipment_spec.rb:8:in `block (3 levels) in <top (required)>'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:112:in `block in run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `loop'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:30:in `block (2 levels) in setup' 

2) equipment /equipment deletes without javascript failure/error: visit equipment_url

 actioncontroller::urlgenerationerror:    no route matches {:action=>"show", :controller=>"equipment"} missing required keys: [:id]  # ./spec/features/equipment_spec.rb:23:in `block (3 levels) in <top (required)>'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:112:in `block in run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `loop'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:30:in `block (2 levels) in setup' 

3) equipment /equipment edits equipment failure/error: visit equipment_url

 actioncontroller::urlgenerationerror:    no route matches {:action=>"show", :controller=>"equipment"} missing required keys: [:id]  # ./spec/features/equipment_spec.rb:32:in `block (3 levels) in <top (required)>'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:112:in `block in run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `loop'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:30:in `block (2 levels) in setup' 

4) equipment /equipment shows equipment failure/error: visit equipment_url

 actioncontroller::urlgenerationerror:    no route matches {:action=>"show", :controller=>"equipment"} missing required keys: [:id]  # ./spec/features/equipment_spec.rb:42:in `block (3 levels) in <top (required)>'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:112:in `block in run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `loop'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:101:in `run'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'  # /home/tom/.rvm/gems/ruby-2.3.1@rails5.0/gems/rspec-retry-0.5.2/lib/rspec/retry.rb:30:in `block (2 levels) in setup'  finished in 0.28107 seconds (files took 2.61 seconds load) 4 examples, 4 failures 

failed examples:

rspec ./spec/features/equipment_spec.rb:5 # equipment /equipment adds new equipment rspec ./spec/features/equipment_spec.rb:21 # equipment /equipment deletes without javascript rspec ./spec/features/equipment_spec.rb:30 # equipment /equipment edits equipment rspec ./spec/features/equipment_spec.rb:40 # equipment /equipment shows equipment 

any ideas on how make work appreciated

i believe "rspec.describe "equipment", type: :request" has type ":feature" capybara testing work properly.

this should fix show errors, because assume doesn't have id because not visiting equipment_url correctly. if isn't problem, equipment#show not receiving instance variable.


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -