fix(statements/transactions)

This commit is contained in:
2026-06-02 21:00:44 +03:00
parent a412af3e07
commit c763fe6c71
9 changed files with 269 additions and 95 deletions

View File

@@ -7,22 +7,66 @@ use Saloon\Http\Faking\MockResponse;
test('can get transactions statement', function (): void {
$mockClient = new \Saloon\Http\Faking\MockClient([
GetTransactionsRequest::class => MockResponse::make([
'pagination' => [
'totalCount' => 1,
'limit' => 10,
'offset' => 0,
'_links' => [
['rel' => 'prev', 'href' => '?accountNumber=40702810500006103990&statementDate=2018-03-15&page=1'],
['rel' => 'next', 'href' => '?accountNumber=40702810500006103990&statementDate=2018-03-15&page=3'],
],
'transactions' => [
[
'uuid' => 'uuid-123',
'transactionId' => 'tx-123',
'operationDate' => '2023-01-01',
'number' => '1',
'uuid' => '55daccdf-de87-3879-976c-8b8415c8caf9',
'transactionId' => '1211206MOCO#DS0000017',
'operationDate' => '2018-12-31T00:00:00Z',
'number' => '1843',
'direction' => 'CREDIT',
'amount' => ['amount' => 100.00, 'currencyName' => 'RUB'],
'amountRub' => ['amount' => 100.00, 'currencyName' => 'RUB'],
'paymentPurpose' => 'Test',
'correspondingAccount' => '408...',
'amountRub' => ['amount' => 100.00, 'currencyName' => 'RUR'],
'documentDate' => '2021-10-07',
'filial' => 'АО "АЛЬФА-БАНК"',
'operationCode' => '01',
'paymentPurpose' => 'НДС не облагается',
'priority' => '5',
'revaln' => 'ПК',
'correspondingAccount' => '30101810400000000225',
'debtorCode' => '0',
'extendedDebtorCode' => '50012008',
'rurTransfer' => [
'cartInfo' => [
'documentCode' => 'doc-code',
'documentNumber' => 'doc-num',
],
'deliveryKind' => 'электронно',
'departmentalInfo' => [
'kbk' => '39210202010061000160',
'oktmo' => '11605000',
],
'payeeAccount' => '40802810401300015422',
'payeeBankBic' => '044525593',
'payeeInn' => '7728168971',
'payeeName' => 'Наименование получателя',
'payerAccount' => '40802810701300000761',
'payerBankBic' => '044525593',
'payerInn' => '7728168971',
'payerName' => 'Гаврилов Добрыня Петрович',
'payingCondition' => 'payingCondition',
'paymentKind110' => '1',
'purposeCode' => '1',
'receiptDate' => '2018-12-31',
'valueDate' => '2018-12-31',
],
'swiftTransfer' => [
'bankOperationCode' => 'CRED',
'beneficiaryBankAccount' => 'LOYDGB21323',
'beneficiaryBankName' => 'АО "АЛЬФА-БАНК"',
'exchangeRate' => '67,74',
'instructedAmount' => 'USD70,00',
],
'curTransfer' => [
'bankOperationCode' => 'CRED',
'intermediaryBankOption' => 'D',
'intermediaryBankName' => 'АО "АЛЬФА-БАНК"',
'orderingCustomerName' => 'ООО Радуга',
'exchangeRate' => '67,74',
],
],
],
], 200, ['Content-Type' => 'application/json']),
@@ -32,10 +76,69 @@ test('can get transactions statement', function (): void {
$connector = new AlfaBankConnector($config);
$connector->withMockClient($mockClient);
$request = new GetTransactionsRequest('408...', '2023-01-01', '2023-01-02');
$request = new GetTransactionsRequest(
accountNumber: '40702810500006103990',
statementDate: '2018-03-15',
page: 2,
curFormat: 'swiftTransfer',
);
$response = $connector->send($request);
expect($response->status())->toBe(200)
->and($response->dto()->transactions[0]->transactionId)->toBe('tx-123')
->and($response->dto()->transactions[0]->amount->amount)->toBe(100.00);
$dto = $response->dto();
expect($response->status())->toBe(200);
expect($dto->_links)->toBeArray()->toHaveCount(2);
expect($dto->transactions)->toHaveCount(1);
$tx = $dto->transactions[0];
expect($tx->transactionId)->toBe('1211206MOCO#DS0000017')
->and($tx->direction)->toBe('CREDIT')
->and($tx->amount->amount)->toBe(100.00)
->and($tx->amountRub->currencyName)->toBe('RUR')
->and($tx->documentDate)->toBe('2021-10-07')
->and($tx->filial)->toBe('АО "АЛЬФА-БАНК"')
->and($tx->operationCode)->toBe('01')
->and($tx->priority)->toBe('5')
->and($tx->revaln)->toBe('ПК')
->and($tx->debtorCode)->toBe('0')
->and($tx->extendedDebtorCode)->toBe('50012008');
expect($tx->rurTransfer)->not->toBeNull();
expect($tx->rurTransfer->cartInfo)->not->toBeNull();
expect($tx->rurTransfer->cartInfo->documentCode)->toBe('doc-code');
expect($tx->rurTransfer->deliveryKind)->toBe('электронно');
expect($tx->rurTransfer->departmentalInfo)->not->toBeNull();
expect($tx->rurTransfer->departmentalInfo->kbk)->toBe('39210202010061000160');
expect($tx->rurTransfer->payingCondition)->toBe('payingCondition');
expect($tx->rurTransfer->purposeCode)->toBe('1');
expect($tx->rurTransfer->receiptDate)->toBe('2018-12-31');
expect($tx->swiftTransfer)->not->toBeNull();
expect($tx->swiftTransfer->bankOperationCode)->toBe('CRED');
expect($tx->swiftTransfer->instructedAmount)->toBe('USD70,00');
expect($tx->curTransfer)->not->toBeNull();
expect($tx->curTransfer->orderingCustomerName)->toBe('ООО Радуга');
});
test('can get transactions with default page', function (): void {
$mockClient = new \Saloon\Http\Faking\MockClient([
GetTransactionsRequest::class => MockResponse::make([
'_links' => [],
'transactions' => [],
], 200, ['Content-Type' => 'application/json']),
]);
$config = createTestConfig();
$connector = new AlfaBankConnector($config);
$connector->withMockClient($mockClient);
$request = new GetTransactionsRequest(
accountNumber: '40702810500006103990',
statementDate: '2018-03-15',
);
$response = $connector->send($request);
expect($response->status())->toBe(200);
expect($response->dto()->transactions)->toHaveCount(0);
});