Files
grecia/spec/models/flag_spec.rb
kikito 909dfb4ce3 Several renamings
InappropiateFlag -> Flag
x.flag_as_inappropiate -> x.flag
x.undo_flag_as_inappropiate -> x.unflag
X.flagged_as_inappropiate -> x.flagged
flag-as-inappropiate-actions views & css -> flag-actions views & css
2015-08-27 10:48:49 +02:00

57 lines
1.6 KiB
Ruby

require 'rails_helper'
describe Flag do
let(:user) { create(:user) }
let(:comment) { create(:comment) }
describe '.flag!' do
it 'creates a flag when there is none' do
expect { described_class.flag!(user, comment) }.to change{ Flag.count }.by(1)
expect(Flag.last.user).to eq(user)
expect(Flag.last.flaggable).to eq(comment)
end
it 'raises an error if the flag has already been created' do
described_class.flag!(user, comment)
expect { described_class.flag!(user, comment) }.to raise_error(Flag::AlreadyFlaggedError)
end
it 'increases the flag count' do
expect { described_class.flag!(user, comment) }.to change{ comment.reload.flags_count }.by(1)
end
end
describe '.unflag!' do
it 'raises an error if the flag does not exist' do
expect { described_class.unflag!(user, comment) }.to raise_error(Flag::NotFlaggedError)
end
describe 'when the flag already exists' do
before(:each) { described_class.flag!(user, comment) }
it 'removes an existing flag' do
expect { described_class.unflag!(user, comment) }.to change{ Flag.count }.by(-1)
end
it 'decreases the flag count' do
expect { described_class.unflag!(user, comment) }.to change{ comment.reload.flags_count }.by(-1)
end
end
end
describe '.flagged?' do
it 'returns false when the user has not flagged the comment' do
expect(described_class.flagged?(user, comment)).to_not be
end
it 'returns true when the user has flagged the comment' do
described_class.flag!(user, comment)
expect(described_class.flagged?(user, comment)).to be
end
end
end