package config_test import ( "testing" "github.com/stretchr/testify/assert" "gh.tarampamp.am/error-pages/internal/config" ) func TestRotationMode_String(t *testing.T) { t.Parallel() assert.Equal(t, "disabled", config.RotationModeDisabled.String()) assert.Equal(t, "random-on-startup", config.RotationModeRandomOnStartup.String()) assert.Equal(t, "random-on-each-request", config.RotationModeRandomOnEachRequest.String()) assert.Equal(t, "random-daily", config.RotationModeRandomDaily.String()) assert.Equal(t, "random-hourly", config.RotationModeRandomHourly.String()) assert.Equal(t, "RotationMode(255)", config.RotationMode(255).String()) } func TestRotationModes(t *testing.T) { t.Parallel() assert.Equal(t, []config.RotationMode{ config.RotationModeDisabled, config.RotationModeRandomOnStartup, config.RotationModeRandomOnEachRequest, config.RotationModeRandomHourly, config.RotationModeRandomDaily, }, config.RotationModes()) } func TestRotationModeStrings(t *testing.T) { t.Parallel() assert.Equal(t, []string{ "disabled", "random-on-startup", "random-on-each-request", "random-hourly", "random-daily", }, config.RotationModeStrings()) } func TestParseRotationMode(t *testing.T) { t.Parallel() for name, _tt := range map[string]struct { giveBytes []byte giveString string wantMode config.RotationMode wantErrorMsg string }{ "": {giveString: "", wantMode: config.RotationModeDisabled}, "": {giveBytes: []byte(""), wantMode: config.RotationModeDisabled}, "disabled": {giveString: "disabled", wantMode: config.RotationModeDisabled}, "disabled (bytes)": {giveBytes: []byte("disabled"), wantMode: config.RotationModeDisabled}, "random-on-startup": {giveString: "random-on-startup", wantMode: config.RotationModeRandomOnStartup}, "random-on-startup (bytes)": {giveBytes: []byte("random-on-startup"), wantMode: config.RotationModeRandomOnStartup}, "on-each-request": {giveString: "random-on-each-request", wantMode: config.RotationModeRandomOnEachRequest}, "daily": {giveString: "random-daily", wantMode: config.RotationModeRandomDaily}, "hourly": {giveString: "random-hourly", wantMode: config.RotationModeRandomHourly}, "foobar": {giveString: "foobar", wantErrorMsg: "unrecognized rotation mode: \"foobar\""}, } { tt := _tt t.Run(name, func(t *testing.T) { var ( mode config.RotationMode err error ) if tt.giveString != "" || tt.giveBytes == nil { mode, err = config.ParseRotationMode(tt.giveString) } else { mode, err = config.ParseRotationMode(tt.giveBytes) } if tt.wantErrorMsg == "" { assert.NoError(t, err) assert.Equal(t, tt.wantMode, mode) } else { assert.ErrorContains(t, err, tt.wantErrorMsg) } }) } }