1 package it
2
3 import (
4 "testing"
5 "time"
6
7 . "github.com/go-playground/assert/v2"
8 italian "github.com/go-playground/locales/it"
9 ut "github.com/go-playground/universal-translator"
10 "github.com/go-playground/validator/v10"
11 )
12
13 func TestTranslations(t *testing.T) {
14 ita := italian.New()
15 uni := ut.New(ita, ita)
16 trans, _ := uni.GetTranslator("it")
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 BooleanString string `validate:"boolean"`
146 JSONString string `validate:"json"`
147 JWTString string `validate:"jwt"`
148 LowercaseString string `validate:"lowercase"`
149 UppercaseString string `validate:"uppercase"`
150 StartsWithString string `validate:"startswith=foo"`
151 StartsNotWithString string `validate:"startsnotwith=foo"`
152 EndsWithString string `validate:"endswith=foo"`
153 EndsNotWithString string `validate:"endsnotwith=foo"`
154 Datetime string `validate:"datetime=2006-01-02"`
155 PostCode string `validate:"postcode_iso3166_alpha2=SG"`
156 PostCodeCountry string
157 PostCodeByField string `validate:"postcode_iso3166_alpha2_field=PostCodeCountry"`
158 Image string `validate:"image"`
159 }
160
161 var test Test
162
163 test.Inner.EqCSFieldString = "1234"
164 test.Inner.GtCSFieldString = "1234"
165 test.Inner.GteCSFieldString = "1234"
166
167 test.MaxString = "1234"
168 test.MaxNumber = 2000
169 test.MaxMultiple = make([]string, 9)
170
171 test.LtString = "1234"
172 test.LtNumber = 6
173 test.LtMultiple = make([]string, 3)
174 test.LtTime = time.Now().Add(time.Hour * 24)
175
176 test.LteString = "1234"
177 test.LteNumber = 6
178 test.LteMultiple = make([]string, 3)
179 test.LteTime = time.Now().Add(time.Hour * 24)
180
181 test.LtFieldString = "12345"
182 test.LteFieldString = "12345"
183
184 test.LtCSFieldString = "1234"
185 test.LteCSFieldString = "1234"
186
187 test.AlphaString = "abc3"
188 test.AlphanumString = "abc3!"
189 test.NumericString = "12E.00"
190 test.NumberString = "12E"
191
192 test.Excludes = "this is some test text"
193 test.ExcludesAll = "This is Great!"
194 test.ExcludesRune = "Love it ☻"
195
196 test.ASCII = "カタカナ"
197 test.PrintableASCII = "カタカナ"
198
199 test.MultiByte = "1234feerf"
200
201 test.LowercaseString = "ABCDEFG"
202 test.UppercaseString = "abcdefg"
203
204 test.StartsWithString = "hello"
205 test.StartsNotWithString = "foo-hello"
206 test.EndsWithString = "hello"
207 test.EndsNotWithString = "hello-foo"
208
209 s := "toolong"
210 test.StrPtrMaxLen = &s
211 test.StrPtrLen = &s
212
213 test.UniqueSlice = []string{"1234", "1234"}
214 test.UniqueMap = map[string]string{"key1": "1234", "key2": "1234"}
215 test.Datetime = "2008-Feb-01"
216
217 err = validate.Struct(test)
218 NotEqual(t, err, nil)
219
220 errs, ok := err.(validator.ValidationErrors)
221 Equal(t, ok, true)
222
223 tests := []struct {
224 ns string
225 expected string
226 }{
227 {
228 ns: "Test.IsColor",
229 expected: "IsColor deve essere un colore valido",
230 },
231 {
232 ns: "Test.MAC",
233 expected: "MAC deve contenere un indirizzo MAC valido",
234 },
235 {
236 ns: "Test.IPAddr",
237 expected: "IPAddr deve essere un indirizzo IP risolvibile",
238 },
239 {
240 ns: "Test.IPAddrv4",
241 expected: "IPAddrv4 deve essere un indirizzo IPv4 risolvibile",
242 },
243 {
244 ns: "Test.IPAddrv6",
245 expected: "IPAddrv6 deve essere un indirizzo IPv6 risolvibile",
246 },
247 {
248 ns: "Test.UDPAddr",
249 expected: "UDPAddr deve essere un indirizzo UDP valido",
250 },
251 {
252 ns: "Test.UDPAddrv4",
253 expected: "UDPAddrv4 deve essere un indirizzo IPv4 UDP valido",
254 },
255 {
256 ns: "Test.UDPAddrv6",
257 expected: "UDPAddrv6 deve essere un indirizzo IPv6 UDP valido",
258 },
259 {
260 ns: "Test.TCPAddr",
261 expected: "TCPAddr deve essere un indirizzo TCP valido",
262 },
263 {
264 ns: "Test.TCPAddrv4",
265 expected: "TCPAddrv4 deve essere un indirizzo IPv4 TCP valido",
266 },
267 {
268 ns: "Test.TCPAddrv6",
269 expected: "TCPAddrv6 deve essere un indirizzo IPv6 TCP valido",
270 },
271 {
272 ns: "Test.CIDR",
273 expected: "CIDR deve contenere una notazione CIDR valida",
274 },
275 {
276 ns: "Test.CIDRv4",
277 expected: "CIDRv4 deve contenere una notazione CIDR per un indirizzo IPv4 valida",
278 },
279 {
280 ns: "Test.CIDRv6",
281 expected: "CIDRv6 deve contenere una notazione CIDR per un indirizzo IPv6 valida",
282 },
283 {
284 ns: "Test.SSN",
285 expected: "SSN deve essere un numero SSN valido",
286 },
287 {
288 ns: "Test.IP",
289 expected: "IP deve essere un indirizzo IP valido",
290 },
291 {
292 ns: "Test.IPv4",
293 expected: "IPv4 deve essere un indirizzo IPv4 valido",
294 },
295 {
296 ns: "Test.IPv6",
297 expected: "IPv6 deve essere un indirizzo IPv6 valido",
298 },
299 {
300 ns: "Test.DataURI",
301 expected: "DataURI deve contenere un Data URI valido",
302 },
303 {
304 ns: "Test.Latitude",
305 expected: "Latitude deve contenere una latitudine valida",
306 },
307 {
308 ns: "Test.Longitude",
309 expected: "Longitude deve contenere una longitudine valida",
310 },
311 {
312 ns: "Test.MultiByte",
313 expected: "MultiByte deve contenere caratteri multibyte",
314 },
315 {
316 ns: "Test.ASCII",
317 expected: "ASCII deve contenere solo caratteri ascii",
318 },
319 {
320 ns: "Test.PrintableASCII",
321 expected: "PrintableASCII deve contenere solo caratteri ascii stampabili",
322 },
323 {
324 ns: "Test.UUID",
325 expected: "UUID deve essere un UUID valido",
326 },
327 {
328 ns: "Test.UUID3",
329 expected: "UUID3 deve essere un UUID versione 3 valido",
330 },
331 {
332 ns: "Test.UUID4",
333 expected: "UUID4 deve essere un UUID versione 4 valido",
334 },
335 {
336 ns: "Test.UUID5",
337 expected: "UUID5 deve essere un UUID versione 5 valido",
338 },
339 {
340 ns: "Test.ULID",
341 expected: "ULID deve essere un ULID valido",
342 },
343 {
344 ns: "Test.ISBN",
345 expected: "ISBN deve essere un numero ISBN valido",
346 },
347 {
348 ns: "Test.ISBN10",
349 expected: "ISBN10 deve essere un numero ISBN-10 valido",
350 },
351 {
352 ns: "Test.ISBN13",
353 expected: "ISBN13 deve essere un numero ISBN-13 valido",
354 },
355 {
356 ns: "Test.ISSN",
357 expected: "ISSN deve essere un numero ISSN valido",
358 },
359 {
360 ns: "Test.Excludes",
361 expected: "Excludes non deve contenere il testo 'text'",
362 },
363 {
364 ns: "Test.ExcludesAll",
365 expected: "ExcludesAll non deve contenere alcuno dei seguenti caratteri '!@#$'",
366 },
367 {
368 ns: "Test.ExcludesRune",
369 expected: "ExcludesRune non deve contenere '☻'",
370 },
371 {
372 ns: "Test.ContainsAny",
373 expected: "ContainsAny deve contenere almeno uno dei seguenti caratteri '!@#$'",
374 },
375 {
376 ns: "Test.Contains",
377 expected: "Contains deve contenere il testo 'purpose'",
378 },
379 {
380 ns: "Test.Base64",
381 expected: "Base64 deve essere una stringa Base64 valida",
382 },
383 {
384 ns: "Test.Email",
385 expected: "Email deve essere un indirizzo email valido",
386 },
387 {
388 ns: "Test.URL",
389 expected: "URL deve essere un URL valido",
390 },
391 {
392 ns: "Test.URI",
393 expected: "URI deve essere un URI valido",
394 },
395 {
396 ns: "Test.RGBColorString",
397 expected: "RGBColorString deve essere un colore RGB valido",
398 },
399 {
400 ns: "Test.RGBAColorString",
401 expected: "RGBAColorString deve essere un colore RGBA valido",
402 },
403 {
404 ns: "Test.HSLColorString",
405 expected: "HSLColorString deve essere un colore HSL valido",
406 },
407 {
408 ns: "Test.HSLAColorString",
409 expected: "HSLAColorString deve essere un colore HSLA valido",
410 },
411 {
412 ns: "Test.HexadecimalString",
413 expected: "HexadecimalString deve essere un esadecimale valido",
414 },
415 {
416 ns: "Test.HexColorString",
417 expected: "HexColorString deve essere un colore HEX valido",
418 },
419 {
420 ns: "Test.NumberString",
421 expected: "NumberString deve essere un numero valido",
422 },
423 {
424 ns: "Test.NumericString",
425 expected: "NumericString deve essere un valore numerico valido",
426 },
427 {
428 ns: "Test.AlphanumString",
429 expected: "AlphanumString può contenere solo caratteri alfanumerici",
430 },
431 {
432 ns: "Test.AlphaString",
433 expected: "AlphaString può contenere solo caratteri alfabetici",
434 },
435 {
436 ns: "Test.LtFieldString",
437 expected: "LtFieldString deve essere minore di MaxString",
438 },
439 {
440 ns: "Test.LteFieldString",
441 expected: "LteFieldString deve essere minore o uguale a MaxString",
442 },
443 {
444 ns: "Test.GtFieldString",
445 expected: "GtFieldString deve essere maggiore di MaxString",
446 },
447 {
448 ns: "Test.GteFieldString",
449 expected: "GteFieldString deve essere maggiore o uguale a MaxString",
450 },
451 {
452 ns: "Test.NeFieldString",
453 expected: "NeFieldString deve essere diverso da EqFieldString",
454 },
455 {
456 ns: "Test.LtCSFieldString",
457 expected: "LtCSFieldString deve essere minore di Inner.LtCSFieldString",
458 },
459 {
460 ns: "Test.LteCSFieldString",
461 expected: "LteCSFieldString deve essere minore o uguale a Inner.LteCSFieldString",
462 },
463 {
464 ns: "Test.GtCSFieldString",
465 expected: "GtCSFieldString deve essere maggiore di Inner.GtCSFieldString",
466 },
467 {
468 ns: "Test.GteCSFieldString",
469 expected: "GteCSFieldString deve essere maggiore o uguale a Inner.GteCSFieldString",
470 },
471 {
472 ns: "Test.NeCSFieldString",
473 expected: "NeCSFieldString deve essere diverso da Inner.NeCSFieldString",
474 },
475 {
476 ns: "Test.EqCSFieldString",
477 expected: "EqCSFieldString deve essere uguale a Inner.EqCSFieldString",
478 },
479 {
480 ns: "Test.EqFieldString",
481 expected: "EqFieldString deve essere uguale a MaxString",
482 },
483 {
484 ns: "Test.GteString",
485 expected: "GteString deve essere lungo almeno 3 caratteri",
486 },
487 {
488 ns: "Test.GteNumber",
489 expected: "GteNumber deve essere maggiore o uguale a 5,56",
490 },
491 {
492 ns: "Test.GteMultiple",
493 expected: "GteMultiple deve contenere almeno 2 elementi",
494 },
495 {
496 ns: "Test.GteTime",
497 expected: "GteTime deve essere uguale o successivo alla Data/Ora corrente",
498 },
499 {
500 ns: "Test.GtString",
501 expected: "GtString deve essere lungo più di 3 caratteri",
502 },
503 {
504 ns: "Test.GtNumber",
505 expected: "GtNumber deve essere maggiore di 5,56",
506 },
507 {
508 ns: "Test.GtMultiple",
509 expected: "GtMultiple deve contenere più di 2 elementi",
510 },
511 {
512 ns: "Test.GtTime",
513 expected: "GtTime deve essere successivo alla Data/Ora corrente",
514 },
515 {
516 ns: "Test.LteString",
517 expected: "LteString deve essere lungo al massimo 3 caratteri",
518 },
519 {
520 ns: "Test.LteNumber",
521 expected: "LteNumber deve essere minore o uguale a 5,56",
522 },
523 {
524 ns: "Test.LteMultiple",
525 expected: "LteMultiple deve contenere al massimo 2 elementi",
526 },
527 {
528 ns: "Test.LteTime",
529 expected: "LteTime deve essere uguale o precedente alla Data/Ora corrente",
530 },
531 {
532 ns: "Test.LtString",
533 expected: "LtString deve essere lungo meno di 3 caratteri",
534 },
535 {
536 ns: "Test.LtNumber",
537 expected: "LtNumber deve essere minore di 5,56",
538 },
539 {
540 ns: "Test.LtMultiple",
541 expected: "LtMultiple deve contenere meno di 2 elementi",
542 },
543 {
544 ns: "Test.LtTime",
545 expected: "LtTime deve essere precedente alla Data/Ora corrente",
546 },
547 {
548 ns: "Test.NeString",
549 expected: "NeString deve essere diverso da ",
550 },
551 {
552 ns: "Test.NeNumber",
553 expected: "NeNumber deve essere diverso da 0.00",
554 },
555 {
556 ns: "Test.NeMultiple",
557 expected: "NeMultiple deve essere diverso da 0",
558 },
559 {
560 ns: "Test.EqString",
561 expected: "EqString non è uguale a 3",
562 },
563 {
564 ns: "Test.EqNumber",
565 expected: "EqNumber non è uguale a 2.33",
566 },
567 {
568 ns: "Test.EqMultiple",
569 expected: "EqMultiple non è uguale a 7",
570 },
571 {
572 ns: "Test.MaxString",
573 expected: "MaxString deve essere lungo al massimo 3 caratteri",
574 },
575 {
576 ns: "Test.MaxNumber",
577 expected: "MaxNumber deve essere minore o uguale a 1.113,00",
578 },
579 {
580 ns: "Test.MaxMultiple",
581 expected: "MaxMultiple deve contenere al massimo 7 elementi",
582 },
583 {
584 ns: "Test.MinString",
585 expected: "MinString deve essere lungo almeno 1 carattere",
586 },
587 {
588 ns: "Test.MinNumber",
589 expected: "MinNumber deve essere maggiore o uguale a 1.113,00",
590 },
591 {
592 ns: "Test.MinMultiple",
593 expected: "MinMultiple deve contenere almeno 7 elementi",
594 },
595 {
596 ns: "Test.LenString",
597 expected: "LenString deve essere lungo 1 carattere",
598 },
599 {
600 ns: "Test.LenNumber",
601 expected: "LenNumber deve essere uguale a 1.113,00",
602 },
603 {
604 ns: "Test.LenMultiple",
605 expected: "LenMultiple deve contenere 7 elementi",
606 },
607 {
608 ns: "Test.RequiredString",
609 expected: "RequiredString è un campo obbligatorio",
610 },
611 {
612 ns: "Test.RequiredNumber",
613 expected: "RequiredNumber è un campo obbligatorio",
614 },
615 {
616 ns: "Test.RequiredMultiple",
617 expected: "RequiredMultiple è un campo obbligatorio",
618 },
619 {
620 ns: "Test.StrPtrMinLen",
621 expected: "StrPtrMinLen deve essere lungo almeno 10 caratteri",
622 },
623 {
624 ns: "Test.StrPtrMaxLen",
625 expected: "StrPtrMaxLen deve essere lungo al massimo 1 carattere",
626 },
627 {
628 ns: "Test.StrPtrLen",
629 expected: "StrPtrLen deve essere lungo 2 caratteri",
630 },
631 {
632 ns: "Test.StrPtrLt",
633 expected: "StrPtrLt deve essere lungo meno di 1 carattere",
634 },
635 {
636 ns: "Test.StrPtrLte",
637 expected: "StrPtrLte deve essere lungo al massimo 1 carattere",
638 },
639 {
640 ns: "Test.StrPtrGt",
641 expected: "StrPtrGt deve essere lungo più di 10 caratteri",
642 },
643 {
644 ns: "Test.StrPtrGte",
645 expected: "StrPtrGte deve essere lungo almeno 10 caratteri",
646 },
647 {
648 ns: "Test.OneOfString",
649 expected: "OneOfString deve essere uno di [red green]",
650 },
651 {
652 ns: "Test.OneOfInt",
653 expected: "OneOfInt deve essere uno di [5 63]",
654 },
655 {
656 ns: "Test.UniqueSlice",
657 expected: "UniqueSlice deve contenere valori unici",
658 },
659 {
660 ns: "Test.UniqueArray",
661 expected: "UniqueArray deve contenere valori unici",
662 },
663 {
664 ns: "Test.UniqueMap",
665 expected: "UniqueMap deve contenere valori unici",
666 },
667 {
668 ns: "Test.BooleanString",
669 expected: "BooleanString deve rappresentare un valore booleano",
670 },
671 {
672 ns: "Test.JSONString",
673 expected: "JSONString deve essere una stringa json valida",
674 },
675 {
676 ns: "Test.JWTString",
677 expected: "JWTString deve essere una stringa jwt valida",
678 },
679 {
680 ns: "Test.LowercaseString",
681 expected: "LowercaseString deve essere una stringa minuscola",
682 },
683 {
684 ns: "Test.UppercaseString",
685 expected: "UppercaseString deve essere una stringa maiuscola",
686 },
687 {
688 ns: "Test.StartsWithString",
689 expected: "StartsWithString deve iniziare con foo",
690 },
691 {
692 ns: "Test.StartsNotWithString",
693 expected: "StartsNotWithString non deve iniziare con foo",
694 },
695 {
696 ns: "Test.EndsWithString",
697 expected: "EndsWithString deve terminare con foo",
698 },
699 {
700 ns: "Test.EndsNotWithString",
701 expected: "EndsNotWithString non deve terminare con foo",
702 },
703 {
704 ns: "Test.Datetime",
705 expected: "Datetime non corrisponde al formato 2006-01-02",
706 },
707 {
708 ns: "Test.PostCode",
709 expected: "PostCode non corrisponde al formato del codice postale dello stato SG",
710 },
711 {
712 ns: "Test.PostCodeByField",
713 expected: "PostCodeByField non corrisponde al formato del codice postale dello stato nel campo PostCodeCountry",
714 },
715 {
716 ns: "Test.Image",
717 expected: "Image deve essere un'immagine valida",
718 },
719 }
720
721 for _, tt := range tests {
722
723 var fe validator.FieldError
724
725 for _, e := range errs {
726 if tt.ns == e.Namespace() {
727 fe = e
728 break
729 }
730 }
731
732 NotEqual(t, fe, nil)
733 Equal(t, tt.expected, fe.Translate(trans))
734 }
735 }
736
View as plain text