(t *testing.T)
| 82 | } |
| 83 | |
| 84 | func TestEngineRegistry_Register(t *testing.T) { |
| 85 | t.Run("custom engine can be registered and retrieved", func(t *testing.T) { |
| 86 | // Use direct struct initialization to start with an empty registry so |
| 87 | // Register is the sole mechanism populating it in this test. |
| 88 | registry := &EngineRegistry{engines: make(map[string]CodingAgentEngine)} |
| 89 | customEngine := NewCopilotEngine() |
| 90 | |
| 91 | err := registry.Register(customEngine) |
| 92 | require.NoError(t, err, "registering a valid engine should not return an error") |
| 93 | |
| 94 | engine, err := registry.GetEngine("copilot") |
| 95 | require.NoError(t, err, "registered custom engine should be retrievable") |
| 96 | assert.Equal(t, "copilot", engine.GetID(), "retrieved engine ID should match registered engine") |
| 97 | }) |
| 98 | |
| 99 | t.Run("registering an engine makes IsValidEngine return true", func(t *testing.T) { |
| 100 | // Use direct struct initialization to start with an empty registry so |
| 101 | // IsValidEngine behaviour before and after Register is clearly observable. |
| 102 | registry := &EngineRegistry{engines: make(map[string]CodingAgentEngine)} |
| 103 | assert.False(t, registry.IsValidEngine("claude"), "engine should not be valid before registration") |
| 104 | |
| 105 | err := registry.Register(NewClaudeEngine()) |
| 106 | require.NoError(t, err, "registering a valid engine should not return an error") |
| 107 | assert.True(t, registry.IsValidEngine("claude"), "engine should be valid after registration") |
| 108 | }) |
| 109 | |
| 110 | t.Run("registering an engine with negative dedicatedLLMGatewayPort returns error", func(t *testing.T) { |
| 111 | registry := &EngineRegistry{engines: make(map[string]CodingAgentEngine)} |
| 112 | |
| 113 | // negativePortEngine wraps ClaudeEngine and returns -1 from |
| 114 | // getDedicatedLLMGatewayPort, triggering the validation path in Register. |
| 115 | err := registry.Register(&negativePortEngine{CodingAgentEngine: NewClaudeEngine()}) |
| 116 | require.Error(t, err, "registering an engine with dedicatedLLMGatewayPort = -1 should return an error") |
| 117 | assert.Contains(t, err.Error(), "dedicatedLLMGatewayPort must be >= 0", "error message should describe the constraint") |
| 118 | assert.False(t, registry.IsValidEngine("claude"), "invalid engine should not be registered on error") |
| 119 | }) |
| 120 | } |
| 121 | |
| 122 | // negativePortEngine wraps a CodingAgentEngine and always reports port -1 so |
| 123 | // that tests can exercise the negative-port validation path in Register without |
nothing calls this directly
no test coverage detected