Skip to content

Commit d486417

Browse files
committed
test: Create tests for delete action
1 parent 771051a commit d486417

4 files changed

Lines changed: 111 additions & 32 deletions

File tree

test/helpers.lua

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
local M = {}
2+
3+
local MiniTest = require("mini.test")
4+
5+
-- stylua: ignore
6+
M.alphabet_lower = {
7+
{ "a" }, { "b" }, { "c" }, { "d" }, { "e" }, { "f" }, { "g" }, { "h" }, { "i" }, { "j" }, { "k" }, { "l" }, { "m" },
8+
{ "n" }, { "o" }, { "p" }, { "q" }, { "r" }, { "s" }, { "t" }, { "u" }, { "v" }, { "w" }, { "x" }, { "y" }, { "z" },
9+
}
10+
11+
-- stylua: ignore
12+
M.alphabet_upper = {
13+
{ "A" }, { "B" }, { "C" }, { "D" }, { "E" }, { "F" }, { "G" }, { "H" }, { "I" }, { "J" }, { "K" }, { "L" }, { "M" },
14+
{ "N" }, { "O" }, { "P" }, { "Q" }, { "R" }, { "S" }, { "T" }, { "U" }, { "V" }, { "W" }, { "X" }, { "Y" }, { "Z" },
15+
}
16+
17+
M.get_gutter = function(child)
18+
local ns = child.api.nvim_get_namespaces()["gutter_marks"]
19+
local bufnr = child.api.nvim_get_current_buf()
20+
MiniTest.expect.no_equality(ns, nil)
21+
MiniTest.expect.no_equality(bufnr, nil)
22+
local gutter = child.api.nvim_buf_get_extmarks(bufnr, ns, 0, -1, {
23+
details = true,
24+
})
25+
return gutter
26+
end
27+
28+
return M

test/test_action_delete.lua

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
-- Basic test to verify the extension loads correctly
2+
3+
local MiniTest = require("mini.test")
4+
local eq = MiniTest.expect.equality
5+
local helpers = dofile("test/helpers.lua")
6+
7+
local child = MiniTest.new_child_neovim()
8+
9+
local new_buf = function()
10+
child.bo.ft = "json"
11+
child.type_keys("iab<cr>cd<cr>ef<esc>gg")
12+
end
13+
14+
local T = MiniTest.new_set({
15+
hooks = {
16+
pre_case = function()
17+
child.restart({ "-u", "test/init.lua" })
18+
child.bo.readonly = false
19+
child.lua([[M = require('guttermarks.actions')]])
20+
end,
21+
post_once = child.stop,
22+
},
23+
})
24+
25+
T["alphabet"] = MiniTest.new_set({
26+
parametrize = vim.tbl_extend("keep", helpers.alphabet_lower, helpers.alphabet_upper),
27+
})
28+
29+
T["alphabet"]["Delete mark simple"] = function(x)
30+
new_buf()
31+
child.type_keys("ggj0")
32+
child.type_keys("m" .. x)
33+
34+
local gutter = helpers.get_gutter(child)
35+
eq(#gutter, 1)
36+
eq(gutter[1][4]["sign_text"], x .. " ")
37+
38+
child.lua([[ M.delete_mark() ]])
39+
40+
gutter = helpers.get_gutter(child)
41+
eq(#gutter, 0)
42+
end
43+
44+
T["alphabet"]["Delete mark wrong line"] = function(x)
45+
new_buf()
46+
child.type_keys("ggj0")
47+
child.type_keys("m" .. x)
48+
child.type_keys("j")
49+
child.lua([[ M.delete_mark() ]])
50+
51+
local gutter = helpers.get_gutter(child)
52+
eq(#gutter, 1)
53+
eq(gutter[1][4]["sign_text"], x .. " ")
54+
end
55+
56+
T["Delete mark multiple present"] = function()
57+
new_buf()
58+
child.type_keys({ "gg", "ma", "j", "mb" })
59+
60+
local gutter = helpers.get_gutter(child)
61+
eq(#gutter, 2)
62+
63+
child.lua([[ M.delete_mark() ]])
64+
65+
gutter = helpers.get_gutter(child)
66+
eq(#gutter, 1)
67+
end
68+
69+
return T

test/test_init.lua

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
-- Basic test to verify the extension loads correctly
22

33
local MiniTest = require("mini.test")
4+
local helpers = dofile("test/helpers.lua")
45
local eq = MiniTest.expect.equality
5-
local neq = MiniTest.expect.no_equality
66

77
local child = MiniTest.new_child_neovim()
88

@@ -11,17 +11,6 @@ local new_buf = function()
1111
child.type_keys("iab<cr>cd<cr>ef<esc>gg")
1212
end
1313

14-
local get_gutter = function()
15-
local ns = child.api.nvim_get_namespaces()["gutter_marks"]
16-
local bufnr = child.api.nvim_get_current_buf()
17-
neq(ns, nil)
18-
neq(bufnr, nil)
19-
local gutter = child.api.nvim_buf_get_extmarks(bufnr, ns, 0, -1, {
20-
details = true,
21-
})
22-
return gutter
23-
end
24-
2514
local T = MiniTest.new_set({
2615
hooks = {
2716
pre_case = function()
@@ -49,7 +38,7 @@ T["Simple mark"] = function()
4938
child.type_keys("ggj0")
5039
child.type_keys("ma")
5140

52-
local gutter = get_gutter()
41+
local gutter = helpers.get_gutter(child)
5342
eq(#gutter, 1)
5443
eq(gutter[1][4]["sign_text"], "a ")
5544
end
@@ -59,15 +48,15 @@ T["Delete mark"] = function()
5948
child.type_keys("ma")
6049
child.type_keys(":delmarks a<cr>")
6150

62-
eq(#get_gutter(), 0)
51+
eq(#helpers.get_gutter(child), 0)
6352
end
6453

6554
T["Multiple marks"] = function()
6655
new_buf()
6756
child.type_keys("ggj0")
6857
child.type_keys({ "ma", "j", "mb" })
6958

70-
local gutter = get_gutter()
59+
local gutter = helpers.get_gutter(child)
7160
eq(#gutter, 2)
7261
eq(gutter[1][4]["sign_text"], "a ")
7362
eq(gutter[2][4]["sign_text"], "b ")
@@ -78,7 +67,7 @@ T["Complex flow"] = function()
7867
child.type_keys("ggj0")
7968
child.type_keys({ "ma", "j", "mb", ":delmarks a<cr>", "k", "mC" })
8069

81-
local gutter = get_gutter()
70+
local gutter = helpers.get_gutter(child)
8271
eq(#gutter, 2)
8372
eq(gutter[1][4]["sign_text"], "C ")
8473
eq(gutter[2][4]["sign_text"], "b ")
@@ -90,10 +79,10 @@ T["enable()"] = function()
9079
child.type_keys("ggj0")
9180
child.type_keys({ "ma" })
9281

93-
eq(#get_gutter(), 0)
82+
eq(#helpers.get_gutter(child), 0)
9483

9584
child.lua([[ M.enable(true) ]])
96-
eq(#get_gutter(), 1)
85+
eq(#helpers.get_gutter(child), 1)
9786
end
9887

9988
T["toggle()"] = function()
@@ -103,10 +92,10 @@ T["toggle()"] = function()
10392
child.type_keys({ "ma" })
10493

10594
eq(child.lua_get([[ M.toggle() ]]), true)
106-
eq(#get_gutter(), 1)
95+
eq(#helpers.get_gutter(child), 1)
10796

10897
eq(child.lua_get([[ M.toggle() ]]), false)
109-
eq(#get_gutter(), 0)
98+
eq(#helpers.get_gutter(child), 0)
11099
end
111100

112101
T["(force) refresh()"] = function()
@@ -117,10 +106,10 @@ T["(force) refresh()"] = function()
117106
local bufnr = child.api.nvim_get_current_buf()
118107
local ns = child.api.nvim_get_namespaces()["gutter_marks"]
119108
child.api.nvim_buf_clear_namespace(bufnr, ns, 0, -1)
120-
eq(#get_gutter(), 0)
109+
eq(#helpers.get_gutter(child), 0)
121110

122111
eq(child.lua_get([[ M.refresh() ]]), true)
123-
eq(#get_gutter(), 1)
112+
eq(#helpers.get_gutter(child), 1)
124113
end
125114

126115
return T

test/test_utils.lua

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
local MiniTest = require("mini.test")
22
local T = MiniTest.new_set()
33
local eq = MiniTest.expect.equality
4+
local helpers = dofile("test/helpers.lua")
45

56
local utils = require("guttermarks.utils")
67

7-
-- stylua: ignore
88
T["alphabet_lower"] = MiniTest.new_set({
9-
parametrize = {
10-
{ "a" }, { "b" }, { "c" }, { "d" }, { "e" }, { "f" }, { "g" }, { "h" }, { "i" }, { "j" }, { "k" }, { "l" }, { "m" },
11-
{ "n" }, { "o" }, { "p" }, { "q" }, { "r" }, { "s" }, { "t" }, { "u" }, { "v" }, { "w" }, { "x" }, { "y" }, { "z" },
12-
},
9+
parametrize = helpers.alphabet_lower,
1310
})
1411

15-
-- stylua: ignore
1612
T["alphabet_upper"] = MiniTest.new_set({
17-
parametrize = {
18-
{ "A" }, { "B" }, { "C" }, { "D" }, { "E" }, { "F" }, { "G" }, { "H" }, { "I" }, { "J" }, { "K" }, { "L" }, { "M" },
19-
{ "N" }, { "O" }, { "P" }, { "Q" }, { "R" }, { "S" }, { "T" }, { "U" }, { "V" }, { "W" }, { "X" }, { "Y" }, { "Z" },
20-
},
13+
parametrize = helpers.alphabet_upper,
2114
})
2215

2316
T["non_alphabet"] = MiniTest.new_set()

0 commit comments

Comments
 (0)