Skip to content

Commit 6d8365f

Browse files
committed
feat: add coupon and gift card errors
1 parent fcda199 commit 6d8365f

9 files changed

Lines changed: 473 additions & 300 deletions

File tree

components/composite/OrderSummary/CouponOrGiftCard/index.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,21 @@ export const CouponOrGiftCard: React.FC<Props> = ({
4646
{
4747
code: "VALIDATION_ERROR",
4848
resource: "orders",
49-
field: "giftCardOrCouponCode",
49+
field: "gift_card_or_coupon_code",
5050
message: t("input.mustBeValidCouponOrGiftCard"),
5151
},
52+
{
53+
code: "VALIDATION_ERROR",
54+
resource: "orders",
55+
field: "coupon_code",
56+
message: t("input.mustBeValidCoupon"),
57+
},
58+
{
59+
code: "VALIDATION_ERROR",
60+
resource: "orders",
61+
field: "gift_card_code",
62+
message: t("input.mustBeValidGiftCard"),
63+
},
5264
]
5365

5466
return (
@@ -60,6 +72,7 @@ export const CouponOrGiftCard: React.FC<Props> = ({
6072
<StyledGiftCardOrCouponInput
6173
data-test-id="input_giftcard_coupon"
6274
className={`form-input ${classError}`}
75+
required={false}
6376
placeholderTranslation={(codeType) =>
6477
t(`orderRecap.${codeType}`)
6578
}
@@ -71,8 +84,8 @@ export const CouponOrGiftCard: React.FC<Props> = ({
7184
/>
7285
</CouponFieldWrapper>
7386
<StyledErrors
87+
data-test-id="discount-error"
7488
resource="orders"
75-
field="giftCardOrCouponCode"
7689
messages={messages}
7790
/>
7891
</CouponFormWrapper>

components/composite/StepPlaceOrder/index.tsx

Lines changed: 12 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
import {
2-
PlaceOrderContainer,
3-
ErrorComponentProps,
4-
} from "@commercelayer/react-components"
1+
import { PlaceOrderContainer } from "@commercelayer/react-components"
52
import { useRouter } from "next/router"
63
import { useContext, useState } from "react"
74
import { Trans, useTranslation } from "react-i18next"
@@ -13,6 +10,7 @@ import { Label } from "components/ui/Label"
1310
import { SpinnerIcon } from "components/ui/SpinnerIcon"
1411

1512
import { ErrorIcon } from "./ErrorIcon"
13+
import { messages } from "./messages"
1614
import {
1715
ErrorIco,
1816
ErrorMessage,
@@ -59,51 +57,6 @@ const StepPlaceOrder: React.FC<Props> = ({
5957

6058
const { placeOrder } = appCtx
6159

62-
const messages: ErrorComponentProps["messages"] = [
63-
{
64-
code: "VALIDATION_ERROR",
65-
resource: "orders",
66-
field: "status",
67-
message: t("error.transition"),
68-
},
69-
{
70-
code: "VALIDATION_ERROR",
71-
resource: "orders",
72-
field: "paymentMethod",
73-
message: t("error.paymentMethod"),
74-
},
75-
{
76-
code: "VALIDATION_ERROR",
77-
resource: "orders",
78-
field: "giftCardOrCouponCode",
79-
message: " ",
80-
},
81-
{
82-
code: "PAYMENT_NOT_APPROVED_FOR_EXECUTION",
83-
resource: "orders",
84-
field: "base",
85-
message: t("error.payer"),
86-
},
87-
{
88-
code: "INVALID_RESOURCE_ID",
89-
resource: "orders",
90-
field: "base",
91-
message: t("error.resourceID"),
92-
},
93-
{
94-
code: "EMPTY_ERROR",
95-
resource: "orders",
96-
field: "customer_email",
97-
message: " ",
98-
},
99-
{
100-
code: "VALIDATION_ERROR",
101-
resource: "orders",
102-
field: "customer_email",
103-
message: " ",
104-
},
105-
]
106-
10760
const handlePlaceOrder = async ({ placed }: { placed: boolean }) => {
10861
if (placed) {
10962
setIsPlacingOrder(true)
@@ -119,11 +72,20 @@ const StepPlaceOrder: React.FC<Props> = ({
11972
return (
12073
<>
12174
<ErrorsContainer data-test-id="errors-container">
122-
<StyledErrors resource="orders" messages={messages}>
75+
<StyledErrors
76+
resource="orders"
77+
messages={
78+
messages &&
79+
messages.map((msg) => {
80+
return { ...msg, message: t(msg.message) }
81+
})
82+
}
83+
>
12384
{(props) => {
12485
if (props.errors?.length === 0) {
12586
return null
12687
}
88+
console.log(props)
12789
const compactedErrors = props.errors
12890
return compactedErrors?.map((error, index) => {
12991
if (error?.trim().length === 0 || !error) {
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { ErrorComponentProps } from "@commercelayer/react-components"
2+
3+
export const messages: ErrorComponentProps["messages"] = [
4+
{
5+
code: "VALIDATION_ERROR",
6+
resource: "orders",
7+
field: "status",
8+
message: "error.transition",
9+
},
10+
{
11+
code: "VALIDATION_ERROR",
12+
resource: "orders",
13+
field: "paymentMethod",
14+
message: "error.paymentMethod",
15+
},
16+
{
17+
code: "VALIDATION_ERROR",
18+
resource: "orders",
19+
field: "giftCardOrCouponCode",
20+
message: " ",
21+
},
22+
{
23+
code: "PAYMENT_NOT_APPROVED_FOR_EXECUTION",
24+
resource: "orders",
25+
field: "base",
26+
message: "error.payer",
27+
},
28+
{
29+
code: "INVALID_RESOURCE_ID",
30+
resource: "orders",
31+
field: "base",
32+
message: "error.resourceID",
33+
},
34+
{
35+
code: "EMPTY_ERROR",
36+
resource: "orders",
37+
field: "customer_email",
38+
message: " ",
39+
},
40+
{
41+
code: "VALIDATION_ERROR",
42+
resource: "orders",
43+
field: "customer_email",
44+
message: " ",
45+
},
46+
{
47+
code: "VALIDATION_ERROR",
48+
resource: "orders",
49+
field: "gift_card_or_coupon_code",
50+
message: " ",
51+
},
52+
{
53+
code: "VALIDATION_ERROR",
54+
resource: "orders",
55+
field: "coupon_code",
56+
message: " ",
57+
},
58+
{
59+
code: "VALIDATION_ERROR",
60+
resource: "orders",
61+
field: "gift_card_code",
62+
message: " ",
63+
},
64+
]

public/static/locales/en/common.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
},
2424

2525
"input":{
26-
"cantBlank" : "Can't be blank",
27-
"mustBeValidFormat" : "Must be valid format",
28-
"mustBeValidEmail":"Must be valid email",
29-
"mustBeValidCouponOrGiftCard":"Doesn't match any active gift card or coupon"
26+
"cantBlank": "Can't be blank",
27+
"mustBeValidFormat": "Must be valid format",
28+
"mustBeValidEmail": "Must be valid email",
29+
"mustBeValidCouponOrGiftCard": "Doesn't match any active gift card or coupon",
30+
"mustBeValidCoupon": "Doesn't match any active coupon",
31+
"mustBeValidGiftCard": "Doesn't match any active gift card"
3032
},
3133

3234
"orderRecap": {

public/static/locales/it/common.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
},
2424

2525
"input":{
26-
"cantBlank" : "Non può essere vuoto",
27-
"mustBeValidFormat" : "Deve essere un formato valido",
28-
"mustBeValidEmail":"Deve essere un indirizzo email valido",
29-
"mustBeValidCouponOrGiftCard":"Non corrisponde ad alcuna carta regalo o coupon attivo"
26+
"cantBlank": "Non può essere vuoto",
27+
"mustBeValidFormat": "Deve essere un formato valido",
28+
"mustBeValidEmail": "Deve essere un indirizzo email valido",
29+
"mustBeValidCouponOrGiftCard": "Non corrisponde ad alcuna carta regalo o coupon attivo",
30+
"mustBeValidCoupon": "Non corrisponde ad un coupon attivo",
31+
"mustBeValidGiftCard": "Non corrisponde ad una carta regalo attiva"
3032
},
3133

3234
"orderRecap": {

specs/e2e/coupon.spec.ts

Lines changed: 0 additions & 107 deletions
This file was deleted.

0 commit comments

Comments
 (0)