Files
gitlab.nvim/lua/gitlab/spec/util_spec.lua
Harrison (Harry) Cramer c4a3229f16 Feat: Adds More Information to Summary Panel (#100)
This MR adds more information into the summary view, including the MR author, created at date, merge status, draft status, conflicts, and pipeline status, among other things. This is configurable via the setup function.
2023-11-20 18:56:19 -05:00

216 lines
6.1 KiB
Lua

describe("utils/init.lua", function()
it("Loads package", function()
local utils_ok, _ = pcall(require, "gitlab.utils")
assert._is_true(utils_ok)
end)
local _, u = pcall(require, "gitlab.utils")
describe("extract", function()
it("Extracts a single value", function()
local t = { { one = 1, two = 2 }, { three = 3, four = 4 } }
local got = u.extract(t, "one")
local want = { 1 }
assert.are.same(want, got)
end)
it("Returns nothing with empty table", function()
local t = {}
local got = u.extract(t, "one")
local want = {}
assert.are.same(want, got)
end)
end)
describe("get_last_word", function()
it("Returns the last word in a sentence", function()
local sentence = "Hello world!"
local got = u.get_last_word(sentence)
local want = "world!"
assert.are.same(want, got)
end)
it("Returns an empty string without text", function()
local sentence = ""
local got = u.get_last_word(sentence)
local want = ""
assert.are.same(want, got)
end)
it("Returns whole string w/out divider", function()
local sentence = "Thisdoesnothavebreaks"
local got = u.get_last_word(sentence)
assert.are.same(sentence, got)
end)
it("Returns correct word w/ different divider", function()
local sentence = "this|uses|a|different|divider"
local got = u.get_last_word(sentence, "|")
local want = "divider"
assert.are.same(want, got)
end)
end)
describe("format_date", function()
local current_date = {
day = 19,
hour = 22,
isdst = false,
min = 0,
month = 11,
sec = 44,
wday = 1,
yday = 323,
year = 2023,
}
it("Returns days since a valid UTC timestamp", function()
local stamp = "2023-11-16T19:52:36.946Z"
local got = u.time_since(stamp, current_date)
local want = "3 days ago"
assert.are.same(want, got)
end)
it("Returns hours since a valid UTC timestamp", function()
local stamp = "2023-11-19T19:52:36.946Z"
local got = u.time_since(stamp, current_date)
local want = "2 hours ago"
assert.are.same(want, got)
end)
it("Returns readable time if > 1 year", function()
local stamp = "2011-11-19T19:52:36.946Z"
local got = u.time_since(stamp, current_date)
local want = "November 19, 2011"
assert.are.same(want, got)
end)
end)
describe("remove_first_value", function()
it("Removes the first value correctly", function()
local got = u.remove_first_value({ 1, 2 })
local want = { 2 }
assert.are.same(want, got)
end)
it("Handles a one-length list", function()
local got = u.remove_first_value({ 1 })
local want = {}
assert.are.same(want, got)
end)
it("Handles a zero-length list", function()
local got = u.remove_first_value({})
local want = {}
assert.are.same(want, got)
end)
end)
describe("table_size", function()
it("Works for associative tables", function()
local got = u.remove_first_value({ 1, 2 })
local want = { 2 }
assert.are.same(want, got)
end)
it("Handles a one-length list", function()
local got = u.remove_first_value({ 1 })
local want = {}
assert.are.same(want, got)
end)
it("Handles a zero-length list", function()
local got = u.remove_first_value({})
local want = {}
assert.are.same(want, got)
end)
end)
describe("contains", function()
it("Finds a value in a list", function()
local got = u.contains({ 1, 2 }, 1)
assert._is_true(got)
end)
it("Handles missing values", function()
local got = u.contains({ 1, 3, 4 }, 2)
assert._is_false(got)
end)
it("Handles empty lists", function()
local got = u.contains({}, 1)
assert._is_false(got)
end)
end)
describe("reverse", function()
it("Reverses the values in a list", function()
local got = u.reverse({ 1, 2, 3, 4 })
local want = { 4, 3, 2, 1 }
assert.are.same(got, want)
end)
it("Handles single value", function()
local got = u.reverse({ 1 })
local want = { 1 }
assert.are.same(got, want)
end)
it("Handles empty list", function()
local got = u.reverse({})
local want = {}
assert.are.same(got, want)
end)
end)
describe("spread", function()
it("Spreads the values", function()
local t1 = { 1, 2, 3 }
local t2 = { 4, 5, 6 }
local got = u.spread(t1, t2)
local want = { 1, 2, 3, 4, 5, 6 }
assert.are.same(got, want)
end)
it("Handles an empty t1 table", function()
local t1 = {}
local t2 = { 4, 5, 6 }
local got = u.spread(t1, t2)
local want = { 4, 5, 6 }
assert.are.same(got, want)
end)
it("Handles an empty t2 table", function()
local t1 = { 1, 2, 3 }
local t2 = {}
local got = u.spread(t1, t2)
local want = { 1, 2, 3 }
assert.are.same(got, want)
end)
it("Handles both empty tables", function()
local t1 = {}
local t2 = {}
local got = u.spread(t1, t2)
local want = {}
assert.are.same(got, want)
end)
end)
describe("offset_to_seconds", function()
local tests = {
est = { "-0500", -18000 },
pst = { "-0800", -28800 },
gmt = { "+0000", 0 },
cet = { "+0100", 360 },
jst = { "+0900", 32400 },
ist = { "+0530", 19800 },
art = { "-0300", -10800 },
aest = { "+1100", 39600 },
mmt = { "+0630", 23400 },
}
for _, val in ipairs(tests) do
local got = u.offset_to_seconds(val[1])
local want = val[2]
assert.are.same(got, want)
end
end)
describe("format_to_local", function()
local tests = {
{ "2023-10-28T16:25:09.482Z", "-0500", "10/28/2023 at 11:25" },
{ "2016-11-22T1:25:09.482Z", "-0500", "11/21/2016 at 20:25" },
{ "2016-11-22T1:25:09.482Z", "-0000", "11/22/2016 at 01:25" },
{ "2017-3-22T13:25:09.482Z", "+0700", "03/22/2017 at 20:25" },
}
for _, val in ipairs(tests) do
local got = u.format_to_local(val[1], val[2])
local want = val[3]
assert.are.same(got, want)
end
end)
end)