Skip to content

Commit

Permalink
HW09. Refact TestStringLen, descript test rules for string
Browse files Browse the repository at this point in the history
  • Loading branch information
DimVlas authored and DimVlas committed Sep 20, 2024
1 parent a6bb51d commit 097f7f9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
16 changes: 13 additions & 3 deletions hw09_struct_validator/rules/RULES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@
- `field:Size int` - в структуре долно быть целочисленное поле с именем 'Size'

## string
- `len:32` - длина строки должна быть ровно 32 символа;
- `regexp:\\d+` - согласно регулярному выражению строка должна состоять из цифр (`\\` - экранирование слэша);
- `in:foo,bar` - строка должна входить в множество строк {"foo", "bar"}.
- len - `len:32` - длина строки должна быть ровно 32 символа;
- regexp - `regexp:\\d+` - согласно регулярному выражению строка должна состоять из цифр (`\\` - экранирование слэша);
- in - `in:foo,bar` - строка должна входить в множество строк {"foo", "bar"}.

# Тесты

## string

### len
- не верное значение -
- не верное условие
- проврека провалена
- проверка успешна
19 changes: 10 additions & 9 deletions hw09_struct_validator/rules/rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,25 @@ import (
"github.com/stretchr/testify/require"
)

// тестировани функций-правил для значений типа "string".
func TestStringLen(t *testing.T) {
// Неверный тип значения, передаем int вместо строки
t.Run("len bad value", func(t *testing.T) {
f := Rules[reflect.String]["len"]

err := f(reflect.ValueOf(123), "0")
err := Rules[reflect.String]["len"](reflect.ValueOf(123), "0")

require.EqualError(t, err, "this rule applies only to the string")
})

// неверное значение условия для правила
t.Run("len bad condition", func(t *testing.T) {
f := Rules[reflect.String]["len"]

s := "Мой милый дом!"

err := f(reflect.ValueOf(s), "s")
err := Rules[reflect.String]["len"](reflect.ValueOf(s), "s")

require.EqualError(t, err, "'s' is not a valid condition for the 'len' rule")
})

// проверка провалена
t.Run("len not equal", func(t *testing.T) {
f := Rules[reflect.String]["len"]

Expand All @@ -37,15 +37,16 @@ func TestStringLen(t *testing.T) {

err := f(reflect.ValueOf(s), strconv.Itoa(l))

// TODO: здесь должна быть не просто ошибка, а ошибка ValidationError, это тож надо проверить

require.EqualError(t, err, fmt.Sprintf("length of the string not equal to %d", l))
})

// проверка успешна
t.Run("len success", func(t *testing.T) {
f := Rules[reflect.String]["len"]

s := "Мой милый дом!"

err := f(reflect.ValueOf(s), strconv.Itoa(utf8.RuneCountInString(s)))
err := Rules[reflect.String]["len"](reflect.ValueOf(s), strconv.Itoa(utf8.RuneCountInString(s)))
require.NoError(t, err)
})

Expand Down

0 comments on commit 097f7f9

Please sign in to comment.