Files
danbooru/test/unit/application_record.rb
evazion e72446463e Fix #4901: Duplicate disapprovals
* Add uniqueness constraint on post_disapprovals (user_id, post_id).
* Add fix script to remove existing duplicates.
2021-10-12 20:22:00 -05:00

65 lines
2.0 KiB
Ruby

require 'test_helper'
class ApplicationRecordTest < ActiveSupport::TestCase
setup do
@tags = FactoryBot.create_list(:tag, 3, post_count: 1)
end
context "ApplicationRecord#search" do
should "support the id param" do
assert_equal([@tags.first], Tag.search(id: @tags.first.id))
end
should "support ranges in the id param" do
assert_equal(@tags.reverse, Tag.search(id: ">=1"))
assert_equal(@tags.reverse, Tag.search(id: "#{@tags[0].id}..#{@tags[2].id}"))
assert_equal(@tags.reverse, Tag.search(id: @tags.map(&:id).join(",")))
end
should "support the created_at and updated_at params" do
assert_equal(@tags.reverse, Tag.search(created_at: ">=#{@tags.first.created_at}"))
assert_equal(@tags.reverse, Tag.search(updated_at: ">=#{@tags.first.updated_at}"))
end
end
context "ApplicationRecord#parallel_each" do
context "in threaded mode" do
should "set CurrentUser correctly" do
@user1 = create(:user)
@user2 = create(:user)
CurrentUser.scoped(@user1, "1.1.1.1") do
Tag.parallel_each do |tag|
assert_equal(@user1, CurrentUser.user)
assert_equal("1.1.1.1", CurrentUser.ip_addr)
CurrentUser.scoped(@user2, "2.2.2.2") do
assert_equal(@user2, CurrentUser.user)
assert_equal("2.2.2.2", CurrentUser.ip_addr)
end
assert_equal(@user1, CurrentUser.user)
assert_equal("1.1.1.1", CurrentUser.ip_addr)
end
end
end
end
end
context "ApplicationRecord#destroy_duplicates!" do
should "destroy all duplicates" do
@post1 = create(:post, score: 42)
@post2 = create(:post, score: 42)
@post3 = create(:post, score: 42)
@post4 = create(:post, score: 23)
Post.destroy_duplicates!(:score)
assert_equal(true, Post.exists?(@post1.id))
assert_equal(false, Post.exists?(@post2.id))
assert_equal(false, Post.exists?(@post3.id))
assert_equal(true, Post.exists?(@post4.id))
end
end
end