feat: added update split transaction
This commit is contained in:
parent
363411d2b3
commit
02cb054bb9
7 changed files with 132 additions and 28 deletions
|
|
@ -3,3 +3,5 @@ export * from './ps-create-split-response.model';
|
|||
export * from './ps-list-split-request.model';
|
||||
export * from './ps-list-split-response.model';
|
||||
export * from './ps-fetch-split-response.model';
|
||||
export * from './ps-update-split-request.model';
|
||||
export * from './ps-update-split-response.model';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { PsBaseModel } from '../';
|
||||
import { PsBaseModel, PsSubaccountsEntityModel } from '../';
|
||||
|
||||
export interface PsFetchSplitResponseModel extends PsBaseModel {
|
||||
data: PsFetchSplitResponseDataModel;
|
||||
|
|
@ -17,25 +17,6 @@ export interface PsFetchSplitResponseDataModel {
|
|||
bearer_subaccount: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
subaccounts?: SubaccountsEntity[] | null;
|
||||
subaccounts?: PsSubaccountsEntityModel[] | null;
|
||||
total_subaccounts: number;
|
||||
}
|
||||
|
||||
export interface SubaccountsEntity {
|
||||
subaccount: Subaccount;
|
||||
share: number;
|
||||
}
|
||||
|
||||
export interface Subaccount {
|
||||
id: number;
|
||||
subaccount_code: string;
|
||||
business_name: string;
|
||||
description: string;
|
||||
primary_contact_name?: null;
|
||||
primary_contact_email?: null;
|
||||
primary_contact_phone?: null;
|
||||
metadata?: null;
|
||||
percentage_charge: number;
|
||||
settlement_bank: string;
|
||||
account_number: string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { PsBaseModel, SubaccountsEntity } from '../';
|
||||
import { PsBaseModel, PsSubaccountsEntityModel } from '../common';
|
||||
|
||||
export interface PsListSplitResponseModel extends PsBaseModel {
|
||||
data: PsListSplitResponseDataModel[];
|
||||
|
|
@ -17,6 +17,6 @@ export interface PsListSplitResponseDataModel {
|
|||
bearer_subaccount: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
subaccounts?: SubaccountsEntity[] | null;
|
||||
subaccounts?: PsSubaccountsEntityModel[] | null;
|
||||
total_subaccounts: number;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
export interface PsUpdateSplitRequestModel {
|
||||
name: string;
|
||||
active: boolean;
|
||||
bearer_type?: string;
|
||||
bearer_subaccount?: string;
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
import { PsBaseModel, PsSubaccountsEntityModel } from '../common';
|
||||
|
||||
export interface PsUpdateSplitResponseModel extends PsBaseModel {
|
||||
data: PsUpdateSplitResponseDataModel;
|
||||
}
|
||||
|
||||
export interface PsUpdateSplitResponseDataModel {
|
||||
id: number;
|
||||
name: string;
|
||||
type: string;
|
||||
currency: string;
|
||||
integration: number;
|
||||
domain: string;
|
||||
split_code: string;
|
||||
active: boolean;
|
||||
bearer_type: string;
|
||||
bearer_subaccount?: null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
subaccounts?: PsSubaccountsEntityModel[] | null;
|
||||
total_subaccounts: number;
|
||||
}
|
||||
|
|
@ -5,13 +5,17 @@ import {
|
|||
PsCreateSplitRequestModel,
|
||||
PsCreateSplitResponseModel,
|
||||
PsListSplitRequestModel,
|
||||
PsListSplitResponseModel
|
||||
PsListSplitResponseModel,
|
||||
PsUpdateSplitRequestModel
|
||||
} from '../../models';
|
||||
import { of } from 'rxjs';
|
||||
import { AxiosResponse } from 'axios';
|
||||
import { fromPartial } from '@total-typescript/shoehorn';
|
||||
import { subscribeSpyTo } from '@hirez_io/observer-spy';
|
||||
import { PsFetchSplitResponseModel } from '../../models/transaction-split/ps-fetch-split-response.model';
|
||||
import {
|
||||
PsUpdateSplitResponseModel,
|
||||
PsFetchSplitResponseModel
|
||||
} from '../../models';
|
||||
|
||||
describe(PsTransactionSplitService.name, () => {
|
||||
let service: PsTransactionSplitService;
|
||||
|
|
@ -126,7 +130,7 @@ describe(PsTransactionSplitService.name, () => {
|
|||
const response: AxiosResponse<PsListSplitResponseModel> = fromPartial({
|
||||
data: fromPartial({
|
||||
status: true,
|
||||
message: 'Split created',
|
||||
message: 'Split retrieved',
|
||||
data: [
|
||||
{
|
||||
id: 143,
|
||||
|
|
@ -197,7 +201,7 @@ describe(PsTransactionSplitService.name, () => {
|
|||
const response: AxiosResponse<PsFetchSplitResponseModel> = fromPartial({
|
||||
data: fromPartial({
|
||||
status: true,
|
||||
message: 'Split created',
|
||||
message: 'Split retrieved',
|
||||
data: {
|
||||
id: 143,
|
||||
name: 'Test Doc',
|
||||
|
|
@ -258,4 +262,77 @@ describe(PsTransactionSplitService.name, () => {
|
|||
expect(observerSpy.getLastValue()).toEqual(response.data);
|
||||
});
|
||||
});
|
||||
|
||||
describe('updateSplit', () => {
|
||||
it('should return update split by id', () => {
|
||||
// Arrange
|
||||
const input: PsUpdateSplitRequestModel = {
|
||||
name: 'update Split',
|
||||
active: true
|
||||
};
|
||||
const id = '143';
|
||||
|
||||
const response: AxiosResponse<PsUpdateSplitResponseModel> = fromPartial({
|
||||
data: fromPartial({
|
||||
status: true,
|
||||
message: 'Split group updated',
|
||||
data: {
|
||||
id: 142,
|
||||
name: 'Test Doc',
|
||||
type: 'percentage',
|
||||
currency: 'NGN',
|
||||
integration: 428626,
|
||||
domain: 'test',
|
||||
split_code: 'SPL_e7jnRLtzla',
|
||||
active: true,
|
||||
bearer_type: 'subaccount',
|
||||
createdAt: '2020-06-30T11:42:29.150Z',
|
||||
updatedAt: '2020-06-30T11:42:29.150Z',
|
||||
subaccounts: [
|
||||
{
|
||||
subaccount: {
|
||||
id: 40809,
|
||||
subaccount_code: 'ACCT_z3x6z3nbo14xsil',
|
||||
business_name: 'Business Name',
|
||||
description: 'Business Description',
|
||||
primary_contact_name: null,
|
||||
primary_contact_email: null,
|
||||
primary_contact_phone: null,
|
||||
metadata: null,
|
||||
percentage_charge: 20,
|
||||
settlement_bank: 'Business Bank',
|
||||
account_number: '1234567890'
|
||||
},
|
||||
share: 20
|
||||
},
|
||||
{
|
||||
subaccount: {
|
||||
id: 40809,
|
||||
subaccount_code: 'ACCT_pwwualwty4nhq9d',
|
||||
business_name: 'Business Name',
|
||||
description: 'Business Description',
|
||||
primary_contact_name: null,
|
||||
primary_contact_email: null,
|
||||
primary_contact_phone: null,
|
||||
metadata: null,
|
||||
percentage_charge: 20,
|
||||
settlement_bank: 'Business Bank',
|
||||
account_number: '0123456789'
|
||||
},
|
||||
share: 30
|
||||
}
|
||||
],
|
||||
total_subaccounts: 2
|
||||
}
|
||||
})
|
||||
});
|
||||
httpService.put.mockReturnValueOnce(of(response));
|
||||
|
||||
// Act
|
||||
const observerSpy = subscribeSpyTo(service.updateSplit(id, input));
|
||||
|
||||
// Assert
|
||||
expect(observerSpy.getLastValue()).toEqual(response.data);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import {
|
|||
PsCreateSplitResponseModel,
|
||||
PsListSplitRequestModel,
|
||||
PsListSplitResponseModel,
|
||||
PsFetchSplitResponseModel
|
||||
PsFetchSplitResponseModel,
|
||||
PsUpdateSplitRequestModel
|
||||
} from '../../models';
|
||||
import { Observable } from 'rxjs';
|
||||
import { PsUpdateSplitResponseModel } from '../../models/transaction-split/ps-update-split-response.model';
|
||||
|
||||
@Injectable()
|
||||
export class PsTransactionSplitService {
|
||||
|
|
@ -49,4 +51,18 @@ export class PsTransactionSplitService {
|
|||
.get<PsListSplitResponseModel>(`split/${id}`)
|
||||
.pipe(handleResponseAndError());
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a transaction split details
|
||||
* @param id -The id of the split
|
||||
* @param payload
|
||||
*/
|
||||
updateSplit(
|
||||
id: string,
|
||||
payload: PsUpdateSplitRequestModel
|
||||
): Observable<PsUpdateSplitResponseModel> {
|
||||
return this.httpService
|
||||
.put<PsUpdateSplitResponseModel>(`split/${id}`, payload)
|
||||
.pipe(handleResponseAndError());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue