forked from apoloz/alfa-bank-sdk
86 lines
3.1 KiB
PHP
86 lines
3.1 KiB
PHP
<?php
|
|
|
|
use Apoloz\AlfaBank\Core\AlfaBankConnector;
|
|
use Apoloz\AlfaBank\Data\Salary\SalaryAccountApplicationData;
|
|
use Apoloz\AlfaBank\Data\Salary\SalaryEmployeeData;
|
|
use Apoloz\AlfaBank\Data\Salary\SalaryOrganizationData;
|
|
use Apoloz\AlfaBank\Data\Salary\SalaryPayrollApplicationData;
|
|
use Apoloz\AlfaBank\Requests\Salary\CreateAccountApplicationRequest;
|
|
use Apoloz\AlfaBank\Requests\Salary\CreatePayrollApplicationRequest;
|
|
use Apoloz\AlfaBank\Requests\Salary\GetAccountApplicationStatusRequest;
|
|
use Saloon\Http\Faking\MockResponse;
|
|
use Spatie\LaravelData\DataCollection;
|
|
|
|
test('can create salary account application', function () {
|
|
$mockClient = new \Saloon\Http\Faking\MockClient([
|
|
CreateAccountApplicationRequest::class => MockResponse::make(['id' => 'ACC-123'], 201),
|
|
]);
|
|
|
|
$config = createTestConfig();
|
|
$connector = new AlfaBankConnector($config);
|
|
$connector->withMockClient($mockClient);
|
|
|
|
$payload = new SalaryAccountApplicationData(
|
|
applicationId: 'app-1',
|
|
applicationCreatedAt: '2023-10-10T10:00:00Z',
|
|
registryNumber: 'reg-1',
|
|
registryCreatedAt: '2023-10-10T10:00:00Z',
|
|
contractNumber: 'cnt-1',
|
|
bic: '044...',
|
|
organization: new SalaryOrganizationData('Org LLC', '407...', '770...'),
|
|
rowsCount: 1,
|
|
employees: SalaryEmployeeData::collect([
|
|
['firstName' => 'Ivan', 'lastName' => 'Ivanov']
|
|
], DataCollection::class)
|
|
);
|
|
|
|
$response = $connector->send(new CreateAccountApplicationRequest($payload));
|
|
|
|
expect($response->status())->toBe(201);
|
|
});
|
|
|
|
test('can create salary payroll application', function () {
|
|
$mockClient = new \Saloon\Http\Faking\MockClient([
|
|
CreatePayrollApplicationRequest::class => MockResponse::make(['id' => 'PAY-123'], 201),
|
|
]);
|
|
|
|
$config = createTestConfig();
|
|
$connector = new AlfaBankConnector($config);
|
|
$connector->withMockClient($mockClient);
|
|
|
|
$payload = new SalaryPayrollApplicationData(
|
|
applicationId: 'app-2',
|
|
applicationCreatedAt: '2023-10-10T10:00:00Z',
|
|
totalAmount: 1000.0,
|
|
payrollId: 'pay-1',
|
|
admissionValue: '1',
|
|
registryNumber: 'reg-2',
|
|
registryCreatedAt: '2023-10-10',
|
|
contractNumber: 'cnt-1',
|
|
bic: '044...',
|
|
organization: new SalaryOrganizationData('Org LLC', '407...', '770...'),
|
|
rowsCount: 1,
|
|
employees: SalaryEmployeeData::collect([
|
|
['firstName' => 'Ivan', 'lastName' => 'Ivanov', 'amount' => 1000.0]
|
|
], DataCollection::class)
|
|
);
|
|
|
|
$response = $connector->send(new CreatePayrollApplicationRequest($payload));
|
|
|
|
expect($response->status())->toBe(201);
|
|
});
|
|
|
|
test('can get salary application status', function () {
|
|
$mockClient = new \Saloon\Http\Faking\MockClient([
|
|
GetAccountApplicationStatusRequest::class => MockResponse::make(['status' => 'PROCESSED'], 200),
|
|
]);
|
|
|
|
$config = createTestConfig();
|
|
$connector = new AlfaBankConnector($config);
|
|
$connector->withMockClient($mockClient);
|
|
|
|
$response = $connector->send(new GetAccountApplicationStatusRequest('ACC-123'));
|
|
|
|
expect($response->status())->toBe(200);
|
|
});
|