@real1ty-obsidian-plugins/utils 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/dist/async-utils.d.ts +0 -69
- package/dist/async-utils.d.ts.map +0 -1
- package/dist/async-utils.js +0 -108
- package/dist/batch-operations.d.ts +0 -11
- package/dist/batch-operations.d.ts.map +0 -1
- package/dist/batch-operations.js +0 -31
- package/dist/child-reference-utils.d.ts +0 -9
- package/dist/child-reference-utils.d.ts.map +0 -1
- package/dist/child-reference-utils.js +0 -57
- package/dist/date-recurrence-utils.d.ts +0 -30
- package/dist/date-recurrence-utils.d.ts.map +0 -1
- package/dist/date-recurrence-utils.js +0 -159
- package/dist/date-utils.d.ts +0 -21
- package/dist/date-utils.d.ts.map +0 -1
- package/dist/date-utils.js +0 -105
- package/dist/evaluator-base.d.ts +0 -52
- package/dist/evaluator-base.d.ts.map +0 -1
- package/dist/evaluator-base.js +0 -84
- package/dist/file-operations.d.ts +0 -31
- package/dist/file-operations.d.ts.map +0 -1
- package/dist/file-operations.js +0 -160
- package/dist/file-utils.d.ts +0 -6
- package/dist/file-utils.d.ts.map +0 -1
- package/dist/file-utils.js +0 -25
- package/dist/generate.d.ts +0 -7
- package/dist/generate.d.ts.map +0 -1
- package/dist/generate.js +0 -13
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -14
- package/dist/link-parser.d.ts +0 -9
- package/dist/link-parser.d.ts.map +0 -1
- package/dist/link-parser.js +0 -19
- package/dist/settings-store.d.ts +0 -19
- package/dist/settings-store.d.ts.map +0 -1
- package/dist/settings-store.js +0 -79
- package/dist/string-utils.d.ts +0 -5
- package/dist/string-utils.d.ts.map +0 -1
- package/dist/string-utils.js +0 -25
- package/dist/templater-utils.d.ts +0 -4
- package/dist/templater-utils.d.ts.map +0 -1
- package/dist/templater-utils.js +0 -51
- package/dist/testing/index.d.ts +0 -5
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -6
- package/dist/testing/mocks/obsidian.d.ts +0 -149
- package/dist/testing/mocks/obsidian.d.ts.map +0 -1
- package/dist/testing/mocks/obsidian.js +0 -220
- package/dist/testing/mocks/utils.d.ts +0 -14
- package/dist/testing/mocks/utils.d.ts.map +0 -1
- package/dist/testing/mocks/utils.js +0 -85
- package/dist/testing/setup.d.ts +0 -2
- package/dist/testing/setup.d.ts.map +0 -1
- package/dist/testing/setup.js +0 -18
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { vi } from "vitest";
|
|
2
|
-
// Base Plugin class mock
|
|
3
|
-
export class Plugin {
|
|
4
|
-
constructor(app, manifest) {
|
|
5
|
-
// Core plugin methods
|
|
6
|
-
this.addSettingTab = vi.fn();
|
|
7
|
-
this.registerEvent = vi.fn();
|
|
8
|
-
this.loadData = vi.fn().mockResolvedValue({});
|
|
9
|
-
this.saveData = vi.fn().mockResolvedValue(undefined);
|
|
10
|
-
this.onload = vi.fn();
|
|
11
|
-
this.onunload = vi.fn();
|
|
12
|
-
// UI methods
|
|
13
|
-
this.addRibbonIcon = vi.fn();
|
|
14
|
-
this.addStatusBarItem = vi.fn();
|
|
15
|
-
this.addCommand = vi.fn();
|
|
16
|
-
this.removeCommand = vi.fn();
|
|
17
|
-
// Event methods
|
|
18
|
-
this.registerDomEvent = vi.fn();
|
|
19
|
-
this.registerCodeMirror = vi.fn();
|
|
20
|
-
this.registerEditorExtension = vi.fn();
|
|
21
|
-
this.registerMarkdownPostProcessor = vi.fn();
|
|
22
|
-
this.registerMarkdownCodeBlockProcessor = vi.fn();
|
|
23
|
-
this.registerObsidianProtocolHandler = vi.fn();
|
|
24
|
-
this.registerEditorSuggest = vi.fn();
|
|
25
|
-
this.registerHoverLinkSource = vi.fn();
|
|
26
|
-
// Interval methods
|
|
27
|
-
this.registerInterval = vi.fn();
|
|
28
|
-
// View and extension methods
|
|
29
|
-
this.registerView = vi.fn();
|
|
30
|
-
this.registerExtensions = vi.fn();
|
|
31
|
-
// Lifecycle methods
|
|
32
|
-
this.onUserEnable = vi.fn();
|
|
33
|
-
this.load = vi.fn();
|
|
34
|
-
this.unload = vi.fn();
|
|
35
|
-
// Other methods
|
|
36
|
-
this.addChild = vi.fn();
|
|
37
|
-
this.removeChild = vi.fn();
|
|
38
|
-
this.register = vi.fn();
|
|
39
|
-
this.app = app;
|
|
40
|
-
this.manifest = manifest;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// PluginSettingTab mock
|
|
44
|
-
export class PluginSettingTab {
|
|
45
|
-
constructor(app, plugin) {
|
|
46
|
-
this.display = vi.fn();
|
|
47
|
-
this.app = app;
|
|
48
|
-
this.plugin = plugin;
|
|
49
|
-
this.containerEl = document.createElement("div");
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// ItemView mock
|
|
53
|
-
export class ItemView {
|
|
54
|
-
constructor(leaf) {
|
|
55
|
-
this.getState = vi.fn().mockReturnValue({});
|
|
56
|
-
this.setState = vi.fn().mockResolvedValue(undefined);
|
|
57
|
-
this.leaf = leaf;
|
|
58
|
-
this.app = leaf === null || leaf === void 0 ? void 0 : leaf.app;
|
|
59
|
-
this.containerEl = document.createElement("div");
|
|
60
|
-
}
|
|
61
|
-
// Don't override onOpen/onClose - let subclasses implement them
|
|
62
|
-
// These methods are implemented by MountableView mixin
|
|
63
|
-
// Don't provide default implementations for these methods
|
|
64
|
-
// Let subclasses implement them
|
|
65
|
-
getViewType() {
|
|
66
|
-
return "mock-view";
|
|
67
|
-
}
|
|
68
|
-
getDisplayText() {
|
|
69
|
-
return "Mock View";
|
|
70
|
-
}
|
|
71
|
-
getIcon() {
|
|
72
|
-
return "mock-icon";
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Setting component mock
|
|
76
|
-
export class Setting {
|
|
77
|
-
constructor(_containerEl) {
|
|
78
|
-
this.setName = vi.fn().mockReturnThis();
|
|
79
|
-
this.setDesc = vi.fn().mockReturnThis();
|
|
80
|
-
this.addText = vi.fn().mockReturnThis();
|
|
81
|
-
this.addTextArea = vi.fn().mockReturnThis();
|
|
82
|
-
this.settingEl = document.createElement("div");
|
|
83
|
-
this.nameEl = document.createElement("div");
|
|
84
|
-
this.descEl = document.createElement("div");
|
|
85
|
-
this.controlEl = document.createElement("div");
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// TFolder mock
|
|
89
|
-
export class TFolder {
|
|
90
|
-
constructor(path) {
|
|
91
|
-
this.path = path;
|
|
92
|
-
this.name = path.split("/").pop() || "";
|
|
93
|
-
this.children = [];
|
|
94
|
-
this.vault = {};
|
|
95
|
-
this.parent = null;
|
|
96
|
-
}
|
|
97
|
-
isRoot() {
|
|
98
|
-
return this.path === "" || this.path === "/";
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// TFile mock with full interface
|
|
102
|
-
export class TFile {
|
|
103
|
-
constructor(path, parentPath) {
|
|
104
|
-
this.path = path;
|
|
105
|
-
this.name = path.split("/").pop() || "";
|
|
106
|
-
this.basename = this.name.replace(/\.[^/.]+$/, ""); // Remove extension
|
|
107
|
-
this.extension = path.split(".").pop() || "md";
|
|
108
|
-
this.stat = {};
|
|
109
|
-
this.vault = {};
|
|
110
|
-
// Set parent based on path or explicit parentPath
|
|
111
|
-
if (parentPath !== undefined) {
|
|
112
|
-
this.parent = parentPath ? new TFolder(parentPath) : null;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
// Derive parent from path
|
|
116
|
-
const lastSlash = path.lastIndexOf("/");
|
|
117
|
-
if (lastSlash > 0) {
|
|
118
|
-
this.parent = new TFolder(path.substring(0, lastSlash));
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.parent = null;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Modal mock
|
|
127
|
-
export class Modal {
|
|
128
|
-
constructor(app) {
|
|
129
|
-
this.open = vi.fn();
|
|
130
|
-
this.close = vi.fn();
|
|
131
|
-
this.onOpen = vi.fn();
|
|
132
|
-
this.onClose = vi.fn();
|
|
133
|
-
this.app = app;
|
|
134
|
-
this.containerEl = document.createElement("div");
|
|
135
|
-
this.titleEl = document.createElement("div");
|
|
136
|
-
this.contentEl = document.createElement("div");
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Notice mock
|
|
140
|
-
export class Notice {
|
|
141
|
-
constructor(message) {
|
|
142
|
-
console.log(`Notice: ${message}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
// MarkdownRenderer mock
|
|
146
|
-
export const MarkdownRenderer = {
|
|
147
|
-
render: vi.fn().mockResolvedValue(undefined),
|
|
148
|
-
};
|
|
149
|
-
// Debounce function mock
|
|
150
|
-
export function debounce(func, wait, immediate) {
|
|
151
|
-
let timeout = null;
|
|
152
|
-
return ((...args) => {
|
|
153
|
-
const later = () => {
|
|
154
|
-
timeout = null;
|
|
155
|
-
if (!immediate)
|
|
156
|
-
func(...args);
|
|
157
|
-
};
|
|
158
|
-
const callNow = immediate && !timeout;
|
|
159
|
-
if (timeout !== null) {
|
|
160
|
-
clearTimeout(timeout);
|
|
161
|
-
}
|
|
162
|
-
timeout = setTimeout(later, wait);
|
|
163
|
-
if (callNow)
|
|
164
|
-
func(...args);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
// App mock
|
|
168
|
-
export const App = vi.fn();
|
|
169
|
-
// Helper function to create a fully mocked app
|
|
170
|
-
export function createMockApp() {
|
|
171
|
-
return {
|
|
172
|
-
fileManager: {
|
|
173
|
-
processFrontMatter: vi.fn(),
|
|
174
|
-
},
|
|
175
|
-
metadataCache: {
|
|
176
|
-
getFileCache: vi.fn(),
|
|
177
|
-
},
|
|
178
|
-
vault: {
|
|
179
|
-
getAbstractFileByPath: vi.fn(),
|
|
180
|
-
on: vi.fn(),
|
|
181
|
-
read: vi.fn(),
|
|
182
|
-
modify: vi.fn(),
|
|
183
|
-
create: vi.fn(),
|
|
184
|
-
delete: vi.fn(),
|
|
185
|
-
rename: vi.fn(),
|
|
186
|
-
getFiles: vi.fn().mockReturnValue([]),
|
|
187
|
-
getMarkdownFiles: vi.fn().mockReturnValue([]),
|
|
188
|
-
getFolderByPath: vi.fn(),
|
|
189
|
-
},
|
|
190
|
-
workspace: {
|
|
191
|
-
getActiveFile: vi.fn(),
|
|
192
|
-
on: vi.fn(),
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
// Helper to create mock TFile instances
|
|
197
|
-
export function createMockFile(path, options) {
|
|
198
|
-
const file = new TFile(path, options === null || options === void 0 ? void 0 : options.parentPath);
|
|
199
|
-
if (options === null || options === void 0 ? void 0 : options.basename) {
|
|
200
|
-
file.basename = options.basename;
|
|
201
|
-
}
|
|
202
|
-
if (options === null || options === void 0 ? void 0 : options.extension) {
|
|
203
|
-
file.extension = options.extension;
|
|
204
|
-
}
|
|
205
|
-
return file;
|
|
206
|
-
}
|
|
207
|
-
// Helper to create mock file cache
|
|
208
|
-
export function createMockFileCache(frontmatter) {
|
|
209
|
-
return {
|
|
210
|
-
frontmatter: frontmatter || {},
|
|
211
|
-
frontmatterPosition: frontmatter ? { start: { line: 0 }, end: { line: 3 } } : null,
|
|
212
|
-
sections: [],
|
|
213
|
-
headings: [],
|
|
214
|
-
links: [],
|
|
215
|
-
embeds: [],
|
|
216
|
-
tags: [],
|
|
217
|
-
listItems: [],
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzaWRpYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9tb2Nrcy9vYnNpZGlhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTVCLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8sTUFBTTtJQUtsQixZQUFZLEdBQVEsRUFBRSxRQUFhO1FBS25DLHNCQUFzQjtRQUN0QixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLGFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsV0FBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRW5CLGFBQWE7UUFDYixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0IsZUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUV4QixnQkFBZ0I7UUFDaEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3Qiw0QkFBdUIsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbEMsa0NBQTZCLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxD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LElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsU0FBUyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNiLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFdBQWlDO0lBQ3BFLE9BQU87UUFDTixXQUFXLEVBQUUsV0FBVyxJQUFJLEVBQUU7UUFDOUIsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUNsRixRQUFRLEVBQUUsRUFBRTtRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLEVBQUU7S0FDYixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZpIH0gZnJvbSBcInZpdGVzdFwiO1xuXG4vLyBCYXNlIFBsdWdpbiBjbGFzcyBtb2NrXG5leHBvcnQgY2xhc3MgUGx1Z2luIHtcblx0YXBwOiBhbnk7XG5cdG1hbmlmZXN0OiBhbnk7XG5cdHNldHRpbmdzOiBhbnk7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBhbnksIG1hbmlmZXN0OiBhbnkpIHtcblx0XHR0aGlzLmFwcCA9IGFwcDtcblx0XHR0aGlzLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG5cdH1cblxuXHQvLyBDb3JlIHBsdWdpbiBtZXRob2RzXG5cdGFkZFNldHRpbmdUYWIgPSB2aS5mbigpO1xuXHRyZWdpc3RlckV2ZW50ID0gdmkuZm4oKTtcblx0bG9hZERhdGEgPSB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHt9KTtcblx0c2F2ZURhdGEgPSB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCk7XG5cdG9ubG9hZCA9IHZpLmZuKCk7XG5cdG9udW5sb2FkID0gdmkuZm4oKTtcblxuXHQvLyBVSSBtZXRob2RzXG5cdGFkZFJpYmJvbkljb24gPSB2aS5mbigpO1xuXHRhZGRTdGF0dXNCYXJJdGVtID0gdmkuZm4oKTtcblx0YWRkQ29tbWFuZCA9IHZpLmZuKCk7XG5cdHJlbW92ZUNvbW1hbmQgPSB2aS5mbigpO1xuXG5cdC8vIEV2ZW50IG1ldGhvZHNcblx0cmVnaXN0ZXJEb21FdmVudCA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyQ29kZU1pcnJvciA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uID0gdmkuZm4oKTtcblx0cmVnaXN0ZXJNYXJrZG93blBvc3RQcm9jZXNzb3IgPSB2aS5mbigpO1xuXHRyZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yID0gdmkuZm4oKTtcblx0cmVnaXN0ZXJPYnNpZGlhblByb3RvY29sSGFuZGxlciA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyRWRpdG9yU3VnZ2VzdCA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVySG92ZXJMaW5rU291cmNlID0gdmkuZm4oKTtcblxuXHQvLyBJbnRlcnZhbCBtZXRob2RzXG5cdHJlZ2lzdGVySW50ZXJ2YWwgPSB2aS5mbigpO1xuXG5cdC8vIFZpZXcgYW5kIGV4dGVuc2lvbiBtZXRob2RzXG5cdHJlZ2lzdGVyVmlldyA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyRXh0ZW5zaW9ucyA9IHZpLmZuKCk7XG5cblx0Ly8gTGlmZWN5Y2xlIG1ldGhvZHNcblx0b25Vc2VyRW5hYmxlID0gdmkuZm4oKTtcblx0bG9hZCA9IHZpLmZuKCk7XG5cdHVubG9hZCA9IHZpLmZuKCk7XG5cblx0Ly8gT3RoZXIgbWV0aG9kc1xuXHRhZGRDaGlsZCA9IHZpLmZuKCk7XG5cdHJlbW92ZUNoaWxkID0gdmkuZm4oKTtcblx0cmVnaXN0ZXIgPSB2aS5mbigpO1xufVxuXG4vLyBQbHVnaW5TZXR0aW5nVGFiIG1vY2tcbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0YXBwOiBhbnk7XG5cdHBsdWdpbjogYW55O1xuXHRjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBhbnksIHBsdWdpbjogYW55KSB7XG5cdFx0dGhpcy5hcHAgPSBhcHA7XG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XG5cdFx0dGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdH1cblxuXHRkaXNwbGF5ID0gdmkuZm4oKTtcbn1cblxuLy8gSXRlbVZpZXcgbW9ja1xuZXhwb3J0IGNsYXNzIEl0ZW1WaWV3IHtcblx0YXBwOiBhbnk7XG5cdGxlYWY6IGFueTtcblx0Y29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKGxlYWY6IGFueSkge1xuXHRcdHRoaXMubGVhZiA9IGxlYWY7XG5cdFx0dGhpcy5hcHAgPSBsZWFmPy5hcHA7XG5cdFx0dGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdH1cblxuXHQvLyBEb24ndCBvdmVycmlkZSBvbk9wZW4vb25DbG9zZSAtIGxldCBzdWJjbGFzc2VzIGltcGxlbWVudCB0aGVtXG5cdC8vIFRoZXNlIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IE1vdW50YWJsZVZpZXcgbWl4aW5cblxuXHQvLyBEb24ndCBwcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGVzZSBtZXRob2RzXG5cdC8vIExldCBzdWJjbGFzc2VzIGltcGxlbWVudCB0aGVtXG5cdGdldFZpZXdUeXBlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIFwibW9jay12aWV3XCI7XG5cdH1cblxuXHRnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcIk1vY2sgVmlld1wiO1xuXHR9XG5cblx0Z2V0SWNvbigpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcIm1vY2staWNvblwiO1xuXHR9XG5cblx0Z2V0U3RhdGUgPSB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7fSk7XG5cdHNldFN0YXRlID0gdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh1bmRlZmluZWQpO1xufVxuXG4vLyBTZXR0aW5nIGNvbXBvbmVudCBtb2NrXG5leHBvcnQgY2xhc3MgU2V0dGluZyB7XG5cdHNldHRpbmdFbDogSFRNTEVsZW1lbnQ7XG5cdG5hbWVFbDogSFRNTEVsZW1lbnQ7XG5cdGRlc2NFbDogSFRNTEVsZW1lbnQ7XG5cdGNvbnRyb2xFbDogSFRNTEVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoX2NvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuXHRcdHRoaXMuc2V0dGluZ0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0XHR0aGlzLm5hbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdFx0dGhpcy5kZXNjRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRcdHRoaXMuY29udHJvbEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0fVxuXG5cdHNldE5hbWUgPSB2aS5mbigpLm1vY2tSZXR1cm5UaGlzKCk7XG5cdHNldERlc2MgPSB2aS5mbigpLm1vY2tSZXR1cm5UaGlzKCk7XG5cdGFkZFRleHQgPSB2aS5mbigpLm1vY2tSZXR1cm5UaGlzKCk7XG5cdGFkZFRleHRBcmVhID0gdmkuZm4oKS5tb2NrUmV0dXJuVGhpcygpO1xufVxuXG4vLyBURm9sZGVyIG1vY2tcbmV4cG9ydCBjbGFzcyBURm9sZGVyIHtcblx0cGF0aDogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGNoaWxkcmVuOiBhbnlbXTtcblx0dmF1bHQ6IGFueTtcblx0cGFyZW50OiBURm9sZGVyIHwgbnVsbDtcblxuXHRjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcpIHtcblx0XHR0aGlzLnBhdGggPSBwYXRoO1xuXHRcdHRoaXMubmFtZSA9IHBhdGguc3BsaXQoXCIvXCIpLnBvcCgpIHx8IFwiXCI7XG5cdFx0dGhpcy5jaGlsZHJlbiA9IFtdO1xuXHRcdHRoaXMudmF1bHQgPSB7fTtcblx0XHR0aGlzLnBhcmVudCA9IG51bGw7XG5cdH1cblxuXHRpc1Jvb3QoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucGF0aCA9PT0gXCJcIiB8fCB0aGlzLnBhdGggPT09IFwiL1wiO1xuXHR9XG59XG5cbi8vIFRGaWxlIG1vY2sgd2l0aCBmdWxsIGludGVyZmFjZVxuZXhwb3J0IGNsYXNzIFRGaWxlIHtcblx0cGF0aDogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGJhc2VuYW1lOiBzdHJpbmc7XG5cdGV4dGVuc2lvbjogc3RyaW5nO1xuXHRzdGF0OiBhbnk7XG5cdHZhdWx0OiBhbnk7XG5cdHBhcmVudDogVEZvbGRlciB8IG51bGw7XG5cblx0Y29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBwYXJlbnRQYXRoPzogc3RyaW5nKSB7XG5cdFx0dGhpcy5wYXRoID0gcGF0aDtcblx0XHR0aGlzLm5hbWUgPSBwYXRoLnNwbGl0KFwiL1wiKS5wb3AoKSB8fCBcIlwiO1xuXHRcdHRoaXMuYmFzZW5hbWUgPSB0aGlzLm5hbWUucmVwbGFjZSgvXFwuW14vLl0rJC8sIFwiXCIpOyAvLyBSZW1vdmUgZXh0ZW5zaW9uXG5cdFx0dGhpcy5leHRlbnNpb24gPSBwYXRoLnNwbGl0KFwiLlwiKS5wb3AoKSB8fCBcIm1kXCI7XG5cdFx0dGhpcy5zdGF0ID0ge307XG5cdFx0dGhpcy52YXVsdCA9IHt9O1xuXG5cdFx0Ly8gU2V0IHBhcmVudCBiYXNlZCBvbiBwYXRoIG9yIGV4cGxpY2l0IHBhcmVudFBhdGhcblx0XHRpZiAocGFyZW50UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhcmVudCA9IHBhcmVudFBhdGggPyBuZXcgVEZvbGRlcihwYXJlbnRQYXRoKSA6IG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIERlcml2ZSBwYXJlbnQgZnJvbSBwYXRoXG5cdFx0XHRjb25zdCBsYXN0U2xhc2ggPSBwYXRoLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0XHRcdGlmIChsYXN0U2xhc2ggPiAwKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50ID0gbmV3IFRGb2xkZXIocGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnBhcmVudCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vIE1vZGFsIG1vY2tcbmV4cG9ydCBjbGFzcyBNb2RhbCB7XG5cdGFwcDogYW55O1xuXHRjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cdHRpdGxlRWw6IEhUTUxFbGVtZW50O1xuXHRjb250ZW50RWw6IEhUTUxFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogYW55KSB7XG5cdFx0dGhpcy5hcHAgPSBhcHA7XG5cdFx0dGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdFx0dGhpcy50aXRsZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0XHR0aGlzLmNvbnRlbnRFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdH1cblxuXHRvcGVuID0gdmkuZm4oKTtcblx0Y2xvc2UgPSB2aS5mbigpO1xuXHRvbk9wZW4gPSB2aS5mbigpO1xuXHRvbkNsb3NlID0gdmkuZm4oKTtcbn1cblxuLy8gTm90aWNlIG1vY2tcbmV4cG9ydCBjbGFzcyBOb3RpY2Uge1xuXHRjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0XHRjb25zb2xlLmxvZyhgTm90aWNlOiAke21lc3NhZ2V9YCk7XG5cdH1cbn1cblxuLy8gTWFya2Rvd25SZW5kZXJlciBtb2NrXG5leHBvcnQgY29uc3QgTWFya2Rvd25SZW5kZXJlciA9IHtcblx0cmVuZGVyOiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCksXG59O1xuXG4vLyBEZWJvdW5jZSBmdW5jdGlvbiBtb2NrXG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2U8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55Pihcblx0ZnVuYzogVCxcblx0d2FpdDogbnVtYmVyLFxuXHRpbW1lZGlhdGU/OiBib29sZWFuXG4pOiBUIHtcblx0bGV0IHRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cblx0cmV0dXJuICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuXHRcdGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuXHRcdFx0dGltZW91dCA9IG51bGw7XG5cdFx0XHRpZiAoIWltbWVkaWF0ZSkgZnVuYyguLi5hcmdzKTtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDtcblxuXHRcdGlmICh0aW1lb3V0ICE9PSBudWxsKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdFx0fVxuXG5cdFx0dGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuXG5cdFx0aWYgKGNhbGxOb3cpIGZ1bmMoLi4uYXJncyk7XG5cdH0pIGFzIFQ7XG59XG5cbi8vIEFwcCBtb2NrXG5leHBvcnQgY29uc3QgQXBwID0gdmkuZm4oKTtcblxuLy8gTW9jayBpbnRlcmZhY2VzIGZvciBUeXBlU2NyaXB0XG5leHBvcnQgaW50ZXJmYWNlIE1vY2tBcHAge1xuXHRmaWxlTWFuYWdlcjoge1xuXHRcdHByb2Nlc3NGcm9udE1hdHRlcjogUmV0dXJuVHlwZTx0eXBlb2YgdmkuZm4+O1xuXHR9O1xuXHRtZXRhZGF0YUNhY2hlOiB7XG5cdFx0Z2V0RmlsZUNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdH07XG5cdHZhdWx0OiB7XG5cdFx0Z2V0QWJzdHJhY3RGaWxlQnlQYXRoOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0b246IFJldHVyblR5cGU8dHlwZW9mIHZpLmZuPjtcblx0XHRyZWFkOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0bW9kaWZ5OiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0Y3JlYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0ZGVsZXRlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0cmVuYW1lOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0Z2V0RmlsZXM6IFJldHVyblR5cGU8dHlwZW9mIHZpLmZuPjtcblx0XHRnZXRNYXJrZG93bkZpbGVzOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0Z2V0Rm9sZGVyQnlQYXRoOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdH07XG5cdHdvcmtzcGFjZToge1xuXHRcdGdldEFjdGl2ZUZpbGU6IFJldHVyblR5cGU8dHlwZW9mIHZpLmZuPjtcblx0XHRvbjogUmV0dXJuVHlwZTx0eXBlb2YgdmkuZm4+O1xuXHR9O1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgZnVsbHkgbW9ja2VkIGFwcFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tBcHAoKTogTW9ja0FwcCB7XG5cdHJldHVybiB7XG5cdFx0ZmlsZU1hbmFnZXI6IHtcblx0XHRcdHByb2Nlc3NGcm9udE1hdHRlcjogdmkuZm4oKSxcblx0XHR9LFxuXHRcdG1ldGFkYXRhQ2FjaGU6IHtcblx0XHRcdGdldEZpbGVDYWNoZTogdmkuZm4oKSxcblx0XHR9LFxuXHRcdHZhdWx0OiB7XG5cdFx0XHRnZXRBYnN0cmFjdEZpbGVCeVBhdGg6IHZpLmZuKCksXG5cdFx0XHRvbjogdmkuZm4oKSxcblx0XHRcdHJlYWQ6IHZpLmZuKCksXG5cdFx0XHRtb2RpZnk6IHZpLmZuKCksXG5cdFx0XHRjcmVhdGU6IHZpLmZuKCksXG5cdFx0XHRkZWxldGU6IHZpLmZuKCksXG5cdFx0XHRyZW5hbWU6IHZpLmZuKCksXG5cdFx0XHRnZXRGaWxlczogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoW10pLFxuXHRcdFx0Z2V0TWFya2Rvd25GaWxlczogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoW10pLFxuXHRcdFx0Z2V0Rm9sZGVyQnlQYXRoOiB2aS5mbigpLFxuXHRcdH0sXG5cdFx0d29ya3NwYWNlOiB7XG5cdFx0XHRnZXRBY3RpdmVGaWxlOiB2aS5mbigpLFxuXHRcdFx0b246IHZpLmZuKCksXG5cdFx0fSxcblx0fTtcbn1cblxuLy8gSGVscGVyIHRvIGNyZWF0ZSBtb2NrIFRGaWxlIGluc3RhbmNlc1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tGaWxlKFxuXHRwYXRoOiBzdHJpbmcsXG5cdG9wdGlvbnM/OiB7XG5cdFx0YmFzZW5hbWU/OiBzdHJpbmc7XG5cdFx0cGFyZW50UGF0aD86IHN0cmluZztcblx0XHRleHRlbnNpb24/OiBzdHJpbmc7XG5cdH1cbik6IFRGaWxlIHtcblx0Y29uc3QgZmlsZSA9IG5ldyBURmlsZShwYXRoLCBvcHRpb25zPy5wYXJlbnRQYXRoKTtcblx0aWYgKG9wdGlvbnM/LmJhc2VuYW1lKSB7XG5cdFx0ZmlsZS5iYXNlbmFtZSA9IG9wdGlvbnMuYmFzZW5hbWU7XG5cdH1cblx0aWYgKG9wdGlvbnM/LmV4dGVuc2lvbikge1xuXHRcdGZpbGUuZXh0ZW5zaW9uID0gb3B0aW9ucy5leHRlbnNpb247XG5cdH1cblx0cmV0dXJuIGZpbGU7XG59XG5cbi8vIEhlbHBlciB0byBjcmVhdGUgbW9jayBmaWxlIGNhY2hlXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0ZpbGVDYWNoZShmcm9udG1hdHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcblx0cmV0dXJuIHtcblx0XHRmcm9udG1hdHRlcjogZnJvbnRtYXR0ZXIgfHwge30sXG5cdFx0ZnJvbnRtYXR0ZXJQb3NpdGlvbjogZnJvbnRtYXR0ZXIgPyB7IHN0YXJ0OiB7IGxpbmU6IDAgfSwgZW5kOiB7IGxpbmU6IDMgfSB9IDogbnVsbCxcblx0XHRzZWN0aW9uczogW10sXG5cdFx0aGVhZGluZ3M6IFtdLFxuXHRcdGxpbmtzOiBbXSxcblx0XHRlbWJlZHM6IFtdLFxuXHRcdHRhZ3M6IFtdLFxuXHRcdGxpc3RJdGVtczogW10sXG5cdH07XG59XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare const mockFileOperations: {
|
|
2
|
-
arraysEqual: import("vitest").Mock<(...args: any[]) => any>;
|
|
3
|
-
normalizeArray: import("vitest").Mock<(...args: any[]) => any>;
|
|
4
|
-
createFileLink: import("vitest").Mock<(...args: any[]) => any>;
|
|
5
|
-
};
|
|
6
|
-
export declare const mockLinkParser: {
|
|
7
|
-
extractFilePathFromLink: import("vitest").Mock<(...args: any[]) => any>;
|
|
8
|
-
};
|
|
9
|
-
export declare function setupDefaultMockImplementations(): void;
|
|
10
|
-
export declare function resetAllMocks(): void;
|
|
11
|
-
export declare function setupMockImplementation(mockName: keyof typeof mockFileOperations | keyof typeof mockLinkParser, implementation: (...args: any[]) => any): void;
|
|
12
|
-
export declare function setupMockReturnValue(mockName: keyof typeof mockFileOperations | keyof typeof mockLinkParser, value: any): void;
|
|
13
|
-
export declare function verifyMockCalls(mockName: keyof typeof mockFileOperations | keyof typeof mockLinkParser, expectedCalls: any[][]): void;
|
|
14
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/testing/mocks/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAGF,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAGF,wBAAgB,+BAA+B,SA+C9C;AAGD,wBAAgB,aAAa,SAO5B;AAGD,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,MAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,cAAc,EACvE,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,QAOvC;AAGD,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,cAAc,EACvE,KAAK,EAAE,GAAG,QAOV;AAGD,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,cAAc,EACvE,aAAa,EAAE,GAAG,EAAE,EAAE,QAWtB"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { expect, vi } from "vitest";
|
|
2
|
-
// File operations mocks
|
|
3
|
-
export const mockFileOperations = {
|
|
4
|
-
arraysEqual: vi.fn(),
|
|
5
|
-
normalizeArray: vi.fn(),
|
|
6
|
-
createFileLink: vi.fn(),
|
|
7
|
-
};
|
|
8
|
-
// Link parser mocks
|
|
9
|
-
export const mockLinkParser = {
|
|
10
|
-
extractFilePathFromLink: vi.fn(),
|
|
11
|
-
};
|
|
12
|
-
// Default mock implementations that match the actual behavior
|
|
13
|
-
export function setupDefaultMockImplementations() {
|
|
14
|
-
// Set up file operations mocks
|
|
15
|
-
mockFileOperations.normalizeArray.mockImplementation((arr) => Array.isArray(arr) ? arr : arr ? [arr] : []);
|
|
16
|
-
mockFileOperations.arraysEqual.mockImplementation((a, b) => JSON.stringify(a) === JSON.stringify(b));
|
|
17
|
-
mockFileOperations.createFileLink.mockImplementation((file) => {
|
|
18
|
-
var _a, _b, _c;
|
|
19
|
-
if (!file)
|
|
20
|
-
return "[[Unknown File]]";
|
|
21
|
-
const basename = file.basename ||
|
|
22
|
-
((_b = (_a = file.path) === null || _a === void 0 ? void 0 : _a.split("/").pop()) === null || _b === void 0 ? void 0 : _b.replace(/\.[^/.]+$/, "")) ||
|
|
23
|
-
"";
|
|
24
|
-
const parentPath = (_c = file.parent) === null || _c === void 0 ? void 0 : _c.path;
|
|
25
|
-
if (!parentPath || parentPath === "/" || parentPath === "") {
|
|
26
|
-
return `[[${basename}]]`;
|
|
27
|
-
}
|
|
28
|
-
return `[[${parentPath}/${basename}|${basename}]]`;
|
|
29
|
-
});
|
|
30
|
-
// Set up link parser mocks
|
|
31
|
-
mockLinkParser.extractFilePathFromLink.mockImplementation((link) => {
|
|
32
|
-
if (!link || typeof link !== "string")
|
|
33
|
-
return null;
|
|
34
|
-
// Handle text that contains a link
|
|
35
|
-
const linkMatch = link.match(/\[\[([^\]]+)\]\]/);
|
|
36
|
-
if (linkMatch) {
|
|
37
|
-
const content = linkMatch[1];
|
|
38
|
-
// Remove display name if present
|
|
39
|
-
const filePart = content.split("|")[0].trim();
|
|
40
|
-
if (!filePart)
|
|
41
|
-
return null;
|
|
42
|
-
// Add .md extension if not present
|
|
43
|
-
return filePart.endsWith(".md") ? filePart : `${filePart}.md`;
|
|
44
|
-
}
|
|
45
|
-
return null;
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
// Reset all mocks
|
|
49
|
-
export function resetAllMocks() {
|
|
50
|
-
Object.values(mockFileOperations).forEach((mock) => {
|
|
51
|
-
mock.mockReset();
|
|
52
|
-
});
|
|
53
|
-
Object.values(mockLinkParser).forEach((mock) => {
|
|
54
|
-
mock.mockReset();
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
// Helper to setup mocks with specific implementations
|
|
58
|
-
export function setupMockImplementation(mockName, implementation) {
|
|
59
|
-
if (mockName in mockFileOperations) {
|
|
60
|
-
mockFileOperations[mockName].mockImplementation(implementation);
|
|
61
|
-
}
|
|
62
|
-
else if (mockName in mockLinkParser) {
|
|
63
|
-
mockLinkParser[mockName].mockImplementation(implementation);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// Helper to setup mock return values
|
|
67
|
-
export function setupMockReturnValue(mockName, value) {
|
|
68
|
-
if (mockName in mockFileOperations) {
|
|
69
|
-
mockFileOperations[mockName].mockReturnValue(value);
|
|
70
|
-
}
|
|
71
|
-
else if (mockName in mockLinkParser) {
|
|
72
|
-
mockLinkParser[mockName].mockReturnValue(value);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Helper to verify mock calls
|
|
76
|
-
export function verifyMockCalls(mockName, expectedCalls) {
|
|
77
|
-
const mock = mockName in mockFileOperations
|
|
78
|
-
? mockFileOperations[mockName]
|
|
79
|
-
: mockLinkParser[mockName];
|
|
80
|
-
expect(mock).toHaveBeenCalledTimes(expectedCalls.length);
|
|
81
|
-
expectedCalls.forEach((args, index) => {
|
|
82
|
-
expect(mock).toHaveBeenNthCalledWith(index + 1, ...args);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9tb2Nrcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEIsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDdkIsQ0FBQztBQUVGLG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDN0IsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNoQyxDQUFDO0FBRUYsOERBQThEO0FBQzlELE1BQU0sVUFBVSwrQkFBK0I7SUFDOUMsK0JBQStCO0lBQy9CLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzNDLENBQUM7SUFFRixrQkFBa0IsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQ2hELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUNqRCxDQUFDO0lBRUYsa0JBQWtCLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O1FBQzdELElBQUksQ0FBQyxJ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Q0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztBQUNGLENBQUM7QUFFRCw4QkFBOEI7QUFDOUIsTUFBTSxVQUFVLGVBQWUsQ0FDOUIsUUFBdUUsRUFDdkUsYUFBc0I7SUFFdEIsTUFBTSxJQUFJLEdBQ1QsUUFBUSxJQUFJLGtCQUFrQjtRQUM3QixDQUFDLENBQUUsa0JBQTBCLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLENBQUMsQ0FBRSxjQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgdmkgfSBmcm9tIFwidml0ZXN0XCI7XG5cbi8vIEZpbGUgb3BlcmF0aW9ucyBtb2Nrc1xuZXhwb3J0IGNvbnN0IG1vY2tGaWxlT3BlcmF0aW9ucyA9IHtcblx0YXJyYXlzRXF1YWw6IHZpLmZuKCksXG5cdG5vcm1hbGl6ZUFycmF5OiB2aS5mbigpLFxuXHRjcmVhdGVGaWxlTGluazogdmkuZm4oKSxcbn07XG5cbi8vIExpbmsgcGFyc2VyIG1vY2tzXG5leHBvcnQgY29uc3QgbW9ja0xpbmtQYXJzZXIgPSB7XG5cdGV4dHJhY3RGaWxlUGF0aEZyb21MaW5rOiB2aS5mbigpLFxufTtcblxuLy8gRGVmYXVsdCBtb2NrIGltcGxlbWVudGF0aW9ucyB0aGF0IG1hdGNoIHRoZSBhY3R1YWwgYmVoYXZpb3JcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cERlZmF1bHRNb2NrSW1wbGVtZW50YXRpb25zKCkge1xuXHQvLyBTZXQgdXAgZmlsZSBvcGVyYXRpb25zIG1vY2tzXG5cdG1vY2tGaWxlT3BlcmF0aW9ucy5ub3JtYWxpemVBcnJheS5tb2NrSW1wbGVtZW50YXRpb24oKGFycikgPT5cblx0XHRBcnJheS5pc0FycmF5KGFycikgPyBhcnIgOiBhcnIgPyBbYXJyXSA6IFtdXG5cdCk7XG5cblx0bW9ja0ZpbGVPcGVyYXRpb25zLmFycmF5c0VxdWFsLm1vY2tJbXBsZW1lbnRhdGlvbihcblx0XHQoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpXG5cdCk7XG5cblx0bW9ja0ZpbGVPcGVyYXRpb25zLmNyZWF0ZUZpbGVMaW5rLm1vY2tJbXBsZW1lbnRhdGlvbigoZmlsZSkgPT4ge1xuXHRcdGlmICghZmlsZSkgcmV0dXJuIFwiW1tVbmtub3duIEZpbGVdXVwiO1xuXG5cdFx0Y29uc3QgYmFzZW5hbWUgPVxuXHRcdFx0ZmlsZS5iYXNlbmFtZSB8fFxuXHRcdFx0ZmlsZS5wYXRoXG5cdFx0XHRcdD8uc3BsaXQoXCIvXCIpXG5cdFx0XHRcdC5wb3AoKVxuXHRcdFx0XHQ/LnJlcGxhY2UoL1xcLlteLy5dKyQvLCBcIlwiKSB8fFxuXHRcdFx0XCJcIjtcblx0XHRjb25zdCBwYXJlbnRQYXRoID0gZmlsZS5wYXJlbnQ/LnBhdGg7XG5cblx0XHRpZiAoIXBhcmVudFBhdGggfHwgcGFyZW50UGF0aCA9PT0gXCIvXCIgfHwgcGFyZW50UGF0aCA9PT0gXCJcIikge1xuXHRcdFx0cmV0dXJuIGBbWyR7YmFzZW5hbWV9XV1gO1xuXHRcdH1cblxuXHRcdHJldHVybiBgW1ske3BhcmVudFBhdGh9LyR7YmFzZW5hbWV9fCR7YmFzZW5hbWV9XV1gO1xuXHR9KTtcblxuXHQvLyBTZXQgdXAgbGluayBwYXJzZXIgbW9ja3Ncblx0bW9ja0xpbmtQYXJzZXIuZXh0cmFjdEZpbGVQYXRoRnJvbUxpbmsubW9ja0ltcGxlbWVudGF0aW9uKChsaW5rKSA9PiB7XG5cdFx0aWYgKCFsaW5rIHx8IHR5cGVvZiBsaW5rICE9PSBcInN0cmluZ1wiKSByZXR1cm4gbnVsbDtcblxuXHRcdC8vIEhhbmRsZSB0ZXh0IHRoYXQgY29udGFpbnMgYSBsaW5rXG5cdFx0Y29uc3QgbGlua01hdGNoID0gbGluay5tYXRjaCgvXFxbXFxbKFteXFxdXSspXFxdXFxdLyk7XG5cdFx0aWYgKGxpbmtNYXRjaCkge1xuXHRcdFx0Y29uc3QgY29udGVudCA9IGxpbmtNYXRjaFsxXTtcblx0XHRcdC8vIFJlbW92ZSBkaXNwbGF5IG5hbWUgaWYgcHJlc2VudFxuXHRcdFx0Y29uc3QgZmlsZVBhcnQgPSBjb250ZW50LnNwbGl0KFwifFwiKVswXS50cmltKCk7XG5cdFx0XHRpZiAoIWZpbGVQYXJ0KSByZXR1cm4gbnVsbDtcblxuXHRcdFx0Ly8gQWRkIC5tZCBleHRlbnNpb24gaWYgbm90IHByZXNlbnRcblx0XHRcdHJldHVybiBmaWxlUGFydC5lbmRzV2l0aChcIi5tZFwiKSA/IGZpbGVQYXJ0IDogYCR7ZmlsZVBhcnR9Lm1kYDtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fSk7XG59XG5cbi8vIFJlc2V0IGFsbCBtb2Nrc1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0QWxsTW9ja3MoKSB7XG5cdE9iamVjdC52YWx1ZXMobW9ja0ZpbGVPcGVyYXRpb25zKS5mb3JFYWNoKChtb2NrKSA9PiB7XG5cdFx0bW9jay5tb2NrUmVzZXQoKTtcblx0fSk7XG5cdE9iamVjdC52YWx1ZXMobW9ja0xpbmtQYXJzZXIpLmZvckVhY2goKG1vY2spID0+IHtcblx0XHRtb2NrLm1vY2tSZXNldCgpO1xuXHR9KTtcbn1cblxuLy8gSGVscGVyIHRvIHNldHVwIG1vY2tzIHdpdGggc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBNb2NrSW1wbGVtZW50YXRpb24oXG5cdG1vY2tOYW1lOiBrZXlvZiB0eXBlb2YgbW9ja0ZpbGVPcGVyYXRpb25zIHwga2V5b2YgdHlwZW9mIG1vY2tMaW5rUGFyc2VyLFxuXHRpbXBsZW1lbnRhdGlvbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnlcbikge1xuXHRpZiAobW9ja05hbWUgaW4gbW9ja0ZpbGVPcGVyYXRpb25zKSB7XG5cdFx0KG1vY2tGaWxlT3BlcmF0aW9ucyBhcyBhbnkpW21vY2tOYW1lXS5tb2NrSW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24pO1xuXHR9IGVsc2UgaWYgKG1vY2tOYW1lIGluIG1vY2tMaW5rUGFyc2VyKSB7XG5cdFx0KG1vY2tMaW5rUGFyc2VyIGFzIGFueSlbbW9ja05hbWVdLm1vY2tJbXBsZW1lbnRhdGlvbihpbXBsZW1lbnRhdGlvbik7XG5cdH1cbn1cblxuLy8gSGVscGVyIHRvIHNldHVwIG1vY2sgcmV0dXJuIHZhbHVlc1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwTW9ja1JldHVyblZhbHVlKFxuXHRtb2NrTmFtZToga2V5b2YgdHlwZW9mIG1vY2tGaWxlT3BlcmF0aW9ucyB8IGtleW9mIHR5cGVvZiBtb2NrTGlua1BhcnNlcixcblx0dmFsdWU6IGFueVxuKSB7XG5cdGlmIChtb2NrTmFtZSBpbiBtb2NrRmlsZU9wZXJhdGlvbnMpIHtcblx0XHQobW9ja0ZpbGVPcGVyYXRpb25zIGFzIGFueSlbbW9ja05hbWVdLm1vY2tSZXR1cm5WYWx1ZSh2YWx1ZSk7XG5cdH0gZWxzZSBpZiAobW9ja05hbWUgaW4gbW9ja0xpbmtQYXJzZXIpIHtcblx0XHQobW9ja0xpbmtQYXJzZXIgYXMgYW55KVttb2NrTmFtZV0ubW9ja1JldHVyblZhbHVlKHZhbHVlKTtcblx0fVxufVxuXG4vLyBIZWxwZXIgdG8gdmVyaWZ5IG1vY2sgY2FsbHNcbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlNb2NrQ2FsbHMoXG5cdG1vY2tOYW1lOiBrZXlvZiB0eXBlb2YgbW9ja0ZpbGVPcGVyYXRpb25zIHwga2V5b2YgdHlwZW9mIG1vY2tMaW5rUGFyc2VyLFxuXHRleHBlY3RlZENhbGxzOiBhbnlbXVtdXG4pIHtcblx0Y29uc3QgbW9jayA9XG5cdFx0bW9ja05hbWUgaW4gbW9ja0ZpbGVPcGVyYXRpb25zXG5cdFx0XHQ/IChtb2NrRmlsZU9wZXJhdGlvbnMgYXMgYW55KVttb2NrTmFtZV1cblx0XHRcdDogKG1vY2tMaW5rUGFyc2VyIGFzIGFueSlbbW9ja05hbWVdO1xuXG5cdGV4cGVjdChtb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoZXhwZWN0ZWRDYWxscy5sZW5ndGgpO1xuXHRleHBlY3RlZENhbGxzLmZvckVhY2goKGFyZ3MsIGluZGV4KSA9PiB7XG5cdFx0ZXhwZWN0KG1vY2spLnRvSGF2ZUJlZW5OdGhDYWxsZWRXaXRoKGluZGV4ICsgMSwgLi4uYXJncyk7XG5cdH0pO1xufVxuIl19
|
package/dist/testing/setup.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,eAcnC"}
|
package/dist/testing/setup.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { vi } from "vitest";
|
|
2
|
-
import { mockFileOperations, mockLinkParser } from "./mocks/utils";
|
|
3
|
-
// Global test setup that can be imported once per test file
|
|
4
|
-
export function setupTestEnvironment() {
|
|
5
|
-
// Mock the utils modules
|
|
6
|
-
vi.mock("@obsidian-plugins/utils/file-operations", () => mockFileOperations);
|
|
7
|
-
vi.mock("@obsidian-plugins/utils/link-parser", () => mockLinkParser);
|
|
8
|
-
// Mock any plugin-specific components
|
|
9
|
-
vi.mock("../src/components/settings-tab", () => ({
|
|
10
|
-
TreePropertiesManagerSettingTab: class MockSettingTab {
|
|
11
|
-
},
|
|
12
|
-
}));
|
|
13
|
-
// Return cleanup function
|
|
14
|
-
return () => {
|
|
15
|
-
vi.clearAllMocks();
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsNERBQTREO0FBQzVELE1BQU0sVUFBVSxvQkFBb0I7SUFDbkMseUJBQXlCO0lBQ3pCLEVBQUUsQ0FBQyxJQUFJLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3RSxFQUFFLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxFQUFFLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEQsK0JBQStCLEVBQUUsTUFBTSxjQUFjO1NBQUc7S0FDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSiwwQkFBMEI7SUFDMUIsT0FBTyxHQUFHLEVBQUU7UUFDWCxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZpIH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgbW9ja0ZpbGVPcGVyYXRpb25zLCBtb2NrTGlua1BhcnNlciB9IGZyb20gXCIuL21vY2tzL3V0aWxzXCI7XG5cbi8vIEdsb2JhbCB0ZXN0IHNldHVwIHRoYXQgY2FuIGJlIGltcG9ydGVkIG9uY2UgcGVyIHRlc3QgZmlsZVxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwVGVzdEVudmlyb25tZW50KCkge1xuXHQvLyBNb2NrIHRoZSB1dGlscyBtb2R1bGVzXG5cdHZpLm1vY2soXCJAb2JzaWRpYW4tcGx1Z2lucy91dGlscy9maWxlLW9wZXJhdGlvbnNcIiwgKCkgPT4gbW9ja0ZpbGVPcGVyYXRpb25zKTtcblx0dmkubW9jayhcIkBvYnNpZGlhbi1wbHVnaW5zL3V0aWxzL2xpbmstcGFyc2VyXCIsICgpID0+IG1vY2tMaW5rUGFyc2VyKTtcblxuXHQvLyBNb2NrIGFueSBwbHVnaW4tc3BlY2lmaWMgY29tcG9uZW50c1xuXHR2aS5tb2NrKFwiLi4vc3JjL2NvbXBvbmVudHMvc2V0dGluZ3MtdGFiXCIsICgpID0+ICh7XG5cdFx0VHJlZVByb3BlcnRpZXNNYW5hZ2VyU2V0dGluZ1RhYjogY2xhc3MgTW9ja1NldHRpbmdUYWIge30sXG5cdH0pKTtcblxuXHQvLyBSZXR1cm4gY2xlYW51cCBmdW5jdGlvblxuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdHZpLmNsZWFyQWxsTW9ja3MoKTtcblx0fTtcbn1cbiJdfQ==
|