67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| require 'rails_helper'
 | |
| 
 | |
| feature 'Search Snippets', feature: true do
 | |
|   scenario 'User searches for snippets by title' do
 | |
|     public_snippet = create(:personal_snippet, :public, title: 'Beginning and Middle')
 | |
|     private_snippet = create(:personal_snippet, :private, title: 'Middle and End')
 | |
| 
 | |
|     login_as private_snippet.author
 | |
|     visit dashboard_snippets_path
 | |
| 
 | |
|     page.within '.search' do
 | |
|       fill_in 'search', with: 'Middle'
 | |
|       click_button 'Go'
 | |
|     end
 | |
| 
 | |
|     click_link 'Titles and Filenames'
 | |
| 
 | |
|     expect(page).to have_link(public_snippet.title)
 | |
|     expect(page).to have_link(private_snippet.title)
 | |
|   end
 | |
| 
 | |
|   scenario 'User searches for snippet contents' do
 | |
|     create(:personal_snippet,
 | |
|            :public,
 | |
|            title: 'Many lined snippet',
 | |
|            content: <<-CONTENT.strip_heredoc
 | |
|              |line one
 | |
|              |line two
 | |
|              |line three
 | |
|              |line four
 | |
|              |line five
 | |
|              |line six
 | |
|              |line seven
 | |
|              |line eight
 | |
|              |line nine
 | |
|              |line ten
 | |
|              |line eleven
 | |
|              |line twelve
 | |
|              |line thirteen
 | |
|              |line fourteen
 | |
|            CONTENT
 | |
|           )
 | |
| 
 | |
|     login_as create(:user)
 | |
|     visit dashboard_snippets_path
 | |
| 
 | |
|     page.within '.search' do
 | |
|       fill_in 'search', with: 'line seven'
 | |
|       click_button 'Go'
 | |
|     end
 | |
| 
 | |
|     expect(page).to have_content('line seven')
 | |
| 
 | |
|     # 3 lines before the matched line should be visible
 | |
|     expect(page).to have_content('line six')
 | |
|     expect(page).to have_content('line five')
 | |
|     expect(page).to have_content('line four')
 | |
|     expect(page).not_to have_content('line three')
 | |
| 
 | |
|     # 3 lines after the matched line should be visible
 | |
|     expect(page).to have_content('line eight')
 | |
|     expect(page).to have_content('line nine')
 | |
|     expect(page).to have_content('line ten')
 | |
|     expect(page).not_to have_content('line eleven')
 | |
|   end
 | |
| end
 |