Skip to content

Commit

Permalink
Merge pull request #1265 from Adyen/automation/release
Browse files Browse the repository at this point in the history
Release v14.4.0
  • Loading branch information
AdyenAutomationBot committed Oct 20, 2023
2 parents 80fe8f9 + 096d5d8 commit 3e8e162
Show file tree
Hide file tree
Showing 24 changed files with 1,279 additions and 26 deletions.
5 changes: 3 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ openapi-generator-url:=https://repo1.maven.org/maven2/org/openapitools/openapi-g
openapi-generator-jar:=build/openapi-generator-cli.jar
openapi-generator-cli:=java -jar $(openapi-generator-jar)

services:=acsWebhooks balanceControl balancePlatform binLookup checkout configurationWebhooks dataProtection legalEntityManagement management managementWebhooks payment payout recurring reportWebhooks storedValue terminalManagement transfers transferWebhooks
services:=acsWebhooks balanceControl balancePlatform binLookup checkout configurationWebhooks dataProtection disputes legalEntityManagement management managementWebhooks payment payout recurring reportWebhooks storedValue terminalManagement transfers transferWebhooks

# Generate models (for each service)
models: $(services)
Expand All @@ -14,6 +14,7 @@ balancePlatform: spec=BalancePlatformService-v2
binLookup: spec=BinLookupService-v54
checkout: spec=CheckoutService-v70
dataProtection: spec=DataProtectionService-v1
disputes: spec=DisputeService-v30
storedValue: spec=StoredValueService-v46
terminalManagement: spec=TfmAPIService-v1
payment: spec=PaymentService-v68
Expand Down Expand Up @@ -50,7 +51,7 @@ $(services): build/spec $(openapi-generator-jar)

# Service + Models automation
services:=balancePlatform checkout management legalEntityManagement payout transfers
singleFileServices:=balanceControl dataProtection payment recurring binLookup storedValue terminalManagement
singleFileServices:=balanceControl dataProtection payment recurring binLookup storedValue terminalManagement disputes

services: $(services) $(singleFileServices)

Expand Down
47 changes: 24 additions & 23 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@adyen/api-library",
"version": "14.3.0",
"version": "14.4.0",
"description": "The Adyen API Library for NodeJS enables you to work with Adyen APIs.",
"main": "lib/src/index.js",
"types": "lib/src/index.d.ts",
Expand Down
190 changes: 190 additions & 0 deletions src/__tests__/disputes.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
import nock from "nock";
import { createClient } from "../__mocks__/base";
import {DisputesAPI} from "../services";
import Client from "../client";
import { AcceptDisputeRequest } from "../typings/disputes/acceptDisputeRequest";
import { AcceptDisputeResponse } from "../typings/disputes/acceptDisputeResponse";
import { DefendDisputeRequest } from "../typings/disputes/defendDisputeRequest";
import { DefendDisputeResponse } from "../typings/disputes/defendDisputeResponse";
import { DeleteDefenseDocumentRequest } from "../typings/disputes/deleteDefenseDocumentRequest";
import { DeleteDefenseDocumentResponse } from "../typings/disputes/deleteDefenseDocumentResponse";
import { DefenseReasonsRequest } from "../typings/disputes/defenseReasonsRequest";
import { DefenseReasonsResponse } from "../typings/disputes/defenseReasonsResponse";
import { SupplyDefenseDocumentRequest } from "../typings/disputes/supplyDefenseDocumentRequest";
import { SupplyDefenseDocumentResponse } from "../typings/disputes/supplyDefenseDocumentResponse";

let client: Client,
disputesService: DisputesAPI,
scope: nock.Scope;

beforeEach((): void => {
if (!nock.isActive()) {
nock.activate();
}
client = createClient();
disputesService = new DisputesAPI(client);
scope = nock("https://ca-test.adyen.com/ca/services/DisputeService/v30");
});

afterEach(() => {
nock.cleanAll();
});

describe("Disputes", (): void => {
test("Should Accept Dispute", async (): Promise<void> => {
const expected = {
"disputeServiceResult": {
"success": true
}
};
const request: AcceptDisputeRequest = new AcceptDisputeRequest;

scope.post("/acceptDispute")
.reply(200, expected);

const response: AcceptDisputeResponse = await disputesService.acceptDispute(request);
expect(response.disputeServiceResult.success).toEqual(true);
});

test("Should Defend Dispute", async (): Promise<void> => {
const expected = {
"disputeServiceResult": {
"success": true
}
};
const request: DefendDisputeRequest = new DefendDisputeRequest;

scope.post("/defendDispute")
.reply(200, expected);

const response: DefendDisputeResponse = await disputesService.defendDispute(request);
expect(response.disputeServiceResult.success).toEqual(true);
});

test("Should delete Dispute defense document", async (): Promise<void> => {
const expected = {
"disputeServiceResult": {
"success": true
}
};
const request: DeleteDefenseDocumentRequest = new DeleteDefenseDocumentRequest;

scope.post("/deleteDisputeDefenseDocument")
.reply(200, expected);

const response: DeleteDefenseDocumentResponse = await disputesService.deleteDisputeDefenseDocument(request);
expect(response.disputeServiceResult.success).toEqual(true);
});

test("Should download Dispute defense document", async (): Promise<void> => {
const expected = {
"disputeServiceResult": {
"success": true
}
};
const request: DeleteDefenseDocumentRequest = new DeleteDefenseDocumentRequest;

scope.post("/deleteDisputeDefenseDocument")
.reply(200, expected);

const response: DeleteDefenseDocumentResponse = await disputesService.deleteDisputeDefenseDocument(request);
expect(response.disputeServiceResult.success).toEqual(true);
});

test("Should retrieve defense reasons", async (): Promise<void> => {
const expected = {
"defenseReasons": [
{
"defenseDocumentTypes": [
{
"available": false,
"defenseDocumentTypeCode": "TIDorInvoice",
"requirementLevel": "Optional"
},
{
"available": false,
"defenseDocumentTypeCode": "GoodsNotReturned",
"requirementLevel": "Required"
}
],
"defenseReasonCode": "GoodsNotReturned",
"satisfied": false
},
{
"defenseDocumentTypes": [
{
"available": false,
"defenseDocumentTypeCode": "TIDorInvoice",
"requirementLevel": "Optional"
},
{
"available": false,
"defenseDocumentTypeCode": "GoodsRepairedOrReplaced",
"requirementLevel": "Required"
}
],
"defenseReasonCode": "GoodsRepairedOrReplaced",
"satisfied": false
},
{
"defenseDocumentTypes": [
{
"available": false,
"defenseDocumentTypeCode": "GoodsWereAsDescribed",
"requirementLevel": "Required"
},
{
"available": false,
"defenseDocumentTypeCode": "TIDorInvoice",
"requirementLevel": "Required"
}
],
"defenseReasonCode": "GoodsWereAsDescribed",
"satisfied": false
},
{
"defenseDocumentTypes": [
{
"available": false,
"defenseDocumentTypeCode": "TIDorInvoice",
"requirementLevel": "Optional"
},
{
"available": false,
"defenseDocumentTypeCode": "DefenseMaterial",
"requirementLevel": "Required"
}
],
"defenseReasonCode": "SupplyDefenseMaterial",
"satisfied": false
}
],
"disputeServiceResult": {
"success": true
}
};
const request: DefenseReasonsRequest = new DefenseReasonsRequest;

scope.post("/retrieveApplicableDefenseReasons")
.reply(200, expected);

const response: DefenseReasonsResponse = await disputesService.retrieveApplicableDefenseReasons(request);
expect(response.disputeServiceResult.success).toEqual(true);
expect(response.defenseReasons?.length).toEqual(4);
});

test("Should supply Dispute defense document", async (): Promise<void> => {
const expected = {
"disputeServiceResult": {
"success": true
}
};
const request: SupplyDefenseDocumentRequest = new SupplyDefenseDocumentRequest;

scope.post("/supplyDefenseDocument")
.reply(200, expected);

const response: SupplyDefenseDocumentResponse = await disputesService.supplyDefenseDocument(request);
expect(response.disputeServiceResult.success).toEqual(true);
});
})
148 changes: 148 additions & 0 deletions src/services/disputesApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
/*
* The version of the OpenAPI document: v30
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit this class manually.
*/

import Client from "../client";
import getJsonResponse from "../helpers/getJsonResponse";
import Service from "../service";
import { AcceptDisputeRequest } from "../typings/disputes/models";
import { AcceptDisputeResponse } from "../typings/disputes/models";
import { DefendDisputeRequest } from "../typings/disputes/models";
import { DefendDisputeResponse } from "../typings/disputes/models";
import { DefenseReasonsRequest } from "../typings/disputes/models";
import { DefenseReasonsResponse } from "../typings/disputes/models";
import { DeleteDefenseDocumentRequest } from "../typings/disputes/models";
import { DeleteDefenseDocumentResponse } from "../typings/disputes/models";
import { DownloadDefenseDocumentRequest } from "../typings/disputes/models";
import { DownloadDefenseDocumentResponse } from "../typings/disputes/models";
import { SupplyDefenseDocumentRequest } from "../typings/disputes/models";
import { SupplyDefenseDocumentResponse } from "../typings/disputes/models";
import { IRequest } from "../typings/requestOptions";
import Resource from "./resource";
import { ObjectSerializer } from "../typings/disputes/models";

export class DisputesAPI extends Service {

private readonly API_BASEPATH: string = "https://ca-test.adyen.com/ca/services/DisputeService/v30";
private baseUrl: string;

public constructor(client: Client) {
super(client);
this.baseUrl = this.createBaseUrl(this.API_BASEPATH);
}

/**
* @summary Accept a dispute
* @param acceptDisputeRequest {@link AcceptDisputeRequest }
* @param requestOptions {@link IRequest.Options}
* @return {@link AcceptDisputeResponse }
*/
public async acceptDispute(acceptDisputeRequest: AcceptDisputeRequest, requestOptions?: IRequest.Options): Promise<AcceptDisputeResponse> {
const endpoint = `${this.baseUrl}/acceptDispute`;
const resource = new Resource(this, endpoint);
const request: AcceptDisputeRequest = ObjectSerializer.serialize(acceptDisputeRequest, "AcceptDisputeRequest");
const response = await getJsonResponse<AcceptDisputeRequest, AcceptDisputeResponse>(
resource,
request,
{ ...requestOptions, method: "POST" }
);
return ObjectSerializer.deserialize(response, "AcceptDisputeResponse");
}

/**
* @summary Defend a dispute
* @param defendDisputeRequest {@link DefendDisputeRequest }
* @param requestOptions {@link IRequest.Options}
* @return {@link DefendDisputeResponse }
*/
public async defendDispute(defendDisputeRequest: DefendDisputeRequest, requestOptions?: IRequest.Options): Promise<DefendDisputeResponse> {
const endpoint = `${this.baseUrl}/defendDispute`;
const resource = new Resource(this, endpoint);
const request: DefendDisputeRequest = ObjectSerializer.serialize(defendDisputeRequest, "DefendDisputeRequest");
const response = await getJsonResponse<DefendDisputeRequest, DefendDisputeResponse>(
resource,
request,
{ ...requestOptions, method: "POST" }
);
return ObjectSerializer.deserialize(response, "DefendDisputeResponse");
}

/**
* @summary Delete a defense document
* @param deleteDefenseDocumentRequest {@link DeleteDefenseDocumentRequest }
* @param requestOptions {@link IRequest.Options}
* @return {@link DeleteDefenseDocumentResponse }
*/
public async deleteDisputeDefenseDocument(deleteDefenseDocumentRequest: DeleteDefenseDocumentRequest, requestOptions?: IRequest.Options): Promise<DeleteDefenseDocumentResponse> {
const endpoint = `${this.baseUrl}/deleteDisputeDefenseDocument`;
const resource = new Resource(this, endpoint);
const request: DeleteDefenseDocumentRequest = ObjectSerializer.serialize(deleteDefenseDocumentRequest, "DeleteDefenseDocumentRequest");
const response = await getJsonResponse<DeleteDefenseDocumentRequest, DeleteDefenseDocumentResponse>(
resource,
request,
{ ...requestOptions, method: "POST" }
);
return ObjectSerializer.deserialize(response, "DeleteDefenseDocumentResponse");
}

/**
* @summary Download a defense document
* @param downloadDefenseDocumentRequest {@link DownloadDefenseDocumentRequest }
* @param requestOptions {@link IRequest.Options}
* @return {@link DownloadDefenseDocumentResponse }
*/
public async downloadDisputeDefenseDocument(downloadDefenseDocumentRequest: DownloadDefenseDocumentRequest, requestOptions?: IRequest.Options): Promise<DownloadDefenseDocumentResponse> {
const endpoint = `${this.baseUrl}/downloadDisputeDefenseDocument`;
const resource = new Resource(this, endpoint);
const request: DownloadDefenseDocumentRequest = ObjectSerializer.serialize(downloadDefenseDocumentRequest, "DownloadDefenseDocumentRequest");
const response = await getJsonResponse<DownloadDefenseDocumentRequest, DownloadDefenseDocumentResponse>(
resource,
request,
{ ...requestOptions, method: "POST" }
);
return ObjectSerializer.deserialize(response, "DownloadDefenseDocumentResponse");
}

/**
* @summary Get applicable defense reasons
* @param defenseReasonsRequest {@link DefenseReasonsRequest }
* @param requestOptions {@link IRequest.Options}
* @return {@link DefenseReasonsResponse }
*/
public async retrieveApplicableDefenseReasons(defenseReasonsRequest: DefenseReasonsRequest, requestOptions?: IRequest.Options): Promise<DefenseReasonsResponse> {
const endpoint = `${this.baseUrl}/retrieveApplicableDefenseReasons`;
const resource = new Resource(this, endpoint);
const request: DefenseReasonsRequest = ObjectSerializer.serialize(defenseReasonsRequest, "DefenseReasonsRequest");
const response = await getJsonResponse<DefenseReasonsRequest, DefenseReasonsResponse>(
resource,
request,
{ ...requestOptions, method: "POST" }
);
return ObjectSerializer.deserialize(response, "DefenseReasonsResponse");
}

/**
* @summary Supply a defense document
* @param supplyDefenseDocumentRequest {@link SupplyDefenseDocumentRequest }
* @param requestOptions {@link IRequest.Options}
* @return {@link SupplyDefenseDocumentResponse }
*/
public async supplyDefenseDocument(supplyDefenseDocumentRequest: SupplyDefenseDocumentRequest, requestOptions?: IRequest.Options): Promise<SupplyDefenseDocumentResponse> {
const endpoint = `${this.baseUrl}/supplyDefenseDocument`;
const resource = new Resource(this, endpoint);
const request: SupplyDefenseDocumentRequest = ObjectSerializer.serialize(supplyDefenseDocumentRequest, "SupplyDefenseDocumentRequest");
const response = await getJsonResponse<SupplyDefenseDocumentRequest, SupplyDefenseDocumentResponse>(
resource,
request,
{ ...requestOptions, method: "POST" }
);
return ObjectSerializer.deserialize(response, "SupplyDefenseDocumentResponse");
}
}

export default DisputesAPI;
1 change: 1 addition & 0 deletions src/services/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ export { default as TransfersAPI } from "./transfers";
export { default as BalancePlatformAPI } from "./balancePlatform";
export { default as DataProtectionAPI } from "./dataProtectionApi";
export { default as BalanceControlAPI } from "./balanceControlApi";
export { default as DisputesAPI } from "./disputesApi";

0 comments on commit 3e8e162

Please sign in to comment.