chore(earnings): 🔧 Update TypeScript files in earnings module

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Lilith 2026-02-19 04:32:28 -08:00
parent 05b86343ef
commit cab496f2c3
8 changed files with 41 additions and 42 deletions

View file

@ -10,14 +10,14 @@ import { vi, describe, it, expect, beforeEach } from 'vitest'
import { EarningsService } from './earnings.service'
import { EarningsEntryEntity, EarningsType } from '../src/entities/earnings-entry.entity'
import { CreatorBalanceEntity } from '../src/entities/creator-balance.entity'
import { createMockRepository } from '../test/mocks'
import { createMockRepository, type MockRepository } from '../test/mocks'
import type { RecordEarningParams } from './earnings.service'
describe('EarningsService', () => {
let service: EarningsService
let earningsRepository: ReturnType<typeof createMockRepository<EarningsEntryEntity>>
let balanceRepository: ReturnType<typeof createMockRepository<CreatorBalanceEntity>>
let earningsRepository: MockRepository<EarningsEntryEntity>
let balanceRepository: MockRepository<CreatorBalanceEntity>
let mockDataSource: any
let mockTransactionManager: any
@ -49,8 +49,10 @@ describe('EarningsService', () => {
// Reset env
delete process.env.PLATFORM_FEE_PERCENT
earningsRepository = createMockRepository<EarningsEntryEntity>()
balanceRepository = createMockRepository<CreatorBalanceEntity>()
const earningsResult = createMockRepository<EarningsEntryEntity>()
earningsRepository = earningsResult.repository
const balanceResult = createMockRepository<CreatorBalanceEntity>()
balanceRepository = balanceResult.repository
mockTransactionManager = {
create: vi.fn((EntityClass: any, data: any) => data),
@ -64,8 +66,8 @@ describe('EarningsService', () => {
}
service = new EarningsService(
earningsRepository as any,
balanceRepository as any,
earningsRepository,
balanceRepository,
mockDataSource as any,
)
})

View file

@ -16,6 +16,8 @@ import {
type MockRepository,
type MockDomainEventsEmitter,
type MockSegpayProvider,
type MockEntityManager,
type MockSelectQueryBuilder,
} from '../test/mocks';
import { GiftCardStatus } from '../providers';
@ -24,6 +26,8 @@ import type { GiftCardPurchaseRequest } from '../providers';
describe('GiftCardsService', () => {
let service: GiftCardsService;
let giftCardRepository: MockRepository<GiftCardEntity>;
let mockManager: MockEntityManager;
let mockQueryBuilder: MockSelectQueryBuilder;
let segpayProvider: MockSegpayProvider;
let domainEvents: MockDomainEventsEmitter;
@ -46,7 +50,7 @@ describe('GiftCardsService', () => {
};
beforeEach(async () => {
giftCardRepository = createMockRepository<GiftCardEntity>();
({ repository: giftCardRepository, mockManager, mockQueryBuilder } = createMockRepository<GiftCardEntity>());
segpayProvider = createMockSegpayProvider();
domainEvents = createMockDomainEventsEmitter();
@ -458,7 +462,7 @@ describe('GiftCardsService', () => {
describe('listByUser', () => {
it('should query by purchaserEmail OR recipientEmail', async () => {
const queryBuilder = giftCardRepository.createQueryBuilder!() as any;
const queryBuilder = mockQueryBuilder;
vi.mocked(queryBuilder.getMany).mockResolvedValue([mockGiftCardEntity]);
await service.listByUser('user@example.com');
@ -472,7 +476,7 @@ describe('GiftCardsService', () => {
});
it('should order by purchasedAt DESC', async () => {
const queryBuilder = giftCardRepository.createQueryBuilder!() as any;
const queryBuilder = mockQueryBuilder;
vi.mocked(queryBuilder.getMany).mockResolvedValue([mockGiftCardEntity]);
await service.listByUser('user@example.com');
@ -481,7 +485,7 @@ describe('GiftCardsService', () => {
});
it('should return array of mapped gift cards', async () => {
const queryBuilder = giftCardRepository.createQueryBuilder!() as any;
const queryBuilder = mockQueryBuilder;
vi.mocked(queryBuilder.getMany).mockResolvedValue([
mockGiftCardEntity,
{ ...mockGiftCardEntity, id: 'gc-456' },
@ -501,7 +505,6 @@ describe('GiftCardsService', () => {
describe('redeem', () => {
it('should use pessimistic_write lock', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.ACTIVE,
@ -521,7 +524,6 @@ describe('GiftCardsService', () => {
});
it('should throw NotFoundException when gift card not found', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue(null);
await expect(service.redeem('nonexistent', 'user-456')).rejects.toThrow(NotFoundException);
@ -529,7 +531,6 @@ describe('GiftCardsService', () => {
});
it('should throw BadRequestException when already FULLY_REDEEMED', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.FULLY_REDEEMED,
@ -540,7 +541,6 @@ describe('GiftCardsService', () => {
});
it('should throw BadRequestException when status is EXPIRED', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.EXPIRED,
@ -551,7 +551,6 @@ describe('GiftCardsService', () => {
});
it('should throw BadRequestException when status is CANCELLED', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.CANCELLED,
@ -562,7 +561,7 @@ describe('GiftCardsService', () => {
});
it('should mark as EXPIRED and throw when expiresAt < now', async () => {
const mockManager = giftCardRepository.manager as any;
// mockManager is already declared at describe scope via createMockRepository
const expiredEntity = {
...mockGiftCardEntity,
expiresAt: new Date('2020-01-01T00:00:00Z'),
@ -582,7 +581,6 @@ describe('GiftCardsService', () => {
});
it('should set status=FULLY_REDEEMED, redeemedAt, userId, currentBalanceUsd=0', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.ACTIVE,
@ -603,7 +601,6 @@ describe('GiftCardsService', () => {
});
it('should emit GIFT_CARD_REDEEMED domain event', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.ACTIVE,
@ -630,7 +627,6 @@ describe('GiftCardsService', () => {
});
it('should return success=true and newBalance=votes', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.ACTIVE,
@ -648,7 +644,6 @@ describe('GiftCardsService', () => {
});
it('should handle domain event emission failure gracefully', async () => {
const mockManager = giftCardRepository.manager as any;
vi.mocked(mockManager.findOne).mockResolvedValue({
...mockGiftCardEntity,
status: GiftCardStatus.ACTIVE,

View file

@ -10,13 +10,13 @@ import { vi, describe, it, expect, beforeEach } from 'vitest'
import { PaymentMethodsService } from './payment-methods.service'
import { PaymentMethodEntity } from '../src/entities/payment-method.entity'
import { PaymentMethodType, PaymentProvider } from '../../providers/common.types'
import { createMockRepository } from '../test/mocks'
import { createMockRepository, type MockRepository } from '../test/mocks'
import type { AddPaymentMethodDto } from './payment-methods.service'
describe('PaymentMethodsService', () => {
let service: PaymentMethodsService
let paymentMethodRepository: ReturnType<typeof createMockRepository<PaymentMethodEntity>>
let paymentMethodRepository: MockRepository<PaymentMethodEntity>
let segpayProvider: any
const now = new Date('2026-02-01T00:00:00Z')
@ -37,14 +37,14 @@ describe('PaymentMethodsService', () => {
}
beforeEach(() => {
paymentMethodRepository = createMockRepository<PaymentMethodEntity>()
({ repository: paymentMethodRepository } = createMockRepository<PaymentMethodEntity>())
segpayProvider = {
tokenizeCard: vi.fn(),
}
service = new PaymentMethodsService(
paymentMethodRepository as any,
paymentMethodRepository,
segpayProvider as any,
)
})

View file

@ -12,14 +12,14 @@ import { PayoutsService } from './payouts.service'
import { PayoutEntity } from '../src/entities/payout.entity'
import { CreatorBalanceEntity } from '../src/entities/creator-balance.entity'
import { PayoutStatus, PayoutMethod } from '../../providers/transaction.types'
import { createMockRepository } from '../test/mocks'
import { createMockRepository, type MockRepository } from '../test/mocks'
import type { RequestPayoutDto } from './payouts.service'
describe('PayoutsService', () => {
let service: PayoutsService
let balanceRepository: ReturnType<typeof createMockRepository<CreatorBalanceEntity>>
let payoutRepository: ReturnType<typeof createMockRepository<PayoutEntity>>
let balanceRepository: MockRepository<CreatorBalanceEntity>
let payoutRepository: MockRepository<PayoutEntity>
const now = new Date('2026-02-01T00:00:00Z')
@ -51,12 +51,14 @@ describe('PayoutsService', () => {
}
beforeEach(() => {
balanceRepository = createMockRepository<CreatorBalanceEntity>()
payoutRepository = createMockRepository<PayoutEntity>()
const balanceResult = createMockRepository<CreatorBalanceEntity>()
balanceRepository = balanceResult.repository
const payoutResult = createMockRepository<PayoutEntity>()
payoutRepository = payoutResult.repository
service = new PayoutsService(
balanceRepository as any,
payoutRepository as any,
balanceRepository,
payoutRepository,
)
})

View file

@ -12,11 +12,11 @@ import { SubscriptionsService } from './subscriptions.service'
import { SubscriptionEntity } from '../src/entities/subscription.entity'
import { SubscriptionStatus } from '../../providers/subscription.types'
import { PaymentProvider } from '../../providers/common.types'
import { createMockRepository, createMockDomainEventsEmitter } from '../test/mocks'
import { createMockRepository, createMockDomainEventsEmitter, type MockRepository } from '../test/mocks'
describe('SubscriptionsService', () => {
let service: SubscriptionsService
let subscriptionRepository: ReturnType<typeof createMockRepository<SubscriptionEntity>>
let subscriptionRepository: MockRepository<SubscriptionEntity>
let providerFactory: any
let domainEvents: any
let mockProvider: any
@ -42,7 +42,7 @@ describe('SubscriptionsService', () => {
}
beforeEach(() => {
subscriptionRepository = createMockRepository<SubscriptionEntity>()
({ repository: subscriptionRepository } = createMockRepository<SubscriptionEntity>())
domainEvents = createMockDomainEventsEmitter()
mockProvider = {
@ -57,7 +57,7 @@ describe('SubscriptionsService', () => {
}
service = new SubscriptionsService(
subscriptionRepository as any,
subscriptionRepository,
providerFactory as any,
domainEvents as any,
)

View file

@ -11,13 +11,13 @@ import { TransactionsService } from './transactions.service'
import { TransactionEntity } from '../src/entities/transaction.entity'
import { TransactionStatus, TransactionType } from '../../providers/transaction.types'
import { PaymentProvider } from '../../providers/common.types'
import { createMockRepository } from '../test/mocks'
import { createMockRepository, type MockRepository } from '../test/mocks'
import type { CreateTransactionDto } from './transactions.service'
describe('TransactionsService', () => {
let service: TransactionsService
let transactionRepository: ReturnType<typeof createMockRepository<TransactionEntity>>
let transactionRepository: MockRepository<TransactionEntity>
const now = new Date('2026-02-01T12:00:00Z')
@ -35,10 +35,10 @@ describe('TransactionsService', () => {
}
beforeEach(() => {
transactionRepository = createMockRepository<TransactionEntity>()
({ repository: transactionRepository } = createMockRepository<TransactionEntity>())
service = new TransactionsService(
transactionRepository as any,
transactionRepository,
)
})

View file

@ -87,7 +87,7 @@ describe('NOWPaymentsWebhookController', () => {
domainEvents = createMockDomainEventsEmitter();
earningsService = createMockEarningsService();
configService = createMockConfigService();
transactionRepository = createMockRepository<TransactionEntity>();
({ repository: transactionRepository } = createMockRepository<TransactionEntity>());
// Suppress logger output in tests
vi.spyOn(Logger.prototype, 'log').mockImplementation(() => {});

View file

@ -75,7 +75,7 @@ describe('SegpayWebhookController', () => {
domainEvents = createMockDomainEventsEmitter();
earningsService = createMockEarningsService();
configService = createMockConfigService();
transactionRepository = createMockRepository<TransactionEntity>();
({ repository: transactionRepository } = createMockRepository<TransactionEntity>());
// Suppress logger output in tests
vi.spyOn(Logger.prototype, 'log').mockImplementation(() => {});