1 # frozen_string_literal: true
3 require "application_system_test_case"
5 class UserLogoutTest < ApplicationSystemTestCase
6 test "Sign out via link" do
9 assert_no_content "Log In"
11 click_on user.display_name
13 assert_content "Log In"
16 test "Sign out via link with referer" do
20 assert_no_content "Log In"
22 click_on user.display_name
24 assert_content "Log In"
25 assert_content "Public GPS Traces"
28 test "Sign out via fallback page" do
29 sign_in_as(create(:user))
30 assert_no_content "Log In"
33 assert_content "Logout from OpenStreetMap"
36 assert_content "Log In"
39 test "Sign out via fallback page with referer" do
40 sign_in_as(create(:user))
41 assert_no_content "Log In"
43 visit logout_path(:referer => "/traces")
44 assert_content "Logout from OpenStreetMap"
47 assert_content "Log In"
48 assert_content "Public GPS Traces"
51 test "Sign out after navigating diary entries with Turbo pagination" do
52 create(:language, :code => "en")
53 create(:diary_entry, :title => "First Diary Entry")
54 create_list(:diary_entry, 20) # rubocop:disable FactoryBot/ExcessiveCreateList
56 check_sign_out_after_turbo_pagination diary_entries_path do
57 assert_no_link "First Diary Entry"
59 click_on "Older Entries", :match => :first
61 assert_link "First Diary Entry"
65 test "Sign out after navigating issues with Turbo pagination" do
66 first_target_user = create(:user, :display_name => "First Target User")
67 create(:issue, :reportable => first_target_user, :reported_user => first_target_user)
68 create_list(:issue, 50) # rubocop:disable FactoryBot/ExcessiveCreateList
70 check_sign_out_after_turbo_pagination issues_path do
71 assert_no_link "First Target User"
73 click_on "Older Issues", :match => :first
75 assert_link "First Target User"
79 test "Sign out after navigating traces with Turbo pagination" do
80 create(:trace, :fixture => "a", :name => "First Trace")
81 create_list(:trace, 20, :fixture => "a") # rubocop:disable FactoryBot/ExcessiveCreateList
83 check_sign_out_after_turbo_pagination traces_path do
84 assert_no_link "First Trace"
86 click_on "Older Traces", :match => :first
88 assert_link "First Trace"
92 test "Sign out after navigating changeset comments with Turbo pagination" do
94 create(:changeset_comment, :author => user, :body => "First Changeset Comment")
95 create_list(:changeset_comment, 20, :author => user) # rubocop:disable FactoryBot/ExcessiveCreateList
97 check_sign_out_after_turbo_pagination user_changeset_comments_path(user) do
98 assert_no_text "First Changeset Comment"
100 click_on "Older Comments", :match => :first
102 assert_text "First Changeset Comment"
106 test "Sign out after navigating diary comments with Turbo pagination" do
107 create(:language, :code => "en")
109 create(:diary_comment, :user => user, :body => "First Diary Comment")
110 create_list(:diary_comment, 20, :user => user) # rubocop:disable FactoryBot/ExcessiveCreateList
112 check_sign_out_after_turbo_pagination user_diary_comments_path(user) do
113 assert_no_text "First Diary Comment"
115 click_on "Older Comments", :match => :first
117 assert_text "First Diary Comment"
121 test "Sign out after navigating users with Turbo pagination" do
122 create(:user, :display_name => "First User")
123 create_list(:user, 50) # rubocop:disable FactoryBot/ExcessiveCreateList
125 check_sign_out_after_turbo_pagination users_list_path do
126 assert_no_link "First User"
128 click_on "Older Users", :match => :first
130 assert_link "First User"
134 test "Sign out after navigating user blocks with Turbo pagination" do
135 check_sign_out_after_turbo_pagination_on_block_pages user_blocks_path
138 test "Sign out after navigating issued user blocks with Turbo pagination" do
139 creator = create(:moderator_user)
140 check_sign_out_after_turbo_pagination_on_block_pages user_issued_blocks_path(creator), :creator => creator
143 test "Sign out after navigating received user blocks with Turbo pagination" do
144 receiver = create(:user)
145 check_sign_out_after_turbo_pagination_on_block_pages user_received_blocks_path(receiver), :receiver => receiver
150 def check_sign_out_after_turbo_pagination_on_block_pages(path, receiver: create(:user), creator: create(:moderator_user))
151 create(:user_block, :reason => "First User Block", :user => receiver, :creator => creator)
152 create_list(:user_block, 20, :user => receiver, :creator => creator) # rubocop:disable FactoryBot/ExcessiveCreateList
154 check_sign_out_after_turbo_pagination path do
155 assert_no_text "First User Block"
157 click_on "Older Blocks", :match => :first
159 assert_text "First User Block"
163 def check_sign_out_after_turbo_pagination(path, &)
164 with_forgery_protection do
165 user = create(:super_user)
170 assert_no_link "Log In"
172 within_content_body(&)
174 click_on user.display_name
181 def with_forgery_protection
182 saved_allow_forgery_protection = ActionController::Base.allow_forgery_protection
183 ActionController::Base.allow_forgery_protection = true
187 ActionController::Base.allow_forgery_protection = saved_allow_forgery_protection