package db_utils import ( "testing" ) func TestPageParams_Validate(t *testing.T) { tests := []struct { name string params PageParams wantErr bool }{ {"ValidParams", PageParams{Limit: 10, Offset: 5}, false}, {"NegativeLimit", PageParams{Limit: -1, Offset: 5}, true}, {"NegativeOffset", PageParams{Limit: 10, Offset: -1}, true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := tt.params.Validate() if (err != nil) != tt.wantErr { t.Errorf("Validate() error = %v, wantErr %v", err, tt.wantErr) } }) } } func TestPageParams_EnforceLimit(t *testing.T) { tests := []struct { name string params PageParams want int64 }{ {"NoLimit", PageParams{Limit: 0}, 20}, {"NegativeLimit", PageParams{Limit: -5}, 20}, {"PositiveLimit", PageParams{Limit: 10}, 10}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { tt.params.EnforceLimit() if tt.params.Limit != tt.want { t.Errorf("EnforceLimit() = %v, want %v", tt.params.Limit, tt.want) } }) } } func TestValidateDateFilters(t *testing.T) { type args struct { params any dateFiltersToValidate []string } tests := []struct { name string args args wantErr bool }{ { "ValidDateFilter", args{params: struct { Date string `json:"date"` }{Date: "2023-10-01T00:00:00Z"}, dateFiltersToValidate: []string{"date"}}, false, }, { "InvalidDateFilter", args{params: struct { Date string `json:"date"` }{Date: "invalid-date"}, dateFiltersToValidate: []string{"date"}}, true, }, { "MissingDateFilter", args{params: struct { Date string `json:"date"` }{Date: "2023-10-01T00:00:00Z"}, dateFiltersToValidate: []string{"non_existent_date"}}, false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if err := ValidateDateFilters(tt.args.params, tt.args.dateFiltersToValidate...); (err != nil) != tt.wantErr { t.Errorf("ValidateDateFilters() error = %v, wantErr %v", err, tt.wantErr) } }) } }