diff options
| author | Ramon Asuncion <asuncionbatista@gmail.com> | 2026-01-16 10:57:38 -0500 |
|---|---|---|
| committer | Ramon Asuncion <asuncionbatista@gmail.com> | 2026-01-16 10:57:38 -0500 |
| commit | 856396deee19c44a40cd3aa7220c2cf06c75dfa9 (patch) | |
| tree | 3364c28eb27532de3cd42045671102e88cb9594f /lua/99/test/visual_spec.lua | |
| parent | 90af8b6ba9e4a38e226d37284b85571b079e8b21 (diff) | |
| parent | 980b6b7ab3497a9f2d2148d17f70b8de6e9db1a7 (diff) | |
| download | a4-856396deee19c44a40cd3aa7220c2cf06c75dfa9.tar.xz a4-856396deee19c44a40cd3aa7220c2cf06c75dfa9.zip | |
Merge upstream/master - add elixir support
Diffstat (limited to 'lua/99/test/visual_spec.lua')
| -rw-r--r-- | lua/99/test/visual_spec.lua | 225 |
1 files changed, 111 insertions, 114 deletions
diff --git a/lua/99/test/visual_spec.lua b/lua/99/test/visual_spec.lua index bb02567..c4b1394 100644 --- a/lua/99/test/visual_spec.lua +++ b/lua/99/test/visual_spec.lua @@ -13,159 +13,156 @@ local Point = require("99.geo").Point --- @param end_col number --- @return _99.test.Provider, number, _99.Range local function setup(content, start_row, start_col, end_row, end_col) - local p = test_utils.TestProvider.new() - _99.setup({ - provider = p, - logger = { - error_cache_level = Levels.ERROR, - }, - }) + local p = test_utils.TestProvider.new() + _99.setup({ + provider = p, + logger = { + error_cache_level = Levels.ERROR, + }, + }) - local buffer = test_utils.create_file(content, "lua", start_row, start_col) + local buffer = test_utils.create_file(content, "lua", start_row, start_col) - -- Create a range for the visual selection - local start_point = Point:new(start_row, start_col) - local end_point = Point:new(end_row, end_col) - local range = Range:new(buffer, start_point, end_point) + -- Create a range for the visual selection + local start_point = Point:new(start_row, start_col) + local end_point = Point:new(end_row, end_col) + local range = Range:new(buffer, start_point, end_point) - return p, buffer, range + return p, buffer, range end --- @param buffer number --- @return string[] local function r(buffer) - return vim.api.nvim_buf_get_lines(buffer, 0, -1, false) + return vim.api.nvim_buf_get_lines(buffer, 0, -1, false) end local content = { - "local function foo()", - " -- TODO: implement", - "end", + "local function foo()", + " -- TODO: implement", + "end", } describe("visual", function() - it("should replace visual selection with AI response", function() - local p, buffer, range = setup(content, 2, 1, 2, 23) - local state = _99.__get_state() - local visual_fn = require("99.ops.over-range") + it("should replace visual selection with AI response", function() + local p, buffer, range = setup(content, 2, 1, 2, 23) + local state = _99.__get_state() + local visual_fn = require("99.ops.over-range") - local context = - require("99.request-context").from_current_buffer(state, 100) - visual_fn(context, range) + local context = + require("99.request-context").from_current_buffer(state, 100) + visual_fn(context, range) - eq(1, state:active_request_count()) - eq(content, r(buffer)) + eq(1, state:active_request_count()) + eq(content, r(buffer)) - p:resolve("success", " return 'implemented!'") - test_utils.next_frame() + p:resolve("success", " return 'implemented!'") + test_utils.next_frame() - local expected_state = { - "local function foo()", - " return 'implemented!'", - "end", - } - eq(expected_state, r(buffer)) - -- Note: Not checking active_request_count() == 0 due to logger bug with "id" key collision - end) + local expected_state = { + "local function foo()", + " return 'implemented!'", + "end", + } + eq(expected_state, r(buffer)) + -- Note: Not checking active_request_count() == 0 due to logger bug with "id" key collision + end) - it("should handle multi-line replacement", function() - local multi_line_content = { - "local function bar()", - " -- TODO: implement", - " -- more comments", - " -- even more", - "end", - } - local p, buffer, range = setup(multi_line_content, 2, 1, 4, 17) - local state = _99.__get_state() - local visual_fn = require("99.ops.over-range") + it("should handle multi-line replacement", function() + local multi_line_content = { + "local function bar()", + " -- TODO: implement", + " -- more comments", + " -- even more", + "end", + } + local p, buffer, range = setup(multi_line_content, 2, 1, 4, 17) + local state = _99.__get_state() + local visual_fn = require("99.ops.over-range") - local context = - require("99.request-context").from_current_buffer(state, 200) - visual_fn(context, range) + local context = + require("99.request-context").from_current_buffer(state, 200) + visual_fn(context, range) - eq(1, state:active_request_count()) - eq(multi_line_content, r(buffer)) + eq(1, state:active_request_count()) + eq(multi_line_content, r(buffer)) - p:resolve( - "success", - " local x = 1\n local y = 2\n return x + y" - ) - test_utils.next_frame() + p:resolve("success", " local x = 1\n local y = 2\n return x + y") + test_utils.next_frame() - local expected_state = { - "local function bar()", - " local x = 1", - " local y = 2", - " return x + y", - "end", - } - eq(expected_state, r(buffer)) - -- Note: Not checking active_request_count() == 0 due to logger bug with "id" key collision - end) + local expected_state = { + "local function bar()", + " local x = 1", + " local y = 2", + " return x + y", + "end", + } + eq(expected_state, r(buffer)) + -- Note: Not checking active_request_count() == 0 due to logger bug with "id" key collision + end) - it("should cancel request when stop_all_requests is called", function() - local p, buffer, range = setup(content, 2, 1, 2, 23) - local visual_fn = require("99.ops.over-range") - local state = _99.__get_state() - local context = - require("99.request-context").from_current_buffer(state, 300) + it("should cancel request when stop_all_requests is called", function() + local p, buffer, range = setup(content, 2, 1, 2, 23) + local visual_fn = require("99.ops.over-range") + local state = _99.__get_state() + local context = + require("99.request-context").from_current_buffer(state, 300) - visual_fn(context, range) + visual_fn(context, range) - eq(content, r(buffer)) + eq(content, r(buffer)) - assert.is_false(p.request.request:is_cancelled()) - assert.is_not_nil(p.request) - assert.is_not_nil(p.request.request) + assert.is_false(p.request.request:is_cancelled()) + assert.is_not_nil(p.request) + assert.is_not_nil(p.request.request) - _99.stop_all_requests() - test_utils.next_frame() + _99.stop_all_requests() + test_utils.next_frame() - assert.is_true(p.request.request:is_cancelled()) + assert.is_true(p.request.request:is_cancelled()) - p:resolve("success", " return 'should not appear'") - test_utils.next_frame() + p:resolve("success", " return 'should not appear'") + test_utils.next_frame() - -- Buffer should remain unchanged after cancellation - eq(content, r(buffer)) - end) + -- Buffer should remain unchanged after cancellation + eq(content, r(buffer)) + end) - it("should handle error cases with graceful failures", function() - local p, buffer, range = setup(content, 2, 1, 2, 23) - local visual_fn = require("99.ops.over-range") - local state = _99.__get_state() - local context = - require("99.request-context").from_current_buffer(state, 400) + it("should handle error cases with graceful failures", function() + local p, buffer, range = setup(content, 2, 1, 2, 23) + local visual_fn = require("99.ops.over-range") + local state = _99.__get_state() + local context = + require("99.request-context").from_current_buffer(state, 400) - visual_fn(context, range) + visual_fn(context, range) - eq(content, r(buffer)) + eq(content, r(buffer)) - p:resolve("failed", "Something went wrong") - test_utils.next_frame() + p:resolve("failed", "Something went wrong") + test_utils.next_frame() - -- Buffer should remain unchanged on failure - eq(content, r(buffer)) - end) + -- Buffer should remain unchanged on failure + eq(content, r(buffer)) + end) - it("should handle cancelled status gracefully", function() - local p, buffer, range = setup(content, 2, 1, 2, 23) - local visual_fn = require("99.ops.over-range") - local state = _99.__get_state() - local context = - require("99.request-context").from_current_buffer(state, 500) + it("should handle cancelled status gracefully", function() + local p, buffer, range = setup(content, 2, 1, 2, 23) + local visual_fn = require("99.ops.over-range") + local state = _99.__get_state() + local context = + require("99.request-context").from_current_buffer(state, 500) - visual_fn(context, range) + visual_fn(context, range) - eq(content, r(buffer)) + eq(content, r(buffer)) - -- Manually cancel and resolve as cancelled - p.request.request:cancel() - p:resolve("cancelled", "Request was cancelled") - test_utils.next_frame() + -- Manually cancel and resolve as cancelled + p.request.request:cancel() + p:resolve("cancelled", "Request was cancelled") + test_utils.next_frame() - -- Buffer should remain unchanged on cancellation - eq(content, r(buffer)) - end) + -- Buffer should remain unchanged on cancellation + eq(content, r(buffer)) + end) end) |
