(t *testing.T)
| 240 | } |
| 241 | |
| 242 | func TestHandler_Completion(t *testing.T) { |
| 243 | mock := newMockReadWriter() |
| 244 | logger := log.New(io.Discard, "", 0) |
| 245 | server := NewServer(mock.input, mock.output, logger) |
| 246 | |
| 247 | // Open a document |
| 248 | server.Documents().Open("file:///test.sql", "sql", 1, "SEL") |
| 249 | |
| 250 | completionParams := CompletionParams{ |
| 251 | TextDocumentPositionParams: TextDocumentPositionParams{ |
| 252 | TextDocument: TextDocumentIdentifier{URI: "file:///test.sql"}, |
| 253 | Position: Position{Line: 0, Character: 3}, |
| 254 | }, |
| 255 | } |
| 256 | |
| 257 | paramsJSON, _ := json.Marshal(completionParams) |
| 258 | result, err := server.handler.HandleRequest("textDocument/completion", paramsJSON) |
| 259 | if err != nil { |
| 260 | t.Fatalf("completion failed: %v", err) |
| 261 | } |
| 262 | |
| 263 | completionList, ok := result.(*CompletionList) |
| 264 | if !ok { |
| 265 | t.Fatalf("expected CompletionList, got %T", result) |
| 266 | } |
| 267 | |
| 268 | // Check that SELECT is in the completions |
| 269 | found := false |
| 270 | for _, item := range completionList.Items { |
| 271 | if item.Label == "SELECT" { |
| 272 | found = true |
| 273 | break |
| 274 | } |
| 275 | } |
| 276 | if !found { |
| 277 | t.Error("expected SELECT in completion items") |
| 278 | } |
| 279 | } |
| 280 | |
| 281 | func TestHandler_Hover(t *testing.T) { |
| 282 | mock := newMockReadWriter() |
nothing calls this directly
no test coverage detected