photoprism/internal/entity/auth_user_settings_test.go
2023-08-11 14:48:28 +02:00

224 lines
5.6 KiB
Go

package entity
import (
"testing"
"github.com/photoprism/photoprism/internal/customize"
"github.com/stretchr/testify/assert"
)
func TestCreateUserSettings(t *testing.T) {
t.Run("Empty UID", func(t *testing.T) {
m := &User{UserUID: ""}
assert.Error(t, CreateUserSettings(m))
assert.Nil(t, m.UserSettings)
})
t.Run("Success", func(t *testing.T) {
m := &User{UserUID: "1234"}
err := CreateUserSettings(m)
if err != nil {
t.Fatal(err)
}
assert.NotNil(t, m.UserSettings)
})
}
func TestUserSettings_HasID(t *testing.T) {
u := FindUserByName("alice")
assert.True(t, u.UserSettings.HasID())
}
func TestUserSettings_Updates(t *testing.T) {
m := &User{
UserUID: "1234",
UserSettings: &UserSettings{
UITheme: "carbon",
UILanguage: "de",
}}
m.UserSettings.Updates(UserSettings{UITheme: "vanta", UILanguage: "en"})
assert.Equal(t, "vanta", m.UserSettings.UITheme)
assert.Equal(t, "en", m.UserSettings.UILanguage)
}
func TestUserSettings_Apply(t *testing.T) {
m := &UserSettings{
UITheme: "carbon",
UILanguage: "de",
}
s := &customize.Settings{
UI: customize.UISettings{
Theme: "onyx",
Language: "nl",
TimeZone: "Europe/Berlin",
},
Download: customize.DownloadSettings{
Name: "file",
Disabled: false,
Originals: true,
MediaRaw: false,
MediaSidecar: true,
},
Maps: customize.MapsSettings{
Animate: 1,
Style: "outdoor",
},
Index: customize.IndexSettings{
Path: "index-path",
Convert: true,
Rescan: true,
SkipArchived: false,
},
Import: customize.ImportSettings{
Path: "imports/2023",
Move: false,
},
}
r := m.Apply(s)
assert.Equal(t, "nl", r.UILanguage)
assert.Equal(t, "onyx", r.UITheme)
assert.Equal(t, "Europe/Berlin", r.UITimeZone)
assert.Equal(t, -1, r.DownloadMediaRaw)
assert.Equal(t, 1, r.DownloadOriginals)
assert.Equal(t, 1, r.DownloadMediaSidecar)
assert.Equal(t, "outdoor", r.MapsStyle)
assert.Equal(t, 1, r.MapsAnimate)
assert.Equal(t, 1, r.IndexRescan)
assert.Equal(t, "index-path", r.IndexPath)
assert.Equal(t, -1, r.ImportMove)
assert.Equal(t, "imports/2023", r.ImportPath)
s2 := &customize.Settings{
Download: customize.DownloadSettings{
Name: "file",
Disabled: false,
Originals: false,
MediaRaw: true,
MediaSidecar: false,
},
Maps: customize.MapsSettings{
Animate: 0,
Style: "outdoor",
},
Index: customize.IndexSettings{
Path: "index-path",
Convert: true,
Rescan: false,
SkipArchived: false,
},
Import: customize.ImportSettings{
Path: "imports/2023",
Move: true,
},
}
r2 := m.Apply(s2)
assert.Equal(t, "nl", r2.UILanguage)
assert.Equal(t, "onyx", r2.UITheme)
assert.Equal(t, "Europe/Berlin", r2.UITimeZone)
assert.Equal(t, 1, r2.DownloadMediaRaw)
assert.Equal(t, -1, r2.DownloadOriginals)
assert.Equal(t, -1, r2.DownloadMediaSidecar)
assert.Equal(t, "outdoor", r2.MapsStyle)
assert.Equal(t, -1, r2.MapsAnimate)
assert.Equal(t, -1, r2.IndexRescan)
assert.Equal(t, "index-path", r2.IndexPath)
assert.Equal(t, 1, r2.ImportMove)
assert.Equal(t, "imports/2023", r2.ImportPath)
}
func TestUserSettings_ApplyTo(t *testing.T) {
m := &UserSettings{
UITheme: "lavender",
UILanguage: "ch",
UITimeZone: "Europe",
MapsStyle: "satellite",
MapsAnimate: 1,
IndexPath: "flowers",
IndexRescan: -1,
ImportPath: "import",
ImportMove: 1,
DownloadOriginals: -1,
DownloadMediaRaw: 1,
DownloadMediaSidecar: -1,
}
s := &customize.Settings{
UI: customize.UISettings{
Theme: "onyx",
Language: "nl",
TimeZone: "Europe/Berlin",
},
Download: customize.DownloadSettings{
Name: "file",
Disabled: false,
Originals: true,
MediaRaw: false,
MediaSidecar: true,
},
Maps: customize.MapsSettings{
Animate: 0,
Style: "outdoor",
},
Index: customize.IndexSettings{
Path: "index-path",
Convert: true,
Rescan: true,
SkipArchived: false,
},
Import: customize.ImportSettings{
Path: "imports/2023",
Move: false,
},
}
r := m.ApplyTo(s)
assert.IsType(t, &customize.Settings{}, r)
assert.Equal(t, "ch", r.UI.Language)
assert.Equal(t, "lavender", r.UI.Theme)
assert.Equal(t, "Europe", r.UI.TimeZone)
assert.Equal(t, true, r.Download.MediaRaw)
assert.Equal(t, false, r.Download.Originals)
assert.Equal(t, false, r.Download.MediaSidecar)
assert.Equal(t, "satellite", r.Maps.Style)
assert.Equal(t, 1, r.Maps.Animate)
assert.Equal(t, false, r.Index.Rescan)
assert.Equal(t, "flowers", r.Index.Path)
assert.Equal(t, true, r.Import.Move)
assert.Equal(t, "import", r.Import.Path)
m2 := &UserSettings{
UITheme: "lavender",
UILanguage: "ch",
UITimeZone: "Europe",
MapsStyle: "satellite",
MapsAnimate: -1,
IndexPath: "flowers",
IndexRescan: 1,
ImportPath: "import",
ImportMove: -1,
DownloadOriginals: 1,
DownloadMediaRaw: -1,
DownloadMediaSidecar: 1,
}
r2 := m2.ApplyTo(s)
assert.IsType(t, &customize.Settings{}, r2)
assert.Equal(t, "ch", s.UI.Language)
assert.Equal(t, "lavender", s.UI.Theme)
assert.Equal(t, "Europe", s.UI.TimeZone)
assert.Equal(t, false, s.Download.MediaRaw)
assert.Equal(t, true, s.Download.Originals)
assert.Equal(t, true, s.Download.MediaSidecar)
assert.Equal(t, "satellite", s.Maps.Style)
assert.Equal(t, 0, s.Maps.Animate)
assert.Equal(t, true, s.Index.Rescan)
assert.Equal(t, "flowers", s.Index.Path)
assert.Equal(t, false, s.Import.Move)
assert.Equal(t, "import", s.Import.Path)
}