sqlew 4.0.2 → 4.0.4
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/CHANGELOG.md +79 -0
- package/README.md +17 -105
- package/assets/claude-md-snippets/plan-mode-integration.md +13 -0
- package/assets/config.example.toml +16 -0
- package/assets/sample-agents/sqlew-architect.md +1 -0
- package/assets/sample-agents/sqlew-researcher.md +1 -0
- package/assets/sample-agents/sqlew-scrum-master.md +1 -0
- package/assets/sample-commands/sqlew.md +144 -0
- package/assets/sample-skills/sqlew-plan-guidance/SKILL.md +55 -0
- package/dist/config/minimal-generator.d.ts.map +1 -1
- package/dist/config/minimal-generator.js +72 -91
- package/dist/config/minimal-generator.js.map +1 -1
- package/dist/config/types.d.ts +2 -12
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -6
- package/dist/config/types.js.map +1 -1
- package/dist/init-commands.d.ts +5 -2
- package/dist/init-commands.d.ts.map +1 -1
- package/dist/init-commands.js +36 -175
- package/dist/init-commands.js.map +1 -1
- package/dist/init-skills.d.ts +19 -0
- package/dist/init-skills.d.ts.map +1 -0
- package/dist/init-skills.js +104 -0
- package/dist/init-skills.js.map +1 -0
- package/dist/server/setup.d.ts.map +1 -1
- package/dist/server/setup.js +9 -0
- package/dist/server/setup.js.map +1 -1
- package/dist/sync-commands.d.ts.map +1 -1
- package/dist/sync-commands.js +2 -7
- package/dist/sync-commands.js.map +1 -1
- package/dist/tests/unit/case-insensitive-validator.test.d.ts +14 -0
- package/dist/tests/unit/case-insensitive-validator.test.d.ts.map +1 -0
- package/dist/tests/unit/case-insensitive-validator.test.js +390 -0
- package/dist/tests/unit/case-insensitive-validator.test.js.map +1 -0
- package/dist/tools/tasks/actions/get.d.ts.map +1 -1
- package/dist/tools/tasks/actions/get.js +1 -4
- package/dist/tools/tasks/actions/get.js.map +1 -1
- package/dist/tools/tasks/internal/task-queries.d.ts.map +1 -1
- package/dist/tools/tasks/internal/task-queries.js +2 -8
- package/dist/tools/tasks/internal/task-queries.js.map +1 -1
- package/docs/SLASH_COMMANDS.md +192 -478
- package/docs/SPECIALIZED_AGENTS.md +81 -43
- package/package.json +1 -1
- package/assets/sample-commands/sqw-documentor.md +0 -204
- package/assets/sample-commands/sqw-plan.md +0 -348
- package/assets/sample-commands/sqw-research.md +0 -359
- package/assets/sample-commands/sqw-review.md +0 -377
- package/assets/sample-commands/sqw-scrum.md +0 -457
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit Tests for Case-Insensitive Validator Utility
|
|
3
|
+
*
|
|
4
|
+
* Tests all normalization and duplicate detection functions:
|
|
5
|
+
* - normalizeIdentifier()
|
|
6
|
+
* - checkNormalizedDuplicate()
|
|
7
|
+
* - validateNoNormalizedDuplicate()
|
|
8
|
+
* - findNormalizedMatch()
|
|
9
|
+
*
|
|
10
|
+
* @see src/utils/case-insensitive-validator.ts
|
|
11
|
+
* @since v4.0.2
|
|
12
|
+
*/
|
|
13
|
+
import { describe, it, before, after } from 'node:test';
|
|
14
|
+
import assert from 'node:assert';
|
|
15
|
+
import knex from 'knex';
|
|
16
|
+
import { normalizeIdentifier, checkNormalizedDuplicate, validateNoNormalizedDuplicate, findNormalizedMatch } from '../../utils/case-insensitive-validator.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Test Suite: normalizeIdentifier()
|
|
19
|
+
// ============================================================================
|
|
20
|
+
describe('normalizeIdentifier()', () => {
|
|
21
|
+
it('should convert to lowercase', () => {
|
|
22
|
+
assert.strictEqual(normalizeIdentifier('DRY'), 'dry');
|
|
23
|
+
assert.strictEqual(normalizeIdentifier('API'), 'api');
|
|
24
|
+
assert.strictEqual(normalizeIdentifier('SOLID'), 'solid');
|
|
25
|
+
});
|
|
26
|
+
it('should handle kebab-case', () => {
|
|
27
|
+
assert.strictEqual(normalizeIdentifier('api-design'), 'apidesign');
|
|
28
|
+
assert.strictEqual(normalizeIdentifier('test-case-name'), 'testcasename');
|
|
29
|
+
assert.strictEqual(normalizeIdentifier('dry-principle'), 'dryprinciple');
|
|
30
|
+
});
|
|
31
|
+
it('should handle snake_case', () => {
|
|
32
|
+
assert.strictEqual(normalizeIdentifier('api_design'), 'apidesign');
|
|
33
|
+
assert.strictEqual(normalizeIdentifier('test_case_name'), 'testcasename');
|
|
34
|
+
assert.strictEqual(normalizeIdentifier('dry_principle'), 'dryprinciple');
|
|
35
|
+
});
|
|
36
|
+
it('should handle camelCase', () => {
|
|
37
|
+
assert.strictEqual(normalizeIdentifier('apiDesign'), 'apidesign');
|
|
38
|
+
assert.strictEqual(normalizeIdentifier('testCaseName'), 'testcasename');
|
|
39
|
+
assert.strictEqual(normalizeIdentifier('dryPrinciple'), 'dryprinciple');
|
|
40
|
+
});
|
|
41
|
+
it('should handle PascalCase', () => {
|
|
42
|
+
assert.strictEqual(normalizeIdentifier('ApiDesign'), 'apidesign');
|
|
43
|
+
assert.strictEqual(normalizeIdentifier('TestCaseName'), 'testcasename');
|
|
44
|
+
assert.strictEqual(normalizeIdentifier('DryPrinciple'), 'dryprinciple');
|
|
45
|
+
});
|
|
46
|
+
it('should handle mixed formats', () => {
|
|
47
|
+
assert.strictEqual(normalizeIdentifier('API-Design_Test'), 'apidesigntest');
|
|
48
|
+
assert.strictEqual(normalizeIdentifier('test_Case-Name'), 'testcasename');
|
|
49
|
+
assert.strictEqual(normalizeIdentifier('DRY_Principle-Test'), 'dryprincipletest');
|
|
50
|
+
});
|
|
51
|
+
it('should remove spaces', () => {
|
|
52
|
+
assert.strictEqual(normalizeIdentifier('api design'), 'apidesign');
|
|
53
|
+
assert.strictEqual(normalizeIdentifier('test case name'), 'testcasename');
|
|
54
|
+
assert.strictEqual(normalizeIdentifier('dry principle'), 'dryprinciple');
|
|
55
|
+
});
|
|
56
|
+
it('should handle all normalization at once', () => {
|
|
57
|
+
// Test: "API-Design_Test Case" → "apidesigntestcase"
|
|
58
|
+
// - Uppercase → lowercase
|
|
59
|
+
// - Hyphens removed
|
|
60
|
+
// - Underscores removed
|
|
61
|
+
// - Spaces removed
|
|
62
|
+
assert.strictEqual(normalizeIdentifier('API-Design_Test Case'), 'apidesigntestcase');
|
|
63
|
+
});
|
|
64
|
+
it('should be consistent for equivalent values', () => {
|
|
65
|
+
const variants = [
|
|
66
|
+
'apiDesign',
|
|
67
|
+
'api-design',
|
|
68
|
+
'api_design',
|
|
69
|
+
'API_DESIGN',
|
|
70
|
+
'API-DESIGN',
|
|
71
|
+
'ApiDesign',
|
|
72
|
+
'api design'
|
|
73
|
+
];
|
|
74
|
+
const normalized = variants.map(normalizeIdentifier);
|
|
75
|
+
const expected = 'apidesign';
|
|
76
|
+
// All should normalize to the same value
|
|
77
|
+
normalized.forEach((value, index) => {
|
|
78
|
+
assert.strictEqual(value, expected, `"${variants[index]}" should normalize to "${expected}"`);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// Test Suite: checkNormalizedDuplicate()
|
|
84
|
+
// ============================================================================
|
|
85
|
+
describe('checkNormalizedDuplicate()', () => {
|
|
86
|
+
let db;
|
|
87
|
+
before(async () => {
|
|
88
|
+
// Setup in-memory SQLite database
|
|
89
|
+
db = knex({
|
|
90
|
+
client: 'better-sqlite3',
|
|
91
|
+
connection: ':memory:',
|
|
92
|
+
useNullAsDefault: true
|
|
93
|
+
});
|
|
94
|
+
// Create test table
|
|
95
|
+
await db.schema.createTable('test_tags', (table) => {
|
|
96
|
+
table.increments('id').primary();
|
|
97
|
+
table.integer('project_id').notNullable();
|
|
98
|
+
table.string('name', 255).notNullable();
|
|
99
|
+
});
|
|
100
|
+
// Insert test data
|
|
101
|
+
await db('test_tags').insert([
|
|
102
|
+
{ project_id: 1, name: 'DRY' },
|
|
103
|
+
{ project_id: 1, name: 'api-design' },
|
|
104
|
+
{ project_id: 1, name: 'testCase' },
|
|
105
|
+
{ project_id: 2, name: 'SOLID' }, // Different project
|
|
106
|
+
{ project_id: 2, name: 'API_DESIGN' } // Different project
|
|
107
|
+
]);
|
|
108
|
+
});
|
|
109
|
+
after(async () => {
|
|
110
|
+
await db.destroy();
|
|
111
|
+
});
|
|
112
|
+
it('should return no duplicate for non-existing value', async () => {
|
|
113
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'new-tag', { project_id: 1 });
|
|
114
|
+
assert.strictEqual(result.isDuplicate, false);
|
|
115
|
+
assert.strictEqual(result.existingValue, undefined);
|
|
116
|
+
assert.strictEqual(result.existingId, undefined);
|
|
117
|
+
assert.strictEqual(result.matchType, undefined);
|
|
118
|
+
});
|
|
119
|
+
it('should return no duplicate for exact match (same value)', async () => {
|
|
120
|
+
// Exact match should NOT be considered a duplicate
|
|
121
|
+
// (e.g., updating existing record with same name)
|
|
122
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'DRY', { project_id: 1 });
|
|
123
|
+
assert.strictEqual(result.isDuplicate, false, 'Exact match should not be duplicate');
|
|
124
|
+
});
|
|
125
|
+
it('should detect case-only difference (matchType: case)', async () => {
|
|
126
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'dry', // lowercase vs uppercase "DRY"
|
|
127
|
+
{ project_id: 1 });
|
|
128
|
+
assert.strictEqual(result.isDuplicate, true);
|
|
129
|
+
assert.strictEqual(result.existingValue, 'DRY');
|
|
130
|
+
assert.strictEqual(result.matchType, 'case');
|
|
131
|
+
assert.strictEqual(typeof result.existingId, 'number');
|
|
132
|
+
});
|
|
133
|
+
it('should detect naming convention difference (matchType: naming-convention)', async () => {
|
|
134
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'api_design', // snake_case vs kebab-case "api-design"
|
|
135
|
+
{ project_id: 1 });
|
|
136
|
+
assert.strictEqual(result.isDuplicate, true);
|
|
137
|
+
assert.strictEqual(result.existingValue, 'api-design');
|
|
138
|
+
assert.strictEqual(result.matchType, 'naming-convention');
|
|
139
|
+
assert.strictEqual(typeof result.existingId, 'number');
|
|
140
|
+
});
|
|
141
|
+
it('should detect camelCase vs kebab-case difference', async () => {
|
|
142
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'test-case', // kebab-case vs camelCase "testCase"
|
|
143
|
+
{ project_id: 1 });
|
|
144
|
+
assert.strictEqual(result.isDuplicate, true);
|
|
145
|
+
assert.strictEqual(result.existingValue, 'testCase');
|
|
146
|
+
assert.strictEqual(result.matchType, 'naming-convention');
|
|
147
|
+
});
|
|
148
|
+
it('should respect additionalWhere conditions (project isolation)', async () => {
|
|
149
|
+
// "SOLID" exists in project_id: 2, should not conflict with project_id: 1
|
|
150
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'solid', // lowercase vs "SOLID" in different project
|
|
151
|
+
{ project_id: 1 });
|
|
152
|
+
assert.strictEqual(result.isDuplicate, false);
|
|
153
|
+
});
|
|
154
|
+
it('should detect duplicate in same project only', async () => {
|
|
155
|
+
// "SOLID" exists in project_id: 2
|
|
156
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'solid', { project_id: 2 });
|
|
157
|
+
assert.strictEqual(result.isDuplicate, true);
|
|
158
|
+
assert.strictEqual(result.existingValue, 'SOLID');
|
|
159
|
+
assert.strictEqual(result.matchType, 'case');
|
|
160
|
+
});
|
|
161
|
+
it('should work without additionalWhere (global check)', async () => {
|
|
162
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'dry' // Should find "DRY" in project_id: 1
|
|
163
|
+
);
|
|
164
|
+
assert.strictEqual(result.isDuplicate, true);
|
|
165
|
+
assert.strictEqual(result.existingValue, 'DRY');
|
|
166
|
+
});
|
|
167
|
+
it('should handle complex naming variations', async () => {
|
|
168
|
+
// "api-design" exists in project_id: 1
|
|
169
|
+
const variants = ['apiDesign', 'API_DESIGN', 'api_design', 'ApiDesign'];
|
|
170
|
+
for (const variant of variants) {
|
|
171
|
+
const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', variant, { project_id: 1 });
|
|
172
|
+
assert.strictEqual(result.isDuplicate, true, `"${variant}" should be detected as duplicate of "api-design"`);
|
|
173
|
+
assert.strictEqual(result.existingValue, 'api-design');
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
// ============================================================================
|
|
178
|
+
// Test Suite: validateNoNormalizedDuplicate()
|
|
179
|
+
// ============================================================================
|
|
180
|
+
describe('validateNoNormalizedDuplicate()', () => {
|
|
181
|
+
let db;
|
|
182
|
+
before(async () => {
|
|
183
|
+
db = knex({
|
|
184
|
+
client: 'better-sqlite3',
|
|
185
|
+
connection: ':memory:',
|
|
186
|
+
useNullAsDefault: true
|
|
187
|
+
});
|
|
188
|
+
await db.schema.createTable('test_scopes', (table) => {
|
|
189
|
+
table.increments('id').primary();
|
|
190
|
+
table.integer('project_id').notNullable();
|
|
191
|
+
table.string('name', 255).notNullable();
|
|
192
|
+
});
|
|
193
|
+
await db('test_scopes').insert([
|
|
194
|
+
{ project_id: 1, name: 'database' },
|
|
195
|
+
{ project_id: 1, name: 'API-Gateway' }
|
|
196
|
+
]);
|
|
197
|
+
});
|
|
198
|
+
after(async () => {
|
|
199
|
+
await db.destroy();
|
|
200
|
+
});
|
|
201
|
+
it('should not throw for non-duplicate value', async () => {
|
|
202
|
+
await assert.doesNotReject(async () => {
|
|
203
|
+
await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'new-scope', 'scope', { project_id: 1 });
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
it('should throw for case-only duplicate', async () => {
|
|
207
|
+
await assert.rejects(async () => {
|
|
208
|
+
await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'Database', // vs "database"
|
|
209
|
+
'scope', { project_id: 1 });
|
|
210
|
+
}, {
|
|
211
|
+
name: 'Error',
|
|
212
|
+
message: /Scope "database" already exists \(case-insensitive match with "Database"\)/
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
it('should throw for naming convention duplicate', async () => {
|
|
216
|
+
await assert.rejects(async () => {
|
|
217
|
+
await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'api_gateway', // vs "API-Gateway"
|
|
218
|
+
'scope', { project_id: 1 });
|
|
219
|
+
}, {
|
|
220
|
+
name: 'Error',
|
|
221
|
+
message: /Scope "API-Gateway" already exists \(naming conflict with "api_gateway"\)/
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
it('should include entity type in error message (capitalized)', async () => {
|
|
225
|
+
await assert.rejects(async () => {
|
|
226
|
+
await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'DATABASE', 'policy', // Different entity type
|
|
227
|
+
{ project_id: 1 });
|
|
228
|
+
}, {
|
|
229
|
+
name: 'Error',
|
|
230
|
+
message: /Policy "database" already exists/
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
it('should respect project isolation', async () => {
|
|
234
|
+
// "database" exists in project_id: 1, but we're checking project_id: 2
|
|
235
|
+
await assert.doesNotReject(async () => {
|
|
236
|
+
await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'DATABASE', 'scope', { project_id: 2 });
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
it('should work without additionalWhere', async () => {
|
|
240
|
+
await assert.rejects(async () => {
|
|
241
|
+
await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'DATABASE', 'scope');
|
|
242
|
+
}, {
|
|
243
|
+
name: 'Error',
|
|
244
|
+
message: /Scope "database" already exists/
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
// ============================================================================
|
|
249
|
+
// Test Suite: findNormalizedMatch()
|
|
250
|
+
// ============================================================================
|
|
251
|
+
describe('findNormalizedMatch()', () => {
|
|
252
|
+
let db;
|
|
253
|
+
before(async () => {
|
|
254
|
+
db = knex({
|
|
255
|
+
client: 'better-sqlite3',
|
|
256
|
+
connection: ':memory:',
|
|
257
|
+
useNullAsDefault: true
|
|
258
|
+
});
|
|
259
|
+
await db.schema.createTable('test_layers', (table) => {
|
|
260
|
+
table.increments('id').primary();
|
|
261
|
+
table.integer('project_id').notNullable();
|
|
262
|
+
table.string('name', 255).notNullable();
|
|
263
|
+
});
|
|
264
|
+
await db('test_layers').insert([
|
|
265
|
+
{ project_id: 1, name: 'presentation' },
|
|
266
|
+
{ project_id: 1, name: 'Business-Layer' },
|
|
267
|
+
{ project_id: 2, name: 'dataLayer' }
|
|
268
|
+
]);
|
|
269
|
+
});
|
|
270
|
+
after(async () => {
|
|
271
|
+
await db.destroy();
|
|
272
|
+
});
|
|
273
|
+
it('should find exact match', async () => {
|
|
274
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'presentation', { project_id: 1 });
|
|
275
|
+
assert.notStrictEqual(result, null);
|
|
276
|
+
assert.strictEqual(result.name, 'presentation');
|
|
277
|
+
assert.strictEqual(result.project_id, 1);
|
|
278
|
+
});
|
|
279
|
+
it('should find case-insensitive match', async () => {
|
|
280
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'PRESENTATION', // vs "presentation"
|
|
281
|
+
{ project_id: 1 });
|
|
282
|
+
assert.notStrictEqual(result, null);
|
|
283
|
+
assert.strictEqual(result.name, 'presentation');
|
|
284
|
+
});
|
|
285
|
+
it('should find naming convention match', async () => {
|
|
286
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'business_layer', // vs "Business-Layer"
|
|
287
|
+
{ project_id: 1 });
|
|
288
|
+
assert.notStrictEqual(result, null);
|
|
289
|
+
assert.strictEqual(result.name, 'Business-Layer');
|
|
290
|
+
});
|
|
291
|
+
it('should find camelCase match', async () => {
|
|
292
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'data-layer', // vs "dataLayer"
|
|
293
|
+
{ project_id: 2 });
|
|
294
|
+
assert.notStrictEqual(result, null);
|
|
295
|
+
assert.strictEqual(result.name, 'dataLayer');
|
|
296
|
+
assert.strictEqual(result.project_id, 2);
|
|
297
|
+
});
|
|
298
|
+
it('should return null for non-existing value', async () => {
|
|
299
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'non-existing', { project_id: 1 });
|
|
300
|
+
assert.strictEqual(result, null);
|
|
301
|
+
});
|
|
302
|
+
it('should respect project isolation', async () => {
|
|
303
|
+
// "dataLayer" exists in project_id: 2, but not in project_id: 1
|
|
304
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'dataLayer', { project_id: 1 });
|
|
305
|
+
assert.strictEqual(result, null);
|
|
306
|
+
});
|
|
307
|
+
it('should work without additionalWhere (global search)', async () => {
|
|
308
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'PRESENTATION');
|
|
309
|
+
assert.notStrictEqual(result, null);
|
|
310
|
+
assert.strictEqual(result.name, 'presentation');
|
|
311
|
+
});
|
|
312
|
+
it('should return complete record with all fields', async () => {
|
|
313
|
+
const result = await findNormalizedMatch(db, 'test_layers', 'name', 'business-layer', { project_id: 1 });
|
|
314
|
+
assert.notStrictEqual(result, null);
|
|
315
|
+
assert.strictEqual(typeof result.id, 'number');
|
|
316
|
+
assert.strictEqual(result.project_id, 1);
|
|
317
|
+
assert.strictEqual(result.name, 'Business-Layer');
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
// ============================================================================
|
|
321
|
+
// Integration Tests: Real-world scenarios
|
|
322
|
+
// ============================================================================
|
|
323
|
+
describe('Integration: Real-world scenarios', () => {
|
|
324
|
+
let db;
|
|
325
|
+
before(async () => {
|
|
326
|
+
db = knex({
|
|
327
|
+
client: 'better-sqlite3',
|
|
328
|
+
connection: ':memory:',
|
|
329
|
+
useNullAsDefault: true
|
|
330
|
+
});
|
|
331
|
+
await db.schema.createTable('test_policies', (table) => {
|
|
332
|
+
table.increments('id').primary();
|
|
333
|
+
table.integer('project_id').notNullable();
|
|
334
|
+
table.string('name', 255).notNullable();
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
after(async () => {
|
|
338
|
+
await db.destroy();
|
|
339
|
+
});
|
|
340
|
+
it('should prevent duplicate policy creation with different formats', async () => {
|
|
341
|
+
// Create initial policy
|
|
342
|
+
await db('test_policies').insert({
|
|
343
|
+
project_id: 1,
|
|
344
|
+
name: 'api-design-pattern'
|
|
345
|
+
});
|
|
346
|
+
// Try to create duplicates with different formats
|
|
347
|
+
const duplicateVariants = [
|
|
348
|
+
'apiDesignPattern',
|
|
349
|
+
'API_DESIGN_PATTERN',
|
|
350
|
+
'api_design_pattern',
|
|
351
|
+
'ApiDesignPattern'
|
|
352
|
+
];
|
|
353
|
+
for (const variant of duplicateVariants) {
|
|
354
|
+
await assert.rejects(async () => {
|
|
355
|
+
await validateNoNormalizedDuplicate(db, 'test_policies', 'name', variant, 'policy', { project_id: 1 });
|
|
356
|
+
}, {
|
|
357
|
+
name: 'Error',
|
|
358
|
+
message: /Policy "api-design-pattern" already exists/
|
|
359
|
+
}, `Should reject duplicate: ${variant}`);
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
it('should allow same name in different projects', async () => {
|
|
363
|
+
// Policy exists in project_id: 1
|
|
364
|
+
await assert.doesNotReject(async () => {
|
|
365
|
+
await validateNoNormalizedDuplicate(db, 'test_policies', 'name', 'apiDesignPattern', // Same normalized value, different project
|
|
366
|
+
'policy', { project_id: 2 });
|
|
367
|
+
});
|
|
368
|
+
// Insert should succeed
|
|
369
|
+
await db('test_policies').insert({
|
|
370
|
+
project_id: 2,
|
|
371
|
+
name: 'apiDesignPattern'
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
it('should find existing record regardless of format', async () => {
|
|
375
|
+
// Original: "api-design-pattern" in project_id: 1
|
|
376
|
+
const searchVariants = [
|
|
377
|
+
'api-design-pattern',
|
|
378
|
+
'apiDesignPattern',
|
|
379
|
+
'API_DESIGN_PATTERN',
|
|
380
|
+
'api_design_pattern'
|
|
381
|
+
];
|
|
382
|
+
for (const variant of searchVariants) {
|
|
383
|
+
const result = await findNormalizedMatch(db, 'test_policies', 'name', variant, { project_id: 1 });
|
|
384
|
+
assert.notStrictEqual(result, null, `Should find match for: ${variant}`);
|
|
385
|
+
assert.strictEqual(result.name, 'api-design-pattern');
|
|
386
|
+
assert.strictEqual(result.project_id, 1);
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
//# sourceMappingURL=case-insensitive-validator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-insensitive-validator.test.js","sourceRoot":"","sources":["../../../src/tests/unit/case-insensitive-validator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7D;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7D;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CA+F1C"}
|
|
@@ -23,10 +23,7 @@ export async function getTask(params, adapter) {
|
|
|
23
23
|
const task = await knex('v4_tasks as t')
|
|
24
24
|
.leftJoin('v4_task_statuses as s', 't.status_id', 's.id')
|
|
25
25
|
.leftJoin('v4_layers as l', 't.layer_id', 'l.id')
|
|
26
|
-
.leftJoin('v4_task_details as td',
|
|
27
|
-
this.on('t.id', '=', 'td.task_id')
|
|
28
|
-
.andOn('t.project_id', '=', 'td.project_id');
|
|
29
|
-
})
|
|
26
|
+
.leftJoin('v4_task_details as td', 't.id', 'td.task_id')
|
|
30
27
|
.where({ 't.id': params.task_id, 't.project_id': projectId })
|
|
31
28
|
.select('t.id', 't.title', 's.name as status', 't.priority', 'l.name as layer', 't.created_ts', 't.updated_ts', 't.completed_ts', 'td.description', 'td.acceptance_criteria', 'td.notes')
|
|
32
29
|
.first();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAG7B,EAAE,OAAyB;IAC1B,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;IAErC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,oDAAoD;QACpD,mFAAmF;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;aACrC,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;aACxD,QAAQ,CAAC,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC;aAChD,QAAQ,CAAC,uBAAuB,EAAE
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-queries.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"task-queries.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAoD/C"}
|
|
@@ -34,10 +34,7 @@ export async function queryTaskDependencies(adapter, taskId, includeDetails = fa
|
|
|
34
34
|
.select(selectFields);
|
|
35
35
|
if (includeDetails) {
|
|
36
36
|
blockersQuery = blockersQuery
|
|
37
|
-
.leftJoin('v4_task_details as td',
|
|
38
|
-
this.on('t.id', '=', 'td.task_id')
|
|
39
|
-
.andOn('t.project_id', '=', 'td.project_id');
|
|
40
|
-
});
|
|
37
|
+
.leftJoin('v4_task_details as td', 't.id', 'td.task_id');
|
|
41
38
|
}
|
|
42
39
|
const blockers = await blockersQuery;
|
|
43
40
|
// Get blocking (tasks this task blocks) - with project_id isolation
|
|
@@ -48,10 +45,7 @@ export async function queryTaskDependencies(adapter, taskId, includeDetails = fa
|
|
|
48
45
|
.select(selectFields);
|
|
49
46
|
if (includeDetails) {
|
|
50
47
|
blockingQuery = blockingQuery
|
|
51
|
-
.leftJoin('v4_task_details as td',
|
|
52
|
-
this.on('t.id', '=', 'td.task_id')
|
|
53
|
-
.andOn('t.project_id', '=', 'td.project_id');
|
|
54
|
-
});
|
|
48
|
+
.leftJoin('v4_task_details as td', 't.id', 'td.task_id');
|
|
55
49
|
}
|
|
56
50
|
const blocking = await blockingQuery;
|
|
57
51
|
return { blockers, blocking };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-queries.js","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAwB,EACxB,MAAc,EACd,iBAA0B,KAAK;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;IAErD,4CAA4C;IAC5C,mEAAmE;IACnE,MAAM,YAAY,GAAG,cAAc;QACjC,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;YACZ,cAAc;YACd,cAAc;YACd,gBAAgB;SACjB;QACH,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;SACb,CAAC;IAEN,wEAAwE;IACxE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE
|
|
1
|
+
{"version":3,"file":"task-queries.js","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAwB,EACxB,MAAc,EACd,iBAA0B,KAAK;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;IAErD,4CAA4C;IAC5C,mEAAmE;IACnE,MAAM,YAAY,GAAG,cAAc;QACjC,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;YACZ,cAAc;YACd,cAAc;YACd,gBAAgB;SACjB;QACH,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;SACb,CAAC;IAEN,wEAAwE;IACxE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;IAErC,oEAAoE;IACpE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;IAErC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
|