update mock and add register sensor test

This commit is contained in:
2025-10-10 02:23:49 +02:00
parent f5583b3cd5
commit 8e33f95cb4
3 changed files with 106 additions and 13 deletions
+79
View File
@@ -0,0 +1,79 @@
package sensors
import (
"testing"
"time"
"go.uber.org/mock/gomock"
)
func setup(t *testing.T) (*Service, *MockRepository) {
ctrl := gomock.NewController(t)
q := NewMockRepository(ctrl)
s := NewService(q)
return s, q
}
func Test_RegisterSensor(t *testing.T) {
type testCase struct {
name string
given Sensor
setupMock func(q *MockRepository, params Sensor)
expecErr bool
}
tests := []testCase{
{
name: "success - registers new sensor",
given: Sensor{
SensorID: "temp-001",
SensorType: Temperature,
SamplingInterval: ptr(time.Minute),
ThresholdAbove: ptr(100.0),
ThresholdBelow: ptr(0.0),
},
setupMock: func(q *MockRepository, params Sensor) {
q.EXPECT().CreateSensor(params).Return(nil)
},
expecErr: false,
},
{
name: "error - sensor already exists",
given: Sensor{
SensorID: "temp-001",
SensorType: Temperature,
SamplingInterval: ptr(time.Minute),
ThresholdAbove: ptr(100.0),
ThresholdBelow: ptr(0.0),
},
setupMock: func(q *MockRepository, params Sensor) {
q.EXPECT().CreateSensor(params).Return(ErrSensorAlreadyExists)
},
expecErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
s, q := setup(t)
tt.setupMock(q, tt.given)
err := s.RegisterSensor(tt.given)
if tt.expecErr && err == nil {
t.Error("expected error, got nil")
return
}
if !tt.expecErr && err != nil {
t.Errorf("expected no error, got %v", err)
return
}
if tt.expecErr && err != ErrSensorAlreadyExists {
t.Errorf("expected ErrSensorAlreadyExists, got %v", err)
}
})
}
}