From cb00a980e98005f399847bffc6be8e33b9744e0b Mon Sep 17 00:00:00 2001
From: ko_oler <kooler89@gmail.com>
Date: Mon, 26 Jun 2023 12:04:39 +0300
Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?=
 =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=80=D1=80=D0=B5?=
 =?UTF-8?q?=D0=BA=D1=82=D0=BD=D0=BE=D0=B5=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4?=
 =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BB=D0=B8=D0=BD?=
 =?UTF-8?q?=D1=8B=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?=
 =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?=
 =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B8=20=D0=BA=D0=B8=D1=80=D0=B8?=
 =?UTF-8?q?=D0=BB=D0=BB=D0=B8=D1=86=D1=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pkg/id/id.go      |  2 +-
 pkg/id/id_test.go | 20 +++++++++++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/pkg/id/id.go b/pkg/id/id.go
index 2f3a9add..b9e579e3 100644
--- a/pkg/id/id.go
+++ b/pkg/id/id.go
@@ -45,7 +45,7 @@ func ValidateName(name string) (string, error) {
 	if trimmedName == "" {
 		return trimmedName, ErrEmptyName
 	}
-	if len(trimmedName) > MaxLengthName {
+	if len([]rune(trimmedName)) > MaxLengthName {
 		return trimmedName, ErrLongName
 	}
 	return trimmedName, nil
diff --git a/pkg/id/id_test.go b/pkg/id/id_test.go
index f778e3a9..2617ca13 100644
--- a/pkg/id/id_test.go
+++ b/pkg/id/id_test.go
@@ -104,6 +104,18 @@ func TestValidateName(t *testing.T) {
 			"test_1-2",
 			false,
 		},
+		{
+			"Cyrillic name #1",
+			"1ывлдаывоаждывоажыовалывоалджыварщшуджлкцталиамтвалытм тывжалдыжлдвттлвтмыдытфджтмфвмт",
+			"1ывлдаывоаждывоажыовалывоалджыварщшуджлкцталиамтвалытм тывжалдыжлдвттлвтмыдытфджтмфвмт",
+			false,
+		},
+		{
+			"Cyrillic name #2",
+			"Римский император Константин I Великий по достоинству оценил выгодное местоположение приморского Византия, расположенного на стыке Евро",
+			"Римский император Константин I Великий по достоинству оценил выгодное местоположение приморского Византия, расположенного на стыке Евро",
+			false,
+		},
 		{
 			"Trimmed name #1",
 			" test_1-3 ",
@@ -117,11 +129,17 @@ func TestValidateName(t *testing.T) {
 			false,
 		},
 		{
-			"Fail, name to long",
+			"Fail, name to long #1",
 			"ChKRLdvWi0wYYPazuBXrIRtNFy96qGrhBDkuKQNd6N2DPV86IGdXVkeTjWj7qezKreIFUp9IUn03A8WJTTORHkgXAvkPuDVM8tVMcnHbR2hznooJ3gGUsXpn4uXo2QhsviHPyUKmE10GnkCOv9FgAMILNoFVHnIiSHI3cjWlGJglpS9YAMXFB1phOIRF5yol3jmPE7EeU1uZPUw9C2PChuksGsOuJQov07Zom0b13r6wOJv8PZVa4IKmjDDLGKlq1",
 			"ChKRLdvWi0wYYPazuBXrIRtNFy96qGrhBDkuKQNd6N2DPV86IGdXVkeTjWj7qezKreIFUp9IUn03A8WJTTORHkgXAvkPuDVM8tVMcnHbR2hznooJ3gGUsXpn4uXo2QhsviHPyUKmE10GnkCOv9FgAMILNoFVHnIiSHI3cjWlGJglpS9YAMXFB1phOIRF5yol3jmPE7EeU1uZPUw9C2PChuksGsOuJQov07Zom0b13r6wOJv8PZVa4IKmjDDLGKlq1",
 			true,
 		},
+		{
+			"Fail, name to long #2",
+			"Плаванье «Слейпнира» — кинематическая сцена, где викинги встречают предателей Конрака и Сигурда на море. Конрак прибегает к помощи чёрной магии и топит корабль вместе с Рагнаром. Все, включая Рагнара, погибают. Но для отмщения, Один возвращает Рагнару жизнь. Рагнар приходит в себя под водой, в подземном гроте, среди тонущих обломков корабля и трупов других викингов. Так как пути наверх у Рагнара нет, ему приходится спускаться все ниже в подземелья. В конце концов игрок попадает в царство Хель. Здесь он узнает, что Хель предоставляет армию мертвецов для Локи.",
+			"Плаванье «Слейпнира» — кинематическая сцена, где викинги встречают предателей Конрака и Сигурда на море. Конрак прибегает к помощи чёрной магии и топит корабль вместе с Рагнаром. Все, включая Рагнара, погибают. Но для отмщения, Один возвращает Рагнару жизнь. Рагнар приходит в себя под водой, в подземном гроте, среди тонущих обломков корабля и трупов других викингов. Так как пути наверх у Рагнара нет, ему приходится спускаться все ниже в подземелья. В конце концов игрок попадает в царство Хель. Здесь он узнает, что Хель предоставляет армию мертвецов для Локи.",
+			true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-- 
GitLab