Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/pull/5495'
Browse files Browse the repository at this point in the history
  • Loading branch information
tomhughes committed Jan 14, 2025
2 parents 9e67c26 + e9fd07a commit 914fff9
Showing 1 changed file with 113 additions and 0 deletions.
113 changes: 113 additions & 0 deletions test/system/create_note_test.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
require "application_system_test_case"

class CreateNoteTest < ApplicationSystemTestCase
include ActionMailer::TestHelper

def setup
OmniAuth.config.test_mode = true

stub_request(:get, /.*gravatar.com.*d=404/).to_return(:status => 404)
end

def teardown
OmniAuth.config.mock_auth[:google] = nil
OmniAuth.config.test_mode = false
end

test "can create note" do
visit new_note_path(:anchor => "map=18/0/0")

Expand Down Expand Up @@ -78,4 +91,104 @@ class CreateNoteTest < ApplicationSystemTestCase
end
end
end

test "encouragement to contribute appears after 10 created notes and disappears after login" do
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 email signup" do
check_encouragement_while_creating_notes(10)

sign_up_with_email

check_no_encouragement_while_logging_out
end

test "encouragement to contribute appears after 10 created notes and disappears after google signup" do
check_encouragement_while_creating_notes(10)

sign_up_with_google

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}")

within_sidebar do
assert_no_content(/already posted at least \d+ anonymous note/)

fill_in "text", :with => "new note ##{n + 1}"
click_on "Add Note"

assert_content "new note ##{n + 1}"
end
end

visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}")

within_sidebar do
assert_content(/already posted at least #{encouragement_threshold} anonymous note/)
end
end

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")

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 => "[email protected]"
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

def sign_up_with_google
OmniAuth.config.add_mock(:google,
:uid => "123454321",
:extra => { :id_info => { :openid_id => "http://localhost:1123/new.tester" } },
:info => { :email => "[email protected]", :name => "google_user_account" })

click_on "Sign Up"

within_content_body do
click_on "Log in with Google"
click_on "Sign Up"
end
end
end

0 comments on commit 914fff9

Please sign in to comment.