Dawid Wysokiński
e9c5e06407
All checks were successful
continuous-integration/drone/push Build is passing
106 lines
2.2 KiB
Go
106 lines
2.2 KiB
Go
package domain_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"gitea.dwysokinski.me/twhelp/dcbot/internal/domain"
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewCreateMonitorParams(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
tribeID int64
|
|
groupID string
|
|
err error
|
|
}{
|
|
{
|
|
name: "OK",
|
|
tribeID: 15,
|
|
groupID: uuid.NewString(),
|
|
},
|
|
{
|
|
name: "ERR: GroupID cannot be blank",
|
|
groupID: "",
|
|
err: domain.ValidationError{
|
|
Field: "GroupID",
|
|
Err: domain.ErrRequired,
|
|
},
|
|
},
|
|
{
|
|
name: "ERR: TribeID < 1",
|
|
groupID: uuid.NewString(),
|
|
tribeID: 0,
|
|
err: domain.ValidationError{
|
|
Field: "TribeID",
|
|
Err: domain.MinError{
|
|
Min: 1,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
tt := tt
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
res, err := domain.NewCreateMonitorParams(
|
|
tt.groupID,
|
|
tt.tribeID,
|
|
)
|
|
if tt.err != nil {
|
|
assert.ErrorIs(t, err, tt.err)
|
|
assert.Zero(t, res)
|
|
return
|
|
}
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.groupID, res.GroupID())
|
|
assert.Equal(t, tt.tribeID, res.TribeID())
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestMonitorAlreadyExistsError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := domain.MonitorAlreadyExistsError{
|
|
GroupID: uuid.NewString(),
|
|
TribeID: 1234,
|
|
}
|
|
var _ domain.Error = err
|
|
assert.Equal(t, fmt.Sprintf("monitor (GroupID=%s,TribeID=%d) already exists", err.GroupID, err.TribeID), err.Error())
|
|
assert.Equal(t, err.Error(), err.UserError())
|
|
assert.Equal(t, domain.ErrorCodeAlreadyExists, err.Code())
|
|
}
|
|
|
|
func TestMonitorLimitReachedError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := domain.MonitorLimitReachedError{
|
|
Current: 10,
|
|
Limit: 10,
|
|
}
|
|
var _ domain.Error = err
|
|
assert.Equal(t, fmt.Sprintf("monitor limit has been reached (%d/%d)", err.Current, err.Limit), err.Error())
|
|
assert.Equal(t, err.Error(), err.UserError())
|
|
assert.Equal(t, domain.ErrorCodeValidationError, err.Code())
|
|
}
|
|
|
|
func TestMonitorNotFoundError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := domain.MonitorNotFoundError{
|
|
ID: uuid.NewString(),
|
|
}
|
|
var _ domain.Error = err
|
|
assert.Equal(t, fmt.Sprintf("monitor (ID=%s) not found", err.ID), err.Error())
|
|
assert.Equal(t, err.Error(), err.UserError())
|
|
assert.Equal(t, domain.ErrorCodeEntityNotFound, err.Code())
|
|
}
|