-- Workflow (f): promote a context-item line to a committed task. The daemon -- mints the task and rewrites the source line into a [[link]] to it. local h = require("e2e.helpers") describe("promote context item", function() local ctx before_each(function() ctx = h.start() end) after_each(function() h.stop(ctx) end) it("mints a task, links the source line, and surfaces it in next", function() local container = h.create_doc("Errands", "- [ ] call plumber") local buf = h.open(container.id) local lnum = h.find(buf, "call plumber") -- the context-item line, below frontmatter vim.api.nvim_win_set_cursor(0, { lnum, 0 }) local task = require("heph.task").promote_under_cursor({ attention = "orange" }) assert.is_truthy(task.node_id) -- The promoted task appears in the Tactical ranking. local found = false for _, t in ipairs(ctx.q:call("next", { limit = 10 })) do if t.node_id == task.node_id then found = true end end assert.is_true(found, "promoted task missing from next") -- The source line became a wiki-link to the task (persisted + in-buffer). assert.are.equal("- [[call plumber]]", ctx.q:call("node.get", { id = container.id }).body) local reloaded = vim.api.nvim_get_current_buf() assert.is_truthy(h.find(reloaded, "%- %[%[call plumber%]%]"), "rewritten link line missing from buffer") -- ...and the container backlinks the task. local linked = false for _, l in ipairs(ctx.q:call("links.backlinks", { id = task.node_id })) do if l.src_id == container.id and l.link_type == "wiki" then linked = true end end assert.is_true(linked, "expected a wiki backlink from the container to the task") end) end)