commit
ccb6a658fd
@ -1,11 +1,10 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Mention < ApplicationRecord
|
class Mention < ApplicationRecord
|
||||||
belongs_to :account, inverse_of: :mentions
|
belongs_to :account, inverse_of: :mentions, required: true
|
||||||
belongs_to :status
|
belongs_to :status, required: true
|
||||||
|
|
||||||
has_one :notification, as: :activity, dependent: :destroy
|
has_one :notification, as: :activity, dependent: :destroy
|
||||||
|
|
||||||
validates :account, :status, presence: true
|
|
||||||
validates :account, uniqueness: { scope: :status }
|
validates :account, uniqueness: { scope: :status }
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
Fabricator(:account) do
|
Fabricator(:account) do
|
||||||
username "alice"
|
username { Faker::Internet.user_name(nil, %w(_)) }
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
Fabricator(:block) do
|
Fabricator(:block) do
|
||||||
|
account
|
||||||
|
target_account { Fabricate(:account) }
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
Fabricator(:follow) do
|
Fabricator(:follow) do
|
||||||
|
account
|
||||||
|
target_account { Fabricate(:account) }
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
Fabricator(:follow_request) do
|
Fabricator(:follow_request) do
|
||||||
|
account
|
||||||
|
target_account { Fabricate(:account) }
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
Fabricator(:mention) do
|
||||||
|
account
|
||||||
|
status
|
||||||
|
end
|
@ -1,6 +1,6 @@
|
|||||||
Fabricator(:user) do
|
Fabricator(:user) do
|
||||||
account
|
account
|
||||||
email "alice@example.com"
|
email { Faker::Internet.email }
|
||||||
password "123456789"
|
password "123456789"
|
||||||
confirmed_at { Time.now }
|
confirmed_at { Time.now }
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,22 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Block, type: :model do
|
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
|
end
|
||||||
|
@ -1,5 +1,23 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe DomainBlock, type: :model do
|
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
|
end
|
||||||
|
@ -1,5 +1,22 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Mention, type: :model do
|
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
|
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