--------------------------------------------------------------------------- Completion ---------------------------------------------------------------------------
(t *testing.T)
| 115 | // --------------------------------------------------------------------------- |
| 116 | |
| 117 | func TestFunctional_Completion_Keywords(t *testing.T) { |
| 118 | mock := newMockReadWriter() |
| 119 | logger := log.New(io.Discard, "", 0) |
| 120 | server := NewServer(mock.input, mock.output, logger) |
| 121 | |
| 122 | server.Documents().Open("file:///test.sql", "sql", 1, "SEL") |
| 123 | |
| 124 | params := CompletionParams{ |
| 125 | TextDocumentPositionParams: TextDocumentPositionParams{ |
| 126 | TextDocument: TextDocumentIdentifier{URI: "file:///test.sql"}, |
| 127 | Position: Position{Line: 0, Character: 3}, |
| 128 | }, |
| 129 | } |
| 130 | raw, _ := json.Marshal(params) |
| 131 | result, err := server.handler.HandleRequest("textDocument/completion", raw) |
| 132 | if err != nil { |
| 133 | t.Fatal(err) |
| 134 | } |
| 135 | |
| 136 | list := result.(*CompletionList) |
| 137 | if len(list.Items) == 0 { |
| 138 | t.Fatal("expected completion items for 'SEL'") |
| 139 | } |
| 140 | |
| 141 | foundSelect := false |
| 142 | for _, item := range list.Items { |
| 143 | if item.Label == "SELECT" { |
| 144 | foundSelect = true |
| 145 | break |
| 146 | } |
| 147 | } |
| 148 | if !foundSelect { |
| 149 | t.Error("expected SELECT in completion results") |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | func TestFunctional_Completion_EmptyPrefix(t *testing.T) { |
| 154 | mock := newMockReadWriter() |
nothing calls this directly
no test coverage detected