From 46013bc1b564a3d376c692feabe2df8dd4186b14 Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Tue, 26 Jan 2016 18:14:32 +0800 Subject: [PATCH] start speccing out mappings controller --- spec/controllers/mappings_controller_spec.rb | 107 ++----------------- spec/factories/mappings.rb | 9 ++ spec/spec_helper.rb | 8 ++ 3 files changed, 28 insertions(+), 96 deletions(-) create mode 100644 spec/factories/mappings.rb diff --git a/spec/controllers/mappings_controller_spec.rb b/spec/controllers/mappings_controller_spec.rb index 8a7acda5..b2568b51 100644 --- a/spec/controllers/mappings_controller_spec.rb +++ b/spec/controllers/mappings_controller_spec.rb @@ -1,60 +1,14 @@ require 'rails_helper' -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to specify the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. -# -# Compared to earlier versions of this generator, there is very limited use of -# stubs and message expectations in this spec. Stubs are only used when there -# is no simpler way to get a handle on the object needed for the example. -# Message expectations are only used when there is no simpler way to specify -# that an instance is receiving a specific message. - RSpec.describe MappingsController, type: :controller do - # This should return the minimal set of attributes required to create a valid - # Mapping. As you add validations to Mapping, be sure to - # adjust the attributes here as well. - let(:valid_attributes) do - skip('Add a hash of attributes valid for your model') - end - - let(:invalid_attributes) do - skip('Add a hash of attributes invalid for your model') - end - - # This should return the minimal set of values that should be in the session - # in order to pass any filters (e.g. authentication) defined in - # MappingsController. Be sure to keep this updated too. - let(:valid_session) { {} } - - describe 'GET #index' do - it 'assigns all mappings as @mappings' do - mapping = Mapping.create! valid_attributes - get :index, {}, valid_session - expect(assigns(:mappings)).to eq([mapping]) - end + let(:mapping) { create(:mapping) } + before :each do + sign_in end describe 'GET #show' do it 'assigns the requested mapping as @mapping' do - mapping = Mapping.create! valid_attributes - get :show, { id: mapping.to_param }, valid_session - expect(assigns(:mapping)).to eq(mapping) - end - end - - describe 'GET #edit' do - it 'assigns the requested mapping as @mapping' do - mapping = Mapping.create! valid_attributes - get :edit, { id: mapping.to_param }, valid_session + get :show, { id: mapping.to_param } expect(assigns(:mapping)).to eq(mapping) end end @@ -63,32 +17,22 @@ RSpec.describe MappingsController, type: :controller do context 'with valid params' do it 'creates a new Mapping' do expect do - post :create, { mapping: valid_attributes }, valid_session + post :create, { mapping: valid_attributes } end.to change(Mapping, :count).by(1) end it 'assigns a newly created mapping as @mapping' do - post :create, { mapping: valid_attributes }, valid_session + post :create, { mapping: valid_attributes } expect(assigns(:mapping)).to be_a(Mapping) expect(assigns(:mapping)).to be_persisted end - - it 'redirects to the created mapping' do - post :create, { mapping: valid_attributes }, valid_session - expect(response).to redirect_to(Mapping.last) - end end context 'with invalid params' do it 'assigns a newly created but unsaved mapping as @mapping' do - post :create, { mapping: invalid_attributes }, valid_session + post :create, { mapping: invalid_attributes } expect(assigns(:mapping)).to be_a_new(Mapping) end - - it "re-renders the 'new' template" do - post :create, { mapping: invalid_attributes }, valid_session - expect(response).to render_template('new') - end end end @@ -99,62 +43,33 @@ RSpec.describe MappingsController, type: :controller do end it 'updates the requested mapping' do - mapping = Mapping.create! valid_attributes put :update, - { id: mapping.to_param, mapping: new_attributes }, - valid_session + { id: mapping.to_param, mapping: new_attributes } mapping.reload skip('Add assertions for updated state') end it 'assigns the requested mapping as @mapping' do - mapping = Mapping.create! valid_attributes put :update, - { id: mapping.to_param, mapping: valid_attributes }, - valid_session + { id: mapping.to_param, mapping: valid_attributes } expect(assigns(:mapping)).to eq(mapping) end - - it 'redirects to the mapping' do - mapping = Mapping.create! valid_attributes - put :update, - { id: mapping.to_param, mapping: valid_attributes }, - valid_session - expect(response).to redirect_to(mapping) - end end context 'with invalid params' do it 'assigns the mapping as @mapping' do - mapping = Mapping.create! valid_attributes put :update, - { id: mapping.to_param, mapping: invalid_attributes }, - valid_session + { id: mapping.to_param, mapping: invalid_attributes } expect(assigns(:mapping)).to eq(mapping) end - - it "re-renders the 'edit' template" do - mapping = Mapping.create! valid_attributes - put :update, - { id: mapping.to_param, mapping: invalid_attributes }, - valid_session - expect(response).to render_template('edit') - end end end describe 'DELETE #destroy' do it 'destroys the requested mapping' do - mapping = Mapping.create! valid_attributes expect do - delete :destroy, { id: mapping.to_param }, valid_session + delete :destroy, { id: mapping.to_param } end.to change(Mapping, :count).by(-1) end - - it 'redirects to the mappings list' do - mapping = Mapping.create! valid_attributes - delete :destroy, { id: mapping.to_param }, valid_session - expect(response).to redirect_to(mappings_url) - end end end diff --git a/spec/factories/mappings.rb b/spec/factories/mappings.rb new file mode 100644 index 00000000..479a3a16 --- /dev/null +++ b/spec/factories/mappings.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do + factory :mapping do + xloc 0 + yloc 0 + map + user + association :mappable, factory: :topic + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a2b164b2..9cab52e4 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,6 @@ +require 'support/controller_helpers' +require 'devise' + RSpec.configure do |config| config.expect_with :rspec do |expectations| expectations.include_chain_clauses_in_custom_matcher_descriptions = true @@ -6,4 +9,9 @@ RSpec.configure do |config| config.mock_with :rspec do |mocks| mocks.verify_partial_doubles = true end + + RSpec.configure do |config| + config.include Devise::TestHelpers, type: :controller + config.extend ControllerHelpers, type: :controller + end end