前提・実現したいこと
表題の通りです。
ログイン→詳細ページ→unlikeボタン(いいね数0の状態)を押すと→likesカウントが1増えるという状況を想定しています。
ローカルの画面上では上手くいっているのですが、なぜかunlikeをしてもlikesカウントが0のままのようで原因を特定できず困っています。
着目した方が良いポイントや必要な情報などありましたら是非教えてください。
Failure/Error: expect(@article.likes.count).to eq(1) expected: 1 got: 0
該当のソースコード
**詳細ページ** <div id="article_<%= @article.id %>"> <% if logged_in? %> <% if @current_user.liked_by?(@article.id) && %> <td> <%= link_to destroy_like_path(@article), class: "like-link", method: :DELETE, remote: true do %> <i class="fa fa-heart like-btn"></i> <% end %> </td> <% else %> <td> <%= link_to create_like_path(@article), class: "like-link", method: :POST, remote: true do %> <i class="fa fa-heart unlike-btn"></i> <% end %> </td> <% end %> <%= @article.likes.count %> <% end %> </div>
features
1require 'rails_helper' 2 3RSpec.describe "Likes", type: :feature do 4 before do 5 @article = FactoryBot.create(:article) 6 end 7 8 describe '#create,#destroy' do 9 it 'can do goot button any article' do 10 sign_in(@article.user) 11 visit article_path(@article.id) 12 find('.unlike-btn').click 13 expect(@article.likes.count).to eq(1) 14 end 15 end 16end
FactoryBot
1**articleのテストデータ** 2 3FactoryBot.define do 4 factory :article do 5 association :user 6 sequence(:title) { |n| "Title #{n}" } 7 content "text" 8 category "anime" 9 10 after(:build) do |article| 11 article.image.attach(io: File.open("spec/fixtures/files/sample.jpg"), filename: 'sample.jpg', content_type: 'image/jpg') 12 end 13 end 14end
support
1module SignInSupport 2 def sign_in(user) 3 visit root_path 4 5 click_link "ログイン" 6 fill_in "user[email]", with: user.email 7 fill_in "user[password]", with: user.password 8 find('input[name="commit"]').click 9 10 expect(current_path).to eq(root_path) 11 end 12end 13 14RSpec.configure do|config| 15 config.include SignInSupport 16end
いいね機能のコード
stylesheet
1.like-link { 2 text-decoration: none!important; 3} 4 5.like-link:hover { 6 background-color: #fff!important; 7} 8 9.like-btn { 10 font-size: 15px; 11 color: #808080; 12} 13 14.unlike-btn { 15 font-size: 15px; 16 color: #e54747; 17}
**create.js destory.js** document.getElementById('article_<%= @article.id %>').innerHTML = '<%= j(render @article) %>'
補足情報(FW/ツールのバージョンなど)
rails -v 6.0.0
ruby -v 2.6.3
RSpec -v 3.10
現状の統合テストはこちらの記事を参照しています
https://qiita.com/narimiya/items/477e30fe9a3aeb747282
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/07 11:33
2021/12/08 01:43