Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

execution of Prettier & adjustments on ActiveSubscription class #35

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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();
});
});
});