feat(photos): добавить пресеты кривой и починить переключение фото
- PCHIP для предпросмотра и серверного рендера - пресеты всех каналов в профиле, импорт и экспорт - мерж настроек auth без потери разделов - сохранение вкладки и правок текущего фото при переключении
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"context"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// Curve presets live in the user profile: they survive a round trip through
|
||||
// the metadata layer and are never visible to another user.
|
||||
func TestCurvePresetsPersistAndArePrivate(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
st, closeDB := openStack(t, filepath.Join(t.TempDir(), "galo.db"), t.TempDir())
|
||||
defer closeDB()
|
||||
|
||||
owner, _, err := st.auth.Register(ctx, "presets@test.local", "", "password123", "Owner")
|
||||
if err != nil {
|
||||
t.Fatalf("register owner: %v", err)
|
||||
}
|
||||
other, _, err := st.auth.Register(ctx, "otherpresets@test.local", "", "password123", "Other")
|
||||
if err != nil {
|
||||
t.Fatalf("register other: %v", err)
|
||||
}
|
||||
|
||||
raw := []byte(`{"curve_presets":[{"name":"Мой контраст","channels":{"rgb":[{"x":0,"y":0},{"x":1,"y":0.9}],"red":[{"x":0,"y":0},{"x":1,"y":1}],"green":[{"x":0,"y":0},{"x":1,"y":1}],"blue":[{"x":0,"y":0},{"x":1,"y":1}]}}]}`)
|
||||
if err := st.repos.Auth.UpdatePreferences(ctx, owner.ID, raw); err != nil {
|
||||
t.Fatalf("update preferences: %v", err)
|
||||
}
|
||||
|
||||
got, err := st.repos.Auth.GetUserByID(ctx, owner.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("get owner: %v", err)
|
||||
}
|
||||
presets, ok := got.Preferences["curve_presets"].([]any)
|
||||
if !ok || len(presets) != 1 {
|
||||
t.Fatalf("presets not stored: %+v", got.Preferences)
|
||||
}
|
||||
preset, _ := presets[0].(map[string]any)
|
||||
if preset["name"] != "Мой контраст" {
|
||||
t.Fatalf("preset = %+v", preset)
|
||||
}
|
||||
channels, _ := preset["channels"].(map[string]any)
|
||||
for _, channel := range []string{"rgb", "red", "green", "blue"} {
|
||||
if points, ok := channels[channel].([]any); !ok || len(points) != 2 {
|
||||
t.Fatalf("channel %s = %#v", channel, channels[channel])
|
||||
}
|
||||
}
|
||||
|
||||
otherUser, err := st.repos.Auth.GetUserByID(ctx, other.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("get other: %v", err)
|
||||
}
|
||||
if _, ok := otherUser.Preferences["curve_presets"]; ok {
|
||||
t.Fatalf("other user sees presets: %+v", otherUser.Preferences)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user