You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
# frozen_string_literal: true |
|
|
|
require 'rails_helper' |
|
|
|
RSpec.describe REST::AccountSerializer do |
|
subject { serialized_record_json(account, described_class) } |
|
|
|
let(:default_datetime) { DateTime.new(2024, 11, 28, 16, 20, 0) } |
|
let(:role) { Fabricate(:user_role, name: 'Role', highlighted: true) } |
|
let(:user) { Fabricate(:user, role: role) } |
|
let(:account) { user.account } |
|
|
|
context 'when the account is suspended' do |
|
before do |
|
account.suspend! |
|
end |
|
|
|
it 'returns empty roles' do |
|
expect(subject['roles']).to eq [] |
|
end |
|
end |
|
|
|
context 'when the account has a highlighted role' do |
|
let(:role) { Fabricate(:user_role, name: 'Role', highlighted: true) } |
|
|
|
it 'returns the expected role' do |
|
expect(subject['roles'].first).to include({ 'name' => 'Role' }) |
|
end |
|
end |
|
|
|
context 'when the account has a non-highlighted role' do |
|
let(:role) { Fabricate(:user_role, name: 'Role', highlighted: false) } |
|
|
|
it 'returns empty roles' do |
|
expect(subject['roles']).to eq [] |
|
end |
|
end |
|
|
|
context 'when the account is memorialized' do |
|
before do |
|
account.memorialize! |
|
end |
|
|
|
it 'marks it as such' do |
|
expect(subject['memorial']).to be true |
|
end |
|
end |
|
|
|
context 'when created_at is populated' do |
|
before do |
|
account.account_stat.update!(created_at: default_datetime) |
|
end |
|
|
|
it 'parses as RFC 3339 datetime' do |
|
expect(subject) |
|
.to include( |
|
'created_at' => match_api_datetime_format |
|
) |
|
end |
|
end |
|
|
|
context 'when last_status_at is populated' do |
|
before do |
|
account.account_stat.update!(last_status_at: default_datetime) |
|
end |
|
|
|
it 'is serialized as yyyy-mm-dd' do |
|
expect(subject['last_status_at']).to eq('2024-11-28') |
|
end |
|
end |
|
end
|
|
|