]> git.openstreetmap.org Git - rails.git/blobdiff - test/system/create_note_test.rb
Convert api element history actions to versions resources
[rails.git] / test / system / create_note_test.rb
index f3a77e5447cd9c3646b02368b1bad04b004ba858..410d5dfb7b0fdcaa0e0a42486445a2117cde4044 100644 (file)
@@ -1,6 +1,19 @@
 require "application_system_test_case"
 
 class CreateNoteTest < ApplicationSystemTestCase
 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")
 
   test "can create note" do
     visit new_note_path(:anchor => "map=18/0/0")
 
@@ -10,7 +23,7 @@ class CreateNoteTest < ApplicationSystemTestCase
       fill_in "text", :with => "Some newly added note description"
       click_on "Add Note"
 
       fill_in "text", :with => "Some newly added note description"
       click_on "Add Note"
 
-      assert_content "Unresolved note ##{Note.last.id}"
+      assert_content "Unresolved note #"
       assert_content "Some newly added note description"
     end
   end
       assert_content "Some newly added note description"
     end
   end
@@ -43,7 +56,7 @@ class CreateNoteTest < ApplicationSystemTestCase
 
       click_on "Add Note"
 
 
       click_on "Add Note"
 
-      assert_content "Unresolved note ##{Note.last.id}"
+      assert_content "Unresolved note #"
       assert_content "Some newly added note description"
     end
   end
       assert_content "Some newly added note description"
     end
   end
@@ -80,8 +93,32 @@ class CreateNoteTest < ApplicationSystemTestCase
   end
 
   test "encouragement to contribute appears after 10 created notes and disappears after login" do
   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 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}")
 
     encouragement_threshold.times do |n|
       visit new_note_path(:anchor => "map=16/0/#{0.001 * n}")
 
@@ -100,19 +137,58 @@ class CreateNoteTest < ApplicationSystemTestCase
     within_sidebar do
       assert_content(/already posted at least #{encouragement_threshold} anonymous note/)
     end
     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
 
     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
 
     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
+
+  def sign_up_with_google
+    OmniAuth.config.add_mock(:google,
+                             :uid => "123454321",
+                             :extra => { :id_info => { :openid_id => "http://localhost:1123/new.tester" } },
+                             :info => { :email => "google_user_account@example.com", :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
 end