|
31 | 31 | expect(page.all(:css, 'tbody tr', count: 1))
|
32 | 32 | end
|
33 | 33 |
|
| 34 | + scenario 'can filter by sponsor' do |
| 35 | + # Single workshop |
| 36 | + Fabricate(:workshop_sponsor, sponsor: sponsor) |
| 37 | + # Multiple works with the same sponsor and chapter |
| 38 | + chapter = Fabricate(:chapter) |
| 39 | + 5.times do |
| 40 | + Fabricate(:workshop_sponsor, sponsor: sponsor2, workshop: Fabricate(:workshop_no_sponsor, chapter: chapter)) |
| 41 | + end |
| 42 | + |
| 43 | + visit admin_sponsors_path |
| 44 | + |
| 45 | + expect(page).to have_content(sponsor.name) |
| 46 | + expect(page).to have_content(sponsor2.name) |
| 47 | + |
| 48 | + expect(page.all(:css, 'tbody tr', count: 2)) |
| 49 | + |
| 50 | + # Make sure both sponsors can be filtered by |
| 51 | + [sponsor.name, sponsor2.name].each do |name| |
| 52 | + fill_in 'sponsors_search[name]', with: name |
| 53 | + click_on 'Filter' |
| 54 | + |
| 55 | + expect(page.all(:css, 'tbody tr', count: 1)) |
| 56 | + end |
| 57 | + |
| 58 | + # Invalid sponsor name should return no results |
| 59 | + fill_in 'sponsors_search[name]', with: 'this-sponsor-does-not-exist' |
| 60 | + click_on 'Filter' |
| 61 | + |
| 62 | + expect(page.all(:css, 'tbody tr', count: 0)) |
| 63 | + expect(page).to have_content('No sponsors found') |
| 64 | + end |
| 65 | + |
34 | 66 | scenario 'can clear filtering form' do
|
35 | 67 | sponsored_workshop = Fabricate(:workshop_sponsor, sponsor: sponsor).workshop
|
36 | 68 | hosted_workshop = Fabricate(:workshop_sponsor, sponsor: sponsor2, host: true).workshop
|
|
0 commit comments