src.dualinventive.com/go/dinet/parentdevicemock.go

81 lines
1.7 KiB
Go

package dinet
import (
"errors"
"testing"
"github.com/stretchr/testify/require"
"src.dualinventive.com/go/lib/dilog"
)
// ParentDeviceMock implements ParentDevice which is useful for unit testing
type ParentDeviceMock struct {
logger dilog.Logger
conn Conn
router *Router
}
// NewParentDeviceMock creates a new ParentDeviceMock using a test transport
func NewParentDeviceMock(t *testing.T) (*ParentDeviceMock, *TestTransport) {
logger := dilog.NewTestLogger(t)
conn, err := NewDeviceConn(TransportTest)
require.Nil(t, err)
err = conn.Connect("")
require.Nil(t, err)
rtr, err := NewRouter(logger, conn)
require.Nil(t, err)
return &ParentDeviceMock{
logger: logger,
conn: conn,
router: rtr,
}, conn.(*TestTransport)
}
// Close doesn't do anything
func (t *ParentDeviceMock) Close() error {
return nil
}
// UID returns a static test device UID
func (t *ParentDeviceMock) UID() string {
return "fe020000000000000000f403433e1a52"
}
// RegisterUID doesn't do anything
func (t *ParentDeviceMock) RegisterUID(uid string) error {
return nil
}
// UnregisterUID doesn't do anything
func (t *ParentDeviceMock) UnregisterUID(uid string) error {
return nil
}
// RegisterDevice doesn't do anything
func (t *ParentDeviceMock) RegisterDevice(device Device) error {
return nil
}
// UnregisterDevice doesn't do anything
func (t *ParentDeviceMock) UnregisterDevice(uid string) error {
return nil
}
// Router returns a router
func (t *ParentDeviceMock) Router() *Router {
return t.router
}
// Search doesn't do anything
func (t *ParentDeviceMock) Search(uid string) (Device, error) {
return nil, errors.New("not found")
}
// Logger returns a test logger
func (t *ParentDeviceMock) Logger() dilog.Logger {
return t.logger
}