Skip to content

Commit cfc6258

Browse files
committed
test(sfcc): isolate filesystem-based integration fixtures in tmp directories
move valid-require-path and site-template fixture setup from repo paths to OS tmp folders add shared temp directory helpers and consistent cleanup with recursive removal keep assertions focused on cartridge existence and site template cartridge order behavior
1 parent dd12bce commit cfc6258

2 files changed

Lines changed: 58 additions & 50 deletions

File tree

tests/sfcc-valid-require-path.test.ts

Lines changed: 51 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Linter } from "eslint"
22
import fs from "node:fs"
3+
import os from "node:os"
34
import path from "node:path"
45
import { expect, test } from "vite-plus/test"
56

@@ -10,6 +11,10 @@ function lint(code: string, filename = "cartridges/app_sfra/cartridge/controller
1011
return linter.verify(code, recommended, { filename })
1112
}
1213

14+
function createTempTestRoot(): string {
15+
return fs.mkdtempSync(path.join(os.tmpdir(), "sfcc-test-root-"))
16+
}
17+
1318
test("allows dw requires", () => {
1419
const messages = lint(`
1520
const OrderMgr = require("dw/order/OrderMgr")
@@ -77,15 +82,17 @@ test("ignores dynamic requires", () => {
7782
})
7883

7984
test("supports checkCartridgeExists option", () => {
80-
const testSuffix = `${Date.now()}_${Math.floor(Math.random() * 1_000_000)}`
81-
const existingCartridgeName = `app_storefront_${testSuffix}`
82-
const ownCartridgeName = `app_sfra_${testSuffix}`
83-
const cartridgesDir = path.join(process.cwd(), "cartridges")
84-
const existingCartridge = path.join(cartridgesDir, existingCartridgeName)
85-
const ownCartridge = path.join(cartridgesDir, ownCartridgeName)
85+
const tempRoot = createTempTestRoot()
86+
const tempCartridgesDir = path.join(tempRoot, "cartridges")
87+
const ownCartridgeName = "app_sfra"
88+
const existingCartridgeName = "app_storefront"
89+
const existingCartridge = path.join(tempCartridgesDir, existingCartridgeName)
90+
const ownCartridge = path.join(tempCartridgesDir, ownCartridgeName)
91+
const filename = "cartridges/app_sfra/cartridge/controllers/Home.js"
8692

8793
fs.mkdirSync(path.join(existingCartridge, "cartridge", "scripts"), { recursive: true })
8894
fs.mkdirSync(path.join(ownCartridge, "cartridge", "scripts"), { recursive: true })
95+
fs.mkdirSync(path.dirname(filename), { recursive: true })
8996
fs.writeFileSync(
9097
path.join(existingCartridge, "cartridge", "scripts", "ok.js"),
9198
"module.exports = true",
@@ -95,51 +102,51 @@ test("supports checkCartridgeExists option", () => {
95102
"module.exports = true",
96103
)
97104

98-
const linter = new Linter()
99-
const config = createRecommendedConfig({
100-
cartridgesDir: "cartridges",
101-
sfcc: {
102-
checkCartridgeExists: true,
103-
},
104-
})
105-
106-
const messages = linter.verify(
107-
`
108-
const ok = require("${existingCartridgeName}/cartridge/scripts/ok")
109-
const okStar = require("*/cartridge/scripts/ok")
110-
const okTilde = require("~/cartridge/scripts/local")
111-
const bad = require("missing_cartridge/cartridge/scripts/bad")
112-
const badStar = require("*/cartridge/scripts/does-not-exist")
113-
const badTilde = require("~/cartridge/scripts/does-not-exist")
114-
module.exports = { ok, okStar, okTilde, bad, badStar, badTilde }
115-
`,
116-
config,
117-
{ filename: `cartridges/${ownCartridgeName}/cartridge/controllers/Home.js` },
118-
)
105+
try {
106+
const linter = new Linter()
107+
const config = createRecommendedConfig({
108+
sfcc: {
109+
checkCartridgeExists: true,
110+
cartridgesDir: tempCartridgesDir,
111+
},
112+
})
119113

120-
fs.rmSync(existingCartridge, { recursive: true, force: true })
121-
fs.rmSync(ownCartridge, { recursive: true, force: true })
114+
const messages = linter.verify(
115+
`
116+
const ok = require("${existingCartridgeName}/cartridge/scripts/ok")
117+
const okStar = require("*/cartridge/scripts/ok")
118+
const bad = require("missing_cartridge/cartridge/scripts/bad")
119+
const badStar = require("*/cartridge/scripts/does-not-exist")
120+
module.exports = { ok, okStar, bad, badStar }
121+
`,
122+
config,
123+
{ filename },
124+
)
122125

123-
const hits = messages.filter((m) => m.ruleId === "sfcc/valid-require-path")
124-
expect(hits).toHaveLength(3)
125-
expect(hits[0]?.message.includes("missing_cartridge")).toBe(true)
126-
expect(hits.some((m) => m.message.includes("*/cartridge/scripts/does-not-exist"))).toBe(true)
127-
expect(hits.some((m) => m.message.includes("~/cartridge/scripts/does-not-exist"))).toBe(true)
126+
const hits = messages.filter((m) => m.ruleId === "sfcc/valid-require-path")
127+
expect(hits).toHaveLength(2)
128+
expect(hits[0]?.message.includes("missing_cartridge")).toBe(true)
129+
expect(hits.some((m) => m.message.includes("*/cartridge/scripts/does-not-exist"))).toBe(true)
130+
} finally {
131+
fs.rmSync(tempRoot, { recursive: true, force: true })
132+
}
128133
})
129134

130135
test("supports cartridge order from site template", () => {
131-
const testSuffix = `${Date.now()}_${Math.floor(Math.random() * 1_000_000)}`
132-
const cartridgeName = `app_storefront_${testSuffix}`
133-
const ownCartridgeName = `app_sfra_${testSuffix}`
134-
const cartridgesDir = path.join(process.cwd(), "cartridges")
135-
const targetCartridge = path.join(cartridgesDir, cartridgeName)
136-
const ownCartridge = path.join(cartridgesDir, ownCartridgeName)
137-
const siteTemplatePath = path.join(process.cwd(), `site_template_${testSuffix}`)
136+
const tempRoot = createTempTestRoot()
137+
const tempCartridgesDir = path.join(tempRoot, "cartridges")
138+
const cartridgeName = "app_storefront"
139+
const ownCartridgeName = "app_sfra"
140+
const targetCartridge = path.join(tempCartridgesDir, cartridgeName)
141+
const ownCartridge = path.join(tempCartridgesDir, ownCartridgeName)
142+
const siteTemplatePath = path.join(tempRoot, "site_template")
138143
const site = "example"
139144
const siteTemplateXmlPath = path.join(siteTemplatePath, "sites", site, "site.xml")
145+
const filename = "cartridges/app_sfra/cartridge/controllers/Home.js"
140146

141147
fs.mkdirSync(path.join(targetCartridge, "cartridge", "scripts"), { recursive: true })
142148
fs.mkdirSync(path.join(ownCartridge, "cartridge", "scripts"), { recursive: true })
149+
fs.mkdirSync(path.dirname(filename), { recursive: true })
143150
fs.mkdirSync(path.dirname(siteTemplateXmlPath), { recursive: true })
144151
fs.writeFileSync(
145152
path.join(targetCartridge, "cartridge", "scripts", "ok.js"),
@@ -153,9 +160,9 @@ test("supports cartridge order from site template", () => {
153160

154161
const linter = new Linter()
155162
const config = createRecommendedConfig({
156-
cartridgesDir: "cartridges",
157163
sfcc: {
158164
checkCartridgeExists: true,
165+
cartridgesDir: tempCartridgesDir,
159166
siteTemplatePath,
160167
site,
161168
},
@@ -167,14 +174,12 @@ test("supports cartridge order from site template", () => {
167174
module.exports = { okStar }
168175
`,
169176
config,
170-
{ filename: `cartridges/${ownCartridgeName}/cartridge/controllers/Home.js` },
177+
{ filename },
171178
)
172179

173180
expect(messages.some((m) => m.ruleId === "sfcc/valid-require-path")).toBe(false)
174181
} finally {
175-
fs.rmSync(targetCartridge, { recursive: true, force: true })
176-
fs.rmSync(ownCartridge, { recursive: true, force: true })
177-
fs.rmSync(siteTemplatePath, { recursive: true, force: true })
182+
fs.rmSync(tempRoot, { recursive: true, force: true })
178183
}
179184
})
180185

tests/site-template-cartridge-path.test.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import fs from "node:fs"
2+
import os from "node:os"
23
import path from "node:path"
34
import { expect, test } from "vite-plus/test"
45

56
import { getSiteTemplateCartridgePath } from "../src/plugins/_utils/site-template-cartridge-path.js"
67

8+
function createTempTemplatePath(): string {
9+
return fs.mkdtempSync(path.join(os.tmpdir(), "sfcc-site-template-"))
10+
}
11+
712
test("returns empty when siteTemplatePath is missing", () => {
813
const result = getSiteTemplateCartridgePath(undefined, "example", process.cwd())
914
expect(result).toEqual([])
@@ -15,8 +20,7 @@ test("returns empty when site is missing", () => {
1520
})
1621

1722
test("reads custom-cartridges from conventional site template path", () => {
18-
const testSuffix = `${Date.now()}_${Math.floor(Math.random() * 1_000_000)}`
19-
const templatePath = path.join(process.cwd(), `site_template_${testSuffix}`)
23+
const templatePath = createTempTemplatePath()
2024
const site = "example"
2125
const siteXmlPath = path.join(templatePath, "sites", site, "site.xml")
2226

@@ -36,8 +40,7 @@ test("reads custom-cartridges from conventional site template path", () => {
3640
})
3741

3842
test("returns empty when site.xml has no custom-cartridges", () => {
39-
const testSuffix = `${Date.now()}_${Math.floor(Math.random() * 1_000_000)}`
40-
const templatePath = path.join(process.cwd(), `site_template_${testSuffix}`)
43+
const templatePath = createTempTemplatePath()
4144
const site = "example"
4245
const siteXmlPath = path.join(templatePath, "sites", site, "site.xml")
4346

0 commit comments

Comments
 (0)