test(prompts-core): cover prompt loader scenarios

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-24 17:24:04 +09:00
parent ada4092ea1
commit 323e2e9212
8 changed files with 554 additions and 0 deletions
@@ -0,0 +1,90 @@
bun test v1.3.12 (700fc117)
packages/prompts-core/src/loader.test.ts:
S8 actual: {"body":"__red__","frontmatter":{},"resolvedPath":"__red__"}
16 | // when
17 | const actual = await loadPrompt({ source: fixturesSource, name: "demo", variant: "default" })
18 |
19 | // then
20 | console.info("S8 actual:", JSON.stringify(actual))
21 | expect(actual).toEqual({
^
error: expect(received).toEqual(expected)
{
- "body":
- "Hello {PLACEHOLDER}, this is a test.
- "
- ,
- "frontmatter": {
- "description": "test fixture",
- },
- "resolvedPath": "/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/__fixtures__/demo/default.md",
+ "body": "__red__",
+ "frontmatter": {},
+ "resolvedPath": "__red__",
}
- Expected - 8
+ Received + 3
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:21:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading an existing prompt #then returns body and frontmatter [0.52ms]
S9 actual: no throw
43 | }
44 | }
45 |
46 | // then
47 | console.info("S9 actual:", actual)
48 | expect(thrown).toBeInstanceOf(PromptNotFoundError)
^
error: expect(received).toBeInstanceOf(expected)
Expected constructor: [class PromptNotFoundError extends Error]
Received value: undefined
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:48:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading a missing prompt #then throws path-aware error [0.13ms]
S10 actual: __red__
61 | // when
62 | const actual = await loadPrompt(input)
63 |
64 | // then
65 | console.info("S10 actual:", actual.body)
66 | expect(actual.body).toBe("Hello Y, this is a test.\n")
^
error: expect(received).toBe(expected)
- "Hello Y, this is a test.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:66:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when runtime injection is provided #then replaces placeholder [0.08ms]
S11 actual: __red__
83 | // when
84 | const actual = await loadPrompt(input)
85 |
86 | // then
87 | console.info("S11 actual:", actual.body)
88 | expect(actual.body).toBe("HeLLo Y, this is a demo.\n")
^
error: expect(received).toBe(expected)
- "HeLLo Y, this is a demo.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:88:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when multiple injections are provided #then replaces all found values [0.14ms]
0 pass
4 fail
4 expect() calls
Ran 4 tests across 1 file. [74.00ms]
@@ -0,0 +1,90 @@
bun test v1.3.12 (700fc117)
packages/prompts-core/src/loader.test.ts:
S8 actual: {"body":"__red__","frontmatter":{},"resolvedPath":"__red__"}
16 | // when
17 | const actual = await loadPrompt({ source: fixturesSource, name: "demo", variant: "default" })
18 |
19 | // then
20 | console.info("S8 actual:", JSON.stringify(actual))
21 | expect(actual).toEqual({
^
error: expect(received).toEqual(expected)
{
- "body":
- "Hello {PLACEHOLDER}, this is a test.
- "
- ,
- "frontmatter": {
- "description": "test fixture",
- },
- "resolvedPath": "/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/__fixtures__/demo/default.md",
+ "body": "__red__",
+ "frontmatter": {},
+ "resolvedPath": "__red__",
}
- Expected - 8
+ Received + 3
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:21:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading an existing prompt #then returns body and frontmatter [0.52ms]
S9 actual: no throw
43 | }
44 | }
45 |
46 | // then
47 | console.info("S9 actual:", actual)
48 | expect(thrown).toBeInstanceOf(PromptNotFoundError)
^
error: expect(received).toBeInstanceOf(expected)
Expected constructor: [class PromptNotFoundError extends Error]
Received value: undefined
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:48:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading a missing prompt #then throws path-aware error [0.13ms]
S10 actual: __red__
61 | // when
62 | const actual = await loadPrompt(input)
63 |
64 | // then
65 | console.info("S10 actual:", actual.body)
66 | expect(actual.body).toBe("Hello Y, this is a test.\n")
^
error: expect(received).toBe(expected)
- "Hello Y, this is a test.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:66:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when runtime injection is provided #then replaces placeholder [0.08ms]
S11 actual: __red__
83 | // when
84 | const actual = await loadPrompt(input)
85 |
86 | // then
87 | console.info("S11 actual:", actual.body)
88 | expect(actual.body).toBe("HeLLo Y, this is a demo.\n")
^
error: expect(received).toBe(expected)
- "HeLLo Y, this is a demo.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:88:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when multiple injections are provided #then replaces all found values [0.14ms]
0 pass
4 fail
4 expect() calls
Ran 4 tests across 1 file. [74.00ms]
@@ -0,0 +1,90 @@
bun test v1.3.12 (700fc117)
packages/prompts-core/src/loader.test.ts:
S8 actual: {"body":"__red__","frontmatter":{},"resolvedPath":"__red__"}
16 | // when
17 | const actual = await loadPrompt({ source: fixturesSource, name: "demo", variant: "default" })
18 |
19 | // then
20 | console.info("S8 actual:", JSON.stringify(actual))
21 | expect(actual).toEqual({
^
error: expect(received).toEqual(expected)
{
- "body":
- "Hello {PLACEHOLDER}, this is a test.
- "
- ,
- "frontmatter": {
- "description": "test fixture",
- },
- "resolvedPath": "/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/__fixtures__/demo/default.md",
+ "body": "__red__",
+ "frontmatter": {},
+ "resolvedPath": "__red__",
}
- Expected - 8
+ Received + 3
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:21:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading an existing prompt #then returns body and frontmatter [0.52ms]
S9 actual: no throw
43 | }
44 | }
45 |
46 | // then
47 | console.info("S9 actual:", actual)
48 | expect(thrown).toBeInstanceOf(PromptNotFoundError)
^
error: expect(received).toBeInstanceOf(expected)
Expected constructor: [class PromptNotFoundError extends Error]
Received value: undefined
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:48:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading a missing prompt #then throws path-aware error [0.13ms]
S10 actual: __red__
61 | // when
62 | const actual = await loadPrompt(input)
63 |
64 | // then
65 | console.info("S10 actual:", actual.body)
66 | expect(actual.body).toBe("Hello Y, this is a test.\n")
^
error: expect(received).toBe(expected)
- "Hello Y, this is a test.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:66:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when runtime injection is provided #then replaces placeholder [0.08ms]
S11 actual: __red__
83 | // when
84 | const actual = await loadPrompt(input)
85 |
86 | // then
87 | console.info("S11 actual:", actual.body)
88 | expect(actual.body).toBe("HeLLo Y, this is a demo.\n")
^
error: expect(received).toBe(expected)
- "HeLLo Y, this is a demo.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:88:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when multiple injections are provided #then replaces all found values [0.14ms]
0 pass
4 fail
4 expect() calls
Ran 4 tests across 1 file. [74.00ms]
+90
View File
@@ -0,0 +1,90 @@
bun test v1.3.12 (700fc117)
packages/prompts-core/src/loader.test.ts:
S8 actual: {"body":"__red__","frontmatter":{},"resolvedPath":"__red__"}
16 | // when
17 | const actual = await loadPrompt({ source: fixturesSource, name: "demo", variant: "default" })
18 |
19 | // then
20 | console.info("S8 actual:", JSON.stringify(actual))
21 | expect(actual).toEqual({
^
error: expect(received).toEqual(expected)
{
- "body":
- "Hello {PLACEHOLDER}, this is a test.
- "
- ,
- "frontmatter": {
- "description": "test fixture",
- },
- "resolvedPath": "/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/__fixtures__/demo/default.md",
+ "body": "__red__",
+ "frontmatter": {},
+ "resolvedPath": "__red__",
}
- Expected - 8
+ Received + 3
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:21:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading an existing prompt #then returns body and frontmatter [0.52ms]
S9 actual: no throw
43 | }
44 | }
45 |
46 | // then
47 | console.info("S9 actual:", actual)
48 | expect(thrown).toBeInstanceOf(PromptNotFoundError)
^
error: expect(received).toBeInstanceOf(expected)
Expected constructor: [class PromptNotFoundError extends Error]
Received value: undefined
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:48:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading a missing prompt #then throws path-aware error [0.13ms]
S10 actual: __red__
61 | // when
62 | const actual = await loadPrompt(input)
63 |
64 | // then
65 | console.info("S10 actual:", actual.body)
66 | expect(actual.body).toBe("Hello Y, this is a test.\n")
^
error: expect(received).toBe(expected)
- "Hello Y, this is a test.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:66:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when runtime injection is provided #then replaces placeholder [0.08ms]
S11 actual: __red__
83 | // when
84 | const actual = await loadPrompt(input)
85 |
86 | // then
87 | console.info("S11 actual:", actual.body)
88 | expect(actual.body).toBe("HeLLo Y, this is a demo.\n")
^
error: expect(received).toBe(expected)
- "HeLLo Y, this is a demo.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:88:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when multiple injections are provided #then replaces all found values [0.14ms]
0 pass
4 fail
4 expect() calls
Ran 4 tests across 1 file. [74.00ms]
+90
View File
@@ -0,0 +1,90 @@
bun test v1.3.12 (700fc117)
packages/prompts-core/src/loader.test.ts:
S8 actual: {"body":"__red__","frontmatter":{},"resolvedPath":"__red__"}
16 | // when
17 | const actual = await loadPrompt({ source: fixturesSource, name: "demo", variant: "default" })
18 |
19 | // then
20 | console.info("S8 actual:", JSON.stringify(actual))
21 | expect(actual).toEqual({
^
error: expect(received).toEqual(expected)
{
- "body":
- "Hello {PLACEHOLDER}, this is a test.
- "
- ,
- "frontmatter": {
- "description": "test fixture",
- },
- "resolvedPath": "/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/__fixtures__/demo/default.md",
+ "body": "__red__",
+ "frontmatter": {},
+ "resolvedPath": "__red__",
}
- Expected - 8
+ Received + 3
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:21:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading an existing prompt #then returns body and frontmatter [0.52ms]
S9 actual: no throw
43 | }
44 | }
45 |
46 | // then
47 | console.info("S9 actual:", actual)
48 | expect(thrown).toBeInstanceOf(PromptNotFoundError)
^
error: expect(received).toBeInstanceOf(expected)
Expected constructor: [class PromptNotFoundError extends Error]
Received value: undefined
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:48:22)
(fail) loadPrompt > #given a markdown prompt fixture > #when loading a missing prompt #then throws path-aware error [0.13ms]
S10 actual: __red__
61 | // when
62 | const actual = await loadPrompt(input)
63 |
64 | // then
65 | console.info("S10 actual:", actual.body)
66 | expect(actual.body).toBe("Hello Y, this is a test.\n")
^
error: expect(received).toBe(expected)
- "Hello Y, this is a test.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:66:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when runtime injection is provided #then replaces placeholder [0.08ms]
S11 actual: __red__
83 | // when
84 | const actual = await loadPrompt(input)
85 |
86 | // then
87 | console.info("S11 actual:", actual.body)
88 | expect(actual.body).toBe("HeLLo Y, this is a demo.\n")
^
error: expect(received).toBe(expected)
- "HeLLo Y, this is a demo.
- "
+ "__red__"
- Expected - 2
+ Received + 1
at <anonymous> (/Users/yeongyu/local-workspaces/omo-wt/feat/prompts-core-foundation/packages/prompts-core/src/loader.test.ts:88:27)
(fail) loadPrompt > #given a markdown prompt fixture > #when multiple injections are provided #then replaces all found values [0.14ms]
0 pass
4 fail
4 expect() calls
Ran 4 tests across 1 file. [74.00ms]
@@ -0,0 +1,4 @@
---
description: test fixture
---
Hello {PLACEHOLDER}, this is a test.
+91
View File
@@ -0,0 +1,91 @@
import { describe, expect, test } from "bun:test"
import { dirname, join } from "node:path"
import { fileURLToPath } from "node:url"
import { loadPrompt } from "./loader"
import { PromptNotFoundError } from "./types"
const fixturesSource = join(dirname(fileURLToPath(import.meta.url)), "__fixtures__")
describe("loadPrompt", () => {
describe("#given a markdown prompt fixture", () => {
test("#when loading an existing prompt #then returns body and frontmatter", async () => {
// given
const expectedPath = join(fixturesSource, "demo", "default.md")
// when
const actual = await loadPrompt({ source: fixturesSource, name: "demo", variant: "default" })
// then
console.info("S8 actual:", JSON.stringify(actual))
expect(actual).toEqual({
body: "Hello {PLACEHOLDER}, this is a test.\n",
frontmatter: { description: "test fixture" },
resolvedPath: expectedPath,
})
})
test("#when loading a missing prompt #then throws path-aware error", async () => {
// given
const expectedPath = join(fixturesSource, "missing", "default.md")
// when
let actual = "no throw"
let thrown: unknown
try {
await loadPrompt({ source: fixturesSource, name: "missing", variant: "default" })
} catch (error) {
thrown = error
if (error instanceof Error) {
actual = error.message
} else {
throw error
}
}
// then
console.info("S9 actual:", actual)
expect(thrown).toBeInstanceOf(PromptNotFoundError)
expect(actual).toContain(expectedPath)
})
test("#when runtime injection is provided #then replaces placeholder", async () => {
// given
const input = {
source: fixturesSource,
name: "demo",
variant: "default",
inject: [{ placeholder: "{PLACEHOLDER}", resolver: () => "Y" }],
}
// when
const actual = await loadPrompt(input)
// then
console.info("S10 actual:", actual.body)
expect(actual.body).toBe("Hello Y, this is a test.\n")
})
test("#when multiple injections are provided #then replaces all found values", async () => {
// given
const input = {
source: fixturesSource,
name: "demo",
variant: "default",
inject: [
{ placeholder: "{PLACEHOLDER}", resolver: () => "Y" },
{ placeholder: "l", resolver: () => "L" },
{ placeholder: "test", resolver: () => "demo" },
{ placeholder: "{MISSING}", resolver: () => "ignored" },
],
}
// when
const actual = await loadPrompt(input)
// then
console.info("S11 actual:", actual.body)
expect(actual.body).toBe("HeLLo Y, this is a demo.\n")
})
})
})
+9
View File
@@ -0,0 +1,9 @@
import type { LoadedPrompt, LoadPromptInput } from "./types"
export async function loadPrompt(_input: LoadPromptInput): Promise<LoadedPrompt> {
return {
body: "__red__",
frontmatter: {},
resolvedPath: "__red__",
}
}