123 lines
3.1 KiB
Go
123 lines
3.1 KiB
Go
|
//
|
||
|
// Copyright (C) 2021 IOTech Ltd
|
||
|
//
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
package cache
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/edgexfoundry/go-mod-core-contracts/v4/models"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
var testProvisionWatcher = models.ProvisionWatcher{
|
||
|
Name: TestProvisionWatcher,
|
||
|
AdminState: models.Unlocked,
|
||
|
}
|
||
|
|
||
|
var newProvisionWatcher = models.ProvisionWatcher{
|
||
|
Name: "newProvisionWatcher",
|
||
|
AdminState: models.Unlocked,
|
||
|
}
|
||
|
|
||
|
func Test_provisionWatcherCache_ForName(t *testing.T) {
|
||
|
newProvisionWatcherCache([]models.ProvisionWatcher{testProvisionWatcher})
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
pwName string
|
||
|
provisionWatcher models.ProvisionWatcher
|
||
|
expected bool
|
||
|
}{
|
||
|
{"Invalid - empty name", "", models.ProvisionWatcher{}, false},
|
||
|
{"Invalid - nonexistent ProvisionWatcher name", "nil", models.ProvisionWatcher{}, false},
|
||
|
{"Valid", TestProvisionWatcher, testProvisionWatcher, true},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
res, ok := pwc.ForName(tt.pwName)
|
||
|
assert.Equal(t, res, tt.provisionWatcher, "ForName returns wrong ProvisionWatcher")
|
||
|
assert.Equal(t, ok, tt.expected, "ForName returns opposite result")
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_provisionWatcherCache_All(t *testing.T) {
|
||
|
newProvisionWatcherCache([]models.ProvisionWatcher{testProvisionWatcher})
|
||
|
|
||
|
res := pwc.All()
|
||
|
require.Equal(t, len(res), len(pwc.pwMap))
|
||
|
}
|
||
|
|
||
|
func Test_provisionWatcherCache_Add(t *testing.T) {
|
||
|
newProvisionWatcherCache([]models.ProvisionWatcher{testProvisionWatcher})
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
expectedError bool
|
||
|
}{
|
||
|
{"Valid", false},
|
||
|
{"Invalid - duplicate ProvisionWatcher name", true},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
err := pwc.Add(newProvisionWatcher)
|
||
|
if tt.expectedError {
|
||
|
assert.NotNil(t, err)
|
||
|
} else {
|
||
|
assert.NoError(t, err)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_provisionWatcherCache_RemoveByName(t *testing.T) {
|
||
|
newProvisionWatcherCache([]models.ProvisionWatcher{testProvisionWatcher})
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
expectedError bool
|
||
|
}{
|
||
|
{"Valid", false},
|
||
|
{"Invalid - nonexistent ProvisionWatcher name", true},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
err := pwc.RemoveByName(TestProvisionWatcher)
|
||
|
if tt.expectedError {
|
||
|
assert.NotNil(t, err)
|
||
|
} else {
|
||
|
assert.NoError(t, err)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_provisionWatcherCache_UpdateAdminState(t *testing.T) {
|
||
|
newProvisionWatcherCache([]models.ProvisionWatcher{testProvisionWatcher})
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
pwName string
|
||
|
state models.AdminState
|
||
|
expectedError bool
|
||
|
}{
|
||
|
{"Invalid - nonexistent ProvisionWatcher name", "nil", models.Locked, true},
|
||
|
{"Invalid - invalid AdminState", TestProvisionWatcher, "INVALID", true},
|
||
|
{"Valid", TestProvisionWatcher, models.Locked, false},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
err := pwc.UpdateAdminState(tt.pwName, tt.state)
|
||
|
if tt.expectedError {
|
||
|
assert.NotNil(t, err)
|
||
|
} else {
|
||
|
assert.NoError(t, err)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|