diff options
author | Claire <claire.github-309c@sitedethib.com> | 2023-04-22 10:06:11 +0200 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2023-04-22 10:06:11 +0200 |
commit | abfdafef1ededdb87f018414edd6b25fa9a70525 (patch) | |
tree | 7a9855d79d125333a6b1307215b73dd507475320 /spec/services | |
parent | f30c5e7f15f967019245d2c78f3c2e89800eb838 (diff) | |
parent | 4db8230194258a9a1c3d17d7261608515f3f2067 (diff) |
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `app/controllers/auth/setup_controller.rb`: Upstream removed a method close to a glitch-soc theming-related method. Removed the method like upstream did.
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/reblog_service_spec.rb | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb index fdf5ec923..2ad6d30f6 100644 --- a/spec/services/reblog_service_spec.rb +++ b/spec/services/reblog_service_spec.rb @@ -35,13 +35,25 @@ RSpec.describe ReblogService, type: :service do end context 'when the reblogged status is discarded in the meantime' do - let(:status) { Fabricate(:status, account: alice, visibility: :public) } + let(:status) { Fabricate(:status, account: alice, visibility: :public, text: 'discard-status-text') } + # Add a callback to discard the status being reblogged after the + # validations pass but before the database commit is executed. before do - # Update the in-database attribute without reflecting the change in - # the object. This cannot simulate all race conditions, but it is - # pretty close. - Status.where(id: status.id).update_all(deleted_at: Time.now.utc) # rubocop:disable Rails/SkipsModelValidations + Status.class_eval do + before_save :discard_status + def discard_status + Status + .where(id: reblog_of_id) + .where(text: 'discard-status-text') + .update_all(deleted_at: Time.now.utc) # rubocop:disable Rails/SkipsModelValidations + end + end + end + + # Remove race condition simulating `discard_status` callback. + after do + Status._save_callbacks.delete(:discard_status) end it 'raises an exception' do |