diff --git a/factories/users.rb b/factories/users.rb index d50eb0e..6c98ac9 100644 --- a/factories/users.rb +++ b/factories/users.rb @@ -4,5 +4,6 @@ FactoryBot.define do factory :user do email { Faker::Internet.email } password { Faker::Internet.password } + password_confirmation { password } end end diff --git a/spec/requests/users/create_spec.rb b/spec/requests/users/create_spec.rb new file mode 100644 index 0000000..f2a0ae7 --- /dev/null +++ b/spec/requests/users/create_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'POST /users' do + let(:user_attributes) { attributes_for :user } + + def make_request + post '/users', params: { user: user_attributes } + end + + specify do + expect { make_request }.to change(User, :count).from(0).to(1) + end + + context 'after request' do + before { make_request } + + specify do + expect(request).to redirect_to root_url + end + + specify do + expect(User.last).to have_attributes user_attributes.merge( + password: nil, + password_confirmation: nil, + ) + end + end +end diff --git a/spec/requests/users/sign_in/create_spec.rb b/spec/requests/users/sign_in/create_spec.rb new file mode 100644 index 0000000..0549971 --- /dev/null +++ b/spec/requests/users/sign_in/create_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'POST /users/sign_in' do + let!(:user) { create :user } + + let(:user_attributes) { { email: user.email, password: user.password } } + + def make_request + post '/users/sign_in', params: { user: user_attributes } + end + + specify do + expect { make_request }.not_to change(User, :count).from(1) + end + + context 'after request' do + before { make_request } + + specify do + expect(response).to redirect_to root_url + end + end +end