mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-21 01:53:41 +08:00
Drafts used to be deleted instead of being destroyed. The callbacks that
clean up the upload references were not being called. As a result, the
upload references were not cleaned up and uploads were not deleted
either. This has been partially fixed in 9655bf3e.
59 lines
1.6 KiB
Ruby
Vendored
59 lines
1.6 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
RSpec.describe DraftSequence do
|
|
fab!(:user)
|
|
fab!(:upload)
|
|
|
|
describe ".next" do
|
|
it "should produce next sequence for a key" do
|
|
expect(DraftSequence.next!(user, "test")).to eq 1
|
|
expect(DraftSequence.next!(user, "test")).to eq 2
|
|
end
|
|
|
|
it "should not produce next sequence for non-human user" do
|
|
user.id = -99_999
|
|
2.times { expect(DraftSequence.next!(user, "test")).to eq(0) }
|
|
end
|
|
|
|
it "deletes old drafts and associated upload references" do
|
|
Draft.set(
|
|
user,
|
|
Draft::NEW_TOPIC,
|
|
0,
|
|
{
|
|
reply: "[#{upload.original_filename}|attachment](#{upload.short_url})",
|
|
action: "createTopic",
|
|
title: "New topic with an upload",
|
|
categoryId: 1,
|
|
tags: [],
|
|
archetypeId: "regular",
|
|
metaData: nil,
|
|
composerTime: 10_000,
|
|
typingTime: 10_000,
|
|
}.to_json,
|
|
)
|
|
|
|
expect { DraftSequence.next!(user, Draft::NEW_TOPIC) }.to change { Draft.count }.by(
|
|
-1,
|
|
).and change { UploadReference.count }.by(-1).and change {
|
|
user.reload.user_stat.draft_count
|
|
}.by(-1)
|
|
end
|
|
end
|
|
|
|
describe ".current" do
|
|
it "should return 0 by default" do
|
|
expect(DraftSequence.current(user, "test")).to eq 0
|
|
end
|
|
|
|
it "should return nil for non-human user" do
|
|
user.id = -99_999
|
|
expect(DraftSequence.current(user, "test")).to eq(0)
|
|
end
|
|
|
|
it "should return the right sequence" do
|
|
expect(DraftSequence.next!(user, "test")).to eq(1)
|
|
expect(DraftSequence.current(user, "test")).to eq(1)
|
|
end
|
|
end
|
|
end
|