From: Anton Khorev Date: Mon, 13 Jan 2025 10:52:44 +0000 (+0300) Subject: Test that anonymous note encouragement disappears after signup X-Git-Tag: live~9^2~1 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/03c7b18fa8058124fd8b8c6473bfc5f9ce72ed8c Test that anonymous note encouragement disappears after signup --- diff --git a/test/system/create_note_test.rb b/test/system/create_note_test.rb index f3a77e544..b92f7f9b1 100644 --- a/test/system/create_note_test.rb +++ b/test/system/create_note_test.rb @@ -1,6 +1,12 @@ require "application_system_test_case" 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 visit new_note_path(:anchor => "map=18/0/0") @@ -80,8 +86,24 @@ class CreateNoteTest < ApplicationSystemTestCase end 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| visit new_note_path(:anchor => "map=16/0/#{0.001 * n}") @@ -100,19 +122,44 @@ class CreateNoteTest < ApplicationSystemTestCase within_sidebar do assert_content(/already posted at least #{encouragement_threshold} anonymous note/) end + end - sign_in_as(create(:user)) - visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}") + def check_no_encouragement_while_logging_out + visit new_note_path(:anchor => "map=16/0/0") within_sidebar do assert_no_content(/already posted at least \d+ anonymous note/) end 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 assert_no_content(/already posted at least \d+ anonymous note/) 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