commit
ccb6a658fd
@ -1,11 +1,10 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
class Mention < ApplicationRecord |
||||
belongs_to :account, inverse_of: :mentions |
||||
belongs_to :status |
||||
belongs_to :account, inverse_of: :mentions, required: true |
||||
belongs_to :status, required: true |
||||
|
||||
has_one :notification, as: :activity, dependent: :destroy |
||||
|
||||
validates :account, :status, presence: true |
||||
validates :account, uniqueness: { scope: :status } |
||||
end |
||||
|
@ -1,3 +1,3 @@ |
||||
Fabricator(:account) do |
||||
username "alice" |
||||
username { Faker::Internet.user_name(nil, %w(_)) } |
||||
end |
||||
|
@ -1,3 +1,4 @@ |
||||
Fabricator(:block) do |
||||
|
||||
account |
||||
target_account { Fabricate(:account) } |
||||
end |
||||
|
@ -1,3 +1,4 @@ |
||||
Fabricator(:follow) do |
||||
|
||||
account |
||||
target_account { Fabricate(:account) } |
||||
end |
||||
|
@ -1,3 +1,4 @@ |
||||
Fabricator(:follow_request) do |
||||
|
||||
account |
||||
target_account { Fabricate(:account) } |
||||
end |
||||
|
@ -0,0 +1,4 @@ |
||||
Fabricator(:mention) do |
||||
account |
||||
status |
||||
end |
@ -1,6 +1,6 @@ |
||||
Fabricator(:user) do |
||||
account |
||||
email "alice@example.com" |
||||
email { Faker::Internet.email } |
||||
password "123456789" |
||||
confirmed_at { Time.now } |
||||
end |
||||
|
@ -1,5 +1,22 @@ |
||||
require 'rails_helper' |
||||
|
||||
RSpec.describe Block, type: :model do |
||||
describe 'validations' do |
||||
it 'has a valid fabricator' do |
||||
block = Fabricate.build(:block) |
||||
expect(block).to be_valid |
||||
end |
||||
|
||||
it 'is invalid without an account' do |
||||
block = Fabricate.build(:block, account: nil) |
||||
block.valid? |
||||
expect(block).to model_have_error_on_field(:account) |
||||
end |
||||
|
||||
it 'is invalid without a target_account' do |
||||
block = Fabricate.build(:block, target_account: nil) |
||||
block.valid? |
||||
expect(block).to model_have_error_on_field(:target_account) |
||||
end |
||||
end |
||||
end |
||||
|
@ -1,5 +1,23 @@ |
||||
require 'rails_helper' |
||||
|
||||
RSpec.describe DomainBlock, type: :model do |
||||
describe 'validations' do |
||||
it 'has a valid fabricator' do |
||||
domain_block = Fabricate.build(:domain_block) |
||||
expect(domain_block).to be_valid |
||||
end |
||||
|
||||
it 'is invalid without a domain' do |
||||
domain_block = Fabricate.build(:domain_block, domain: nil) |
||||
domain_block.valid? |
||||
expect(domain_block).to model_have_error_on_field(:domain) |
||||
end |
||||
|
||||
it 'is invalid if the domain already exists' do |
||||
domain_block_1 = Fabricate(:domain_block, domain: 'dalek.com') |
||||
domain_block_2 = Fabricate.build(:domain_block, domain: 'dalek.com') |
||||
domain_block_2.valid? |
||||
expect(domain_block_2).to model_have_error_on_field(:domain) |
||||
end |
||||
end |
||||
end |
||||
|
@ -1,5 +1,22 @@ |
||||
require 'rails_helper' |
||||
|
||||
RSpec.describe Mention, type: :model do |
||||
describe 'validations' do |
||||
it 'has a valid fabricator' do |
||||
mention = Fabricate.build(:mention) |
||||
expect(mention).to be_valid |
||||
end |
||||
|
||||
it 'is invalid without an account' do |
||||
mention = Fabricate.build(:mention, account: nil) |
||||
mention.valid? |
||||
expect(mention).to model_have_error_on_field(:account) |
||||
end |
||||
|
||||
it 'is invalid without a status' do |
||||
mention = Fabricate.build(:mention, status: nil) |
||||
mention.valid? |
||||
expect(mention).to model_have_error_on_field(:status) |
||||
end |
||||
end |
||||
end |
||||
|
@ -0,0 +1,15 @@ |
||||
RSpec::Matchers.define :model_have_error_on_field do |expected| |
||||
match do |record| |
||||
if record.errors.empty? |
||||
record.valid? |
||||
end |
||||
|
||||
record.errors.has_key?(expected) |
||||
end |
||||
|
||||
failure_message do |record| |
||||
keys = record.errors.keys |
||||
|
||||
"expect record.errors(#{keys}) to include #{expected}" |
||||
end |
||||
end |
Loading…
Reference in new issue