1package ui
2
3import (
4 "context"
5 "testing"
6
7 "github.com/bnema/dumber/internal/application/dto"
8 "github.com/bnema/dumber/internal/application/port"
9 portmocks "github.com/bnema/dumber/internal/application/port/mocks"
10 "github.com/bnema/dumber/internal/domain/entity"
11 "github.com/bnema/dumber/internal/infrastructure/config"
12 "github.com/stretchr/testify/mock"
13 "github.com/stretchr/testify/require"
14)
15
16func TestNew_DoesNotWireClipboardOrchestratorWhenClipboardMissing(t *testing.T) {
17 ctx := context.Background()
18 engine := portmocks.NewMockEngine(t)
19 var registerDeps port.HandlerDependencies
20 engine.EXPECT().RegisterHandlers(mock.Anything, mock.Anything).
21 Run(func(_ context.Context, deps port.HandlerDependencies) {
22 registerDeps = deps
23 }).
24 Return(nil).
25 Once()
26
27 deps := &Dependencies{
28 Ctx: ctx,
29 Config: &config.Config{},
30 Engine: engine,
31 HandlerDeps: port.HandlerDeps{
32 SaveConfig: func(context.Context, dto.WebUIConfig) error { return nil },
33 SaveOmniboxInitialBehavior: func(context.Context, entity.OmniboxInitialBehavior) error { return nil },
34 },
35 Clipboard: nil,
36 }
37
38 app, err := New(deps)
39 require.NoError(t, err)
40 require.NotNil(t, app)
41 require.Nil(t, registerDeps.ClipboardTextOrchestrator)
42}
43
44func TestNew_WiresClipboardOrchestratorWhenClipboardPresent(t *testing.T) {
45 ctx := context.Background()
46 engine := portmocks.NewMockEngine(t)
47 clipboard := portmocks.NewMockClipboard(t)
48 var registerDeps port.HandlerDependencies
49 engine.EXPECT().RegisterHandlers(mock.Anything, mock.Anything).
50 Run(func(_ context.Context, deps port.HandlerDependencies) {
51 registerDeps = deps
52 }).
53 Return(nil).
54 Once()
55
56 deps := &Dependencies{
57 Ctx: ctx,
58 Config: &config.Config{},
59 Engine: engine,
60 HandlerDeps: port.HandlerDeps{
61 SaveConfig: func(context.Context, dto.WebUIConfig) error { return nil },
62 SaveOmniboxInitialBehavior: func(context.Context, entity.OmniboxInitialBehavior) error { return nil },
63 },
64 Clipboard: clipboard,
65 }
66
67 app, err := New(deps)
68 require.NoError(t, err)
69 require.NotNil(t, app)
70 require.NotNil(t, registerDeps.ClipboardTextOrchestrator)
71}