@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.
Files changed (124) hide show
  1. package/dist/CHANGELOG.md +59 -0
  2. package/dist/base-model/baseline.generated.d.ts +48 -0
  3. package/dist/base-model/baseline.generated.d.ts.map +1 -0
  4. package/dist/base-model/baseline.generated.js +930 -0
  5. package/dist/base-model/baseline.generated.js.map +1 -0
  6. package/dist/base-model/check.d.ts +6 -0
  7. package/dist/base-model/check.d.ts.map +1 -0
  8. package/dist/base-model/check.js +195 -0
  9. package/dist/base-model/check.js.map +1 -0
  10. package/dist/base-model/generate.d.ts +42 -0
  11. package/dist/base-model/generate.d.ts.map +1 -0
  12. package/dist/base-model/generate.js +241 -0
  13. package/dist/base-model/generate.js.map +1 -0
  14. package/dist/base-model/guidelines.d.ts +13 -0
  15. package/dist/base-model/guidelines.d.ts.map +1 -0
  16. package/dist/base-model/guidelines.js +61 -0
  17. package/dist/base-model/guidelines.js.map +1 -0
  18. package/dist/base-model/index.d.ts +22 -0
  19. package/dist/base-model/index.d.ts.map +1 -0
  20. package/dist/base-model/index.js +26 -0
  21. package/dist/base-model/index.js.map +1 -0
  22. package/dist/base-model/parse-structure.d.ts +4 -0
  23. package/dist/base-model/parse-structure.d.ts.map +1 -0
  24. package/dist/base-model/parse-structure.js +170 -0
  25. package/dist/base-model/parse-structure.js.map +1 -0
  26. package/dist/base-model/queries.d.ts +34 -0
  27. package/dist/base-model/queries.d.ts.map +1 -0
  28. package/dist/base-model/queries.js +118 -0
  29. package/dist/base-model/queries.js.map +1 -0
  30. package/dist/base-model/references/learn-tg.d.ts +21 -0
  31. package/dist/base-model/references/learn-tg.d.ts.map +1 -0
  32. package/dist/base-model/references/learn-tg.js +65 -0
  33. package/dist/base-model/references/learn-tg.js.map +1 -0
  34. package/dist/base-model/references/msip.d.ts +29 -0
  35. package/dist/base-model/references/msip.d.ts.map +1 -0
  36. package/dist/base-model/references/msip.js +33 -0
  37. package/dist/base-model/references/msip.js.map +1 -0
  38. package/dist/base-model/types.d.ts +207 -0
  39. package/dist/base-model/types.d.ts.map +1 -0
  40. package/dist/base-model/types.js +10 -0
  41. package/dist/base-model/types.js.map +1 -0
  42. package/dist/base-model/version.d.ts +19 -0
  43. package/dist/base-model/version.d.ts.map +1 -0
  44. package/dist/base-model/version.js +26 -0
  45. package/dist/base-model/version.js.map +1 -0
  46. package/dist/base-model/wallet-link.d.ts +69 -0
  47. package/dist/base-model/wallet-link.d.ts.map +1 -0
  48. package/dist/base-model/wallet-link.js +220 -0
  49. package/dist/base-model/wallet-link.js.map +1 -0
  50. package/dist/base-model/wallet-link.test.d.ts +2 -0
  51. package/dist/base-model/wallet-link.test.d.ts.map +1 -0
  52. package/dist/base-model/wallet-link.test.js +147 -0
  53. package/dist/base-model/wallet-link.test.js.map +1 -0
  54. package/dist/e2e/full-wallet.d.ts +19 -0
  55. package/dist/e2e/full-wallet.d.ts.map +1 -1
  56. package/dist/e2e/full-wallet.js +12 -4
  57. package/dist/e2e/full-wallet.js.map +1 -1
  58. package/dist/e2e/full-wallet.test.js +26 -0
  59. package/dist/e2e/full-wallet.test.js.map +1 -1
  60. package/dist/e2e/in-app-wallet.d.ts +23 -0
  61. package/dist/e2e/in-app-wallet.d.ts.map +1 -0
  62. package/dist/e2e/in-app-wallet.js +40 -0
  63. package/dist/e2e/in-app-wallet.js.map +1 -0
  64. package/dist/e2e/in-app-wallet.test.d.ts +2 -0
  65. package/dist/e2e/in-app-wallet.test.d.ts.map +1 -0
  66. package/dist/e2e/in-app-wallet.test.js +52 -0
  67. package/dist/e2e/in-app-wallet.test.js.map +1 -0
  68. package/dist/e2e/index.d.ts +5 -1
  69. package/dist/e2e/index.d.ts.map +1 -1
  70. package/dist/e2e/index.js +2 -0
  71. package/dist/e2e/index.js.map +1 -1
  72. package/dist/e2e/warmup.d.ts +38 -0
  73. package/dist/e2e/warmup.d.ts.map +1 -0
  74. package/dist/e2e/warmup.js +84 -0
  75. package/dist/e2e/warmup.js.map +1 -0
  76. package/dist/e2e/warmup.test.d.ts +2 -0
  77. package/dist/e2e/warmup.test.d.ts.map +1 -0
  78. package/dist/e2e/warmup.test.js +67 -0
  79. package/dist/e2e/warmup.test.js.map +1 -0
  80. package/dist/i18n/locales/cli.d.ts.map +1 -1
  81. package/dist/i18n/locales/cli.js +8 -0
  82. package/dist/i18n/locales/cli.js.map +1 -1
  83. package/dist/m.js +13 -1
  84. package/dist/m.js.map +1 -1
  85. package/dist/tasks/base-model.d.ts +4 -0
  86. package/dist/tasks/base-model.d.ts.map +1 -0
  87. package/dist/tasks/base-model.js +260 -0
  88. package/dist/tasks/base-model.js.map +1 -0
  89. package/dist/tasks/db.d.ts.map +1 -1
  90. package/dist/tasks/db.js +27 -0
  91. package/dist/tasks/db.js.map +1 -1
  92. package/dist/tasks/warmup.d.ts +4 -0
  93. package/dist/tasks/warmup.d.ts.map +1 -0
  94. package/dist/tasks/warmup.js +67 -0
  95. package/dist/tasks/warmup.js.map +1 -0
  96. package/dist/tasks/warmup.test.d.ts +2 -0
  97. package/dist/tasks/warmup.test.d.ts.map +1 -0
  98. package/dist/tasks/warmup.test.js +40 -0
  99. package/dist/tasks/warmup.test.js.map +1 -0
  100. package/dist/templates/apps/nextjs/package.json.hbs +1 -1
  101. package/dist/test-utils/console.d.ts +37 -0
  102. package/dist/test-utils/console.d.ts.map +1 -0
  103. package/dist/test-utils/console.js +52 -0
  104. package/dist/test-utils/console.js.map +1 -0
  105. package/dist/test-utils/console.test.d.ts +2 -0
  106. package/dist/test-utils/console.test.d.ts.map +1 -0
  107. package/dist/test-utils/console.test.js +57 -0
  108. package/dist/test-utils/console.test.js.map +1 -0
  109. package/dist/test-utils/index.d.ts +1 -0
  110. package/dist/test-utils/index.d.ts.map +1 -1
  111. package/dist/test-utils/index.js +1 -0
  112. package/dist/test-utils/index.js.map +1 -1
  113. package/dist/test-utils/kysely-mocks.d.ts +163 -33
  114. package/dist/test-utils/kysely-mocks.d.ts.map +1 -1
  115. package/dist/test-utils/kysely-mocks.js +147 -18
  116. package/dist/test-utils/kysely-mocks.js.map +1 -1
  117. package/dist/test-utils/kysely-mocks.test.d.ts +2 -0
  118. package/dist/test-utils/kysely-mocks.test.d.ts.map +1 -0
  119. package/dist/test-utils/kysely-mocks.test.js +94 -0
  120. package/dist/test-utils/kysely-mocks.test.js.map +1 -0
  121. package/package.json +5 -1
  122. package/src/e2e/README.md +42 -0
  123. package/src/tasks/README.md +1 -0
  124. 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
- where() { return this; }
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
- select(...args) { return this; }
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":"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"}
1
+ {"version":3,"file":"kysely-mocks.js","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=kysely-mocks.test.d.ts.map
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAEL,aAAa,EACb,uBAAuB,EACvB,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAA;AAE1B,4EAA4E;AAC5E,kEAAkE;AAElE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,MAAM,QAAQ,GAAQ,GAAG,CAAA,cAAc,CAAC,QAAQ,CAAA;QAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACjD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,MAAM,CAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACvE,MAAM,CAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,CAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrD,MAAM,CAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAA;QACpC,MAAM,IAAI,GAAc,EAAE,CAAA;QAC1B,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAA;QACpC,MAAM,CAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtD,MAAM,CAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpD,MAAM,CAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,EAAE,GAAQ,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAA;QACpC,MAAM,IAAI,GAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAEhE,MAAM,IAAI,GAAQ,EAAE;aACjB,UAAU,CAAC,IAAI,CAAC;aAChB,SAAS,EAAE;aACX,KAAK,CAAC,CAAC,OAAY,EAAE,EAAE,CACtB,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAClE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,GAAQ,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,MAAM,CAAC,GAAQ,EAAE;aACd,UAAU,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;aACpB,OAAO,CAAC,YAAY,CAAC;aACrB,KAAK,CAAC,GAAG,CAAA,WAAW,CAAC;aACrB,MAAM,CAAC,GAAG,CAAA,cAAc,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,EAAE,GAAQ,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,EAAE,GAAQ,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAClF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAC9E,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,GAAQ,IAAI,UAAU,EAAE,CAAA;QAChC,MAAM,EAAE,GAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;QAChG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACrE,MAAM,EAAE,GAAQ,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QACrD,MAAM,EAAE,GAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA;QAC3C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pasosdejesus/m",
3
- "version": "0.25.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.
@@ -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 |
@@ -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