mirror of
https://github.com/stashapp/stash.git
synced 2025-12-07 08:54:10 +01:00
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package models
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestParseDateStringAsTime(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
output Date
|
|
expectError bool
|
|
}{
|
|
// Full date formats (existing support)
|
|
{"RFC3339", "2014-01-02T15:04:05Z", Date{Time: time.Date(2014, 1, 2, 15, 4, 5, 0, time.UTC), Precision: DatePrecisionDay}, false},
|
|
{"Date only", "2014-01-02", Date{Time: time.Date(2014, 1, 2, 0, 0, 0, 0, time.UTC), Precision: DatePrecisionDay}, false},
|
|
{"Date with time", "2014-01-02 15:04:05", Date{Time: time.Date(2014, 1, 2, 15, 4, 5, 0, time.UTC), Precision: DatePrecisionDay}, false},
|
|
|
|
// Partial date formats (new support)
|
|
{"Year-Month", "2006-08", Date{Time: time.Date(2006, 8, 1, 0, 0, 0, 0, time.UTC), Precision: DatePrecisionMonth}, false},
|
|
{"Year only", "2014", Date{Time: time.Date(2014, 1, 1, 0, 0, 0, 0, time.UTC), Precision: DatePrecisionYear}, false},
|
|
|
|
// Invalid formats
|
|
{"Invalid format", "not-a-date", Date{}, true},
|
|
{"Empty string", "", Date{}, true},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result, err := ParseDate(tt.input)
|
|
|
|
if tt.expectError {
|
|
if err == nil {
|
|
t.Errorf("Expected error for input %q, but got none", tt.input)
|
|
}
|
|
return
|
|
}
|
|
|
|
if err != nil {
|
|
t.Errorf("Unexpected error for input %q: %v", tt.input, err)
|
|
return
|
|
}
|
|
|
|
if !result.Time.Equal(tt.output.Time) || result.Precision != tt.output.Precision {
|
|
t.Errorf("For input %q, expected output %+v, got %+v", tt.input, tt.output, result)
|
|
}
|
|
})
|
|
}
|
|
}
|