|
1 | 1 | -- tests/codex_spec.lua |
2 | 2 | -- luacheck: globals describe it assert eq |
3 | 3 | -- luacheck: ignore a -- “a” is imported but unused |
4 | | -local a = require("plenary.async.tests") |
| 4 | +local a = require 'plenary.async.tests' |
5 | 5 | local eq = assert.equals |
6 | 6 |
|
7 | | -describe("codex.nvim", function() |
8 | | - before_each(function() |
9 | | - vim.cmd("set noswapfile") -- prevent side effects |
10 | | - vim.cmd("silent! bwipeout!") -- close any open codex windows |
11 | | - end) |
12 | | - |
13 | | - it("loads the module", function() |
14 | | - local ok, codex = pcall(require, "codex") |
15 | | - assert(ok, "codex module failed to load") |
16 | | - assert(codex.open, "codex.open missing") |
17 | | - assert(codex.close, "codex.close missing") |
18 | | - assert(codex.toggle, "codex.toggle missing") |
19 | | - end) |
20 | | - |
21 | | - it("creates Codex commands", function() |
22 | | - require("codex").setup({ keymaps = {} }) |
23 | | - |
24 | | - local cmds = vim.api.nvim_get_commands({}) |
25 | | - assert(cmds["Codex"], "Codex command not found") |
26 | | - assert(cmds["CodexToggle"], "CodexToggle command not found") |
27 | | - end) |
28 | | - |
29 | | - it("opens a floating terminal window", function() |
30 | | - require("codex").setup({ cmd = "echo 'test'" }) |
31 | | - require("codex").open() |
32 | | - |
33 | | - local win = vim.api.nvim_get_current_win() |
34 | | - local buf = vim.api.nvim_win_get_buf(win) |
35 | | - local ft = vim.api.nvim_buf_get_option(buf, "filetype") |
36 | | - eq(ft, "codex") |
37 | | - |
38 | | - require("codex").close() |
39 | | - end) |
40 | | - |
41 | | - it("toggles the window", function() |
42 | | - require("codex").setup({ cmd = "echo 'test'" }) |
43 | | - |
44 | | - require("codex").toggle() |
45 | | - local win1 = vim.api.nvim_get_current_win() |
46 | | - assert(vim.api.nvim_win_is_valid(win1), "Codex window should be open") |
47 | | - |
48 | | - require("codex").toggle() |
49 | | - local still_valid = pcall(vim.api.nvim_win_get_buf, win1) |
50 | | - assert(not still_valid, "Codex window should be closed") |
51 | | - end) |
52 | | - |
53 | | - it("shows statusline only when job is active but window is not", function() |
54 | | - require("codex").setup({ cmd = "sleep 1000" }) |
55 | | - require("codex").open() |
56 | | - |
57 | | - vim.defer_fn(function() |
58 | | - require("codex").close() |
59 | | - local status = require("codex").statusline() |
60 | | - eq(status, "[Codex]") |
61 | | - end, 100) |
62 | | - end) |
| 7 | +describe('codex.nvim', function() |
| 8 | + before_each(function() |
| 9 | + vim.cmd 'set noswapfile' -- prevent side effects |
| 10 | + vim.cmd 'silent! bwipeout!' -- close any open codex windows |
| 11 | + end) |
| 12 | + |
| 13 | + it('loads the module', function() |
| 14 | + local ok, codex = pcall(require, 'codex') |
| 15 | + assert(ok, 'codex module failed to load') |
| 16 | + assert(codex.open, 'codex.open missing') |
| 17 | + assert(codex.close, 'codex.close missing') |
| 18 | + assert(codex.toggle, 'codex.toggle missing') |
| 19 | + end) |
| 20 | + |
| 21 | + it('creates Codex commands', function() |
| 22 | + require('codex').setup { keymaps = {} } |
| 23 | + |
| 24 | + local cmds = vim.api.nvim_get_commands {} |
| 25 | + assert(cmds['Codex'], 'Codex command not found') |
| 26 | + assert(cmds['CodexToggle'], 'CodexToggle command not found') |
| 27 | + end) |
| 28 | + |
| 29 | + it('opens a floating terminal window', function() |
| 30 | + require('codex').setup { cmd = "echo 'test'" } |
| 31 | + require('codex').open() |
| 32 | + |
| 33 | + local win = vim.api.nvim_get_current_win() |
| 34 | + local buf = vim.api.nvim_win_get_buf(win) |
| 35 | + local ft = vim.api.nvim_buf_get_option(buf, 'filetype') |
| 36 | + eq(ft, 'codex') |
| 37 | + |
| 38 | + require('codex').close() |
| 39 | + end) |
| 40 | + |
| 41 | + it('toggles the window', function() |
| 42 | + require('codex').setup { cmd = "echo 'test'" } |
| 43 | + |
| 44 | + require('codex').toggle() |
| 45 | + local win1 = vim.api.nvim_get_current_win() |
| 46 | + assert(vim.api.nvim_win_is_valid(win1), 'Codex window should be open') |
| 47 | + |
| 48 | + require('codex').toggle() |
| 49 | + local still_valid = pcall(vim.api.nvim_win_get_buf, win1) |
| 50 | + assert(not still_valid, 'Codex window should be closed') |
| 51 | + end) |
| 52 | + |
| 53 | + it('shows statusline only when job is active but window is not', function() |
| 54 | + require('codex').setup { cmd = 'sleep 1000' } |
| 55 | + require('codex').open() |
| 56 | + |
| 57 | + vim.defer_fn(function() |
| 58 | + require('codex').close() |
| 59 | + local status = require('codex').statusline() |
| 60 | + eq(status, '[Codex]') |
| 61 | + end, 100) |
| 62 | + end) |
63 | 63 | end) |
0 commit comments