Remove diary_entry and diary_comment fixtures, and refactor tests.

Note that you might need to empty the tables in your local test
database, since the removed fixtures may still linger there.
This commit is contained in:
Andy Allan 2016-09-14 12:41:58 +01:00
parent ea610c8c3c
commit f1713320c2
3 changed files with 61 additions and 131 deletions

View file

@ -1,7 +1,7 @@
require "test_helper" require "test_helper"
class DiaryEntryControllerTest < ActionController::TestCase class DiaryEntryControllerTest < ActionController::TestCase
fixtures :users, :user_roles, :diary_entries, :diary_comments, :languages, :friends fixtures :users, :user_roles, :languages, :friends
include ActionView::Helpers::NumberHelper include ActionView::Helpers::NumberHelper
@ -199,7 +199,7 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_edit def test_edit
entry = diary_entries(:normal_user_entry_1) entry = create(:diary_entry, :user_id => users(:normal_user).id)
# Make sure that you are redirected to the login page when you are # Make sure that you are redirected to the login page when you are
# not logged in, without and with the id of the entry you want to edit # not logged in, without and with the id of the entry you want to edit
@ -296,13 +296,14 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_edit_i18n def test_edit_i18n
get :edit, { :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_entry_1).id }, { :user => users(:normal_user).id } diary_entry = create(:diary_entry, :language_code => "en")
get :edit, { :display_name => users(:normal_user).display_name, :id => diary_entry.id }, { :user => users(:normal_user).id }
assert_response :success assert_response :success
assert_select "span[class=translation_missing]", false, "Missing translation in edit diary entry" assert_select "span[class=translation_missing]", false, "Missing translation in edit diary entry"
end end
def test_comment def test_comment
entry = diary_entries(:normal_user_entry_1) entry = create(:diary_entry, :user_id => users(:normal_user).id)
# Make sure that you are denied when you are not logged in # Make sure that you are denied when you are not logged in
post :comment, :display_name => entry.user.display_name, :id => entry.id post :comment, :display_name => entry.user.display_name, :id => entry.id
@ -356,7 +357,7 @@ class DiaryEntryControllerTest < ActionController::TestCase
def test_comment_spammy def test_comment_spammy
# Find the entry to comment on # Find the entry to comment on
entry = diary_entries(:normal_user_entry_1) entry = create(:diary_entry, :user_id => users(:normal_user).id)
# Generate some spammy content # Generate some spammy content
spammy_text = 1.upto(50).map { |n| "http://example.com/spam#{n}" }.join(" ") spammy_text = 1.upto(50).map { |n| "http://example.com/spam#{n}" }.join(" ")
@ -393,15 +394,22 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_list_all def test_list_all
diary_entry = create(:diary_entry)
geo_entry = create(:diary_entry, :latitude => 51.50763, :longitude => -0.10781)
public_entry = create(:diary_entry, :user_id => users(:public_user).id)
# Try a list of all diary entries # Try a list of all diary entries
get :list get :list
check_diary_list :normal_user_entry_1, :normal_user_geo_entry, :public_user_entry_1 check_diary_list diary_entry, geo_entry, public_entry
end end
def test_list_user def test_list_user
diary_entry = create(:diary_entry)
geo_entry = create(:diary_entry, :latitude => 51.50763, :longitude => -0.10781)
# Try a list of diary entries for a valid user # Try a list of diary entries for a valid user
get :list, :display_name => users(:normal_user).display_name get :list, :display_name => users(:normal_user).display_name
check_diary_list :normal_user_entry_1, :normal_user_geo_entry check_diary_list diary_entry, geo_entry
# Try a list of diary entries for an invalid user # Try a list of diary entries for an invalid user
get :list, :display_name => "No Such User" get :list, :display_name => "No Such User"
@ -410,6 +418,8 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_list_friends def test_list_friends
diary_entry = create(:diary_entry, :user_id => friends(:normal_user_with_second_user).friend_user_id)
# Try a list of diary entries for your friends when not logged in # Try a list of diary entries for your friends when not logged in
get :list, :friends => true get :list, :friends => true
assert_response :redirect assert_response :redirect
@ -417,12 +427,13 @@ class DiaryEntryControllerTest < ActionController::TestCase
# Try a list of diary entries for your friends when logged in # Try a list of diary entries for your friends when logged in
get :list, { :friends => true }, { :user => users(:normal_user).id } get :list, { :friends => true }, { :user => users(:normal_user).id }
check_diary_list :public_user_entry_1 check_diary_list diary_entry
get :list, { :friends => true }, { :user => users(:public_user).id } get :list, { :friends => true }, { :user => users(:public_user).id }
check_diary_list check_diary_list
end end
def test_list_nearby def test_list_nearby
diary_entry = create(:diary_entry, :user_id => users(:public_user).id)
# Try a list of diary entries for nearby users when not logged in # Try a list of diary entries for nearby users when not logged in
get :list, :nearby => true get :list, :nearby => true
assert_response :redirect assert_response :redirect
@ -430,19 +441,23 @@ class DiaryEntryControllerTest < ActionController::TestCase
# Try a list of diary entries for nearby users when logged in # Try a list of diary entries for nearby users when logged in
get :list, { :nearby => true }, { :user => users(:german_user).id } get :list, { :nearby => true }, { :user => users(:german_user).id }
check_diary_list :public_user_entry_1 check_diary_list diary_entry
get :list, { :nearby => true }, { :user => users(:public_user).id } get :list, { :nearby => true }, { :user => users(:public_user).id }
check_diary_list check_diary_list
end end
def test_list_language def test_list_language
diary_entry_en = create(:diary_entry, :language_code => "en")
diary_entry_en2 = create(:diary_entry, :language_code => "en")
diary_entry_de = create(:diary_entry, :language_code => "de")
# Try a list of diary entries in english # Try a list of diary entries in english
get :list, :language => "en" get :list, :language => "en"
check_diary_list :normal_user_entry_1, :public_user_entry_1 check_diary_list diary_entry_en, diary_entry_en2
# Try a list of diary entries in german # Try a list of diary entries in german
get :list, :language => "de" get :list, :language => "de"
check_diary_list :normal_user_geo_entry check_diary_list diary_entry_de
# Try a list of diary entries in slovenian # Try a list of diary entries in slovenian
get :list, :language => "sl" get :list, :language => "sl"
@ -450,6 +465,10 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_rss def test_rss
create(:diary_entry, :language_code => "en")
create(:diary_entry, :language_code => "en")
create(:diary_entry, :language_code => "de")
get :rss, :format => :rss get :rss, :format => :rss
assert_response :success, "Should be able to get a diary RSS" assert_response :success, "Should be able to get a diary RSS"
assert_select "rss", :count => 1 do assert_select "rss", :count => 1 do
@ -462,7 +481,11 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_rss_language def test_rss_language
get :rss, :language => diary_entries(:normal_user_entry_1).language_code, :format => :rss create(:diary_entry, :language_code => "en")
create(:diary_entry, :language_code => "en")
create(:diary_entry, :language_code => "de")
get :rss, :language => "en", :format => :rss
assert_response :success, "Should be able to get a specific language diary RSS" assert_response :success, "Should be able to get a specific language diary RSS"
assert_select "rss>channel>item", :count => 2 # , "Diary entries should be filtered by language" assert_select "rss>channel>item", :count => 2 # , "Diary entries should be filtered by language"
end end
@ -473,12 +496,18 @@ class DiaryEntryControllerTest < ActionController::TestCase
# end # end
def test_rss_language_with_no_entries def test_rss_language_with_no_entries
create(:diary_entry, :language_code => "en")
get :rss, :language => "sl", :format => :rss get :rss, :language => "sl", :format => :rss
assert_response :success, "Should be able to get a specific language diary RSS" assert_response :success, "Should be able to get a specific language diary RSS"
assert_select "rss>channel>item", :count => 0 # , "Diary entries should be filtered by language" assert_select "rss>channel>item", :count => 0 # , "Diary entries should be filtered by language"
end end
def test_rss_user def test_rss_user
create(:diary_entry, :user_id => users(:normal_user).id)
create(:diary_entry, :user_id => users(:normal_user).id)
create(:diary_entry, :user_id => users(:public_user).id)
get :rss, :display_name => users(:normal_user).display_name, :format => :rss get :rss, :display_name => users(:normal_user).display_name, :format => :rss
assert_response :success, "Should be able to get a specific users diary RSS" assert_response :success, "Should be able to get a specific users diary RSS"
assert_select "rss>channel>item", :count => 2 # , "Diary entries should be filtered by user" assert_select "rss>channel>item", :count => 2 # , "Diary entries should be filtered by user"
@ -500,20 +529,24 @@ class DiaryEntryControllerTest < ActionController::TestCase
def test_view def test_view
# Try a normal entry that should work # Try a normal entry that should work
get :view, :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_entry_1).id diary_entry = create(:diary_entry, :user_id => users(:normal_user).id)
get :view, :display_name => users(:normal_user).display_name, :id => diary_entry.id
assert_response :success assert_response :success
assert_template :view assert_template :view
# Try a deleted entry # Try a deleted entry
get :view, :display_name => users(:normal_user).display_name, :id => diary_entries(:deleted_entry).id diary_entry_deleted = create(:diary_entry, :user_id => users(:normal_user).id, :visible => false)
get :view, :display_name => users(:normal_user).display_name, :id => diary_entry_deleted.id
assert_response :not_found assert_response :not_found
# Try an entry by a suspended user # Try an entry by a suspended user
get :view, :display_name => users(:suspended_user).display_name, :id => diary_entries(:entry_by_suspended_user).id diary_entry_suspended = create(:diary_entry, :user_id => users(:suspended_user).id)
get :view, :display_name => users(:suspended_user).display_name, :id => diary_entry_suspended.id
assert_response :not_found assert_response :not_found
# Try an entry by a deleted user # Try an entry by a deleted user
get :view, :display_name => users(:deleted_user).display_name, :id => diary_entries(:entry_by_deleted_user).id diary_entry_deleted = create(:diary_entry, :user_id => users(:deleted_user).id)
get :view, :display_name => users(:deleted_user).display_name, :id => diary_entry_deleted.id
assert_response :not_found assert_response :not_found
end end
@ -557,22 +590,24 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
def test_hidecomment def test_hidecomment
diary_entry = create(:diary_entry, :user_id => users(:normal_user).id)
diary_comment = create(:diary_comment, :diary_entry => diary_entry)
# Try without logging in # Try without logging in
post :hidecomment, :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_geo_entry).id, :comment => diary_comments(:comment_for_geo_post).id post :hidecomment, :display_name => users(:normal_user).display_name, :id => diary_entry.id, :comment => diary_comment.id
assert_response :forbidden assert_response :forbidden
assert_equal true, DiaryComment.find(diary_comments(:comment_for_geo_post).id).visible assert_equal true, DiaryComment.find(diary_comment.id).visible
# Now try as a normal user # Now try as a normal user
post :hidecomment, { :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_geo_entry).id, :comment => diary_comments(:comment_for_geo_post).id }, { :user => users(:normal_user).id } post :hidecomment, { :display_name => users(:normal_user).display_name, :id => diary_entry.id, :comment => diary_comment.id }, { :user => users(:normal_user).id }
assert_response :redirect assert_response :redirect
assert_redirected_to :action => :view, :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_geo_entry).id assert_redirected_to :action => :view, :display_name => users(:normal_user).display_name, :id => diary_entry.id
assert_equal true, DiaryComment.find(diary_comments(:comment_for_geo_post).id).visible assert_equal true, DiaryComment.find(diary_comment.id).visible
# Finally try as an administrator # Finally try as an administrator
post :hidecomment, { :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_geo_entry).id, :comment => diary_comments(:comment_for_geo_post).id }, { :user => users(:administrator_user).id } post :hidecomment, { :display_name => users(:normal_user).display_name, :id => diary_entry.id, :comment => diary_comment.id }, { :user => users(:administrator_user).id }
assert_response :redirect assert_response :redirect
assert_redirected_to :action => :view, :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_geo_entry).id assert_redirected_to :action => :view, :display_name => users(:normal_user).display_name, :id => diary_entry.id
assert_equal false, DiaryComment.find(diary_comments(:comment_for_geo_post).id).visible assert_equal false, DiaryComment.find(diary_comment.id).visible
end end
def test_comments def test_comments
@ -585,6 +620,8 @@ class DiaryEntryControllerTest < ActionController::TestCase
end end
# Test a user with a comment # Test a user with a comment
create(:diary_comment, :user_id => users(:public_user).id)
get :comments, :display_name => users(:public_user).display_name get :comments, :display_name => users(:public_user).display_name
assert_response :success assert_response :success
assert_template :comments assert_template :comments
@ -610,7 +647,6 @@ class DiaryEntryControllerTest < ActionController::TestCase
assert_select "div.diary_post", entries.count assert_select "div.diary_post", entries.count
entries.each do |entry| entries.each do |entry|
entry = diary_entries(entry)
assert_select "a[href=?]", "/user/#{entry.user.display_name}/diary/#{entry.id}" assert_select "a[href=?]", "/user/#{entry.user.display_name}/diary/#{entry.id}"
end end
end end

View file

@ -1,35 +0,0 @@
comment_for_geo_post:
id: 1
diary_entry_id: 2
user_id: 2
body: Some comment text
created_at: "2008-11-08 09:45:34"
updated_at: "2008-11-08 10:34:34"
visible: true
comment_by_suspended_user:
id: 2
diary_entry_id: 2
user_id: 10
body: Some comment text
created_at: "2008-11-08 09:45:34"
updated_at: "2008-11-08 10:34:34"
visible: true
comment_by_deleted_user:
id: 3
diary_entry_id: 2
user_id: 11
body: Some comment text
created_at: "2008-11-08 09:45:34"
updated_at: "2008-11-08 10:34:34"
visible: true
hidden_comment:
id: 4
diary_entry_id: 2
user_id: 2
body: Some comment text
created_at: "2008-11-08 09:45:34"
updated_at: "2008-11-08 10:34:34"
visible: false

View file

@ -1,71 +0,0 @@
normal_user_entry_1:
id: 1
user_id: 1
title: Diary Entry 1
body: This is the body of diary entry 1.
created_at: "2008-11-07 17:43:34"
updated_at: "2008-11-07 17:43:34"
latitude:
longitude:
language_code: en
visible: true
normal_user_geo_entry:
id: 2
user_id: 1
title: Geo Entry 1
body: This is the body of a geo diary entry in London.
created_at: "2008-11-07 17:47:34"
updated_at: "2008-11-07 17:47:34"
latitude: 51.50763
longitude: -0.10781
language_code: de
visible: true
deleted_entry:
id: 3
user_id: 1
title: Deleted Entry 1
body: This is the body of a deleted diary entry.
created_at: "2008-11-07 17:43:34"
updated_at: "2008-11-07 17:43:34"
latitude:
longitude:
language_code: en
visible: false
entry_by_suspended_user:
id: 4
user_id: 10
title: Entry by suspended user
body: This is the body of a diary entry by a suspended user.
created_at: "2008-11-07 17:43:34"
updated_at: "2008-11-07 17:43:34"
latitude:
longitude:
language_code: en
visible: true
entry_by_deleted_user:
id: 5
user_id: 11
title: Entry by deleted user
body: This is the body of a diary entry by a deleted user.
created_at: "2008-11-07 17:43:34"
updated_at: "2008-11-07 17:43:34"
latitude:
longitude:
language_code: en
visible: true
public_user_entry_1:
id: 6
user_id: 2
title: Public User Diary Entry 1
body: This is the body of diary entry 1.
created_at: "2008-11-07 17:43:34"
updated_at: "2008-11-07 17:43:34"
latitude:
longitude:
language_code: en
visible: true