| import { promises, existsSync } from 'node:fs'; |
| import { isAbsolute, resolve, dirname, join, basename } from 'pathe'; |
|
|
| class NodeSnapshotEnvironment { |
| constructor(options = {}) { |
| this.options = options; |
| } |
| getVersion() { |
| return "1"; |
| } |
| getHeader() { |
| return `// Snapshot v${this.getVersion()}`; |
| } |
| async resolveRawPath(testPath, rawPath) { |
| return isAbsolute(rawPath) ? rawPath : resolve(dirname(testPath), rawPath); |
| } |
| async resolvePath(filepath) { |
| return join( |
| join( |
| dirname(filepath), |
| this.options.snapshotsDirName ?? "__snapshots__" |
| ), |
| `${basename(filepath)}.snap` |
| ); |
| } |
| async prepareDirectory(dirPath) { |
| await promises.mkdir(dirPath, { recursive: true }); |
| } |
| async saveSnapshotFile(filepath, snapshot) { |
| await promises.mkdir(dirname(filepath), { recursive: true }); |
| await promises.writeFile(filepath, snapshot, "utf-8"); |
| } |
| async readSnapshotFile(filepath) { |
| if (!existsSync(filepath)) |
| return null; |
| return promises.readFile(filepath, "utf-8"); |
| } |
| async removeSnapshotFile(filepath) { |
| if (existsSync(filepath)) |
| await promises.unlink(filepath); |
| } |
| } |
|
|
| export { NodeSnapshotEnvironment }; |
|
|