about summary refs log tree commit diff
path: root/spec/services/post_status_service_spec.rb
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-01-21 20:03:04 +0100
committerEugen Rochko <eugen@zeonfederated.com>2019-01-21 20:03:04 +0100
commit061feb63ed852acb5d70e2678c9e63425e6ca71b (patch)
tree8526667c66959311b262405619771cad328a3aa3 /spec/services/post_status_service_spec.rb
parentdd8a00a3ccf4d73794ef110f8ca63955fa24c97a (diff)
Fix scheduled toot with media immediately creating a toot (#9894)
* Add test for not persisting status when attaching media to scheduled toot

* Prevent status used for validation from being persisted to the database

Fixes #9893

Thanks to tateisu for the help investigating this.
Diffstat (limited to 'spec/services/post_status_service_spec.rb')
-rw-r--r--spec/services/post_status_service_spec.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index 3774fed6f..680cebbcf 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -36,6 +36,20 @@ RSpec.describe PostStatusService, type: :service do
     expect(status.params['text']).to eq 'Hi future!'
   end
 
+  it 'does not immediately create a status when scheduling a status' do
+    account = Fabricate(:account)
+    media = Fabricate(:media_attachment)
+    future  = Time.now.utc + 2.hours
+
+    status = subject.call(account, text: 'Hi future!', media_ids: [media.id], scheduled_at: future)
+
+    expect(status).to be_a ScheduledStatus
+    expect(status.scheduled_at).to eq future
+    expect(status.params['text']).to eq 'Hi future!'
+    expect(media.reload.status).to be_nil
+    expect(Status.where(text: 'Hi future!').exists?).to be_falsey
+  end
+
   it 'creates response to the original status of boost' do
     boosted_status = Fabricate(:status)
     in_reply_to_status = Fabricate(:status, reblog: boosted_status)