| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package parking
- import (
- "testing"
- "github.com/stretchr/testify/require"
- )
- type gateControllerStub struct {
- openDevice string
- closeDevice string
- openTime byte
- closeTime byte
- }
- func (s *gateControllerStub) OpenGate(deviceCode string, validTime byte) error {
- s.openDevice = deviceCode
- s.openTime = validTime
- return nil
- }
- func (s *gateControllerStub) CloseGate(deviceCode string, validTime byte) error {
- s.closeDevice = deviceCode
- s.closeTime = validTime
- return nil
- }
- func (s *gateControllerStub) IsGateConnected(string) bool { return true }
- func TestPassageServiceUsesUnifiedGateController(t *testing.T) {
- previous := currentGateController()
- stub := &gateControllerStub{}
- SetGateController(stub)
- t.Cleanup(func() { SetGateController(previous) })
- svc := &PassageService{}
- require.NoError(t, svc.OpenGateByDeviceCode("GATE-01", 0))
- require.NoError(t, svc.CloseGateByDeviceCode("GATE-01", 5))
- require.Equal(t, "GATE-01", stub.openDevice)
- require.Equal(t, defaultGateValidTime, stub.openTime)
- require.Equal(t, "GATE-01", stub.closeDevice)
- require.Equal(t, byte(5), stub.closeTime)
- }
- func TestPassageServiceRejectsEmptyGateDevice(t *testing.T) {
- svc := &PassageService{}
- require.Error(t, svc.OpenGateByDeviceCode("", 2))
- require.Error(t, svc.CloseGateByDeviceCode("", 2))
- }
- func TestSimulatedGateController(t *testing.T) {
- controller := NewSimulatedGateController()
- require.True(t, controller.IsGateConnected("GATE-SIM-01"))
- require.False(t, controller.IsGateConnected(""))
- require.NoError(t, controller.OpenGate("GATE-SIM-01", 2))
- require.Equal(t, "open", controller.lastAction["GATE-SIM-01"])
- require.NoError(t, controller.CloseGate("GATE-SIM-01", 2))
- require.Equal(t, "close", controller.lastAction["GATE-SIM-01"])
- require.Error(t, controller.OpenGate("", 2))
- }
- func TestGetGateRuntimeStatus(t *testing.T) {
- previous := currentGateController()
- controller := NewSimulatedGateController()
- SetGateController(controller)
- t.Cleanup(func() { SetGateController(previous) })
- status := GetGateRuntimeStatus("GATE-SIM-01")
- require.True(t, status.Connected)
- require.True(t, status.Simulated)
- require.Equal(t, GateRuntimeStatus{}, GetGateRuntimeStatus(""))
- }
|