| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package repository
- import (
- "testing"
- "time"
- "github.com/glebarez/sqlite"
- "github.com/stretchr/testify/require"
- "gorm.io/gorm"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- )
- func TestGetByVehicleIDReturnsOnlyUnexpiredPaidCard(t *testing.T) {
- db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true})
- require.NoError(t, err)
- require.NoError(t, db.AutoMigrate(&dao.Vehicle{}, &dao.MonthlyCard{}))
- global.GVA_DB = db
- t.Cleanup(func() { global.GVA_DB = nil })
- vehicle := dao.Vehicle{PlateNumber: "MONTHLY001", VehicleTypeID: 1}
- require.NoError(t, db.Create(&vehicle).Error)
- now := time.Now()
- require.NoError(t, db.Create(&[]dao.MonthlyCard{
- {VehicleID: vehicle.ID, StartDate: now.AddDate(0, -2, 0), EndDate: now.Add(-time.Hour), PaymentStatus: "paid"},
- {VehicleID: vehicle.ID, StartDate: now.AddDate(0, -1, 0), EndDate: now.Add(time.Hour), PaymentStatus: "refunded"},
- {VehicleID: vehicle.ID, StartDate: now, EndDate: now.Add(2 * time.Hour), PaymentStatus: "paid"},
- }).Error)
- card, err := (&MonthlyCardRepository{}).GetByVehicleID(vehicle.ID)
- require.NoError(t, err)
- require.NotNil(t, card)
- require.True(t, card.EndDate.After(now.Add(time.Hour)))
- }
- func TestGetByVehicleIDRejectsExpiredCard(t *testing.T) {
- db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true})
- require.NoError(t, err)
- require.NoError(t, db.AutoMigrate(&dao.Vehicle{}, &dao.MonthlyCard{}))
- global.GVA_DB = db
- t.Cleanup(func() { global.GVA_DB = nil })
- vehicle := dao.Vehicle{PlateNumber: "MONTHLY002", VehicleTypeID: 1}
- require.NoError(t, db.Create(&vehicle).Error)
- now := time.Now()
- require.NoError(t, db.Create(&dao.MonthlyCard{
- VehicleID: vehicle.ID, StartDate: now.AddDate(0, -1, 0), EndDate: now, PaymentStatus: "paid",
- }).Error)
- card, err := (&MonthlyCardRepository{}).GetByVehicleID(vehicle.ID)
- require.ErrorIs(t, err, gorm.ErrRecordNotFound)
- require.Nil(t, card)
- }
|