67 lines
2.0 KiB
Ruby
67 lines
2.0 KiB
Ruby
require 'test_helper'
|
|
|
|
class FavoritesControllerTest < ActionDispatch::IntegrationTest
|
|
context "The favorites controller" do
|
|
setup do
|
|
@user = create(:user)
|
|
@post = create(:post)
|
|
@faved_post = create(:post)
|
|
@faved_post.add_favorite!(@user)
|
|
end
|
|
|
|
context "index action" do
|
|
should "redirect the user_id param to an ordfav: search" do
|
|
get favorites_path(user_id: @user.id)
|
|
assert_redirected_to posts_path(tags: "ordfav:#{@user.name}", format: "html")
|
|
end
|
|
|
|
should "redirect members to an ordfav: search" do
|
|
get_auth favorites_path, @user
|
|
assert_redirected_to posts_path(tags: "ordfav:#{@user.name}", format: "html")
|
|
end
|
|
|
|
should "redirect anonymous users to the posts index" do
|
|
get favorites_path
|
|
assert_redirected_to posts_path(format: "html")
|
|
end
|
|
|
|
should "render for json" do
|
|
get favorites_path, as: :json
|
|
assert_response :success
|
|
end
|
|
end
|
|
|
|
context "create action" do
|
|
should "create a favorite for the current user" do
|
|
assert_difference("Favorite.count", 1) do
|
|
post_auth favorites_path(post_id: @post.id), @user, as: :javascript
|
|
assert_response :redirect
|
|
end
|
|
end
|
|
|
|
should "allow banned users to create favorites" do
|
|
assert_difference("Favorite.count", 1) do
|
|
post_auth favorites_path(post_id: @post.id), create(:banned_user), as: :javascript
|
|
assert_response :redirect
|
|
end
|
|
end
|
|
end
|
|
|
|
context "destroy action" do
|
|
should "remove the favorite from the current user" do
|
|
assert_difference("Favorite.count", -1) do
|
|
delete_auth favorite_path(@faved_post.id), @user, as: :javascript
|
|
assert_response :redirect
|
|
end
|
|
end
|
|
|
|
should "allow banned users to destroy favorites" do
|
|
assert_difference("Favorite.count", -1) do
|
|
delete_auth favorite_path(@faved_post.id), @user, as: :javascript
|
|
assert_response :redirect
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|