Skip to content

Commit

Permalink
Merge pull request #35 from buckaroo-it/BP-3190-Improvements
Browse files Browse the repository at this point in the history
execution of Prettier & adjustments on ActiveSubscription class
  • Loading branch information
Rinor12010 authored Nov 30, 2023
2 parents ab8f53a + eecbcba commit c85b8cf
Show file tree
Hide file tree
Showing 9 changed files with 121 additions and 101 deletions.
43 changes: 21 additions & 22 deletions example/additional_services/subscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,26 @@ import buckaroo from '../buckarooClient';

const subscription = buckaroo.method('subscriptions');

subscription
.create({
additionalParameters: {
signature: 'XXXXXXXX'
subscription.create({
additionalParameters: {
signature: 'XXXXXXXX',
},
ratePlans: {
add: {
startDate: '2024-07-23',
ratePlanCode: 'XXXXXXXX',
},
ratePlans: {
add: {
startDate: '2024-07-23',
ratePlanCode: 'XXXXXXXX'
}
},
ratePlanCharges: {
add: {
ratePlanChargeCode: 'XXXXXXXX',
},
ratePlanCharges: {
add: {
ratePlanChargeCode: 'XXXXXXXX'
}
},
configurationCode: 'XXXXXXXX',
configuration: {
name: 'XXXXXXXX'
},
debtor: {
code: 'XXXXXXXX'
}
})
},
configurationCode: 'XXXXXXXX',
configuration: {
name: 'XXXXXXXX',
},
debtor: {
code: 'XXXXXXXX',
},
});
4 changes: 4 additions & 0 deletions src/Models/Response/HttpClientResponse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ export interface HttpResponseConstructor {

export interface IHttpClientResponse {
httpResponse: AxiosResponse;
data: object;
rawData: string;

validateResponse(credentials: ICredentials): boolean;
}

export class HttpClientResponse implements IHttpClientResponse {
Expand Down
4 changes: 2 additions & 2 deletions src/Request/Request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export default class Request<
data: T
): T extends IService[]
? Request<typeof SpecificationRequestResponse, SpecificationRequestData>
: Request<typeof SpecificationRequestResponse, undefined> {
: Request<typeof SpecificationRequestResponse> {
if (Array.isArray(data)) {
return new Request(
type + `/Specifications`,
Expand Down Expand Up @@ -96,7 +96,7 @@ export default class Request<
}

request(options: RequestConfig = {}) {
let data = (this._httpMethod === HttpMethods.GET ? {} : this._data) ?? {};
let data = (this._httpMethod === HttpMethods.GET ? {} : this.data) ?? {};
this.setAuthorizationHeader(data);
return Buckaroo.Client.httpClient.sendRequest(
this.url,
Expand Down
58 changes: 31 additions & 27 deletions src/Services/ActiveSubscriptions.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,45 @@
import {DataRequestData, Request} from "../Request";
import {HttpMethods, RequestTypes} from "../Constants";
import {ITransactionResponse, ServiceList, TransactionResponse} from "../Models";
export default class ActiveSubscriptions {
import { DataRequestData, Request } from '../Request';
import { HttpMethods, RequestTypes } from '../Constants';
import { ITransactionResponse, ServiceList, TransactionResponse } from '../Models';

export interface IActiveSubscription {
serviceCode: string;
currencies: string[];
}

export default class ActiveSubscriptions extends Request<typeof TransactionResponse, DataRequestData> {
private readonly _serviceCode: string = 'GetActiveSubscriptions';

async get(){
return this.buildRequest().request().then((response) => {
constructor() {
super(RequestTypes.Data, HttpMethods.POST, new DataRequestData(), TransactionResponse);
}
async get() {
this.data.setServiceList(
new ServiceList({
name: this._serviceCode,
version: 1,
action: this._serviceCode,
})
);
return this.request().then((response) => {
return this.format(response.data);
});
}
private buildRequest(){
const data = new DataRequestData().setServiceList(new ServiceList({
name: this._serviceCode,
version: 1,
action: this._serviceCode,
}));
return new Request(RequestTypes.Data, HttpMethods.POST,data,TransactionResponse)
}
private format(data:ITransactionResponse){
let activeSubscriptions:IActiveSubscription[] = []
const xmlData = data.services?.[0].parameters[0].value;
if(typeof xmlData === 'string'){
private format(data: ITransactionResponse) {
let activeSubscriptions: IActiveSubscription[] = [];
const xmlData = data.services?.[0].parameters[0].value;
if (typeof xmlData === 'string') {
let parseString = require('xml2js').parseString;

parseString(xmlData,function (err:any, result:any) {
activeSubscriptions = result['ArrayOfServiceCurrencies']['ServiceCurrencies'].map((service:any) => {
parseString(xmlData, function (err: any, result: Record<string, any>) {
activeSubscriptions = result['ArrayOfServiceCurrencies']['ServiceCurrencies'].map((service: any) => {
return {
serviceCode: service['ServiceCode'][0],
currencies: service['Currencies'][0]['string']
}
currencies: service['Currencies'][0]['string'],
};
});
});
}
return activeSubscriptions
return activeSubscriptions;
}
}
export interface IActiveSubscription {
serviceCode: string;
currencies: string[];
}
3 changes: 2 additions & 1 deletion src/Services/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export * from './PayablePaymentMethod';
export { default as ActiveSubscriptions } from './ActiveSubscriptions';
export { default as PaymentMethod } from './PaymentMethod';
export { default as PayablePaymentMethod } from './PayablePaymentMethod';
export { default as TransactionService } from './TransactionService';
export { default as TransactionService } from './TransactionService';
6 changes: 3 additions & 3 deletions src/buckaroo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ import { getMethod, IConfig, ICredentials, PaymentMethodInstance, ServiceCode }
import { HttpsClient, Request } from './Request';
import { Agent } from 'https';
import NoService from './PaymentMethods/NoService';
import { TransactionService } from './Services';
import { ActiveSubscriptions, TransactionService } from './Services';
import { Credentials } from './Handlers';
import ActiveSubscriptions from "./Services/ActiveSubscriptions";

export default class Buckaroo {
private static _client: Buckaroo;
Expand Down Expand Up @@ -65,9 +64,10 @@ export default class Buckaroo {
transaction(key: string) {
return new TransactionService(key);
}

getActiveSubscriptions() {
return new ActiveSubscriptions().get();
}
}

export { Buckaroo };
export { Buckaroo };
9 changes: 0 additions & 9 deletions tests/ActiveSubscriptions.test.ts

This file was deleted.

10 changes: 9 additions & 1 deletion tests/Client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ describe('Testing Buckaroo Client', () => {
});
});
describe('Transaction', () => {
const transactionService = client.transaction('39F3EC520A3F4A25B0A1899D4FF0E1CB');
const transactionService = client.transaction('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
test('transaction Status', async () => {
await transactionService
.status()
Expand All @@ -65,4 +65,12 @@ describe('Testing Buckaroo Client', () => {
});
});
});

describe('Active Subscription', () => {
test('Get', async () => {
await client.getActiveSubscriptions().then((response) => {
expect(response).toBeDefined();
});
});
});
});
85 changes: 49 additions & 36 deletions tests/PaymentMethods/Subscriptions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,38 @@ import buckarooClientTest from '../BuckarooClient.test';
const subscription = buckarooClientTest.method('subscriptions');

describe('Subscription methods', () => {
test('Create', async () => {
test('Create', () => {
return subscription
.create({
additionalParameters: {
signature: 'XXXXXXXX'
signature: 'XXXXXXXX',
},
ratePlans: {
add: {
startDate: '2024-07-23',
ratePlanCode: 'XXXXXXXX'
}
ratePlanCode: 'XXXXXXXX',
},
},
ratePlanCharges: {
add: {
ratePlanChargeCode: 'XXXXXXXX'
}
ratePlanChargeCode: 'XXXXXXXX',
},
},
configurationCode: 'XXXXXXXX',
configuration: {
name: 'XXXXXXXX'
name: 'XXXXXXXX',
},
debtor: {
code: 'XXXXXXXX'
}
code: 'XXXXXXXX',
},
})
.request().then((data) => {
.request()
.then((data) => {
expect(data.hasError()).toBeTruthy();
});
});
test('Update', async () => {
return subscription
subscription
.update({
email: '[email protected]',
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
Expand Down Expand Up @@ -85,7 +86,7 @@ describe('Subscription methods', () => {
country: 'NL',
},
});
return subscription
subscription
.combine('ideal')
.pay({
issuer: 'ABNANL2A',
Expand All @@ -101,7 +102,7 @@ describe('Subscription methods', () => {
subscription.updateCombined({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
});
return subscription
subscription
.combine('ideal')
.pay({
issuer: 'ABNANL2A',
Expand All @@ -113,21 +114,27 @@ describe('Subscription methods', () => {
});
});
test('Stop Subscription', async () => {
return subscription.stop({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
}).request().then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
subscription
.stop({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
})
.request()
.then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
});
test('Subscription Info', async () => {
return await subscription.info({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
}).request().then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
await subscription
.info({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
})
.request()
.then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
});
test('Delete Subscription Config', async () => {
return subscription
subscription
.deletePaymentConfig({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
})
Expand All @@ -137,19 +144,25 @@ describe('Subscription methods', () => {
});
});
test('Subscription Pause', async () => {
return subscription.pause({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
resumeDate: '2030-01-01',
}).request().then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
})
subscription
.pause({
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
resumeDate: '2030-01-01',
})
.request()
.then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
});
test('Subscription Resume', async () => {
return subscription.resume({
resumeDate: '2030-01-01',
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
}).request().then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
subscription
.resume({
resumeDate: '2030-01-01',
subscriptionGuid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
})
.request()
.then((res) => {
expect(res.httpResponse.status === 200).toBeTruthy();
});
});
});

0 comments on commit c85b8cf

Please sign in to comment.