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