Files
danbooru/test/unit/post_archive_test.rb
evazion 763ac1a7e0 pools: stop maintaining pool category pseudotags in pool strings (#4160)
Stop maintaining pool category pseudo tags (pool:series, pool:collection)
in pool strings. They're no longer used and the changes to the
`Post#pools` method in dc4d2e54b caused issues with this.

Also allow Members to change the category of large pools again. This was
only restricted because maintaining these pseudotags forced us to update
every post in the pool whenever a pool's category was changed.
2019-09-08 23:28:02 -05:00

158 lines
4.8 KiB
Ruby

require 'test_helper'
class PostArchiveTest < ActiveSupport::TestCase
include PoolArchiveTestHelper
context "A post" do
setup do
travel_to(1.month.ago) do
@user = FactoryBot.create(:user)
end
CurrentUser.user = @user
CurrentUser.ip_addr = "127.0.0.1"
end
teardown do
CurrentUser.user = nil
CurrentUser.ip_addr = nil
end
context "#undo" do
setup do
PostArchive.sqs_service.stubs(:merge?).returns(false)
@post = FactoryBot.create(:post, :tag_string => "1")
@post.update(tag_string: "1 2")
@post.update(tag_string: "2 3")
end
subject { @post.versions.sort_by(&:id)[1] }
should "undo the changes" do
subject.undo!
@post.reload
assert_equal("3", @post.tag_string)
end
end
context "that has multiple versions: " do
setup do
PostArchive.sqs_service.stubs(:merge?).returns(false)
@post = FactoryBot.create(:post, :tag_string => "1")
@post.update(tag_string: "1 2")
@post.update(tag_string: "2 3")
end
context "a version record" do
setup do
@version = PostArchive.last
end
should "know its previous version" do
assert_not_nil(@version.previous)
assert_equal("1 2", @version.previous.tags)
end
end
end
context "that has been created" do
setup do
@parent = FactoryBot.create(:post)
@post = FactoryBot.create(:post, :tag_string => "aaa bbb ccc", :rating => "e", :parent => @parent, :source => "xyz")
end
should "also create a version" do
assert_equal(1, @post.versions.size)
@version = @post.versions.sort_by(&:id).last
assert_equal("aaa bbb ccc", @version.tags)
assert_equal(@post.rating, @version.rating)
assert_equal(@post.parent_id, @version.parent_id)
assert_equal(@post.source, @version.source)
end
end
context "that is tagged with a pool:<name> metatag" do
setup do
mock_pool_archive_service!
@pool = FactoryBot.create(:pool)
@post = FactoryBot.create(:post, tag_string: "tagme pool:#{@pool.id}")
end
should "create a version" do
assert_equal("tagme", @post.tag_string)
assert_equal("pool:#{@pool.id}", @post.pool_string)
assert_equal(1, @post.versions.size)
assert_equal("tagme", @post.versions.last.tags)
end
end
context "that should be merged" do
setup do
@parent = FactoryBot.create(:post)
@post = FactoryBot.create(:post, :tag_string => "aaa bbb ccc", :rating => "q", :source => "xyz")
end
should "delete the previous version" do
assert_equal(1, @post.versions.count)
@post.update(tag_string: "bbb ccc xxx", source: "")
@post.reload
assert_equal(1, @post.versions.count)
end
end
context "that has been updated" do
setup do
PostArchive.sqs_service.stubs(:merge?).returns(false)
@post = FactoryBot.create(:post, :tag_string => "aaa bbb ccc", :rating => "q", :source => "xyz")
@post.update(tag_string: "bbb ccc xxx", source: "")
end
should "also create a version" do
assert_equal(2, @post.versions.size)
@version = @post.versions.sort_by(&:id).last
assert_equal("bbb ccc xxx", @version.tags)
assert_equal("q", @version.rating)
assert_equal("", @version.source)
assert_nil(@version.parent_id)
end
should "not create a version if updating the post fails" do
@post.stubs(:set_tag_counts).raises(NotImplementedError)
assert_equal(2, @post.versions.size)
assert_raise(NotImplementedError) { @post.update(rating: "s") }
assert_equal(2, @post.versions.size)
end
should "should create a version if the rating changes" do
assert_difference("@post.versions.size", 1) do
@post.update(rating: "s")
assert_equal("s", @post.versions.sort_by(&:id).last.rating)
end
end
should "should create a version if the source changes" do
assert_difference("@post.versions.size", 1) do
@post.update(source: "blah")
assert_equal("blah", @post.versions.sort_by(&:id).last.source)
end
end
should "should create a version if the parent changes" do
assert_difference("@post.versions.size", 1) do
@parent = FactoryBot.create(:post)
@post.update(parent_id: @parent.id)
assert_equal(@parent.id, @post.versions.sort_by(&:id).last.parent_id)
end
end
should "should create a version if the tags change" do
assert_difference("@post.versions.size", 1) do
@post.update(tag_string: "blah")
assert_equal("blah", @post.versions.sort_by(&:id).last.tags)
end
end
end
end
end