service_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package service
  2. import (
  3. "testing"
  4. "github.com/glebarez/sqlite"
  5. "github.com/stretchr/testify/require"
  6. "gorm.io/gorm"
  7. "wails-app/internal/dao"
  8. "wails-app/internal/global"
  9. )
  10. func setupTicketServiceTest(t *testing.T) *TicketService {
  11. db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
  12. require.NoError(t, err)
  13. global.GVA_DB = db
  14. require.NoError(t, db.AutoMigrate(&dao.VehicleRecord{}, &dao.DigitalTicket{}))
  15. return NewTicketService()
  16. }
  17. func TestMarkPaidAndExitedUsesTheActualPaymentEntry(t *testing.T) {
  18. svc := setupTicketServiceTest(t)
  19. record := &dao.VehicleRecord{PlateNumber: "TEST001"}
  20. require.NoError(t, global.GVA_DB.Create(record).Error)
  21. _, err := svc.Create("TEST001", "manual", record.ID)
  22. require.NoError(t, err)
  23. require.NoError(t, svc.MarkPaidAndExitedTx(global.GVA_DB, record.ID,
  24. "central_payment_machine", "pos", "ORDER-001", 10, 10))
  25. ticket, err := svc.repo.GetByVehicleRecordID(record.ID)
  26. require.NoError(t, err)
  27. require.Equal(t, StateExited, ticket.State)
  28. require.Equal(t, "central_payment_machine", ticket.PaymentEntry)
  29. require.Equal(t, "pos", ticket.PaymentMethod)
  30. require.Equal(t, "ORDER-001", ticket.PaymentOrderNo)
  31. }
  32. func TestMarkPaidAndExitedRequiresATicket(t *testing.T) {
  33. svc := setupTicketServiceTest(t)
  34. record := &dao.VehicleRecord{PlateNumber: "TEST002"}
  35. require.NoError(t, global.GVA_DB.Create(record).Error)
  36. require.EqualError(t,
  37. svc.MarkPaidAndExitedTx(global.GVA_DB, record.ID, "counter", "cash", "", 0, 0),
  38. "车辆对应的数字票不存在")
  39. }