Marty Oehme
2a3e213ac8
Both link creation and extraction, all derived from parser functionality, should run within the link module and actions should only make use of it to invoke editor functionality.
105 lines
4.2 KiB
Lua
105 lines
4.2 KiB
Lua
link = require 'zettelkasten.link'
|
|
Test_date = {year = 2019, month = 10, day = 29, hour = 16, min = 45}
|
|
|
|
before_each(function() _G.vim = {g = {}, b = {}} end)
|
|
after_each(function() _G.vim = nil end)
|
|
|
|
describe("urlify", function()
|
|
it("should return lowercased link text", function()
|
|
assert.same("yesiamshouting", link.urlify("YESIAMSHOUTING"))
|
|
end)
|
|
|
|
it("should return spaces in text replaced with dashes", function()
|
|
assert.same("yes-indeed-a-space", link.urlify("yes indeed a space"))
|
|
end)
|
|
end)
|
|
|
|
describe("append_extension", function()
|
|
it("should append the contents set in global zettel extension option",
|
|
function()
|
|
vim.g.zettel_extension = ".extension"
|
|
assert.same("myfile.extension", link.append_extension("myfile"))
|
|
end)
|
|
it("should append the contents set in global zettel extension option",
|
|
function()
|
|
vim.b.zettel_extension = ".bufext"
|
|
assert.same("myfile.bufext", link.append_extension("myfile"))
|
|
end)
|
|
end)
|
|
|
|
describe("create", function()
|
|
before_each(function()
|
|
vim.g.zettel_extension = ".md"
|
|
vim.g.zettel_anchor_separator = "_"
|
|
vim.g.zettel_link_style = "markdown"
|
|
end)
|
|
after_each(function() vim.g = nil end)
|
|
it("should create a working link using set options in vim", function()
|
|
assert.same("[My FILE NAME](1910291645_my-file-name.md)",
|
|
link.create("1910291645", "My FILE NAME"))
|
|
end)
|
|
it("should create a working link if style is manually set", function()
|
|
assert.same("[[1910291645|My FILE NAME]]",
|
|
link.create("1910291645", "My FILE NAME", "wiki"))
|
|
end)
|
|
it("should not error on empty text", function()
|
|
vim.g.zettel_extension = ".wiki"
|
|
vim.g.zettel_anchor_separator = "_"
|
|
vim.g.zettel_link_style = "wiki"
|
|
assert.same("[[1910291645]]", link.create("1910291645"))
|
|
end)
|
|
describe("wiki link styling", function()
|
|
it("should error if no link provided", function()
|
|
assert.is_error(function() link.style_wiki("", "mytext") end)
|
|
assert.is_error(function() link.style_wiki(nil, "mytext") end)
|
|
end)
|
|
it("should correctly apply transformations to link and text", function()
|
|
assert.same("[[1910291645|My AWESOME Link]]",
|
|
link.create("1910291645", "My AWESOME Link", "wiki"))
|
|
end)
|
|
it("should trim whitespace for the text area", function()
|
|
assert.same("[[1910291645]]",
|
|
link.create("1910291645", " ", "wiki"))
|
|
assert.same("[[1910291645|hi]]",
|
|
link.create("1910291645", " hi ", "wiki"))
|
|
end)
|
|
describe("markdown link styling", function()
|
|
it("should correctly apply transformations to link and text",
|
|
function()
|
|
assert.same("[My AWESOME Link](1910291645_my-awesome-link.md)",
|
|
link.create("1910291645", "My AWESOME Link",
|
|
"markdown"))
|
|
end)
|
|
it("should trim whitespace for the text area", function()
|
|
assert.same("[](1910291645.md)",
|
|
link.create("1910291645", " ", "markdown"))
|
|
assert.same("[hi](1910291645_hi.md)",
|
|
link.create("1910291645", " hi ", "markdown"))
|
|
end)
|
|
it("should error if no link provided", function()
|
|
assert.is_error(function()
|
|
link.style_markdown("", "mytext")
|
|
end)
|
|
assert.is_error(function()
|
|
link.style_markdown(nil, "mytext")
|
|
end)
|
|
end)
|
|
end)
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
describe("new", function()
|
|
it("should create a link out of only text input", function()
|
|
local result = link.new("My FILE NAME")
|
|
assert.is_not_nil(result:match(
|
|
"%[My FILE NAME%]%(.*_my%-file%-name%.md%)"))
|
|
end)
|
|
it("should be callable without any parameters, using default settings",
|
|
function()
|
|
vim.g.zettel_link_style = "wiki"
|
|
local result = link.new()
|
|
assert.is_not_nil(result:match("%[%[[^|]+%]%]"))
|
|
end)
|
|
end)
|