Files
photoprism/internal/config/cli_context_test.go
2025-11-22 20:00:53 +01:00

46 lines
981 B
Go

package config
import (
"flag"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/urfave/cli/v2"
)
type durationTarget struct {
Interval time.Duration `flag:"interval"`
}
func TestApplyCliContext_Duration(t *testing.T) {
tests := []struct {
name string
input string
expected time.Duration
}{
{name: "WithUnits", input: "1h30m", expected: 90 * time.Minute},
{name: "NumericSeconds", input: "30", expected: 30 * time.Second},
{name: "Invalid", input: "not-a-duration", expected: 0},
}
for _, tc := range tests {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
flags := flag.NewFlagSet("test", flag.ContinueOnError)
flags.String("interval", "", "doc")
app := cli.NewApp()
ctx := cli.NewContext(app, flags, nil)
_ = ctx.Set("interval", tc.input)
target := &durationTarget{}
err := ApplyCliContext(target, ctx)
assert.NoError(t, err)
assert.Equal(t, tc.expected, target.Interval)
})
}
}