chore: add tests

This commit is contained in:
andig 2025-11-02 17:17:57 +01:00
parent bdc5f406a4
commit 901e30f76e
3 changed files with 108 additions and 3 deletions

View file

@ -7,7 +7,7 @@ import (
"time"
)
//go:generate go tool mockgen -package api -destination mock.go github.com/evcc-io/evcc/api Charger,ChargeState,CurrentLimiter,CurrentGetter,PhaseSwitcher,PhaseGetter,FeatureDescriber,Identifier,Meter,MeterEnergy,PhaseCurrents,Vehicle,ConnectionTimer,ChargeRater,Battery,BatteryController,BatterySocLimiter,Circuit,Tariff
//go:generate go tool mockgen -package api -destination mock.go github.com/evcc-io/evcc/api Charger,ChargeState,CurrentLimiter,CurrentGetter,PhaseSwitcher,PhaseGetter,FeatureDescriber,Identifier,Meter,MeterEnergy,PhaseCurrents,Vehicle,ConnectionTimer,ChargeRater,Battery,BatteryController,BatterySocLimiter,Circuit,Dimmer,Tariff
// Meter provides total active power in W
type Meter interface {

View file

@ -1,9 +1,9 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/evcc-io/evcc/api (interfaces: Charger,ChargeState,CurrentLimiter,CurrentGetter,PhaseSwitcher,PhaseGetter,FeatureDescriber,Identifier,Meter,MeterEnergy,PhaseCurrents,Vehicle,ConnectionTimer,ChargeRater,Battery,BatteryController,BatterySocLimiter,Circuit,Tariff)
// Source: github.com/evcc-io/evcc/api (interfaces: Charger,ChargeState,CurrentLimiter,CurrentGetter,PhaseSwitcher,PhaseGetter,FeatureDescriber,Identifier,Meter,MeterEnergy,PhaseCurrents,Vehicle,ConnectionTimer,ChargeRater,Battery,BatteryController,BatterySocLimiter,Circuit,Dimmer,Tariff)
//
// Generated by this command:
//
// mockgen -package api -destination mock.go github.com/evcc-io/evcc/api Charger,ChargeState,CurrentLimiter,CurrentGetter,PhaseSwitcher,PhaseGetter,FeatureDescriber,Identifier,Meter,MeterEnergy,PhaseCurrents,Vehicle,ConnectionTimer,ChargeRater,Battery,BatteryController,BatterySocLimiter,Circuit,Tariff
// mockgen -package api -destination mock.go github.com/evcc-io/evcc/api Charger,ChargeState,CurrentLimiter,CurrentGetter,PhaseSwitcher,PhaseGetter,FeatureDescriber,Identifier,Meter,MeterEnergy,PhaseCurrents,Vehicle,ConnectionTimer,ChargeRater,Battery,BatteryController,BatterySocLimiter,Circuit,Dimmer,Tariff
//
// Package api is a generated GoMock package.
@ -1084,6 +1084,59 @@ func (mr *MockCircuitMockRecorder) Wrap(parent any) *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Wrap", reflect.TypeOf((*MockCircuit)(nil).Wrap), parent)
}
// MockDimmer is a mock of Dimmer interface.
type MockDimmer struct {
ctrl *gomock.Controller
recorder *MockDimmerMockRecorder
isgomock struct{}
}
// MockDimmerMockRecorder is the mock recorder for MockDimmer.
type MockDimmerMockRecorder struct {
mock *MockDimmer
}
// NewMockDimmer creates a new mock instance.
func NewMockDimmer(ctrl *gomock.Controller) *MockDimmer {
mock := &MockDimmer{ctrl: ctrl}
mock.recorder = &MockDimmerMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockDimmer) EXPECT() *MockDimmerMockRecorder {
return m.recorder
}
// Dim mocks base method.
func (m *MockDimmer) Dim(arg0 bool) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Dim", arg0)
ret0, _ := ret[0].(error)
return ret0
}
// Dim indicates an expected call of Dim.
func (mr *MockDimmerMockRecorder) Dim(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Dim", reflect.TypeOf((*MockDimmer)(nil).Dim), arg0)
}
// Dimmed mocks base method.
func (m *MockDimmer) Dimmed() (bool, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Dimmed")
ret0, _ := ret[0].(bool)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Dimmed indicates an expected call of Dimmed.
func (mr *MockDimmerMockRecorder) Dimmed() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Dimmed", reflect.TypeOf((*MockDimmer)(nil).Dimmed))
}
// MockTariff is a mock of Tariff interface.
type MockTariff struct {
ctrl *gomock.Controller

52
core/site_circuit_test.go Normal file
View file

@ -0,0 +1,52 @@
package core
import (
"testing"
"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/config"
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
)
func TestDimming(t *testing.T) {
ctrl := gomock.NewController(t)
meter := api.NewMockMeter(ctrl)
dimmer := api.NewMockDimmer(ctrl)
mm := &struct {
api.Meter
api.Dimmer
}{
Meter: meter,
Dimmer: dimmer,
}
s := &Site{
log: util.NewLogger("foo"),
auxMeters: []config.Device[api.Meter]{config.NewStaticDevice[api.Meter](config.Named{}, mm)},
}
for _, tc := range []struct {
has, want bool
}{
{has: false, want: false},
{has: false, want: true},
{has: true, want: false},
{has: true, want: true},
} {
t.Logf("%+v", tc)
dimmer.EXPECT().Dimmed().Return(tc.has, nil)
if tc.has != tc.want {
dimmer.EXPECT().Dim(tc.want).Return(nil)
}
require.NoError(t, s.dimMeters(tc.want))
if !ctrl.Satisfied() {
ctrl.Finish()
}
}
}