# 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 { DateTime.rfc3339(subject['created_at']) }.to_not raise_error 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