| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package repository
- import (
- "context"
- "database/sql/driver"
- "testing"
- "time"
- "github.com/DATA-DOG/go-sqlmock"
- "github.com/Wei-Shaw/sub2api/internal/service"
- )
- func TestInsertSystemMetricsNullableIntegerMetrics(t *testing.T) {
- createdAt := time.Date(2026, time.September, 4, 12, 0, 0, 0, time.UTC)
- zero := 0
- tests := []struct {
- name string
- dbConnActive *int
- wantDBActive driver.Value
- }{
- {name: "explicit zero is preserved", dbConnActive: &zero, wantDBActive: int64(0)},
- {name: "unavailable metric remains null", dbConnActive: nil, wantDBActive: nil},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- db, mock, err := sqlmock.New()
- if err != nil {
- t.Fatalf("sqlmock.New: %v", err)
- }
- t.Cleanup(func() { _ = db.Close() })
- args := make([]driver.Value, 40)
- args[0] = createdAt
- args[1] = int64(1)
- for i := 4; i <= 12; i++ {
- args[i] = int64(0)
- }
- args[35] = tt.wantDBActive
- mock.ExpectExec("INSERT INTO ops_system_metrics").
- WithArgs(args...).
- WillReturnResult(sqlmock.NewResult(1, 1))
- repo := &opsRepository{db: db}
- err = repo.InsertSystemMetrics(context.Background(), &service.OpsInsertSystemMetricsInput{
- CreatedAt: createdAt,
- DBConnActive: tt.dbConnActive,
- })
- if err != nil {
- t.Fatalf("InsertSystemMetrics: %v", err)
- }
- if err := mock.ExpectationsWereMet(); err != nil {
- t.Fatalf("unmet SQL expectations: %v", err)
- }
- })
- }
- }
|