1 require 'integration_helper'
2 require 'selenium-webdriver'
5 class SearchBoxTest < ActionDispatch::IntegrationTest
7 headless = Headless.new
9 Capybara.current_driver = :selenium
13 def verify_search_box user
14 if user && user['is_active']
15 # let's search for a valid uuid
16 within('.navbar-fixed-top') do
17 page.has_field?('search')
18 page.find_field('search').set user['uuid']
19 page.find('.glyphicon-search').click
22 # we should now be in the user's home project as a result of search
23 assert_selector "#Data_collections[data-object-uuid='#{user['uuid']}']", "Expected to be in user page after search click"
25 # let's search again for an invalid valid uuid
26 within('.navbar-fixed-top') do
27 search_for = String.new user['uuid']
29 page.find_field('search').set search_for
30 page.find('.glyphicon-search').click
33 # we should see 'not found' error page
34 assert page.has_text?('Not Found'), 'No text - Not Found'
35 assert page.has_link?('Report problem'), 'No text - Report problem'
36 click_link 'Report problem'
37 within '.modal-content' do
38 assert page.has_text?('Report a problem'), 'No text - Report a problem'
39 assert page.has_no_text?('Version / debugging info'), 'No text - Version / debugging info'
40 assert page.has_text?('Describe the problem'), 'No text - Describe the problem'
41 assert page.has_button?('Send problem report'), 'No button - Send problem report'
42 assert page.has_button?('Cancel'), 'No button - Cancel'
44 # enter a report text and click on report
45 page.find_field('report_issue_text').set 'my test report text'
46 click_button 'Send problem report'
48 # ajax success updated button texts and added footer message
49 assert page.has_no_button?('Send problem report'), 'Found button - Send problem report'
50 assert page.has_no_button?('Cancel'), 'Found button - Cancel'
51 assert page.has_text?('Report sent'), 'No text - Report sent'
52 assert page.has_button?('Close'), 'No text - Close'
53 assert page.has_text?('Thanks for reporting this issue'), 'No text - Thanks for reporting this issue'
58 # let's search for the anonymously accessible project
59 publicly_accessible_project = api_fixture('groups')['anonymously_accessible_project']
61 within('.navbar-fixed-top') do
62 # search again for the anonymously accessible project
63 page.find_field('search').set publicly_accessible_project['name'][0,10]
64 page.find('.glyphicon-search').click
67 within '.modal-content' do
68 assert page.has_text?('All projects'), 'No text - All projects'
69 assert page.has_text?('Search'), 'No text - Search'
70 assert page.has_text?('Cancel'), 'No text - Cancel'
71 assert_selector('div', text: publicly_accessible_project['name'])
72 find(:xpath, '//div[./span[contains(.,publicly_accessible_project["uuid"])]]').click
77 # seeing "Unrestricted public data" now
78 assert page.has_text?(publicly_accessible_project['name']), 'No text - publicly accessible project name'
79 assert page.has_text?(publicly_accessible_project['description']), 'No text - publicly accessible project description'
81 within('.navbar-fixed-top') do
82 page.has_no_field?('search')
89 ['inactive', api_fixture('users')['inactive']],
90 ['inactive_uninvited', api_fixture('users')['inactive_uninvited']],
91 ['active', api_fixture('users')['active']],
92 ['admin', api_fixture('users')['admin']],
93 ].each do |token, user|
95 test "test search box for user #{token}" do
96 visit page_with_token(token)
98 verify_search_box user