@pasosdejesus/m 0.25.0 → 0.26.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/dist/CHANGELOG.md +59 -0
- package/dist/base-model/baseline.generated.d.ts +48 -0
- package/dist/base-model/baseline.generated.d.ts.map +1 -0
- package/dist/base-model/baseline.generated.js +930 -0
- package/dist/base-model/baseline.generated.js.map +1 -0
- package/dist/base-model/check.d.ts +6 -0
- package/dist/base-model/check.d.ts.map +1 -0
- package/dist/base-model/check.js +195 -0
- package/dist/base-model/check.js.map +1 -0
- package/dist/base-model/generate.d.ts +42 -0
- package/dist/base-model/generate.d.ts.map +1 -0
- package/dist/base-model/generate.js +241 -0
- package/dist/base-model/generate.js.map +1 -0
- package/dist/base-model/guidelines.d.ts +13 -0
- package/dist/base-model/guidelines.d.ts.map +1 -0
- package/dist/base-model/guidelines.js +61 -0
- package/dist/base-model/guidelines.js.map +1 -0
- package/dist/base-model/index.d.ts +22 -0
- package/dist/base-model/index.d.ts.map +1 -0
- package/dist/base-model/index.js +26 -0
- package/dist/base-model/index.js.map +1 -0
- package/dist/base-model/parse-structure.d.ts +4 -0
- package/dist/base-model/parse-structure.d.ts.map +1 -0
- package/dist/base-model/parse-structure.js +170 -0
- package/dist/base-model/parse-structure.js.map +1 -0
- package/dist/base-model/queries.d.ts +34 -0
- package/dist/base-model/queries.d.ts.map +1 -0
- package/dist/base-model/queries.js +118 -0
- package/dist/base-model/queries.js.map +1 -0
- package/dist/base-model/references/learn-tg.d.ts +21 -0
- package/dist/base-model/references/learn-tg.d.ts.map +1 -0
- package/dist/base-model/references/learn-tg.js +65 -0
- package/dist/base-model/references/learn-tg.js.map +1 -0
- package/dist/base-model/references/msip.d.ts +29 -0
- package/dist/base-model/references/msip.d.ts.map +1 -0
- package/dist/base-model/references/msip.js +33 -0
- package/dist/base-model/references/msip.js.map +1 -0
- package/dist/base-model/types.d.ts +207 -0
- package/dist/base-model/types.d.ts.map +1 -0
- package/dist/base-model/types.js +10 -0
- package/dist/base-model/types.js.map +1 -0
- package/dist/base-model/version.d.ts +19 -0
- package/dist/base-model/version.d.ts.map +1 -0
- package/dist/base-model/version.js +26 -0
- package/dist/base-model/version.js.map +1 -0
- package/dist/base-model/wallet-link.d.ts +69 -0
- package/dist/base-model/wallet-link.d.ts.map +1 -0
- package/dist/base-model/wallet-link.js +220 -0
- package/dist/base-model/wallet-link.js.map +1 -0
- package/dist/base-model/wallet-link.test.d.ts +2 -0
- package/dist/base-model/wallet-link.test.d.ts.map +1 -0
- package/dist/base-model/wallet-link.test.js +147 -0
- package/dist/base-model/wallet-link.test.js.map +1 -0
- package/dist/e2e/full-wallet.d.ts +19 -0
- package/dist/e2e/full-wallet.d.ts.map +1 -1
- package/dist/e2e/full-wallet.js +12 -4
- package/dist/e2e/full-wallet.js.map +1 -1
- package/dist/e2e/full-wallet.test.js +26 -0
- package/dist/e2e/full-wallet.test.js.map +1 -1
- package/dist/e2e/in-app-wallet.d.ts +23 -0
- package/dist/e2e/in-app-wallet.d.ts.map +1 -0
- package/dist/e2e/in-app-wallet.js +40 -0
- package/dist/e2e/in-app-wallet.js.map +1 -0
- package/dist/e2e/in-app-wallet.test.d.ts +2 -0
- package/dist/e2e/in-app-wallet.test.d.ts.map +1 -0
- package/dist/e2e/in-app-wallet.test.js +52 -0
- package/dist/e2e/in-app-wallet.test.js.map +1 -0
- package/dist/e2e/index.d.ts +5 -1
- package/dist/e2e/index.d.ts.map +1 -1
- package/dist/e2e/index.js +2 -0
- package/dist/e2e/index.js.map +1 -1
- package/dist/e2e/warmup.d.ts +38 -0
- package/dist/e2e/warmup.d.ts.map +1 -0
- package/dist/e2e/warmup.js +84 -0
- package/dist/e2e/warmup.js.map +1 -0
- package/dist/e2e/warmup.test.d.ts +2 -0
- package/dist/e2e/warmup.test.d.ts.map +1 -0
- package/dist/e2e/warmup.test.js +67 -0
- package/dist/e2e/warmup.test.js.map +1 -0
- package/dist/i18n/locales/cli.d.ts.map +1 -1
- package/dist/i18n/locales/cli.js +8 -0
- package/dist/i18n/locales/cli.js.map +1 -1
- package/dist/m.js +13 -1
- package/dist/m.js.map +1 -1
- package/dist/tasks/base-model.d.ts +4 -0
- package/dist/tasks/base-model.d.ts.map +1 -0
- package/dist/tasks/base-model.js +260 -0
- package/dist/tasks/base-model.js.map +1 -0
- package/dist/tasks/db.d.ts.map +1 -1
- package/dist/tasks/db.js +27 -0
- package/dist/tasks/db.js.map +1 -1
- package/dist/tasks/warmup.d.ts +4 -0
- package/dist/tasks/warmup.d.ts.map +1 -0
- package/dist/tasks/warmup.js +67 -0
- package/dist/tasks/warmup.js.map +1 -0
- package/dist/tasks/warmup.test.d.ts +2 -0
- package/dist/tasks/warmup.test.d.ts.map +1 -0
- package/dist/tasks/warmup.test.js +40 -0
- package/dist/tasks/warmup.test.js.map +1 -0
- package/dist/templates/apps/nextjs/package.json.hbs +1 -1
- package/dist/test-utils/console.d.ts +37 -0
- package/dist/test-utils/console.d.ts.map +1 -0
- package/dist/test-utils/console.js +52 -0
- package/dist/test-utils/console.js.map +1 -0
- package/dist/test-utils/console.test.d.ts +2 -0
- package/dist/test-utils/console.test.d.ts.map +1 -0
- package/dist/test-utils/console.test.js +57 -0
- package/dist/test-utils/console.test.js.map +1 -0
- package/dist/test-utils/index.d.ts +1 -0
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +1 -0
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/kysely-mocks.d.ts +163 -33
- package/dist/test-utils/kysely-mocks.d.ts.map +1 -1
- package/dist/test-utils/kysely-mocks.js +147 -18
- package/dist/test-utils/kysely-mocks.js.map +1 -1
- package/dist/test-utils/kysely-mocks.test.d.ts +2 -0
- package/dist/test-utils/kysely-mocks.test.d.ts.map +1 -0
- package/dist/test-utils/kysely-mocks.test.js +94 -0
- package/dist/test-utils/kysely-mocks.test.js.map +1 -0
- package/package.json +5 -1
- package/src/e2e/README.md +42 -0
- package/src/tasks/README.md +1 -0
- package/src/test-utils/README.md +28 -0
|
@@ -2,42 +2,166 @@
|
|
|
2
2
|
* Database mocking utilities for tests
|
|
3
3
|
*
|
|
4
4
|
* "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
|
|
5
|
+
*
|
|
6
|
+
* U1 of `m/REQ/49`: the builder covers what real API routes use (measured in
|
|
7
|
+
* `sivel3/app/api` and learn.tg): `eb.or`/`eb.and`, `eb('col', 'in', cb)`,
|
|
8
|
+
* `where(sql`…`)`, a subquery used as a table (`db.selectFrom(base.as('lb'))`),
|
|
9
|
+
* `having`, `with`, `onConflict`/`doNothing`, `transaction().execute(cb)`,
|
|
10
|
+
* `getExecutor()`, `fn.countAll/sum/avg/max/min`, and the `sql` tag with
|
|
11
|
+
* `raw`/`ref`/`val`/`join`/`literal`.
|
|
5
12
|
*/
|
|
6
13
|
import { vi } from 'vitest';
|
|
14
|
+
/**
|
|
15
|
+
* Creates a mock of Kysely's `sql` tag. The returned value is both callable
|
|
16
|
+
* (`sql`\`count(*) = ${x}\``) and carries the helpers real code uses
|
|
17
|
+
* (`sql.raw`, `sql.ref`, `sql.val`, `sql.join`, `sql.literal`).
|
|
18
|
+
*/
|
|
19
|
+
export function createMockSql() {
|
|
20
|
+
const tag = vi.fn((strings, ...values) => {
|
|
21
|
+
const text = Array.isArray(strings)
|
|
22
|
+
? strings.map((s, i) => s + (i < values.length ? '?' : '')).join('')
|
|
23
|
+
: String(strings);
|
|
24
|
+
return {
|
|
25
|
+
__sql: text,
|
|
26
|
+
parameters: values,
|
|
27
|
+
as: vi.fn(() => ({ __sql: text })),
|
|
28
|
+
execute: vi.fn(() => Promise.resolve({ rows: [] })),
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
tag.raw = vi.fn((value) => ({ __sql: value }));
|
|
32
|
+
tag.ref = vi.fn((value) => ({ __sql: value }));
|
|
33
|
+
tag.val = vi.fn((value) => value);
|
|
34
|
+
tag.literal = vi.fn((value) => ({ __sql: value }));
|
|
35
|
+
tag.join = vi.fn((parts) => ({
|
|
36
|
+
__sql: parts.map((p) => p?.__sql ?? String(p)).join(' '),
|
|
37
|
+
}));
|
|
38
|
+
tag.id = vi.fn((value) => ({ __sql: value }));
|
|
39
|
+
tag.table = vi.fn((value) => ({ __sql: value }));
|
|
40
|
+
return tag;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates a mock of Kysely's `ExpressionBuilder` (`eb`). Supports the call
|
|
44
|
+
* forms real routes use: `eb('col', 'in', cb)` (invokes `cb` with the builder)
|
|
45
|
+
* and the combinators `and`/`or`/`not`/`exists`/`case`.
|
|
46
|
+
*/
|
|
47
|
+
export function createExpressionBuilder() {
|
|
48
|
+
const eb = vi.fn((lhs, op, rhs) => {
|
|
49
|
+
if (typeof op === 'function')
|
|
50
|
+
op(eb);
|
|
51
|
+
else if (typeof rhs === 'function')
|
|
52
|
+
rhs(eb);
|
|
53
|
+
return { __expr: true, lhs, op, rhs };
|
|
54
|
+
});
|
|
55
|
+
eb.and = vi.fn((exprs) => ({ __expr: 'and', exprs }));
|
|
56
|
+
eb.or = vi.fn((exprs) => ({ __expr: 'or', exprs }));
|
|
57
|
+
eb.not = vi.fn((expr) => ({ __expr: 'not', expr }));
|
|
58
|
+
eb.exists = vi.fn((arg) => {
|
|
59
|
+
if (typeof arg === 'function')
|
|
60
|
+
arg(eb);
|
|
61
|
+
return { __expr: 'exists' };
|
|
62
|
+
});
|
|
63
|
+
eb.case = vi.fn(() => ({
|
|
64
|
+
when: vi.fn().mockReturnThis(),
|
|
65
|
+
then: vi.fn().mockReturnThis(),
|
|
66
|
+
otherwise: vi.fn().mockReturnThis(),
|
|
67
|
+
end: vi.fn(() => ({ __expr: true })),
|
|
68
|
+
}));
|
|
69
|
+
return eb;
|
|
70
|
+
}
|
|
71
|
+
function makeFn() {
|
|
72
|
+
const col = () => ({ as: vi.fn(() => ({})) });
|
|
73
|
+
return {
|
|
74
|
+
countAll: vi.fn(col),
|
|
75
|
+
count: vi.fn(col),
|
|
76
|
+
sum: vi.fn(col),
|
|
77
|
+
avg: vi.fn(col),
|
|
78
|
+
max: vi.fn(col),
|
|
79
|
+
min: vi.fn(col),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function makeOnConflict() {
|
|
83
|
+
const oc = {
|
|
84
|
+
column: vi.fn().mockReturnThis(),
|
|
85
|
+
columns: vi.fn().mockReturnThis(),
|
|
86
|
+
constraint: vi.fn().mockReturnThis(),
|
|
87
|
+
where: vi.fn().mockReturnThis(),
|
|
88
|
+
doNothing: vi.fn().mockReturnThis(),
|
|
89
|
+
doUpdateSet: vi.fn().mockReturnThis(),
|
|
90
|
+
};
|
|
91
|
+
return oc;
|
|
92
|
+
}
|
|
7
93
|
/**
|
|
8
94
|
* Mock Kysely class for use in vi.mock() factories and direct instantiation.
|
|
9
95
|
*
|
|
10
96
|
* ```typescript
|
|
11
|
-
* import { MockKysely } from '@pasosdejesus/m/test-utils/kysely-mocks'
|
|
12
|
-
* vi.mock('kysely', () => ({ Kysely: MockKysely }))
|
|
97
|
+
* import { MockKysely, createMockSql, createExpressionBuilder } from '@pasosdejesus/m/test-utils/kysely-mocks'
|
|
98
|
+
* vi.mock('kysely', () => ({ Kysely: MockKysely, sql: createMockSql(), ... }))
|
|
13
99
|
* ```
|
|
14
100
|
*/
|
|
15
101
|
export class MockKysely {
|
|
16
102
|
_executeTakeFirst;
|
|
17
103
|
_execute;
|
|
18
104
|
_sqlExecute;
|
|
105
|
+
_eb;
|
|
106
|
+
_sql;
|
|
19
107
|
constructor(options) {
|
|
20
108
|
this._executeTakeFirst = options?.executeTakeFirst ?? (() => undefined);
|
|
21
109
|
this._execute = options?.execute ?? (() => undefined);
|
|
22
110
|
this._sqlExecute = options?.sqlExecute ?? (() => ({ rows: [] }));
|
|
111
|
+
this._eb = options?.eb ?? createExpressionBuilder();
|
|
112
|
+
this._sql = options?.sql ?? createMockSql();
|
|
23
113
|
}
|
|
24
114
|
selectFrom() { return this; }
|
|
25
|
-
|
|
115
|
+
selectNoFrom() { return this; }
|
|
116
|
+
/** Accepts `(column, op, value)`, a callback, or a prebuilt expression. */
|
|
117
|
+
where(...args) {
|
|
118
|
+
if (args.length === 1 && typeof args[0] === 'function')
|
|
119
|
+
args[0](this._eb);
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
having(...args) {
|
|
123
|
+
if (args.length === 1 && typeof args[0] === 'function')
|
|
124
|
+
args[0](this._eb);
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
select(...args) {
|
|
128
|
+
for (const arg of args) {
|
|
129
|
+
if (typeof arg === 'function')
|
|
130
|
+
arg({ fn: this.fn, eb: this._eb, sql: this._sql });
|
|
131
|
+
}
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
26
134
|
selectAll() { return this; }
|
|
27
|
-
|
|
135
|
+
distinct() { return this; }
|
|
136
|
+
distinctOn() { return this; }
|
|
28
137
|
orderBy() { return this; }
|
|
29
138
|
limit() { return this; }
|
|
139
|
+
offset() { return this; }
|
|
30
140
|
groupBy() { return this; }
|
|
31
|
-
having() { return this; }
|
|
32
141
|
leftJoin() { return this; }
|
|
142
|
+
rightJoin() { return this; }
|
|
33
143
|
innerJoin() { return this; }
|
|
144
|
+
fullJoin() { return this; }
|
|
34
145
|
insertInto() { return this; }
|
|
35
146
|
values() { return this; }
|
|
36
147
|
returningAll() { return this; }
|
|
148
|
+
returning() { return this; }
|
|
37
149
|
updateTable() { return this; }
|
|
38
150
|
set() { return this; }
|
|
39
151
|
deleteFrom() { return this; }
|
|
40
152
|
with() { return this; }
|
|
153
|
+
withRecursive() { return this; }
|
|
154
|
+
union() { return this; }
|
|
155
|
+
unionAll() { return this; }
|
|
156
|
+
/** A subquery used as a table: `db.selectFrom(base.as('lb'))`. */
|
|
157
|
+
as() { return this; }
|
|
158
|
+
onConflict(...args) {
|
|
159
|
+
if (typeof args[0] === 'function')
|
|
160
|
+
args[0](makeOnConflict());
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
doNothing() { return this; }
|
|
164
|
+
doUpdateSet() { return this; }
|
|
41
165
|
transaction() {
|
|
42
166
|
return {
|
|
43
167
|
execute: async (callback) => {
|
|
@@ -45,6 +169,8 @@ export class MockKysely {
|
|
|
45
169
|
executeTakeFirst: this._executeTakeFirst,
|
|
46
170
|
execute: this._execute,
|
|
47
171
|
sqlExecute: this._sqlExecute,
|
|
172
|
+
eb: this._eb,
|
|
173
|
+
sql: this._sql,
|
|
48
174
|
});
|
|
49
175
|
return callback(mockTrx);
|
|
50
176
|
}
|
|
@@ -53,6 +179,7 @@ export class MockKysely {
|
|
|
53
179
|
executeTakeFirst() { return this._executeTakeFirst(); }
|
|
54
180
|
executeTakeFirstOrThrow() { return this._executeTakeFirst(); }
|
|
55
181
|
execute() { return this._execute(); }
|
|
182
|
+
compile() { return { sql: '', parameters: [] }; }
|
|
56
183
|
getExecutor() {
|
|
57
184
|
return {
|
|
58
185
|
executeQuery: (query) => this._sqlExecute(query),
|
|
@@ -62,14 +189,10 @@ export class MockKysely {
|
|
|
62
189
|
compileQuery: (query, ctx) => ({ sql: '', parameters: [] }),
|
|
63
190
|
};
|
|
64
191
|
}
|
|
65
|
-
fn =
|
|
66
|
-
countAll: vi.fn(() => ({ as: vi.fn(() => ({})) })),
|
|
67
|
-
sum: vi.fn(() => ({ as: vi.fn(() => ({})) })),
|
|
68
|
-
avg: vi.fn(() => ({ as: vi.fn(() => ({})) })),
|
|
69
|
-
max: vi.fn(() => ({ as: vi.fn(() => ({})) })),
|
|
70
|
-
min: vi.fn(() => ({ as: vi.fn(() => ({})) })),
|
|
71
|
-
};
|
|
192
|
+
fn = makeFn();
|
|
72
193
|
}
|
|
194
|
+
/** Alias exported for consumers that used learn.tg's hand-written class name. */
|
|
195
|
+
export const GlobalMockKysely = MockKysely;
|
|
73
196
|
/**
|
|
74
197
|
* Creates a mock Kysely instance with configurable behavior
|
|
75
198
|
*
|
|
@@ -91,6 +214,8 @@ export function createMockKysely(options = {}) {
|
|
|
91
214
|
if (opts.sqlExecute !== undefined) {
|
|
92
215
|
mockSqlExecute.mockImplementation(options.sqlExecute);
|
|
93
216
|
}
|
|
217
|
+
const mockSql = createMockSql();
|
|
218
|
+
const mockEb = createExpressionBuilder();
|
|
94
219
|
// Wire the MockKysely class to the shared mock functions so that
|
|
95
220
|
// libDbMocks.mockExecute (etc.) reflect actual DB calls made by the code.
|
|
96
221
|
class WiredMockKysely extends MockKysely {
|
|
@@ -99,14 +224,11 @@ export function createMockKysely(options = {}) {
|
|
|
99
224
|
executeTakeFirst: mockExecuteTakeFirst,
|
|
100
225
|
execute: mockExecute,
|
|
101
226
|
sqlExecute: mockSqlExecute,
|
|
227
|
+
eb: mockEb,
|
|
228
|
+
sql: mockSql,
|
|
102
229
|
});
|
|
103
230
|
}
|
|
104
231
|
}
|
|
105
|
-
const mockSql = vi.fn(() => ({
|
|
106
|
-
as: vi.fn().mockReturnValue({}),
|
|
107
|
-
execute: mockSqlExecute,
|
|
108
|
-
val: vi.fn((val) => val),
|
|
109
|
-
}));
|
|
110
232
|
const mockPgPool = vi.fn();
|
|
111
233
|
return {
|
|
112
234
|
MockKysely: WiredMockKysely,
|
|
@@ -114,6 +236,7 @@ export function createMockKysely(options = {}) {
|
|
|
114
236
|
mockExecute,
|
|
115
237
|
mockSqlExecute,
|
|
116
238
|
mockSql,
|
|
239
|
+
mockEb,
|
|
117
240
|
mockPgPool,
|
|
118
241
|
/**
|
|
119
242
|
* @deprecated `vi.mock()` NO funciona dentro de una función de un módulo
|
|
@@ -137,6 +260,7 @@ export function createMockKysely(options = {}) {
|
|
|
137
260
|
mockExecute.mockReset();
|
|
138
261
|
mockSqlExecute.mockReset();
|
|
139
262
|
mockSql.mockReset();
|
|
263
|
+
mockEb.mockReset();
|
|
140
264
|
mockPgPool.mockReset();
|
|
141
265
|
},
|
|
142
266
|
/**
|
|
@@ -172,15 +296,18 @@ export const libDbMocks = createMockKysely();
|
|
|
172
296
|
export function createMockDb() {
|
|
173
297
|
return {
|
|
174
298
|
selectFrom: vi.fn().mockReturnThis(),
|
|
299
|
+
selectNoFrom: vi.fn().mockReturnThis(),
|
|
175
300
|
select: vi.fn().mockReturnThis(),
|
|
176
301
|
selectAll: vi.fn().mockReturnThis(),
|
|
177
302
|
where: vi.fn().mockReturnThis(),
|
|
303
|
+
having: vi.fn().mockReturnThis(),
|
|
178
304
|
orderBy: vi.fn().mockReturnThis(),
|
|
179
305
|
limit: vi.fn().mockReturnThis(),
|
|
306
|
+
offset: vi.fn().mockReturnThis(),
|
|
180
307
|
groupBy: vi.fn().mockReturnThis(),
|
|
181
|
-
having: vi.fn().mockReturnThis(),
|
|
182
308
|
leftJoin: vi.fn().mockReturnThis(),
|
|
183
309
|
innerJoin: vi.fn().mockReturnThis(),
|
|
310
|
+
as: vi.fn().mockReturnThis(),
|
|
184
311
|
executeTakeFirst: vi.fn().mockResolvedValue(null),
|
|
185
312
|
executeTakeFirstOrThrow: vi.fn().mockResolvedValue(null),
|
|
186
313
|
insertInto: vi.fn().mockReturnThis(),
|
|
@@ -191,6 +318,8 @@ export function createMockDb() {
|
|
|
191
318
|
deleteFrom: vi.fn().mockReturnThis(),
|
|
192
319
|
with: vi.fn().mockReturnThis(),
|
|
193
320
|
onConflict: vi.fn().mockReturnThis(),
|
|
321
|
+
doNothing: vi.fn().mockReturnThis(),
|
|
322
|
+
doUpdateSet: vi.fn().mockReturnThis(),
|
|
194
323
|
execute: vi.fn().mockResolvedValue(undefined),
|
|
195
324
|
transaction: vi.fn().mockImplementation(async (cb) => cb(createMockDb())),
|
|
196
325
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kysely-mocks.js","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IACrB,iBAAiB,CAAyB;IAC1C,QAAQ,CAAyB;IACjC,WAAW,CAAqB;IAEhC,YAAY,OAIX;QACC,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACrD,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,UAAU,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC5B,KAAK,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACvB,SAAS,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,IAAW,IAAI,OAAO,IAAI,CAAA,CAAC,CAAC;IACtC,OAAO,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACzB,KAAK,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACvB,OAAO,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACzB,MAAM,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACxB,QAAQ,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC1B,SAAS,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC3B,UAAU,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC5B,MAAM,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACxB,YAAY,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC9B,WAAW,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC7B,GAAG,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IACrB,UAAU,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAC5B,IAAI,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;IAEtB,WAAW;QACT,OAAO;YACL,OAAO,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC;oBAC7B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;oBACxC,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,UAAU,EAAE,IAAI,CAAC,WAAW;iBAC7B,CAAC,CAAA;gBACF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;SACF,CAAA;IACH,CAAC;IACD,gBAAgB,KAAK,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAA,CAAC,CAAC;IACtD,uBAAuB,KAAK,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAA,CAAC,CAAC;IAC7D,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAC,CAAC;IACpC,WAAW;QACT,OAAO;YACL,YAAY,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACrD,iBAAiB,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;YAC3B,cAAc,EAAE,CAAC,KAAU,EAAE,WAAgB,EAAE,EAAE,CAAC,KAAK;YACvD,YAAY,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SACtE,CAAA;IACH,CAAC;IAED,EAAE,GAAG;QACH,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClD,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KAC9C,CAAA;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAW7B,EAAE;IACJ,MAAM,IAAI,GAAG,OAAO,CAAA;IACpB,MAAM,oBAAoB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IACpC,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IAC3B,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IAE9B,2CAA2C;IAC3C,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACxC,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvD,CAAC;IAED,iEAAiE;IACjE,0EAA0E;IAC1E,MAAM,eAAgB,SAAQ,UAAU;QACtC;YACE,KAAK,CAAC;gBACJ,gBAAgB,EAAE,oBAAoB;gBACtC,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,cAAc;aAC3B,CAAC,CAAA;QACJ,CAAC;KACF;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC;KAC9B,CAAC,CAAC,CAAA;IAEH,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IAE1B,OAAO;QACL,UAAU,EAAE,eAAe;QAC3B,oBAAoB;QACpB,WAAW;QACX,cAAc;QACd,OAAO;QACP,UAAU;QAEV;;;;;;;;;;WAUG;QACH,UAAU;YACR,wCAAwC;QAC1C,CAAC;QAED;;WAEG;QACH,UAAU;YACR,oBAAoB,CAAC,SAAS,EAAE,CAAA;YAChC,WAAW,CAAC,SAAS,EAAE,CAAA;YACvB,cAAc,CAAC,SAAS,EAAE,CAAA;YAC1B,OAAO,CAAC,SAAS,EAAE,CAAA;YACnB,UAAU,CAAC,SAAS,EAAE,CAAA;QACxB,CAAC;QAED;;WAEG;QACH,oBAAoB;YAClB,0BAA0B;YAC1B,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;YAC5C,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;YACjC,cAAc,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QAChD,CAAC;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACpC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAChC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAChC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAClC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACjD,uBAAuB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACxD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACpC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAChC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACtC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACrC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACpC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACpC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC7C,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;KAC/E,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"kysely-mocks.js","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kysely-mocks.test.d.ts","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createMockSql, createExpressionBuilder, MockKysely, apiDbMocks, } from './kysely-mocks.js';
|
|
3
|
+
// U1 (m/REQ/49): the shared builder must cover what real API routes use, so
|
|
4
|
+
// consumers can delete their hand-written `vi.mock('kysely', …)`.
|
|
5
|
+
describe('createMockSql (U1)', () => {
|
|
6
|
+
it('is a template tag that captures the text and parameters', () => {
|
|
7
|
+
const sql = createMockSql();
|
|
8
|
+
const fragment = sql `count(*) = ${1} and x`;
|
|
9
|
+
expect(fragment.__sql).toBe('count(*) = ? and x');
|
|
10
|
+
expect(fragment.parameters).toEqual([1]);
|
|
11
|
+
});
|
|
12
|
+
it('exposes raw/ref/val/join/literal used by real code', () => {
|
|
13
|
+
const sql = createMockSql();
|
|
14
|
+
expect(sql.raw('platform_score').__sql).toBe('platform_score');
|
|
15
|
+
expect(sql.ref('usuario.id').__sql).toBe('usuario.id');
|
|
16
|
+
expect(sql.val(42)).toBe(42);
|
|
17
|
+
expect(sql.literal('foo').__sql).toBe('foo');
|
|
18
|
+
expect(sql.join([sql.raw('a'), sql.raw('b')]).__sql).toBe('a b');
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('createExpressionBuilder (U1)', () => {
|
|
22
|
+
it('invokes the subquery callback of eb(col, in, cb)', () => {
|
|
23
|
+
const eb = createExpressionBuilder();
|
|
24
|
+
const seen = [];
|
|
25
|
+
eb('id', 'in', (sub) => {
|
|
26
|
+
seen.push(sub);
|
|
27
|
+
return {};
|
|
28
|
+
});
|
|
29
|
+
expect(seen).toHaveLength(1);
|
|
30
|
+
});
|
|
31
|
+
it('builds and/or/not/exists combinators', () => {
|
|
32
|
+
const eb = createExpressionBuilder();
|
|
33
|
+
expect(eb.or([{ a: 1 }]).__expr).toBe('or');
|
|
34
|
+
expect(eb.and([{ a: 1 }]).__expr).toBe('and');
|
|
35
|
+
expect(eb.not({ a: 1 }).__expr).toBe('not');
|
|
36
|
+
expect(eb.exists((b) => b).__expr).toBe('exists');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('MockKysely builder (U1)', () => {
|
|
40
|
+
it('exercises eb.or inside where, and a subquery as a table', () => {
|
|
41
|
+
const db = new MockKysely();
|
|
42
|
+
const eb = createExpressionBuilder();
|
|
43
|
+
const base = db.selectFrom('usuario').select('id').as('lb');
|
|
44
|
+
const exec = db
|
|
45
|
+
.selectFrom(base)
|
|
46
|
+
.selectAll()
|
|
47
|
+
.where((builder) => builder.or([builder('lb.id', '=', 1), builder('lb.id', '=', 2)]))
|
|
48
|
+
.where(eb.or([eb('a', '=', 1), eb('b', '=', 2)]));
|
|
49
|
+
expect(exec).toBe(db);
|
|
50
|
+
});
|
|
51
|
+
it('accepts where(sql`…`) and having', () => {
|
|
52
|
+
const db = new MockKysely();
|
|
53
|
+
const sql = createMockSql();
|
|
54
|
+
const q = db
|
|
55
|
+
.selectFrom('score')
|
|
56
|
+
.select('usuario_id')
|
|
57
|
+
.groupBy('usuario_id')
|
|
58
|
+
.where(sql `score > 0`)
|
|
59
|
+
.having(sql `count(*) > ${2}`);
|
|
60
|
+
expect(q).toBe(db);
|
|
61
|
+
});
|
|
62
|
+
it('supports fn aggregations by default and via select callbacks', () => {
|
|
63
|
+
const db = new MockKysely();
|
|
64
|
+
expect(db.fn.countAll().as).toBeTypeOf('function');
|
|
65
|
+
expect(db.fn.sum().as).toBeTypeOf('function');
|
|
66
|
+
const q = db.selectFrom('t').select(({ fn }) => [fn.countAll().as('n'), fn.avg('x').as('a')]);
|
|
67
|
+
expect(q).toBe(db);
|
|
68
|
+
});
|
|
69
|
+
it('runs transaction().execute(cb) with a fresh mock', async () => {
|
|
70
|
+
const db = new MockKysely({ execute: () => Promise.resolve([{ ok: true }]) });
|
|
71
|
+
const rows = await db.transaction().execute(async (trx) => trx.execute());
|
|
72
|
+
expect(rows).toEqual([{ ok: true }]);
|
|
73
|
+
});
|
|
74
|
+
it('chains onConflict(...).doNothing()', () => {
|
|
75
|
+
const db = new MockKysely();
|
|
76
|
+
const oc = db.insertInto('t').values({}).onConflict((b) => b.column('id').doNothing());
|
|
77
|
+
expect(oc).toBe(db);
|
|
78
|
+
});
|
|
79
|
+
it('exposes getExecutor().executeQuery through the injected sqlExecute', async () => {
|
|
80
|
+
const sqlExecute = (query) => Promise.resolve({ rows: [query] });
|
|
81
|
+
const db = new MockKysely({ sqlExecute });
|
|
82
|
+
const res = await db.getExecutor().executeQuery({ tag: 'x' });
|
|
83
|
+
expect(res.rows).toEqual([{ tag: 'x' }]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('apiDbMocks (U1)', () => {
|
|
87
|
+
it('exports a wired eb and sql alongside the classic mocks', () => {
|
|
88
|
+
expect(apiDbMocks.mockEb).toBeTypeOf('function');
|
|
89
|
+
expect(apiDbMocks.mockSql.raw).toBeTypeOf('function');
|
|
90
|
+
const db = new apiDbMocks.MockKysely();
|
|
91
|
+
expect(db.selectFrom('x')).toBe(db);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=kysely-mocks.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kysely-mocks.test.js","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pasosdejesus/m",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "Motor para crear y gestionar proyectos al estilo Pasos de Jesus.",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "ISC",
|
|
@@ -48,6 +48,10 @@
|
|
|
48
48
|
"import": "./dist/wba/index.js",
|
|
49
49
|
"types": "./dist/wba/index.d.ts"
|
|
50
50
|
},
|
|
51
|
+
"./base-model": {
|
|
52
|
+
"import": "./dist/base-model/index.js",
|
|
53
|
+
"types": "./dist/base-model/index.d.ts"
|
|
54
|
+
},
|
|
51
55
|
"./wba/routes": {
|
|
52
56
|
"import": "./dist/wba/routes/index.js",
|
|
53
57
|
"types": "./dist/wba/routes/index.d.ts"
|
package/src/e2e/README.md
CHANGED
|
@@ -123,6 +123,30 @@ await setupFullWalletMock(page, { privateKey: process.env.PRIVATE_KEY })
|
|
|
123
123
|
await setupFullWalletMock(page, { privateKey: process.env.PRIVATE_KEY, rpcUrl: process.env.RPC_URL })
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
+
**Mock parity (`m/REQ/49` 14).** Without `rpcUrl`, `eth_getTransactionReceipt` used to return
|
|
127
|
+
`null`, so a spec that sends and awaits confirmation hung. Now `setupFullWalletMock` (and
|
|
128
|
+
`fullWalletMockCode`) accept `fakeReceipt` (`{status, blockNumber, transactionHash, logs}`),
|
|
129
|
+
`fakeCelo`, `fakeCallResult` and `fakeTxHash`:
|
|
130
|
+
|
|
131
|
+
```js
|
|
132
|
+
await setupFullWalletMock(page, {
|
|
133
|
+
privateKey: process.env.PRIVATE_KEY,
|
|
134
|
+
fakeReceipt: { status: '0x1', blockNumber: '0x1312D01', logs: [] },
|
|
135
|
+
})
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### In-app wallet driver (`m/REQ/49` 15)
|
|
139
|
+
|
|
140
|
+
Drives the `m/wallet/next` components by their testids, so consumers do not rewrite selectors:
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
setupInAppWallet(page, { password, mnemonic?, privateKey?, timeoutMs? }): Promise<void>
|
|
144
|
+
unlockInAppWallet(page, { password, timeoutMs? }): Promise<void>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
With `mnemonic`/`privateKey` it switches to import mode; otherwise it creates a new wallet. It
|
|
148
|
+
selects by testid/`type` (not by localized text), so it works with any `lang`.
|
|
149
|
+
|
|
126
150
|
### Local EVM node (`m/REQ/14`)
|
|
127
151
|
|
|
128
152
|
```ts
|
|
@@ -167,6 +191,24 @@ Lessons that cost time here (see also learn.tg's `doc/e2e-testing.md`):
|
|
|
167
191
|
row per spec, one column per log, marking `<-- difiere` when a spec's state changes between
|
|
168
192
|
runs (environmental vs product failure).
|
|
169
193
|
|
|
194
|
+
### Site warmup (`m/REQ/49` P5)
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
warmup(baseUrl, { paths, mode?, filter?, sequentialTimeoutMs?, parallelTimeoutMs?,
|
|
198
|
+
rejectUnauthorized?, slowMs?, logger?, request? }): Promise<WarmupOutcome>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Two passes: compile sequentially (a cold `next dev` dies under parallel load), then verify in
|
|
202
|
+
parallel. Reports routes that stay slow (>`slowMs`, default 15 s) and **does not fail on 4xx**
|
|
203
|
+
(only informs). `mode: 'sequential'` runs a single pass (the learn.tg local case).
|
|
204
|
+
|
|
205
|
+
```sh
|
|
206
|
+
./bin/m warmup [filter] [--sequential] # SITE_URL from env; paths from the consumer
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The route list lives in the consumer: `e2e/warmup-paths.json` (`["/en", "/api/x"]` or
|
|
210
|
+
`{"paths": […]}`) or `package.json:e2e.warmupPaths`.
|
|
211
|
+
|
|
170
212
|
## Environment Variables
|
|
171
213
|
|
|
172
214
|
See [doc/e2e.md](../../../../doc/e2e.md) for full reference.
|
package/src/tasks/README.md
CHANGED
|
@@ -13,6 +13,7 @@ Each file in this directory exports a `runXxx()` function registered in `../m.ts
|
|
|
13
13
|
| File | Commands | Purpose |
|
|
14
14
|
|------|----------|---------|
|
|
15
15
|
| `context.ts` | `ai:context` | Orchestrates the project context document (schema 1): detection, profiles, filters, budget and output |
|
|
16
|
+
| `base-model.ts` | `base-model:dump`, `base-model:verify` | Generates the base-model baseline from a reference and guards its derivation |
|
|
16
17
|
| `context-workspaces.ts` | *(internal)* | Detects project types and workspace roots (`rails`, `nextjs`, `hardhat`, `monorepo`, `node`) |
|
|
17
18
|
| `context-profiles.ts` | *(internal)* | Built-in task profiles plus JSON config loading, merging and validation |
|
|
18
19
|
| `context-ignore.ts` | *(internal)* | Default exclusions, absolute secrets deny list and filter precedence |
|
package/src/test-utils/README.md
CHANGED
|
@@ -284,6 +284,16 @@ beforeEach(() => {
|
|
|
284
284
|
- Mock for `pg.Pool` of PostgreSQL
|
|
285
285
|
- **Lesson learned:** The `sql.val()` method is crucial for queries using template tags
|
|
286
286
|
|
|
287
|
+
**Builder coverage (`m/REQ/49` U1):** `MockKysely`/`apiDbMocks` ahora cubren lo que usan las
|
|
288
|
+
rutas reales, así que puedes **borrar tu `GlobalMockKysely` escrito a mano**:
|
|
289
|
+
- `eb.or`/`eb.and`/`eb.not`/`eb.exists` y el callback `eb('col', 'in', cb => …)`. Si tienes el mock
|
|
290
|
+
de `kysely` a module scope, pásale `eb: apiDbMocks.mockEb` o importa `createExpressionBuilder()`.
|
|
291
|
+
- `where(sql`…`)`, `having`, `groupBy` y subconsulta-como-tabla (`db.selectFrom(base.as('lb'))`).
|
|
292
|
+
- `onConflict(b => b.column('id').doNothing())`, `transaction().execute(cb)` y `getExecutor()`.
|
|
293
|
+
- `fn.countAll/sum/avg/max/min` (`db.select(cb)` recibe `{ fn, eb, sql }`).
|
|
294
|
+
- `mockSql` (de `createMockSql()`) trae `raw`/`ref`/`val`/`literal`/`join`; `apiDbMocks.mockEb`
|
|
295
|
+
expone el `eb`. `GlobalMockKysely` se exporta como alias de `MockKysely`.
|
|
296
|
+
|
|
287
297
|
### 3. `radix-mocks.tsx` – UI Components
|
|
288
298
|
|
|
289
299
|
**Purpose:** Mock Radix UI components for React component tests.
|
|
@@ -377,6 +387,24 @@ viemMocks.createPublicClient.mockReturnValue({ ... })
|
|
|
377
387
|
- Mock chains are extensible; add new chains as needed
|
|
378
388
|
- **Lesson learned:** Some functions like `privateKeyToAccount` and `formatUnits` are necessary for transaction tests
|
|
379
389
|
|
|
390
|
+
### 6. `console.ts` – Silenciar ruido esperado de consola
|
|
391
|
+
|
|
392
|
+
**Purpose:** Ocultar ruido esperado en las pruebas (reintentos, navegaciones canceladas,
|
|
393
|
+
warnings de una dependencia simulada). Graduado de `NOISY_PATTERNS` de learn.tg (`m/REQ/49` U2).
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
import { silenceConsole } from '@pasosdejesus/m/test-utils/console'
|
|
397
|
+
|
|
398
|
+
const silence = silenceConsole(['[retry]', 'AbortError'])
|
|
399
|
+
// … ejercita el código …
|
|
400
|
+
silence.restore()
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
- `silenceConsole(patterns, opts?)`: envuelve `console.log/warn/error` (configurable con
|
|
404
|
+
`opts.methods`) y suprime la llamada cuando algún argumento contiene un patrón; el resto pasa.
|
|
405
|
+
- Los argumentos no-cadena se comparan por su `message` (Error) o `String()`.
|
|
406
|
+
- Devuelve `{ restore(), suppressed }`; `suppressed` guarda los argumentos suprimidos.
|
|
407
|
+
|
|
380
408
|
## Complete Usage Examples
|
|
381
409
|
|
|
382
410
|
### Configuration for API Route Tests
|