1# frozen_string_literal: true 2 3require 'spec_helper' 4 5RSpec.describe 'Snippets tab on a user profile', :js do 6 context 'when the user has snippets' do 7 let(:user) { create(:user) } 8 9 context 'pagination' do 10 let!(:snippets) { create_list(:snippet, 2, :public, author: user) } 11 12 before do 13 allow(Snippet).to receive(:default_per_page).and_return(1) 14 visit user_path(user) 15 page.within('.user-profile-nav') { click_link 'Snippets' } 16 wait_for_requests 17 end 18 19 it_behaves_like 'paginated snippets', remote: true 20 end 21 22 context 'list content' do 23 let!(:public_snippet) { create(:snippet, :public, author: user) } 24 let!(:internal_snippet) { create(:snippet, :internal, author: user) } 25 let!(:private_snippet) { create(:snippet, :private, author: user) } 26 let!(:other_snippet) { create(:snippet, :public) } 27 28 it 'contains only internal and public snippets of a user when a user is logged in' do 29 sign_in(create(:user)) 30 visit user_path(user) 31 page.within('.user-profile-nav') { click_link 'Snippets' } 32 wait_for_requests 33 34 expect(page).to have_selector('.snippet-row', count: 2) 35 36 expect(page).to have_content(public_snippet.title) 37 expect(page).to have_content(internal_snippet.title) 38 end 39 40 it 'contains only public snippets of a user when a user is not logged in' do 41 visit user_path(user) 42 page.within('.user-profile-nav') { click_link 'Snippets' } 43 wait_for_requests 44 45 expect(page).to have_selector('.snippet-row', count: 1) 46 expect(page).to have_content(public_snippet.title) 47 end 48 end 49 end 50end 51