1package config
2
3import (
4 "testing"
5
6 "github.com/spf13/viper"
7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/require"
9)
10
11func TestSetEngineDefaults(t *testing.T) {
12 mgr := &Manager{viper: viper.New()}
13 mgr.setDefaults()
14
15 // Universal engine fields
16 assert.Equal(t, EngineTypeCEF, mgr.viper.GetString("engine.type"))
17 assert.Equal(t, "default", mgr.viper.GetString("engine.profile"))
18 assert.Equal(t, "always", mgr.viper.GetString("engine.cookie_policy"))
19 assert.Equal(t, 4, mgr.viper.GetInt("engine.pool_prewarm_count"))
20 assert.Equal(t, 256, mgr.viper.GetInt("engine.zoom_cache_size"))
21 assert.InDelta(t, defaultCEFScrollMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_wheel_multiplier"), 0.001)
22 assert.InDelta(t, defaultCEFScrollPreciseMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_precise_multiplier"), 0.001)
23 assert.InDelta(t, defaultCEFScrollMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_horizontal_multiplier"), 0.001)
24 assert.InDelta(t, defaultCEFScrollMultiplier, mgr.viper.GetFloat64("engine.cef.input.scroll_vertical_multiplier"), 0.001)
25 assert.Equal(t, defaultCEFScrollMaxDelta, mgr.viper.GetInt("engine.cef.input.scroll_max_delta"))
26 assert.Equal(t, defaultCEFScrollTouchpadInertia, mgr.viper.GetBool("engine.cef.input.scroll_touchpad_inertia"))
27 assert.Equal(t, defaultCEFScrollWheelSmoothing, mgr.viper.GetBool("engine.cef.input.scroll_wheel_smoothing"))
28 assert.True(t, mgr.viper.GetBool("engine.cef.input.scroll_touchpad_inertia"))
29 assert.True(t, mgr.viper.GetBool("engine.cef.input.scroll_wheel_smoothing"))
30 assert.Equal(t, defaultCEFTouchpadNavigation, mgr.viper.GetBool("engine.cef.input.touchpad_navigation_enabled"))
31 assert.InDelta(t, defaultCEFTouchpadNavigationDelta, mgr.viper.GetFloat64("engine.cef.input.touchpad_navigation_min_delta"), 0.001)
32 assert.InDelta(t, defaultCEFTouchpadNavigationRatio, mgr.viper.GetFloat64("engine.cef.input.touchpad_navigation_max_vertical_ratio"), 0.001)
33
34 // WebKit-specific engine fields
35 assert.True(t, mgr.viper.GetBool("engine.webkit.itp_enabled"))
36 assert.Equal(t, "auto", mgr.viper.GetString("engine.webkit.gsk_renderer"))
37 assert.Equal(t, "auto", mgr.viper.GetString("engine.webkit.gl_rendering_mode"))
38 assert.False(t, mgr.viper.GetBool("engine.webkit.disable_dmabuf_renderer"))
39
40 // Old sections should NOT be registered as defaults
41 assert.Empty(t, mgr.viper.GetString("privacy.cookie_policy"))
42 assert.Empty(t, mgr.viper.GetString("rendering.mode"))
43 assert.Empty(t, mgr.viper.GetString("performance.profile"))
44 assert.Empty(t, mgr.viper.GetString("runtime.prefix"))
45}
46
47func TestScrollInertiaOptions_ExplicitFalseSurvivesUnmarshal(t *testing.T) {
48 mgr := &Manager{viper: viper.New()}
49 mgr.setDefaults()
50 mgr.viper.Set("engine.cef.input.scroll_touchpad_inertia", false)
51 mgr.viper.Set("engine.cef.input.scroll_wheel_smoothing", false)
52
53 cfg, err := mgr.unmarshalConfig()
54 require.NoError(t, err)
55 assert.False(t, cfg.Engine.CEF.Input.ScrollTouchpadInertia)
56 assert.False(t, cfg.Engine.CEF.Input.ScrollWheelSmoothing)
57}
58
59func TestScrollInertiaOptions_DefaultTrueThroughUnmarshal(t *testing.T) {
60 mgr := &Manager{viper: viper.New()}
61 mgr.setDefaults()
62
63 cfg, err := mgr.unmarshalConfig()
64 require.NoError(t, err)
65 assert.True(t, cfg.Engine.CEF.Input.ScrollTouchpadInertia)
66 assert.True(t, cfg.Engine.CEF.Input.ScrollWheelSmoothing)
67}
68
69func TestNormalizeExternalLinks(t *testing.T) {
70 cfg := DefaultConfig()
71 cfg.Workspace.ExternalLinks.Behavior = "invalid"
72 cfg.Workspace.ExternalLinks.Placement = "invalid"
73
74 normalizeConfig(cfg)
75
76 assert.Equal(t, ExternalLinkBehaviorWindowed, cfg.Workspace.ExternalLinks.Behavior)
77 assert.Equal(t, ExternalLinkPlacementRight, cfg.Workspace.ExternalLinks.Placement)
78}
79
80func TestNormalizeConfig_EngineCookiePolicy(t *testing.T) {
81 cfg := DefaultConfig()
82 cfg.Engine.CookiePolicy = CookiePolicy("INVALID")
83
84 normalizeConfig(cfg)
85
86 assert.Equal(t, CookiePolicyAlways, cfg.Engine.CookiePolicy)
87}