aboutsummaryrefslogtreecommitdiff
path: root/test/system/searches_test.rb
blob: a400e71346f0e24c92cdba35fddb71038abc2691 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# frozen_string_literal: true

require 'application_system_test_case'

class SearchesTest < ApplicationSystemTestCase
  setup do
    # All actions will require the user to be logged in.
    sign_in!
  end

  test 'root url is searches#index, which contains all things plus the tabs we expect' do
    visit root_url

    # All searches are listed.
    assert_text I18n.t('searches.home')
    searches.each { |s| assert_text s.name }

    # All things are listed
    things.each { |t| assert_text t.title }
  end

  test 'the hidden menu should allow us to go into the searches#new url' do
    find('#toggle-hidden-global-menu').click
    assert_text I18n.t('searches.title')

    click_on I18n.t('searches.object')
    assert find('#search_body')
    assert page.current_path == new_search_path
  end

  test 'can perform a new search' do
    visit new_search_url

    # Fill in the body input and press enter, otherwise the javascript
    # controller won't fire up.
    fill_in 'search_body', with: 'Miquel'
    find('#search_body').native.send_keys(:return)

    # It's actually a pretty generous search: it should give us all thing and a
    # comment.
    assert_text I18n.t('searches.save')
    assert_text things(:thing1).title
    assert_text things(:thing2).title
    assert_text I18n.t('comments.title')
    assert_text tags(:tag1).name
  end

  test 'can save a new search' do
    visit new_search_url

    # Fill in the body input and press enter, otherwise the javascript
    # controller won't fire up.
    fill_in 'search_body', with: 'Autor'
    find('#search_body').native.send_keys(:return)

    # Hit the save button so the hidden form appears.
    assert_text I18n.t('searches.save')
    find('#save-search').click
    assert_text I18n.t('searches.public')

    fill_in 'Name', with: 'Nova cerca'
    click_on I18n.t('helpers.submit.create')

    assert_text 'Nova cerca'
    assert page.current_path == search_path(Search.find_by(name: 'Nova cerca'))
  end

  test 'can edit a search that is not the Home' do
    # Home cannot be edited.
    find('#toggle-hidden-global-menu').click
    assert_selector 'a', text: I18n.t('general.edit'), count: 0

    # Select search1
    click_on searches(:search1).name
    assert_selector 'a', text: things(:thing1).title, count: 2
    find('#toggle-hidden-global-menu').click

    # It can be edited!
    assert_text I18n.t('general.edit')
    click_on I18n.t('general.edit')

    # If you click on it, you will be on the edit page for it.
    assert find('#search_body')
    assert page.current_path == edit_search_path(searches(:search1))
  end

  test 'edit an existing search works' do
    visit edit_search_url(searches(:search1))

    find('#search_body').native.send_keys(:return)

    # Hit the save button so the hidden form appears.
    assert_text I18n.t('searches.save')
    find('#save-search').click
    assert_text I18n.t('searches.public')

    # Update the name.
    fill_in 'Name', with: 'Nova cerca'
    click_on I18n.t('helpers.submit.update')

    # We have been redirected to search#show, and the name has been refreshed.
    assert_selector 'a', text: searches(:search1).name, count: 0
    assert_text 'Nova cerca'
    assert page.current_path == search_path(searches(:search1))
  end

  test 'can delete a search that is not the Home' do
    # Home cannot be deleted.
    find('#toggle-hidden-global-menu').click
    assert_selector 'a', text: I18n.t('general.delete'), count: 0

    # Select search1
    click_on searches(:search1).name
    assert_selector 'a', text: things(:thing1).title, count: 2
    find('#toggle-hidden-global-menu').click

    # It can be deleted!
    assert_text I18n.t('general.delete')
    accept_alert { click_on I18n.t('general.delete') }
    assert_selector 'a', text: searches(:search1).name, count: 0
    assert Search.none?
  end
end