質問編集履歴

1

修正

2020/08/30 00:40

投稿

tomsuma
tomsuma

スコア38

test CHANGED
File without changes
test CHANGED
@@ -389,3 +389,221 @@
389
389
 
390
390
 
391
391
  ```
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+ ```
400
+
401
+ books.rb
402
+
403
+
404
+
405
+ FactoryBot.define do
406
+
407
+ factory :book do
408
+
409
+ name { '人間失格' }
410
+
411
+ content { '紹介文' }
412
+
413
+ genre_id { '5' }
414
+
415
+ end
416
+
417
+ end
418
+
419
+ ```
420
+
421
+ ```
422
+
423
+ user.rb
424
+
425
+
426
+
427
+ FactoryBot.define do
428
+
429
+ factory :user do
430
+
431
+ nickname { 'suzuki' }
432
+
433
+ email { 'example@cmail.com' }
434
+
435
+ password { 111111 }
436
+
437
+ password_confirmation {password}
438
+
439
+ end
440
+
441
+ end
442
+
443
+ ```
444
+
445
+ ```
446
+
447
+ user.spec.rb
448
+
449
+
450
+
451
+ require 'rails_helper'
452
+
453
+
454
+
455
+ RSpec.describe 'ユーザー新規登録', type: :system do
456
+
457
+ before do
458
+
459
+ @user = FactoryBot.build(:user)
460
+
461
+ end
462
+
463
+ context 'ユーザー新規登録ができるとき' do
464
+
465
+ it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
466
+
467
+ # トップページに移動する
468
+
469
+ visit root_path
470
+
471
+ # 新規登録ページへ移動する
472
+
473
+ visit new_user_registration_path
474
+
475
+ # ユーザー情報を入力する
476
+
477
+ fill_in 'user_nickname', with: @user.nickname
478
+
479
+ fill_in 'user_email', with: @user.email
480
+
481
+ fill_in 'user_password', with: @user.password
482
+
483
+
484
+
485
+ # サインアップページへ遷移するボタンやログインページへ遷移するボタンが表示されていないことを確認する
486
+
487
+ expect(page).to have_no_content('新規登録')
488
+
489
+ expect(page).to have_no_content('ログイン')
490
+
491
+ end
492
+
493
+ end
494
+
495
+ context 'ユーザー新規登録ができないとき' do
496
+
497
+ it '誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる' do
498
+
499
+ # トップページに移動する
500
+
501
+ visit root_path
502
+
503
+ # 新規登録ページへ移動する
504
+
505
+ visit new_user_registration_path
506
+
507
+ # ユーザー情報を入力する
508
+
509
+ fill_in 'user_nickname', with: ""
510
+
511
+ fill_in 'user_email', with: ""
512
+
513
+ fill_in 'user_password', with: ""
514
+
515
+ fill_in 'user_password', with: ""
516
+
517
+ fill_in 'user_password', with: ""
518
+
519
+ # サインアップボタンを押してもユーザーモデルのカウントは上がらないことを確認する
520
+
521
+ expect{
522
+
523
+ find('input[name="commit"]').click
524
+
525
+ }.to change { User.count }.by(0)
526
+
527
+ # 新規登録ページへ戻されることを確認する
528
+
529
+ expect(current_path).to eq "/users"
530
+
531
+ end
532
+
533
+ end
534
+
535
+ end
536
+
537
+
538
+
539
+ RSpec.describe 'ログイン', type: :system do
540
+
541
+ before do
542
+
543
+ @user = FactoryBot.create(:user)
544
+
545
+ end
546
+
547
+ context 'ログインができるとき' do
548
+
549
+ it '保存されているユーザーの情報と合致すればログインができる' do
550
+
551
+ # トップページに移動する
552
+
553
+ visit root_path
554
+
555
+ # ログインページへ遷移する
556
+
557
+ visit new_user_session_path
558
+
559
+ # 正しいユーザー情報を入力する
560
+
561
+ fill_in 'user_email', with: @user.email
562
+
563
+ fill_in 'user_password', with: @user.password
564
+
565
+ # ログインボタンを押す
566
+
567
+ find('input[name="commit"]').click
568
+
569
+ # トップページへ遷移することを確認する
570
+
571
+ expect(current_path).to eq root_path
572
+
573
+ end
574
+
575
+ end
576
+
577
+ context 'ログインができないとき' do
578
+
579
+ it '保存されているユーザーの情報と合致しないとログインができない' do
580
+
581
+ # トップページに移動する
582
+
583
+ visit root_path
584
+
585
+ # ログインページへ遷移する
586
+
587
+ visit new_user_session_path
588
+
589
+ # ユーザー情報を入力する
590
+
591
+ fill_in 'user_email', with: ""
592
+
593
+ fill_in 'user_password', with: ""
594
+
595
+ # ログインボタンを押す
596
+
597
+ find('input[name="commit"]').click
598
+
599
+ # ログインページへ戻されることを確認する
600
+
601
+ expect(current_path).to eq new_user_session_path
602
+
603
+ end
604
+
605
+ end
606
+
607
+ end
608
+
609
+ ```