modelRT/model/data_object_token_test.go

102 lines
2.3 KiB
Go
Raw Normal View History

package model
import (
"testing"
"modelRT/constants"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestClassifyDataObjectToken(t *testing.T) {
tests := []struct {
name string
token string
expected constants.DataObjectType
wantErr string
}{
{
name: "seven-part measurement",
token: "grid.zone.station.nspath.component.bay.measurement",
expected: constants.DataObjectTypeMeasurement,
},
{
name: "four-part measurement",
token: "nspath.component.bay.measurement",
expected: constants.DataObjectTypeMeasurement,
},
{
name: "two-part measurement",
token: "nspath.measurement",
expected: constants.DataObjectTypeMeasurement,
},
{
name: "seven-part parameter",
token: "grid.zone.station.nspath.component.rated.voltage",
expected: constants.DataObjectTypeParameter,
},
{
name: "four-part parameter",
token: "nspath.component.base_extend.description",
expected: constants.DataObjectTypeParameter,
},
{
name: "component group",
token: "nspath.component.component.name",
wantErr: "token6 component is not queryable",
},
{
name: "unknown group",
token: "nspath.component.unknown.name",
wantErr: "unsupported token6",
},
{
name: "invalid segment count",
token: "grid.zone.station",
wantErr: "expected 2, 4, or 7 segments",
},
{
name: "empty segment",
token: "nspath..bay.measurement",
wantErr: "token segment cannot be empty",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
actual, err := ClassifyDataObjectToken(tt.token)
if tt.wantErr != "" {
require.Error(t, err)
assert.Contains(t, err.Error(), tt.wantErr)
assert.Empty(t, actual)
return
}
require.NoError(t, err)
assert.Equal(t, tt.expected, actual)
})
}
}
func TestClassifyDataObjectTokenParameterGroups(t *testing.T) {
groups := []string{
"base_extend",
"rated",
"setup",
"model",
"stable",
"craft",
"integrity",
"behavior",
}
for _, group := range groups {
t.Run(group, func(t *testing.T) {
actual, err := ClassifyDataObjectToken("nspath.component." + group + ".attribute")
require.NoError(t, err)
assert.Equal(t, constants.DataObjectTypeParameter, actual)
})
}
}