| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package system
- import (
- "fmt"
- "testing"
- "time"
- "github.com/glebarez/sqlite"
- "github.com/stretchr/testify/require"
- "gorm.io/gorm"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- )
- func setupDashboardTest(t *testing.T) {
- t.Helper()
- dsn := fmt.Sprintf("file:dashboard-%d?mode=memory&cache=shared", time.Now().UnixNano())
- db, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{})
- require.NoError(t, err)
- sqlDB, err := db.DB()
- require.NoError(t, err)
- t.Cleanup(func() {
- _ = sqlDB.Close()
- if global.GVA_DB == db {
- global.GVA_DB = nil
- }
- })
- global.GVA_DB = db
- require.NoError(t, db.AutoMigrate(
- &dao.ParkingLot{}, &dao.VehicleRecord{}, &dao.PaymentRecord{}, &dao.Channel{}, &dao.UHFReader{},
- ))
- }
- func TestDashboardUsesActiveParkingLotOccupancy(t *testing.T) {
- setupDashboardTest(t)
- activeLot := &dao.ParkingLot{LotCode: "ACTIVE", LotName: "有效停车场", Capacity: 80, Occupied: 1, Available: 79}
- require.NoError(t, global.GVA_DB.Create(activeLot).Error)
- deletedLot := &dao.ParkingLot{LotCode: "DELETED", LotName: "已删除停车场", Capacity: 20, Occupied: 5, Available: 15}
- require.NoError(t, global.GVA_DB.Create(deletedLot).Error)
- require.NoError(t, global.GVA_DB.Delete(deletedLot).Error)
- require.NoError(t, global.GVA_DB.Create(&dao.VehicleRecord{
- PlateNumber: "ORPHAN", ParkingLotID: deletedLot.ID, EntryTime: time.Now(), PaymentStatus: "unpaid",
- }).Error)
- data, err := (&DashboardService{}).GetMonitorData()
- require.NoError(t, err)
- require.EqualValues(t, 80, data.TotalSpaces)
- require.EqualValues(t, 1, data.UsedSpaces)
- require.EqualValues(t, 1, data.InPark)
- }
|