From f517f0db8e29150da6c59e506777124ff7463a8d Mon Sep 17 00:00:00 2001 From: Daniel Lin Date: Wed, 23 Nov 2016 10:50:37 -0800 Subject: [PATCH 1/4] Added rspec file for user controller --- spec/controllers/users_controller_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 spec/controllers/users_controller_spec.rb diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb new file mode 100644 index 0000000..e2c3d3b --- /dev/null +++ b/spec/controllers/users_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe UsersController, type: :controller do + +end From 932e674058673d727599882688d675c3d1556895 Mon Sep 17 00:00:00 2001 From: John Doe Date: Wed, 23 Nov 2016 10:51:45 -0800 Subject: [PATCH 2/4] added rspec user controller --- spec/controllers/users_controller_spec.rb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 spec/controllers/users_controller_spec.rb diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb new file mode 100644 index 0000000..4f2a0fe --- /dev/null +++ b/spec/controllers/users_controller_spec.rb @@ -0,0 +1,6 @@ +require 'rails_helper' + +RSpec.describe UsersController, type: :controller do + + +end From 073970849aa2e0bc41b72af7bceb92f2bad1a1b6 Mon Sep 17 00:00:00 2001 From: Daniel Lin Date: Thu, 24 Nov 2016 10:58:54 -0800 Subject: [PATCH 3/4] Implemented all the rspec for the User controller actions --- spec/controllers/users_controller_spec.rb | 64 +++++++++++++++++++++++ spec/rails_helper.rb | 2 + 2 files changed, 66 insertions(+) diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index e2c3d3b..6a2a0f7 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -1,5 +1,69 @@ require 'rails_helper' RSpec.describe UsersController, type: :controller do + describe '#index' do + it 'redirects to home page' do + get :index + expect(response).to redirect_to(root_path) + end + end + + let(:user){ create(:user) } + describe '#create' do + context 'with valid params' do + def valid_user + post :create, params: { user: attributes_for(:user)} + end + + it 'saves a record to the database' do + count_before = User.count + valid_user + + count_after = User.count + expect(count_after).to eq(count_before + 1) + end + + it 'saves session id of current user' do + # u = create(:user) + # expect(session[:user_id]).to eq(u.id) + + valid_user + expect(session[:user_id]).not_to eq(nil) + end + end + + context 'with invalid params' do + def invalid_user + post :create, params: { user: attributes_for(:user, email: nil)} + end + + it 'does not save a record to the database' do + count_before = User.count + invalid_user + + count_after = User.count + expect(count_after).to eq(count_before) + end + + it 'renders the new template' do + invalid_user + expect(response).to render_template(:new) + end + end + end + + describe '#show' do + it 'renders the show template' do + user = create(:user) + get :show, params: { id: user.id } + expect(response).to render_template(:show) + end + + it 'user id is passed' do + user = create(:user) + get :show, params: { id: user.id } + expect(assigns(:user)).to eq(user) + end + end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 6f1ab14..719725a 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -35,6 +35,8 @@ # instead of true. config.use_transactional_fixtures = true + config.include FactoryGirl::Syntax::Methods + # RSpec Rails can automatically mix in different behaviours to your tests # based on their file location, for example enabling you to call `get` and # `post` in specs under `spec/controllers`. From 9cdd758461a112d23e58d691700b764ad6c8bd5a Mon Sep 17 00:00:00 2001 From: John Doe Date: Thu, 24 Nov 2016 11:14:35 -0800 Subject: [PATCH 4/4] rspec users merging branch --- spec/controllers/users_controller_spec.rb | 43 +++++++++++++++++++++++ spec/rails_helper.rb | 2 ++ 2 files changed, 45 insertions(+) diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 5c9bd48..dd38cd6 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -1,6 +1,49 @@ require 'rails_helper' RSpec.describe UsersController, type: :controller do + # let(:user) {FactoryGirl.create :user} + describe '#index' do + it 'redirects the user to the home page(root_path)' do + get :index + # get the index action in the user controller + expect(response).to redirect_to(root_path) + end + end + let(:user){create(:user)} + describe '#create' do + context 'with valid params' do + def valid_user + post :create, params: {user: attributes_for(:user)} + end + + it 'saves a user to the database'do + count_before = User.count + valid_user + + count_after = User.count + expect(count_after).to equal(count_before + 1) + end + end + end + + let(:user){create(:user)} + describe '#create' do + context 'with invalid params' do + def invalid_user + post :create, params: {user: attributes_for(:user)} + end + + it 'does not save a user to the database' do + count_before = User.count + invalid_user + + count_after = User.count + expect(count_after).to equal(count_before) + end + + + end + end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 6f1ab14..719725a 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -35,6 +35,8 @@ # instead of true. config.use_transactional_fixtures = true + config.include FactoryGirl::Syntax::Methods + # RSpec Rails can automatically mix in different behaviours to your tests # based on their file location, for example enabling you to call `get` and # `post` in specs under `spec/controllers`.