Skip to content

Commit

Permalink
Add basic coverage for VoteService class (mastodon#29334)
Browse files Browse the repository at this point in the history
  • Loading branch information
mjankowski authored and Ember-ruby committed Mar 19, 2024
1 parent ba6a5c0 commit 20cfb22
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions spec/services/vote_service_spec.rb
@@ -0,0 +1,40 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe VoteService do
describe '#call' do
subject { described_class.new.call(voter, poll, [0]) }

context 'with a poll and poll options' do
let(:poll) { Fabricate(:poll, account: account, options: %w(Fun UnFun)) }
let(:fun_vote) { Fabricate(:poll_vote, poll: poll) }
let(:not_fun_vote) { Fabricate(:poll_vote, poll: poll) }
let(:voter) { Fabricate(:account, domain: nil) }

context 'when the poll was created by a local account' do
let(:account) { Fabricate(:account, domain: nil) }

it 'stores the votes and distributes the poll' do
expect { subject }
.to change(PollVote, :count).by(1)

expect(ActivityPub::DistributePollUpdateWorker)
.to have_enqueued_sidekiq_job(poll.status.id)
end
end

context 'when the poll was created by a remote account' do
let(:account) { Fabricate(:account, domain: 'host.example') }

it 'stores the votes and processes delivery' do
expect { subject }
.to change(PollVote, :count).by(1)

expect(ActivityPub::DeliveryWorker)
.to have_enqueued_sidekiq_job(anything, voter.id, poll.account.inbox_url)
end
end
end
end
end

0 comments on commit 20cfb22

Please sign in to comment.