1 require "application_system_test_case"
3 class UserLogoutTest < ApplicationSystemTestCase
4 test "Sign out via link" do
7 assert_no_content "Log In"
9 click_on user.display_name
11 assert_content "Log In"
14 test "Sign out via link with referer" do
18 assert_no_content "Log In"
20 click_on user.display_name
22 assert_content "Log In"
23 assert_content "Public GPS Traces"
26 test "Sign out via fallback page" do
27 sign_in_as(create(:user))
28 assert_no_content "Log In"
31 assert_content "Logout from OpenStreetMap"
34 assert_content "Log In"
37 test "Sign out via fallback page with referer" do
38 sign_in_as(create(:user))
39 assert_no_content "Log In"
41 visit logout_path(:referer => "/traces")
42 assert_content "Logout from OpenStreetMap"
45 assert_content "Log In"
46 assert_content "Public GPS Traces"
49 test "Sign out after navigating diary entries with Turbo pagination" do
50 create(:language, :code => "en")
51 create(:diary_entry, :title => "First Diary Entry")
52 create_list(:diary_entry, 20) # rubocop:disable FactoryBot/ExcessiveCreateList
54 check_sign_out_after_turbo_pagination diary_entries_path do
55 assert_no_link "First Diary Entry"
57 click_on "Older Entries", :match => :first
59 assert_link "First Diary Entry"
63 test "Sign out after navigating issues with Turbo pagination" do
64 first_target_user = create(:user, :display_name => "First Target User")
65 create(:issue, :reportable => first_target_user, :reported_user => first_target_user)
66 create_list(:issue, 50) # rubocop:disable FactoryBot/ExcessiveCreateList
68 check_sign_out_after_turbo_pagination issues_path do
69 assert_no_link "First Target User"
71 click_on "Older Issues", :match => :first
73 assert_link "First Target User"
77 test "Sign out after navigating traces with Turbo pagination" do
78 create(:trace, :fixture => "a", :name => "First Trace")
79 create_list(:trace, 20, :fixture => "a") # rubocop:disable FactoryBot/ExcessiveCreateList
81 check_sign_out_after_turbo_pagination traces_path do
82 assert_no_link "First Trace"
84 click_on "Older Traces", :match => :first
86 assert_link "First Trace"
90 test "Sign out after navigating changeset comments with Turbo pagination" do
92 create(:changeset_comment, :author => user, :body => "First Changeset Comment")
93 create_list(:changeset_comment, 20, :author => user) # rubocop:disable FactoryBot/ExcessiveCreateList
95 check_sign_out_after_turbo_pagination user_changeset_comments_path(user) do
96 assert_no_text "First Changeset Comment"
98 click_on "Older Comments", :match => :first
100 assert_text "First Changeset Comment"
104 test "Sign out after navigating diary comments with Turbo pagination" do
105 create(:language, :code => "en")
107 create(:diary_comment, :user => user, :body => "First Diary Comment")
108 create_list(:diary_comment, 20, :user => user) # rubocop:disable FactoryBot/ExcessiveCreateList
110 check_sign_out_after_turbo_pagination user_diary_comments_path(user) do
111 assert_no_text "First Diary Comment"
113 click_on "Older Comments", :match => :first
115 assert_text "First Diary Comment"
119 test "Sign out after navigating users with Turbo pagination" do
120 create(:user, :display_name => "First User")
121 create_list(:user, 50) # rubocop:disable FactoryBot/ExcessiveCreateList
123 check_sign_out_after_turbo_pagination users_list_path do
124 assert_no_link "First User"
126 click_on "Older Users", :match => :first
128 assert_link "First User"
132 test "Sign out after navigating user blocks with Turbo pagination" do
133 check_sign_out_after_turbo_pagination_on_block_pages user_blocks_path
136 test "Sign out after navigating issued user blocks with Turbo pagination" do
137 creator = create(:moderator_user)
138 check_sign_out_after_turbo_pagination_on_block_pages user_issued_blocks_path(creator), :creator => creator
141 test "Sign out after navigating received user blocks with Turbo pagination" do
142 receiver = create(:user)
143 check_sign_out_after_turbo_pagination_on_block_pages user_received_blocks_path(receiver), :receiver => receiver
148 def check_sign_out_after_turbo_pagination_on_block_pages(path, receiver: create(:user), creator: create(:moderator_user))
149 create(:user_block, :reason => "First User Block", :user => receiver, :creator => creator)
150 create_list(:user_block, 20, :user => receiver, :creator => creator) # rubocop:disable FactoryBot/ExcessiveCreateList
152 check_sign_out_after_turbo_pagination path do
153 assert_no_text "First User Block"
155 click_on "Older Blocks", :match => :first
157 assert_text "First User Block"
161 def check_sign_out_after_turbo_pagination(path, &)
162 with_forgery_protection do
163 user = create(:super_user)
168 assert_no_link "Log In"
170 within_content_body(&)
172 click_on user.display_name
179 def with_forgery_protection
180 saved_allow_forgery_protection = ActionController::Base.allow_forgery_protection
181 ActionController::Base.allow_forgery_protection = true
185 ActionController::Base.allow_forgery_protection = saved_allow_forgery_protection