From b7eec32edd87919713f218af93a7b6e4d1e3b5b1 Mon Sep 17 00:00:00 2001 From: jkaliszuk Date: Tue, 23 Jan 2024 12:54:09 +0100 Subject: [PATCH 1/5] Added `error` object in VoucherifyError. --- packages/sdk/src/VoucherifyError.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/sdk/src/VoucherifyError.ts b/packages/sdk/src/VoucherifyError.ts index f1713f487..90550f802 100644 --- a/packages/sdk/src/VoucherifyError.ts +++ b/packages/sdk/src/VoucherifyError.ts @@ -13,6 +13,7 @@ export class VoucherifyError extends Error { public related_object_ids?: string[] public related_object_type?: string public related_object_total?: number + public error?: { message: string } public cause?: AxiosError constructor(statusCode: number, body?: unknown, axiosError?: AxiosError) { @@ -31,6 +32,7 @@ export class VoucherifyError extends Error { this.related_object_ids = (body).related_object_ids this.related_object_type = (body).related_object_type this.related_object_total = (body).related_object_total + this.error = (body).error this.cause = axiosError } } From 0144494d8c2a3607c834cfd660c5661d12c18325 Mon Sep 17 00:00:00 2001 From: jkaliszuk Date: Tue, 23 Jan 2024 12:54:30 +0100 Subject: [PATCH 2/5] Added validation_rules to VouchersCreateParameters (mostly for test case) --- packages/sdk/src/types/Vouchers.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/types/Vouchers.ts b/packages/sdk/src/types/Vouchers.ts index 7f5ddfd2b..38a66f236 100644 --- a/packages/sdk/src/types/Vouchers.ts +++ b/packages/sdk/src/types/Vouchers.ts @@ -132,7 +132,8 @@ export interface VouchersCreateParameters { } redemption?: { quantity: number - } + }, + validation_rules?: string[] } export type VouchersCreate = VouchersCreateParameters & From 49ea363d554d383da8b8a8e6db1babdca4d81709 Mon Sep 17 00:00:00 2001 From: jkaliszuk Date: Tue, 23 Jan 2024 12:54:54 +0100 Subject: [PATCH 3/5] Added test Redemptions API with `redemption that failed due validation rule validate error should has .error.message element if defined in validation rule` test. --- packages/sdk/test/redemptions.spec.ts | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 packages/sdk/test/redemptions.spec.ts diff --git a/packages/sdk/test/redemptions.spec.ts b/packages/sdk/test/redemptions.spec.ts new file mode 100644 index 000000000..3298b9023 --- /dev/null +++ b/packages/sdk/test/redemptions.spec.ts @@ -0,0 +1,60 @@ +import { voucherifyClient as client } from './client' +import {DiscountVouchersTypesEnum} from "@voucherify/sdk"; +import {generateRandomString} from "./utils/generateRandomString"; + +jest.setTimeout(15000) + +describe('Redemptions API', () => { + it('redemption that failed due validation rule validate error should has .error.message element if defined in validation rule', async () => { + const errorMessage = 'CUSTOMER NOT IN SEGMENT' + + const validationRule = await client.validationRules.create({ + name: 'Customer must be in segment', + rules: { + 1: { + name: 'customer_segment', + rules: {}, + property: null, + conditions: { + "$is": [ + "seg_" + generateRandomString() + ] + } + }, + logic: '1' + }, + error: { + message: errorMessage, + } + }) + + const voucher = await client.vouchers.create({ + type: 'DISCOUNT_VOUCHER', + discount: { + amount_off: 2000, + type: DiscountVouchersTypesEnum.AMOUNT, + }, + redemption: { + quantity: 1, + }, + metadata: {}, + validation_rules: [ + validationRule.id + ] + }) + + try { + await client.redemptions.redeem(voucher.code, { + customer: { + source_id: 'cust_' + generateRandomString(), + name: 'John Doe', + object: 'customer', + } + }) + } catch (error) { + expect(error.message).toBeDefined() + expect(error.error.message).toBeDefined() + expect(error.error.message).toEqual(errorMessage) + } + }) +}) From 738ee5a704396499c0ec045355086eb1101a3cfa Mon Sep 17 00:00:00 2001 From: jkaliszuk Date: Tue, 23 Jan 2024 13:01:35 +0100 Subject: [PATCH 4/5] Changeset. --- .changeset/smooth-garlics-remain.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smooth-garlics-remain.md diff --git a/.changeset/smooth-garlics-remain.md b/.changeset/smooth-garlics-remain.md new file mode 100644 index 000000000..700c50e34 --- /dev/null +++ b/.changeset/smooth-garlics-remain.md @@ -0,0 +1,5 @@ +--- +'@voucherify/sdk': patch +--- + +Added `error` object in `VoucherifyError`. Added `validation_rules` in VouchersCreateParameters. From a853170c875422390b0ed1adeff938516a98167c Mon Sep 17 00:00:00 2001 From: jkaliszuk Date: Tue, 23 Jan 2024 14:42:12 +0100 Subject: [PATCH 5/5] Removed comma from VouchersCreateParameters --- packages/sdk/src/types/Vouchers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/types/Vouchers.ts b/packages/sdk/src/types/Vouchers.ts index 38a66f236..2e173d42d 100644 --- a/packages/sdk/src/types/Vouchers.ts +++ b/packages/sdk/src/types/Vouchers.ts @@ -132,7 +132,7 @@ export interface VouchersCreateParameters { } redemption?: { quantity: number - }, + } validation_rules?: string[] }