12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- require 'rails_helper'
- RSpec.describe Web::PushSubscription, type: :model do
- let(:account) { Fabricate(:account) }
- let(:policy) { 'all' }
- let(:data) do
- {
- policy: policy,
- alerts: {
- mention: true,
- reblog: false,
- follow: true,
- follow_request: false,
- favourite: true,
- },
- }
- end
- subject { described_class.new(data: data) }
- describe '#pushable?' do
- let(:notification_type) { :mention }
- let(:notification) { Fabricate(:notification, account: account, type: notification_type) }
- %i(mention reblog follow follow_request favourite).each do |type|
- context "when notification is a #{type}" do
- let(:notification_type) { type }
- it "returns boolean corresponding to alert setting" do
- expect(subject.pushable?(notification)).to eq data[:alerts][type]
- end
- end
- end
- context 'when policy is all' do
- let(:policy) { 'all' }
- it 'returns true' do
- expect(subject.pushable?(notification)).to eq true
- end
- end
- context 'when policy is none' do
- let(:policy) { 'none' }
- it 'returns false' do
- expect(subject.pushable?(notification)).to eq false
- end
- end
- context 'when policy is followed' do
- let(:policy) { 'followed' }
- context 'and notification is from someone you follow' do
- before do
- account.follow!(notification.from_account)
- end
- it 'returns true' do
- expect(subject.pushable?(notification)).to eq true
- end
- end
- context 'and notification is not from someone you follow' do
- it 'returns false' do
- expect(subject.pushable?(notification)).to eq false
- end
- end
- end
- context 'when policy is follower' do
- let(:policy) { 'follower' }
- context 'and notification is from someone who follows you' do
- before do
- notification.from_account.follow!(account)
- end
- it 'returns true' do
- expect(subject.pushable?(notification)).to eq true
- end
- end
- context 'and notification is not from someone who follows you' do
- it 'returns false' do
- expect(subject.pushable?(notification)).to eq false
- end
- end
- end
- end
- end
|