Test that anonymous note encouragement disappears after signup

This commit is contained in:
Anton Khorev 2025-01-13 13:52:44 +03:00
parent fe214adbc6
commit 03c7b18fa8

View file

@ -1,6 +1,12 @@
require "application_system_test_case" require "application_system_test_case"
class CreateNoteTest < ApplicationSystemTestCase class CreateNoteTest < ApplicationSystemTestCase
include ActionMailer::TestHelper
def setup
stub_request(:get, /.*gravatar.com.*d=404/).to_return(:status => 404)
end
test "can create note" do test "can create note" do
visit new_note_path(:anchor => "map=18/0/0") visit new_note_path(:anchor => "map=18/0/0")
@ -80,8 +86,24 @@ class CreateNoteTest < ApplicationSystemTestCase
end end
test "encouragement to contribute appears after 10 created notes and disappears after login" do test "encouragement to contribute appears after 10 created notes and disappears after login" do
encouragement_threshold = 10 check_encouragement_while_creating_notes(10)
sign_in_as(create(:user))
check_no_encouragement_while_logging_out
end
test "encouragement to contribute appears after 10 created notes and disappears after signup" do
check_encouragement_while_creating_notes(10)
sign_up_with_email
check_no_encouragement_while_logging_out
end
private
def check_encouragement_while_creating_notes(encouragement_threshold)
encouragement_threshold.times do |n| encouragement_threshold.times do |n|
visit new_note_path(:anchor => "map=16/0/#{0.001 * n}") visit new_note_path(:anchor => "map=16/0/#{0.001 * n}")
@ -100,19 +122,44 @@ class CreateNoteTest < ApplicationSystemTestCase
within_sidebar do within_sidebar do
assert_content(/already posted at least #{encouragement_threshold} anonymous note/) assert_content(/already posted at least #{encouragement_threshold} anonymous note/)
end end
end
sign_in_as(create(:user)) def check_no_encouragement_while_logging_out
visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}") visit new_note_path(:anchor => "map=16/0/0")
within_sidebar do within_sidebar do
assert_no_content(/already posted at least \d+ anonymous note/) assert_no_content(/already posted at least \d+ anonymous note/)
end end
sign_out sign_out
visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}") visit new_note_path(:anchor => "map=16/0/0")
within_sidebar do within_sidebar do
assert_no_content(/already posted at least \d+ anonymous note/) assert_no_content(/already posted at least \d+ anonymous note/)
end end
end end
def sign_up_with_email
click_on "Sign Up"
within_content_body do
fill_in "Email", :with => "new_user_account@example.com"
fill_in "Display Name", :with => "new_user_account"
fill_in "Password", :with => "new_user_password"
fill_in "Confirm Password", :with => "new_user_password"
assert_emails 1 do
click_on "Sign Up"
end
end
email = ActionMailer::Base.deliveries.first
email_text = email.parts[0].parts[0].decoded
match = %r{/user/new_user_account/confirm\?confirm_string=\S+}.match(email_text)
assert_not_nil match
visit match[0]
assert_content "Welcome!"
end
end end