From: Andy Allan Date: Wed, 26 Oct 2016 10:41:18 +0000 (+0100) Subject: Replace messages fixtures with a factory. X-Git-Tag: live~3736^2 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/a280f72beead569784c6bf353131d10706dfab00 Replace messages fixtures with a factory. --- diff --git a/test/controllers/message_controller_test.rb b/test/controllers/message_controller_test.rb index 427519c32..60192abce 100644 --- a/test/controllers/message_controller_test.rb +++ b/test/controllers/message_controller_test.rb @@ -1,7 +1,7 @@ require "test_helper" class MessageControllerTest < ActionController::TestCase - fixtures :users, :messages + fixtures :users ## # test all routes which lead to this controller @@ -119,7 +119,7 @@ class MessageControllerTest < ActionController::TestCase assert_match /Test message body/, e.text_part.decoded assert_match /Test message body/, e.html_part.decoded ActionMailer::Base.deliveries.clear - m = Message.find(3) + m = Message.last assert_equal users(:normal_user).id, m.from_user_id assert_equal users(:public_user).id, m.to_user_id assert_in_delta Time.now, m.sent_on, 2 @@ -158,32 +158,34 @@ class MessageControllerTest < ActionController::TestCase ## # test the reply action def test_reply + unread_message = create(:message, :unread, :sender => users(:normal_user), :recipient => users(:public_user)) + # Check that the message reply page requires us to login - get :reply, :message_id => messages(:unread_message).id - assert_redirected_to login_path(:referer => reply_message_path(:message_id => messages(:unread_message).id)) + get :reply, :message_id => unread_message.id + assert_redirected_to login_path(:referer => reply_message_path(:message_id => unread_message.id)) # Login as the wrong user session[:user] = users(:second_public_user).id # Check that we can't reply to somebody else's message - get :reply, :message_id => messages(:unread_message).id - assert_redirected_to login_path(:referer => reply_message_path(:message_id => messages(:unread_message).id)) + get :reply, :message_id => unread_message.id + assert_redirected_to login_path(:referer => reply_message_path(:message_id => unread_message.id)) assert_equal "You are logged in as `pulibc_test2' but the message you have asked to reply to was not sent to that user. Please login as the correct user in order to reply.", flash[:notice] # Login as the right user session[:user] = users(:public_user).id # Check that the message reply page loads - get :reply, :message_id => messages(:unread_message).id + get :reply, :message_id => unread_message.id assert_response :success assert_template "new" - assert_select "title", "OpenStreetMap | Re: test message 1" + assert_select "title", "OpenStreetMap | Re: #{unread_message.title}" assert_select "form[action='#{new_message_path(:display_name => users(:normal_user).display_name)}']", :count => 1 do - assert_select "input#message_title[value='Re: test message 1']", :count => 1 + assert_select "input#message_title[value='Re: #{unread_message.title}']", :count => 1 assert_select "textarea#message_body", :count => 1 assert_select "input[type='submit'][value='Send']", :count => 1 end - assert_equal true, Message.find(messages(:unread_message).id).message_read + assert_equal true, Message.find(unread_message.id).message_read # Asking to reply to a message with no ID should fail assert_raise ActionController::UrlGenerationError do @@ -199,35 +201,37 @@ class MessageControllerTest < ActionController::TestCase ## # test the read action def test_read + unread_message = create(:message, :unread, :sender => users(:normal_user), :recipient => users(:public_user)) + # Check that the read message page requires us to login - get :read, :message_id => messages(:unread_message).id - assert_redirected_to login_path(:referer => read_message_path(:message_id => messages(:unread_message).id)) + get :read, :message_id => unread_message.id + assert_redirected_to login_path(:referer => read_message_path(:message_id => unread_message.id)) # Login as the wrong user session[:user] = users(:second_public_user).id # Check that we can't read the message - get :read, :message_id => messages(:unread_message).id - assert_redirected_to login_path(:referer => read_message_path(:message_id => messages(:unread_message).id)) + get :read, :message_id => unread_message.id + assert_redirected_to login_path(:referer => read_message_path(:message_id => unread_message.id)) assert_equal "You are logged in as `pulibc_test2' but the message you have asked to read was not sent by or to that user. Please login as the correct user in order to read it.", flash[:notice] # Login as the message sender session[:user] = users(:normal_user).id # Check that the message sender can read the message - get :read, :message_id => messages(:unread_message).id + get :read, :message_id => unread_message.id assert_response :success assert_template "read" - assert_equal false, Message.find(messages(:unread_message).id).message_read + assert_equal false, Message.find(unread_message.id).message_read # Login as the message recipient session[:user] = users(:public_user).id # Check that the message recipient can read the message - get :read, :message_id => messages(:unread_message).id + get :read, :message_id => unread_message.id assert_response :success assert_template "read" - assert_equal true, Message.find(messages(:unread_message).id).message_read + assert_equal true, Message.find(unread_message.id).message_read # Asking to read a message with no ID should fail assert_raise ActionController::UrlGenerationError do @@ -243,6 +247,7 @@ class MessageControllerTest < ActionController::TestCase ## # test the inbox action def test_inbox + read_message = create(:message, :read, :recipient => users(:normal_user)) # Check that the inbox page requires us to login get :inbox, :display_name => users(:normal_user).display_name assert_redirected_to login_path(:referer => inbox_path(:display_name => users(:normal_user).display_name)) @@ -256,7 +261,7 @@ class MessageControllerTest < ActionController::TestCase assert_template "inbox" assert_select "table.messages", :count => 1 do assert_select "tr", :count => 2 - assert_select "tr#inbox-#{messages(:read_message).id}.inbox-row", :count => 1 + assert_select "tr#inbox-#{read_message.id}.inbox-row", :count => 1 end # Check that we can't view somebody else's inbox when logged in @@ -267,6 +272,8 @@ class MessageControllerTest < ActionController::TestCase ## # test the outbox action def test_outbox + create(:message, :sender => users(:normal_user)) + # Check that the outbox page requires us to login get :outbox, :display_name => users(:normal_user).display_name assert_redirected_to login_path(:referer => outbox_path(:display_name => users(:normal_user).display_name)) @@ -291,15 +298,17 @@ class MessageControllerTest < ActionController::TestCase ## # test the mark action def test_mark + unread_message = create(:message, :unread, :sender => users(:normal_user), :recipient => users(:public_user)) + # Check that the marking a message requires us to login - post :mark, :message_id => messages(:unread_message).id + post :mark, :message_id => unread_message.id assert_response :forbidden # Login as a user with no messages session[:user] = users(:second_public_user).id # Check that marking a message we didn't send or receive fails - post :mark, :message_id => messages(:read_message).id + post :mark, :message_id => unread_message.id assert_response :not_found assert_template "no_such_message" @@ -307,26 +316,26 @@ class MessageControllerTest < ActionController::TestCase session[:user] = users(:public_user).id # Check that the marking a message read works - post :mark, :message_id => messages(:unread_message).id, :mark => "read" + post :mark, :message_id => unread_message.id, :mark => "read" assert_redirected_to inbox_path(:display_name => users(:public_user).display_name) - assert_equal true, Message.find(messages(:unread_message).id).message_read + assert_equal true, Message.find(unread_message.id).message_read # Check that the marking a message unread works - post :mark, :message_id => messages(:unread_message).id, :mark => "unread" + post :mark, :message_id => unread_message.id, :mark => "unread" assert_redirected_to inbox_path(:display_name => users(:public_user).display_name) - assert_equal false, Message.find(messages(:unread_message).id).message_read + assert_equal false, Message.find(unread_message.id).message_read # Check that the marking a message read via XHR works - xhr :post, :mark, :message_id => messages(:unread_message).id, :mark => "read" + xhr :post, :mark, :message_id => unread_message.id, :mark => "read" assert_response :success assert_template "mark" - assert_equal true, Message.find(messages(:unread_message).id).message_read + assert_equal true, Message.find(unread_message.id).message_read # Check that the marking a message unread via XHR works - xhr :post, :mark, :message_id => messages(:unread_message).id, :mark => "unread" + xhr :post, :mark, :message_id => unread_message.id, :mark => "unread" assert_response :success assert_template "mark" - assert_equal false, Message.find(messages(:unread_message).id).message_read + assert_equal false, Message.find(unread_message.id).message_read # Asking to mark a message with no ID should fail assert_raise ActionController::UrlGenerationError do @@ -342,15 +351,18 @@ class MessageControllerTest < ActionController::TestCase ## # test the delete action def test_delete + read_message = create(:message, :read, :recipient => users(:normal_user), :sender => users(:public_user)) + sent_message = create(:message, :unread, :recipient => users(:public_user), :sender => users(:normal_user)) + # Check that the deleting a message requires us to login - post :delete, :message_id => messages(:read_message).id + post :delete, :message_id => read_message.id assert_response :forbidden # Login as a user with no messages session[:user] = users(:second_public_user).id # Check that deleting a message we didn't send or receive fails - post :delete, :message_id => messages(:read_message).id + post :delete, :message_id => read_message.id assert_response :not_found assert_template "no_such_message" @@ -358,18 +370,18 @@ class MessageControllerTest < ActionController::TestCase session[:user] = users(:normal_user).id # Check that the deleting a received message works - post :delete, :message_id => messages(:read_message).id + post :delete, :message_id => read_message.id assert_redirected_to inbox_path(:display_name => users(:normal_user).display_name) assert_equal "Message deleted", flash[:notice] - m = Message.find(messages(:read_message).id) + m = Message.find(read_message.id) assert_equal true, m.from_user_visible assert_equal false, m.to_user_visible # Check that the deleting a sent message works - post :delete, :message_id => messages(:unread_message).id, :referer => outbox_path(:display_name => users(:normal_user).display_name) + post :delete, :message_id => sent_message.id, :referer => outbox_path(:display_name => users(:normal_user).display_name) assert_redirected_to outbox_path(:display_name => users(:normal_user).display_name) assert_equal "Message deleted", flash[:notice] - m = Message.find(messages(:unread_message).id) + m = Message.find(sent_message.id) assert_equal false, m.from_user_visible assert_equal true, m.to_user_visible diff --git a/test/controllers/user_controller_test.rb b/test/controllers/user_controller_test.rb index 14bea6374..409a93b4e 100644 --- a/test/controllers/user_controller_test.rb +++ b/test/controllers/user_controller_test.rb @@ -2,7 +2,6 @@ require "test_helper" class UserControllerTest < ActionController::TestCase api_fixtures - fixtures :messages ## # test all routes which lead to this controller @@ -1036,6 +1035,8 @@ class UserControllerTest < ActionController::TestCase end def test_api_details + create(:message, :read, :recipient => users(:normal_user)) + # check that nothing is returned when not logged in get :api_details assert_response :unauthorized diff --git a/test/factories/messages.rb b/test/factories/messages.rb new file mode 100644 index 000000000..75e65cdbf --- /dev/null +++ b/test/factories/messages.rb @@ -0,0 +1,21 @@ +FactoryGirl.define do + factory :message do + sequence(:title) { |n| "Message #{n}" } + sequence(:body) { |n| "Body text for message #{n}" } + sent_on Time.now + + # FIXME: needs user factory + from_user_id 1 + + # FIXME: needs user factory + to_user_id 2 + + trait :unread do + message_read false + end + + trait :read do + message_read true + end + end +end diff --git a/test/fixtures/messages.yml b/test/fixtures/messages.yml deleted file mode 100644 index 0a54cce87..000000000 --- a/test/fixtures/messages.yml +++ /dev/null @@ -1,21 +0,0 @@ -unread_message: - id: 1 - from_user_id: 1 - title: test message 1 - body: some body text - sent_on: "2008-05-01 12:34:56" - message_read: false - to_user_id: 2 - from_user_visible: true - to_user_visible: true - -read_message: - id: 2 - from_user_id: 2 - title: test message 2 - body: some body test - sent_on: "2008-05-02 12:45:23" - message_read: true - to_user_id: 1 - from_user_visible: true - to_user_visible: true diff --git a/test/models/message_test.rb b/test/models/message_test.rb index ff9f24da4..4f8c4b8e2 100644 --- a/test/models/message_test.rb +++ b/test/models/message_test.rb @@ -3,16 +3,9 @@ require "test_helper" class MessageTest < ActiveSupport::TestCase api_fixtures - fixtures :messages EURO = "\xe2\x82\xac".freeze # euro symbol - # This needs to be updated when new fixtures are added - # or removed. - def test_check_message_count - assert_equal 2, Message.count - end - def test_check_empty_message_fails message = Message.new assert !message.valid? @@ -23,14 +16,14 @@ class MessageTest < ActiveSupport::TestCase end def test_validating_msgs - message = messages(:unread_message) + message = create(:message, :unread) assert message.valid? - message = messages(:read_message) + message = create(:message, :read) assert message.valid? end def test_invalid_send_recipient - message = messages(:unread_message) + message = create(:message, :unread) message.sender = nil message.recipient = nil assert !message.valid? @@ -184,7 +177,7 @@ class MessageTest < ActiveSupport::TestCase private def make_message(char, count) - message = messages(:unread_message) + message = build(:message, :unread) message.title = char * count message end