質問編集履歴

1

画像貼り付けた

2021/02/07 14:29

投稿

yukitodesu3
yukitodesu3

スコア10

test CHANGED
File without changes
test CHANGED
@@ -334,6 +334,352 @@
334
334
 
335
335
 
336
336
 
337
+ books_spec.rb
338
+
339
+
340
+
341
+ ```
342
+
343
+ require 'rails_helper'
344
+
345
+
346
+
347
+ describe '投稿のテスト' do
348
+
349
+ let!(:book) { create(:book,title:'hoge',body:'body') }
350
+
351
+ describe 'トップ画面(root_path)のテスト' do
352
+
353
+ before do
354
+
355
+ visit root_path
356
+
357
+ end
358
+
359
+ context '表示の確認' do
360
+
361
+ it 'トップ画面(root_path)に一覧ページへのリンクが表示されているか' do
362
+
363
+ expect(page).to have_link "", href: books_path
364
+
365
+ end
366
+
367
+ it 'root_pathが"/"であるか' do
368
+
369
+ expect(current_path).to eq('/')
370
+
371
+ end
372
+
373
+ end
374
+
375
+ end
376
+
377
+ describe "一覧画面のテスト" do
378
+
379
+ before do
380
+
381
+ visit books_path
382
+
383
+ end
384
+
385
+ context '一覧の表示とリンクの確認' do
386
+
387
+ it "bookの一覧表示(tableタグ)と投稿フォームが同一画面に表示されているか" do
388
+
389
+ expect(page).to have_selector 'table'
390
+
391
+ expect(page).to have_field 'book[title]'
392
+
393
+ expect(page).to have_field 'book[body]'
394
+
395
+ end
396
+
397
+ it "bookのタイトルと感想を表示し、詳細・編集・削除のリンクが表示されているか" do
398
+
399
+ (1..5).each do |i|
400
+
401
+ Book.create(title:'hoge'+i.to_s,body:'body'+i.to_s)
402
+
403
+ end
404
+
405
+ visit books_path
406
+
407
+ Book.all.each_with_index do |book,i|
408
+
409
+ j = i * 3
410
+
411
+ expect(page).to have_content book.title
412
+
413
+ expect(page).to have_content book.body
414
+
415
+ # Showリンク
416
+
417
+ show_link = find_all('a')[j]
418
+
419
+ expect(show_link.native.inner_text).to match(/show/i)
420
+
421
+ expect(show_link[:href]).to eq book_path(book)
422
+
423
+ # Editリンク
424
+
425
+ show_link = find_all('a')[j+1]
426
+
427
+ expect(show_link.native.inner_text).to match(/edit/i)
428
+
429
+ expect(show_link[:href]).to eq edit_book_path(book)
430
+
431
+ # Destroyリンク
432
+
433
+ show_link = find_all('a')[j+2]
434
+
435
+ expect(show_link.native.inner_text).to match(/destroy/i)
436
+
437
+ expect(show_link[:href]).to eq book_path(book)
438
+
439
+ end
440
+
441
+ end
442
+
443
+ it 'Create Bookボタンが表示される' do
444
+
445
+ expect(page).to have_button 'Create Book'
446
+
447
+ end
448
+
449
+ end
450
+
451
+ context '投稿処理に関するテスト' do
452
+
453
+ it '投稿に成功しサクセスメッセージが表示されるか' do
454
+
455
+ fill_in 'book[title]', with: Faker::Lorem.characters(number:5)
456
+
457
+ fill_in 'book[body]', with: Faker::Lorem.characters(number:20)
458
+
459
+ click_button 'Create Book'
460
+
461
+ expect(page).to have_content 'successfully'
462
+
463
+ end
464
+
465
+ it '投稿に失敗する' do
466
+
467
+ click_button 'Create Book'
468
+
469
+ expect(page).to have_content 'error'
470
+
471
+ expect(current_path).to eq('/books')
472
+
473
+ end
474
+
475
+ it '投稿後のリダイレクト先は正しいか' do
476
+
477
+ fill_in 'book[title]', with: Faker::Lorem.characters(number:5)
478
+
479
+ fill_in 'book[body]', with: Faker::Lorem.characters(number:20)
480
+
481
+ click_button 'Create Book'
482
+
483
+ expect(page).to have_current_path book_path(Book.last)
484
+
485
+ end
486
+
487
+ end
488
+
489
+ context 'book削除のテスト' do
490
+
491
+ it 'bookの削除' do
492
+
493
+ expect{ book.destroy }.to change{ Book.count }.by(-1)
494
+
495
+ # ※本来はダイアログのテストまで行うがココではデータが削除されることだけをテスト
496
+
497
+ end
498
+
499
+ end
500
+
501
+ end
502
+
503
+ describe '詳細画面のテスト' do
504
+
505
+ before do
506
+
507
+ visit book_path(book)
508
+
509
+ end
510
+
511
+ context '表示の確認' do
512
+
513
+ it '本のタイトルと感想が画面に表示されていること' do
514
+
515
+ expect(page).to have_content book.title
516
+
517
+ expect(page).to have_content book.body
518
+
519
+ end
520
+
521
+ it 'Editリンクが表示される' do
522
+
523
+ edit_link = find_all('a')[0]
524
+
525
+ expect(edit_link.native.inner_text).to match(/edit/i)
526
+
527
+ end
528
+
529
+ it 'Backリンクが表示される' do
530
+
531
+ back_link = find_all('a')[1]
532
+
533
+ expect(back_link.native.inner_text).to match(/back/i)
534
+
535
+ end
536
+
537
+ end
538
+
539
+ context 'リンクの遷移先の確認' do
540
+
541
+ it 'Editの遷移先は編集画面か' do
542
+
543
+ edit_link = find_all('a')[0]
544
+
545
+ edit_link.click
546
+
547
+ expect(current_path).to eq('/books/' + book.id.to_s + '/edit')
548
+
549
+ end
550
+
551
+ it 'Backの遷移先は一覧画面か' do
552
+
553
+ back_link = find_all('a')[1]
554
+
555
+ back_link.click
556
+
557
+ expect(page).to have_current_path books_path
558
+
559
+ end
560
+
561
+ end
562
+
563
+ end
564
+
565
+ describe '編集画面のテスト' do
566
+
567
+ before do
568
+
569
+ visit edit_book_path(book)
570
+
571
+ end
572
+
573
+ context '表示の確認' do
574
+
575
+ it '編集前のタイトルと感想がフォームに表示(セット)されている' do
576
+
577
+ expect(page).to have_field 'book[title]', with: book.title
578
+
579
+ expect(page).to have_field 'book[body]', with: book.body
580
+
581
+ end
582
+
583
+ it 'Update Bookボタンが表示される' do
584
+
585
+ expect(page).to have_button 'Update Book'
586
+
587
+ end
588
+
589
+ it 'Showリンクが表示される' do
590
+
591
+ show_link = find_all('a')[0]
592
+
593
+ expect(show_link.native.inner_text).to match(/show/i)
594
+
595
+ end
596
+
597
+ it 'Backリンクが表示される' do
598
+
599
+ back_link = find_all('a')[1]
600
+
601
+ expect(back_link.native.inner_text).to match(/back/i)
602
+
603
+ end
604
+
605
+ end
606
+
607
+ context 'リンクの遷移先の確認' do
608
+
609
+ it 'Showの遷移先は詳細画面か' do
610
+
611
+ show_link = find_all('a')[0]
612
+
613
+ show_link.click
614
+
615
+ expect(current_path).to eq('/books/' + book.id.to_s)
616
+
617
+ end
618
+
619
+ it 'Backの遷移先は一覧画面か' do
620
+
621
+ back_link = find_all('a')[1]
622
+
623
+ back_link.click
624
+
625
+ expect(page).to have_current_path books_path
626
+
627
+ end
628
+
629
+ end
630
+
631
+ context '更新処理に関するテスト' do
632
+
633
+ it '更新に成功しサクセスメッセージが表示されるか' do
634
+
635
+ fill_in 'book[title]', with: Faker::Lorem.characters(number:5)
636
+
637
+ fill_in 'book[body]', with: Faker::Lorem.characters(number:20)
638
+
639
+ click_button 'Update Book'
640
+
641
+ expect(page).to have_content 'successfully'
642
+
643
+ end
644
+
645
+ it '更新に失敗しエラーメッセージが表示されるか' do
646
+
647
+ fill_in 'book[title]', with: ""
648
+
649
+ fill_in 'book[body]', with: ""
650
+
651
+ click_button 'Update Book'
652
+
653
+ expect(page).to have_content 'error'
654
+
655
+ end
656
+
657
+ it '更新後のリダイレクト先は正しいか' do
658
+
659
+ fill_in 'book[title]', with: Faker::Lorem.characters(number:5)
660
+
661
+ fill_in 'book[body]', with: Faker::Lorem.characters(number:20)
662
+
663
+ click_button 'Update Book'
664
+
665
+ expect(page).to have_current_path book_path(book)
666
+
667
+ end
668
+
669
+ end
670
+
671
+ end
672
+
673
+ end
674
+
675
+ ```
676
+
677
+
678
+
679
+ ![イメージ説明](0114545212a8bcd447dbb27ab7fad049.png)
680
+
681
+
682
+
337
683
  試したこと
338
684
 
339
685
  ・コードの再確認