teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

修正

2020/08/30 00:40

投稿

tomsuma
tomsuma

スコア38

title CHANGED
File without changes
body CHANGED
@@ -193,4 +193,113 @@
193
193
  </div>
194
194
  </body>
195
195
 
196
+ ```
197
+
198
+
199
+
200
+ ```
201
+ books.rb
202
+
203
+ FactoryBot.define do
204
+ factory :book do
205
+ name { '人間失格' }
206
+ content { '紹介文' }
207
+ genre_id { '5' }
208
+ end
209
+ end
210
+ ```
211
+ ```
212
+ user.rb
213
+
214
+ FactoryBot.define do
215
+ factory :user do
216
+ nickname { 'suzuki' }
217
+ email { 'example@cmail.com' }
218
+ password { 111111 }
219
+ password_confirmation {password}
220
+ end
221
+ end
222
+ ```
223
+ ```
224
+ user.spec.rb
225
+
226
+ require 'rails_helper'
227
+
228
+ RSpec.describe 'ユーザー新規登録', type: :system do
229
+ before do
230
+ @user = FactoryBot.build(:user)
231
+ end
232
+ context 'ユーザー新規登録ができるとき' do
233
+ it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
234
+ # トップページに移動する
235
+ visit root_path
236
+ # 新規登録ページへ移動する
237
+ visit new_user_registration_path
238
+ # ユーザー情報を入力する
239
+ fill_in 'user_nickname', with: @user.nickname
240
+ fill_in 'user_email', with: @user.email
241
+ fill_in 'user_password', with: @user.password
242
+
243
+ # サインアップページへ遷移するボタンやログインページへ遷移するボタンが表示されていないことを確認する
244
+ expect(page).to have_no_content('新規登録')
245
+ expect(page).to have_no_content('ログイン')
246
+ end
247
+ end
248
+ context 'ユーザー新規登録ができないとき' do
249
+ it '誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる' do
250
+ # トップページに移動する
251
+ visit root_path
252
+ # 新規登録ページへ移動する
253
+ visit new_user_registration_path
254
+ # ユーザー情報を入力する
255
+ fill_in 'user_nickname', with: ""
256
+ fill_in 'user_email', with: ""
257
+ fill_in 'user_password', with: ""
258
+ fill_in 'user_password', with: ""
259
+ fill_in 'user_password', with: ""
260
+ # サインアップボタンを押してもユーザーモデルのカウントは上がらないことを確認する
261
+ expect{
262
+ find('input[name="commit"]').click
263
+ }.to change { User.count }.by(0)
264
+ # 新規登録ページへ戻されることを確認する
265
+ expect(current_path).to eq "/users"
266
+ end
267
+ end
268
+ end
269
+
270
+ RSpec.describe 'ログイン', type: :system do
271
+ before do
272
+ @user = FactoryBot.create(:user)
273
+ end
274
+ context 'ログインができるとき' do
275
+ it '保存されているユーザーの情報と合致すればログインができる' do
276
+ # トップページに移動する
277
+ visit root_path
278
+ # ログインページへ遷移する
279
+ visit new_user_session_path
280
+ # 正しいユーザー情報を入力する
281
+ fill_in 'user_email', with: @user.email
282
+ fill_in 'user_password', with: @user.password
283
+ # ログインボタンを押す
284
+ find('input[name="commit"]').click
285
+ # トップページへ遷移することを確認する
286
+ expect(current_path).to eq root_path
287
+ end
288
+ end
289
+ context 'ログインができないとき' do
290
+ it '保存されているユーザーの情報と合致しないとログインができない' do
291
+ # トップページに移動する
292
+ visit root_path
293
+ # ログインページへ遷移する
294
+ visit new_user_session_path
295
+ # ユーザー情報を入力する
296
+ fill_in 'user_email', with: ""
297
+ fill_in 'user_password', with: ""
298
+ # ログインボタンを押す
299
+ find('input[name="commit"]').click
300
+ # ログインページへ戻されることを確認する
301
+ expect(current_path).to eq new_user_session_path
302
+ end
303
+ end
304
+ end
196
305
  ```