1 package fa
2
3 import (
4 "testing"
5 "time"
6
7 . "github.com/go-playground/assert/v2"
8 english "github.com/go-playground/locales/en"
9 ut "github.com/go-playground/universal-translator"
10 "github.com/go-playground/validator/v10"
11 )
12
13 func TestTranslations(t *testing.T) {
14 eng := english.New()
15 uni := ut.New(eng, eng)
16 trans, _ := uni.GetTranslator("en")
17
18 validate := validator.New()
19
20 err := RegisterDefaultTranslations(validate, trans)
21 Equal(t, err, nil)
22
23 type Inner struct {
24 EqCSFieldString string
25 NeCSFieldString string
26 GtCSFieldString string
27 GteCSFieldString string
28 LtCSFieldString string
29 LteCSFieldString string
30 }
31
32 type Test struct {
33 Inner Inner
34 RequiredString string `validate:"required"`
35 RequiredNumber int `validate:"required"`
36 RequiredMultiple []string `validate:"required"`
37 LenString string `validate:"len=1"`
38 LenNumber float64 `validate:"len=1113.00"`
39 LenMultiple []string `validate:"len=7"`
40 MinString string `validate:"min=1"`
41 MinNumber float64 `validate:"min=1113.00"`
42 MinMultiple []string `validate:"min=7"`
43 MaxString string `validate:"max=3"`
44 MaxNumber float64 `validate:"max=1113.00"`
45 MaxMultiple []string `validate:"max=7"`
46 EqString string `validate:"eq=3"`
47 EqNumber float64 `validate:"eq=2.33"`
48 EqMultiple []string `validate:"eq=7"`
49 NeString string `validate:"ne="`
50 NeNumber float64 `validate:"ne=0.00"`
51 NeMultiple []string `validate:"ne=0"`
52 LtString string `validate:"lt=3"`
53 LtNumber float64 `validate:"lt=5.56"`
54 LtMultiple []string `validate:"lt=2"`
55 LtTime time.Time `validate:"lt"`
56 LteString string `validate:"lte=3"`
57 LteNumber float64 `validate:"lte=5.56"`
58 LteMultiple []string `validate:"lte=2"`
59 LteTime time.Time `validate:"lte"`
60 GtString string `validate:"gt=3"`
61 GtNumber float64 `validate:"gt=5.56"`
62 GtMultiple []string `validate:"gt=2"`
63 GtTime time.Time `validate:"gt"`
64 GteString string `validate:"gte=3"`
65 GteNumber float64 `validate:"gte=5.56"`
66 GteMultiple []string `validate:"gte=2"`
67 GteTime time.Time `validate:"gte"`
68 EqFieldString string `validate:"eqfield=MaxString"`
69 EqCSFieldString string `validate:"eqcsfield=Inner.EqCSFieldString"`
70 NeCSFieldString string `validate:"necsfield=Inner.NeCSFieldString"`
71 GtCSFieldString string `validate:"gtcsfield=Inner.GtCSFieldString"`
72 GteCSFieldString string `validate:"gtecsfield=Inner.GteCSFieldString"`
73 LtCSFieldString string `validate:"ltcsfield=Inner.LtCSFieldString"`
74 LteCSFieldString string `validate:"ltecsfield=Inner.LteCSFieldString"`
75 NeFieldString string `validate:"nefield=EqFieldString"`
76 GtFieldString string `validate:"gtfield=MaxString"`
77 GteFieldString string `validate:"gtefield=MaxString"`
78 LtFieldString string `validate:"ltfield=MaxString"`
79 LteFieldString string `validate:"ltefield=MaxString"`
80 AlphaString string `validate:"alpha"`
81 AlphanumString string `validate:"alphanum"`
82 NumericString string `validate:"numeric"`
83 NumberString string `validate:"number"`
84 HexadecimalString string `validate:"hexadecimal"`
85 HexColorString string `validate:"hexcolor"`
86 RGBColorString string `validate:"rgb"`
87 RGBAColorString string `validate:"rgba"`
88 HSLColorString string `validate:"hsl"`
89 HSLAColorString string `validate:"hsla"`
90 Email string `validate:"email"`
91 URL string `validate:"url"`
92 URI string `validate:"uri"`
93 Base64 string `validate:"base64"`
94 Contains string `validate:"contains=purpose"`
95 ContainsAny string `validate:"containsany=!@#$"`
96 Excludes string `validate:"excludes=text"`
97 ExcludesAll string `validate:"excludesall=!@#$"`
98 ExcludesRune string `validate:"excludesrune=☻"`
99 ISBN string `validate:"isbn"`
100 ISBN10 string `validate:"isbn10"`
101 ISBN13 string `validate:"isbn13"`
102 ISSN string `validate:"issn"`
103 UUID string `validate:"uuid"`
104 UUID3 string `validate:"uuid3"`
105 UUID4 string `validate:"uuid4"`
106 UUID5 string `validate:"uuid5"`
107 ULID string `validate:"ulid"`
108 ASCII string `validate:"ascii"`
109 PrintableASCII string `validate:"printascii"`
110 MultiByte string `validate:"multibyte"`
111 DataURI string `validate:"datauri"`
112 Latitude string `validate:"latitude"`
113 Longitude string `validate:"longitude"`
114 SSN string `validate:"ssn"`
115 IP string `validate:"ip"`
116 IPv4 string `validate:"ipv4"`
117 IPv6 string `validate:"ipv6"`
118 CIDR string `validate:"cidr"`
119 CIDRv4 string `validate:"cidrv4"`
120 CIDRv6 string `validate:"cidrv6"`
121 TCPAddr string `validate:"tcp_addr"`
122 TCPAddrv4 string `validate:"tcp4_addr"`
123 TCPAddrv6 string `validate:"tcp6_addr"`
124 UDPAddr string `validate:"udp_addr"`
125 UDPAddrv4 string `validate:"udp4_addr"`
126 UDPAddrv6 string `validate:"udp6_addr"`
127 IPAddr string `validate:"ip_addr"`
128 IPAddrv4 string `validate:"ip4_addr"`
129 IPAddrv6 string `validate:"ip6_addr"`
130 UinxAddr string `validate:"unix_addr"`
131 MAC string `validate:"mac"`
132 IsColor string `validate:"iscolor"`
133 StrPtrMinLen *string `validate:"min=10"`
134 StrPtrMaxLen *string `validate:"max=1"`
135 StrPtrLen *string `validate:"len=2"`
136 StrPtrLt *string `validate:"lt=1"`
137 StrPtrLte *string `validate:"lte=1"`
138 StrPtrGt *string `validate:"gt=10"`
139 StrPtrGte *string `validate:"gte=10"`
140 OneOfString string `validate:"oneof=red green"`
141 OneOfInt int `validate:"oneof=5 63"`
142 UniqueSlice []string `validate:"unique"`
143 UniqueArray [3]string `validate:"unique"`
144 UniqueMap map[string]string `validate:"unique"`
145 JSONString string `validate:"json"`
146 LowercaseString string `validate:"lowercase"`
147 UppercaseString string `validate:"uppercase"`
148 Datetime string `validate:"datetime=2006-01-02"`
149 PostCode string `validate:"postcode_iso3166_alpha2=SG"`
150 PostCodeCountry string
151 PostCodeByField string `validate:"postcode_iso3166_alpha2_field=PostCodeCountry"`
152 Image string `validate:"image"`
153 }
154
155 var test Test
156
157 test.Inner.EqCSFieldString = "1234"
158 test.Inner.GtCSFieldString = "1234"
159 test.Inner.GteCSFieldString = "1234"
160
161 test.MaxString = "1234"
162 test.MaxNumber = 2000
163 test.MaxMultiple = make([]string, 9)
164
165 test.LtString = "1234"
166 test.LtNumber = 6
167 test.LtMultiple = make([]string, 3)
168 test.LtTime = time.Now().Add(time.Hour * 24)
169
170 test.LteString = "1234"
171 test.LteNumber = 6
172 test.LteMultiple = make([]string, 3)
173 test.LteTime = time.Now().Add(time.Hour * 24)
174
175 test.LtFieldString = "12345"
176 test.LteFieldString = "12345"
177
178 test.LtCSFieldString = "1234"
179 test.LteCSFieldString = "1234"
180
181 test.AlphaString = "abc3"
182 test.AlphanumString = "abc3!"
183 test.NumericString = "12E.00"
184 test.NumberString = "12E"
185
186 test.Excludes = "this is some test text"
187 test.ExcludesAll = "This is Great!"
188 test.ExcludesRune = "Love it ☻"
189
190 test.ASCII = "カタカナ"
191 test.PrintableASCII = "カタカナ"
192
193 test.MultiByte = "1234feerf"
194
195 test.LowercaseString = "ABCDEFG"
196 test.UppercaseString = "abcdefg"
197
198 s := "toolong"
199 test.StrPtrMaxLen = &s
200 test.StrPtrLen = &s
201
202 test.UniqueSlice = []string{"1234", "1234"}
203 test.UniqueMap = map[string]string{"key1": "1234", "key2": "1234"}
204 test.Datetime = "2008-Feb-01"
205
206 err = validate.Struct(test)
207 NotEqual(t, err, nil)
208
209 errs, ok := err.(validator.ValidationErrors)
210 Equal(t, ok, true)
211
212 tests := []struct {
213 ns string
214 expected string
215 }{
216 {
217 ns: "Test.IsColor",
218 expected: "IsColor باید یک رنگ معتبر باشد",
219 },
220 {
221 ns: "Test.MAC",
222 expected: "MAC باید یک مکآدرس معتبر باشد",
223 },
224 {
225 ns: "Test.IPAddr",
226 expected: "IPAddr باید یک آدرس آیپی قابل دسترس باشد",
227 },
228 {
229 ns: "Test.IPAddrv4",
230 expected: "IPAddrv4 باید یک آدرس آیپی IPv4 قابل دسترس باشد",
231 },
232 {
233 ns: "Test.IPAddrv6",
234 expected: "IPAddrv6 باید یک آدرس آیپی IPv6 قابل دسترس باشد",
235 },
236 {
237 ns: "Test.UDPAddr",
238 expected: "UDPAddr باید یک آدرس UDP معتبر باشد",
239 },
240 {
241 ns: "Test.UDPAddrv4",
242 expected: "UDPAddrv4 باید یک آدرس UDP IPv4 معتبر باشد",
243 },
244 {
245 ns: "Test.UDPAddrv6",
246 expected: "UDPAddrv6 باید یک آدرس UDP IPv6 معتبر باشد",
247 },
248 {
249 ns: "Test.TCPAddr",
250 expected: "TCPAddr باید یک آدرس TCP معتبر باشد",
251 },
252 {
253 ns: "Test.TCPAddrv4",
254 expected: "TCPAddrv4 باید یک آدرس TCP IPv4 معتبر باشد",
255 },
256 {
257 ns: "Test.TCPAddrv6",
258 expected: "TCPAddrv6 باید یک آدرس TCP IPv6 معتبر باشد",
259 },
260 {
261 ns: "Test.CIDR",
262 expected: "CIDR باید یک نشانهگذاری CIDR معتبر باشد",
263 },
264 {
265 ns: "Test.CIDRv4",
266 expected: "CIDRv4 باید یک نشانهگذاری CIDR معتبر برای آدرس آیپی IPv4 باشد",
267 },
268 {
269 ns: "Test.CIDRv6",
270 expected: "CIDRv6 باید یک نشانهگذاری CIDR معتبر برای آدرس آیپی IPv6 باشد",
271 },
272 {
273 ns: "Test.SSN",
274 expected: "SSN باید یک شماره SSN معتبر باشد",
275 },
276 {
277 ns: "Test.IP",
278 expected: "IP باید یک آدرس آیپی معتبر باشد",
279 },
280 {
281 ns: "Test.IPv4",
282 expected: "IPv4 باید یک آدرس آیپی IPv4 معتبر باشد",
283 },
284 {
285 ns: "Test.IPv6",
286 expected: "IPv6 باید یک آدرس آیپی IPv6 معتبر باشد",
287 },
288 {
289 ns: "Test.DataURI",
290 expected: "DataURI باید یک Data URI معتبر باشد",
291 },
292 {
293 ns: "Test.Latitude",
294 expected: "Latitude باید یک عرض جغرافیایی معتبر باشد",
295 },
296 {
297 ns: "Test.Longitude",
298 expected: "Longitude باید یک طول جغرافیایی معتبر باشد",
299 },
300 {
301 ns: "Test.MultiByte",
302 expected: "MultiByte باید شامل کاراکترهای چندبایته باشد",
303 },
304 {
305 ns: "Test.ASCII",
306 expected: "ASCII باید فقط شامل کاراکترهای اسکی باشد",
307 },
308 {
309 ns: "Test.PrintableASCII",
310 expected: "PrintableASCII باید فقط شامل کاراکترهای اسکی قابل چاپ باشد",
311 },
312 {
313 ns: "Test.UUID",
314 expected: "UUID باید یک UUID معتبر باشد",
315 },
316 {
317 ns: "Test.UUID3",
318 expected: "UUID3 باید یک UUID نسخه 3 معتبر باشد",
319 },
320 {
321 ns: "Test.UUID4",
322 expected: "UUID4 باید یک UUID نسخه 4 معتبر باشد",
323 },
324 {
325 ns: "Test.UUID5",
326 expected: "UUID5 باید یک UUID نسخه 5 معتبر باشد",
327 },
328 {
329 ns: "Test.ULID",
330 expected: "ULID باید یک ULID معتبر باشد",
331 },
332 {
333 ns: "Test.ISBN",
334 expected: "ISBN باید یک شابک معتبر باشد",
335 },
336 {
337 ns: "Test.ISBN10",
338 expected: "ISBN10 باید یک شابک(ISBN-10) معتبر باشد",
339 },
340 {
341 ns: "Test.ISBN13",
342 expected: "ISBN13 باید یک شابک(ISBN-13) معتبر باشد",
343 },
344 {
345 ns: "Test.ISSN",
346 expected: "ISSN باید یک شابک(ISSN) معتبر باشد",
347 },
348 {
349 ns: "Test.Excludes",
350 expected: "Excludes نمیتواند شامل 'text' باشد",
351 },
352 {
353 ns: "Test.ExcludesAll",
354 expected: "ExcludesAll نمیتواند شامل کاراکترهای '!@#$' باشد",
355 },
356 {
357 ns: "Test.ExcludesRune",
358 expected: "ExcludesRune نمیتواند شامل '☻' باشد",
359 },
360 {
361 ns: "Test.ContainsAny",
362 expected: "ContainsAny باید شامل کاراکترهای '!@#$' باشد",
363 },
364 {
365 ns: "Test.Contains",
366 expected: "Contains باید شامل 'purpose' باشد",
367 },
368 {
369 ns: "Test.Base64",
370 expected: "Base64 باید یک متن درمبنای64 معتبر باشد",
371 },
372 {
373 ns: "Test.Email",
374 expected: "Email باید یک ایمیل معتبر باشد",
375 },
376 {
377 ns: "Test.URL",
378 expected: "URL باید یک آدرس اینترنتی معتبر باشد",
379 },
380 {
381 ns: "Test.URI",
382 expected: "URI باید یک URI معتبر باشد",
383 },
384 {
385 ns: "Test.RGBColorString",
386 expected: "RGBColorString باید یک کد رنگ RGB باشد",
387 },
388 {
389 ns: "Test.RGBAColorString",
390 expected: "RGBAColorString باید یک کد رنگ RGBA باشد",
391 },
392 {
393 ns: "Test.HSLColorString",
394 expected: "HSLColorString باید یک کد رنگ HSL باشد",
395 },
396 {
397 ns: "Test.HSLAColorString",
398 expected: "HSLAColorString باید یک کد رنگ HSLA باشد",
399 },
400 {
401 ns: "Test.HexadecimalString",
402 expected: "HexadecimalString باید یک عدد درمبنای16 باشد",
403 },
404 {
405 ns: "Test.HexColorString",
406 expected: "HexColorString باید یک کد رنگ HEX باشد",
407 },
408 {
409 ns: "Test.NumberString",
410 expected: "NumberString باید یک عدد معتبر باشد",
411 },
412 {
413 ns: "Test.NumericString",
414 expected: "NumericString باید یک عدد معتبر باشد",
415 },
416 {
417 ns: "Test.AlphanumString",
418 expected: "AlphanumString میتواند فقط شامل حروف و اعداد باشد",
419 },
420 {
421 ns: "Test.AlphaString",
422 expected: "AlphaString میتواند فقط شامل حروف باشد",
423 },
424 {
425 ns: "Test.LtFieldString",
426 expected: "طول LtFieldString باید کمتر از MaxString باشد",
427 },
428 {
429 ns: "Test.LteFieldString",
430 expected: "طول LteFieldString باید کمتر یا برابر MaxString باشد",
431 },
432 {
433 ns: "Test.GtFieldString",
434 expected: "طول GtFieldString باید بیشتر از MaxString باشد",
435 },
436 {
437 ns: "Test.GteFieldString",
438 expected: "طول GteFieldString باید بیشتر یا برابر MaxString باشد",
439 },
440 {
441 ns: "Test.NeFieldString",
442 expected: "NeFieldString نمیتواند برابر EqFieldString باشد",
443 },
444 {
445 ns: "Test.LtCSFieldString",
446 expected: "طول LtCSFieldString باید کمتر از Inner.LtCSFieldString باشد",
447 },
448 {
449 ns: "Test.LteCSFieldString",
450 expected: "طول LteCSFieldString باید کمتر یا برابر Inner.LteCSFieldString باشد",
451 },
452 {
453 ns: "Test.GtCSFieldString",
454 expected: "طول GtCSFieldString باید بیشتر از Inner.GtCSFieldString باشد",
455 },
456 {
457 ns: "Test.GteCSFieldString",
458 expected: "طول GteCSFieldString باید بیشتر یا برابر Inner.GteCSFieldString باشد",
459 },
460 {
461 ns: "Test.NeCSFieldString",
462 expected: "NeCSFieldString نمیتواند برابر Inner.NeCSFieldString باشد",
463 },
464 {
465 ns: "Test.EqCSFieldString",
466 expected: "EqCSFieldString باید برابر Inner.EqCSFieldString باشد",
467 },
468 {
469 ns: "Test.EqFieldString",
470 expected: "EqFieldString باید برابر MaxString باشد",
471 },
472 {
473 ns: "Test.GteString",
474 expected: "طول GteString باید حداقل 3 کاراکتر باشد",
475 },
476 {
477 ns: "Test.GteNumber",
478 expected: "GteNumber باید بیشتر یا برابر 5.56 باشد",
479 },
480 {
481 ns: "Test.GteMultiple",
482 expected: "GteMultiple باید شامل حداقل 2 آیتم باشد",
483 },
484 {
485 ns: "Test.GteTime",
486 expected: "GteTime باید بعد یا برابر تاریخ و زمان کنونی باشد",
487 },
488 {
489 ns: "Test.GtString",
490 expected: "طول GtString باید بیشتر از 3 کاراکتر باشد",
491 },
492 {
493 ns: "Test.GtNumber",
494 expected: "GtNumber باید بیشتر از 5.56 باشد",
495 },
496 {
497 ns: "Test.GtMultiple",
498 expected: "GtMultiple باید دارای بیشتر از 2 آیتم باشد",
499 },
500 {
501 ns: "Test.GtTime",
502 expected: "GtTime باید بعد از تاریخ و زمان کنونی باشد",
503 },
504 {
505 ns: "Test.LteString",
506 expected: "طول LteString باید حداکثر 3 کاراکتر باشد",
507 },
508 {
509 ns: "Test.LteNumber",
510 expected: "LteNumber باید کمتر یا برابر 5.56 باشد",
511 },
512 {
513 ns: "Test.LteMultiple",
514 expected: "LteMultiple باید حداکثر شامل 2 آیتم باشد",
515 },
516 {
517 ns: "Test.LteTime",
518 expected: "LteTime باید قبل یا برابر تاریخ و زمان کنونی باشد",
519 },
520 {
521 ns: "Test.LtString",
522 expected: "طول LtString باید کمتر از 3 کاراکتر باشد",
523 },
524 {
525 ns: "Test.LtNumber",
526 expected: "LtNumber باید کمتر از 5.56 باشد",
527 },
528 {
529 ns: "Test.LtMultiple",
530 expected: "LtMultiple باید دارای کمتر از 2 آیتم باشد",
531 },
532 {
533 ns: "Test.LtTime",
534 expected: "LtTime باید قبل از تاریخ و زمان کنونی باشد",
535 },
536 {
537 ns: "Test.NeString",
538 expected: "NeString نباید برابر باشد",
539 },
540 {
541 ns: "Test.NeNumber",
542 expected: "NeNumber نباید برابر 0.00 باشد",
543 },
544 {
545 ns: "Test.NeMultiple",
546 expected: "NeMultiple نباید برابر 0 باشد",
547 },
548 {
549 ns: "Test.EqString",
550 expected: "EqString برابر 3 نمیباشد",
551 },
552 {
553 ns: "Test.EqNumber",
554 expected: "EqNumber برابر 2.33 نمیباشد",
555 },
556 {
557 ns: "Test.EqMultiple",
558 expected: "EqMultiple برابر 7 نمیباشد",
559 },
560 {
561 ns: "Test.MaxString",
562 expected: "طول MaxString باید حداکثر 3 کاراکتر باشد",
563 },
564 {
565 ns: "Test.MaxNumber",
566 expected: "MaxNumber باید کمتر یا برابر 1,113.00 باشد",
567 },
568 {
569 ns: "Test.MaxMultiple",
570 expected: "MaxMultiple باید شامل حداکثر 7 آیتم باشد",
571 },
572 {
573 ns: "Test.MinString",
574 expected: "طول MinString باید حداقل 1 کاراکتر باشد",
575 },
576 {
577 ns: "Test.MinNumber",
578 expected: "MinNumber باید بزرگتر یا برابر 1,113.00 باشد",
579 },
580 {
581 ns: "Test.MinMultiple",
582 expected: "MinMultiple باید شامل حداقل 7 آیتم باشد",
583 },
584 {
585 ns: "Test.LenString",
586 expected: "طول LenString باید 1 کاراکتر باشد",
587 },
588 {
589 ns: "Test.LenNumber",
590 expected: "طول LenNumber باید برابر 1,113.00 باشد",
591 },
592 {
593 ns: "Test.LenMultiple",
594 expected: "تعداد LenMultiple باید برابر 7 آیتم باشد",
595 },
596 {
597 ns: "Test.RequiredString",
598 expected: "فیلد RequiredString اجباری میباشد",
599 },
600 {
601 ns: "Test.RequiredNumber",
602 expected: "فیلد RequiredNumber اجباری میباشد",
603 },
604 {
605 ns: "Test.RequiredMultiple",
606 expected: "فیلد RequiredMultiple اجباری میباشد",
607 },
608 {
609 ns: "Test.StrPtrMinLen",
610 expected: "طول StrPtrMinLen باید حداقل 10 کاراکتر باشد",
611 },
612 {
613 ns: "Test.StrPtrMaxLen",
614 expected: "طول StrPtrMaxLen باید حداکثر 1 کاراکتر باشد",
615 },
616 {
617 ns: "Test.StrPtrLen",
618 expected: "طول StrPtrLen باید 2 کاراکتر باشد",
619 },
620 {
621 ns: "Test.StrPtrLt",
622 expected: "طول StrPtrLt باید کمتر از 1 کاراکتر باشد",
623 },
624 {
625 ns: "Test.StrPtrLte",
626 expected: "طول StrPtrLte باید حداکثر 1 کاراکتر باشد",
627 },
628 {
629 ns: "Test.StrPtrGt",
630 expected: "طول StrPtrGt باید بیشتر از 10 کاراکتر باشد",
631 },
632 {
633 ns: "Test.StrPtrGte",
634 expected: "طول StrPtrGte باید حداقل 10 کاراکتر باشد",
635 },
636 {
637 ns: "Test.OneOfString",
638 expected: "OneOfString باید یکی از مقادیر [red green] باشد",
639 },
640 {
641 ns: "Test.OneOfInt",
642 expected: "OneOfInt باید یکی از مقادیر [5 63] باشد",
643 },
644 {
645 ns: "Test.UniqueSlice",
646 expected: "UniqueSlice باید شامل مقادیر منحصربفرد باشد",
647 },
648 {
649 ns: "Test.UniqueArray",
650 expected: "UniqueArray باید شامل مقادیر منحصربفرد باشد",
651 },
652 {
653 ns: "Test.UniqueMap",
654 expected: "UniqueMap باید شامل مقادیر منحصربفرد باشد",
655 },
656 {
657 ns: "Test.JSONString",
658 expected: "JSONString باید یک json معتبر باشد",
659 },
660 {
661 ns: "Test.LowercaseString",
662 expected: "LowercaseString باید یک متن با حروف کوچک باشد",
663 },
664 {
665 ns: "Test.UppercaseString",
666 expected: "UppercaseString باید یک متن با حروف بزرگ باشد",
667 },
668 {
669 ns: "Test.Datetime",
670 expected: "فرمت Datetime با 2006-01-02 سازگار نیست",
671 },
672 {
673 ns: "Test.PostCode",
674 expected: "PostCode یک کدپستی معتبر کشور SG نیست",
675 },
676 {
677 ns: "Test.PostCodeByField",
678 expected: "PostCodeByField یک کدپستی معتبر کشور فیلد PostCodeCountry نیست",
679 },
680 {
681 ns: "Test.Image",
682 expected: "Image باید یک تصویر معتبر باشد",
683 },
684 }
685
686 for _, tt := range tests {
687
688 var fe validator.FieldError
689
690 for _, e := range errs {
691 if tt.ns == e.Namespace() {
692 fe = e
693 break
694 }
695 }
696
697 NotEqual(t, fe, nil)
698 Equal(t, tt.expected, fe.Translate(trans))
699 }
700 }
701
View as plain text