@closedloop-ai/cli 0.2.3 → 0.2.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.
Files changed (36) hide show
  1. package/README.md +61 -47
  2. package/docs/CLI_COMMANDS.md +78 -64
  3. package/package.json +1 -1
  4. package/packages/cli/dist/__tests__/api.test.js +151 -0
  5. package/packages/cli/dist/__tests__/api.test.js.map +1 -0
  6. package/packages/cli/dist/__tests__/errors.test.js +1 -1
  7. package/packages/cli/dist/__tests__/errors.test.js.map +1 -1
  8. package/packages/cli/dist/__tests__/performance.test.js +221 -0
  9. package/packages/cli/dist/__tests__/performance.test.js.map +1 -0
  10. package/packages/cli/dist/__tests__/setup.js +37 -7
  11. package/packages/cli/dist/__tests__/setup.js.map +1 -1
  12. package/packages/cli/dist/__tests__/team-simple.test.js +38 -0
  13. package/packages/cli/dist/__tests__/team-simple.test.js.map +1 -0
  14. package/packages/cli/dist/__tests__/test-factories.js +148 -0
  15. package/packages/cli/dist/__tests__/test-factories.js.map +1 -0
  16. package/packages/cli/dist/__tests__/validation.test.js +1 -1
  17. package/packages/cli/dist/api/feedback.js +2 -2
  18. package/packages/cli/dist/api/feedback.js.map +1 -1
  19. package/packages/cli/dist/api/ingest.js +60 -0
  20. package/packages/cli/dist/api/ingest.js.map +1 -0
  21. package/packages/cli/dist/api/team.js +14 -0
  22. package/packages/cli/dist/api/team.js.map +1 -1
  23. package/packages/cli/dist/cli.js +64 -26
  24. package/packages/cli/dist/cli.js.map +1 -1
  25. package/packages/cli/dist/commands/config.js +1 -1
  26. package/packages/cli/dist/commands/config.js.map +1 -1
  27. package/packages/cli/dist/commands/feedback.js +23 -23
  28. package/packages/cli/dist/commands/feedback.js.map +1 -1
  29. package/packages/cli/dist/commands/ingest.js +391 -0
  30. package/packages/cli/dist/commands/ingest.js.map +1 -0
  31. package/packages/cli/dist/commands/insight.js +234 -0
  32. package/packages/cli/dist/commands/insight.js.map +1 -0
  33. package/packages/cli/dist/commands/team.js +58 -20
  34. package/packages/cli/dist/commands/team.js.map +1 -1
  35. package/packages/cli/dist/config/constants.js +4 -3
  36. package/packages/cli/dist/config/constants.js.map +1 -1
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const axios_1 = __importDefault(require("axios"));
7
+ const team_1 = require("../api/team");
8
+ // Mock axios
9
+ jest.mock('axios');
10
+ const mockedAxios = axios_1.default;
11
+ // Mock config
12
+ jest.mock('../config', () => ({
13
+ config: {
14
+ get: jest.fn().mockReturnValue('test-api-key')
15
+ }
16
+ }));
17
+ // Mock constants
18
+ jest.mock('../config/constants', () => ({
19
+ CONFIG: {
20
+ API_BASE_URL: 'https://mcp.closedloop.sh'
21
+ }
22
+ }));
23
+ describe('API Client Integration Tests', () => {
24
+ beforeEach(() => {
25
+ jest.clearAllMocks();
26
+ mockedAxios.create.mockReturnValue(mockedAxios);
27
+ });
28
+ describe('getTeamWebsite', () => {
29
+ it('should make GET request to correct endpoint', async () => {
30
+ const mockResponse = {
31
+ data: {
32
+ success: true,
33
+ data: {
34
+ website: 'https://example.com',
35
+ updated_at: '2024-01-15T10:30:00Z'
36
+ }
37
+ }
38
+ };
39
+ mockedAxios.get.mockResolvedValue(mockResponse);
40
+ const result = await (0, team_1.getTeamWebsite)();
41
+ expect(mockedAxios.create).toHaveBeenCalledWith({
42
+ baseURL: 'https://mcp.closedloop.sh',
43
+ headers: {
44
+ 'Authorization': 'Bearer test-api-key',
45
+ 'Content-Type': 'application/json',
46
+ },
47
+ timeout: 30000,
48
+ });
49
+ expect(mockedAxios.get).toHaveBeenCalledWith('/team/website');
50
+ expect(result).toEqual({
51
+ website: 'https://example.com',
52
+ updated_at: '2024-01-15T10:30:00Z'
53
+ });
54
+ });
55
+ it('should handle API error responses', async () => {
56
+ const mockError = {
57
+ response: {
58
+ status: 404,
59
+ data: { message: 'Team not found' }
60
+ }
61
+ };
62
+ mockedAxios.get.mockRejectedValue(mockError);
63
+ await expect((0, team_1.getTeamWebsite)()).rejects.toThrow('Resource not found');
64
+ });
65
+ it('should handle network errors', async () => {
66
+ const mockError = {
67
+ code: 'ENOTFOUND',
68
+ message: 'Network error'
69
+ };
70
+ mockedAxios.get.mockRejectedValue(mockError);
71
+ await expect((0, team_1.getTeamWebsite)()).rejects.toThrow('Cannot connect to ClosedLoop AI servers');
72
+ });
73
+ });
74
+ describe('updateTeamWebsite', () => {
75
+ it('should make POST request with correct data', async () => {
76
+ const mockResponse = {
77
+ data: {
78
+ success: true,
79
+ data: {
80
+ website: 'https://example.com',
81
+ updated_at: '2024-01-15T10:30:00Z'
82
+ }
83
+ }
84
+ };
85
+ mockedAxios.post.mockResolvedValue(mockResponse);
86
+ const result = await (0, team_1.updateTeamWebsite)('https://example.com');
87
+ expect(mockedAxios.post).toHaveBeenCalledWith('/team/website', {
88
+ website: 'https://example.com'
89
+ });
90
+ expect(result).toEqual({
91
+ website: 'https://example.com',
92
+ updated_at: '2024-01-15T10:30:00Z'
93
+ });
94
+ });
95
+ it('should validate URL format before making request', async () => {
96
+ await expect((0, team_1.updateTeamWebsite)('invalid-url')).rejects.toThrow('Invalid website URL format');
97
+ expect(mockedAxios.post).not.toHaveBeenCalled();
98
+ });
99
+ it('should handle API error responses', async () => {
100
+ const mockError = {
101
+ response: {
102
+ status: 500,
103
+ data: { message: 'Internal server error' }
104
+ }
105
+ };
106
+ mockedAxios.post.mockRejectedValue(mockError);
107
+ await expect((0, team_1.updateTeamWebsite)('https://example.com')).rejects.toThrow('Server error');
108
+ });
109
+ it('should handle unsuccessful API responses', async () => {
110
+ const mockResponse = {
111
+ data: {
112
+ success: false,
113
+ message: 'Update failed'
114
+ }
115
+ };
116
+ mockedAxios.post.mockResolvedValue(mockResponse);
117
+ await expect((0, team_1.updateTeamWebsite)('https://example.com')).rejects.toThrow('Failed to update team website');
118
+ });
119
+ });
120
+ describe('Error Handling', () => {
121
+ it('should handle 401 unauthorized errors', async () => {
122
+ const mockError = {
123
+ response: {
124
+ status: 401,
125
+ data: { message: 'Unauthorized' }
126
+ }
127
+ };
128
+ mockedAxios.get.mockRejectedValue(mockError);
129
+ await expect((0, team_1.getTeamWebsite)()).rejects.toThrow('Invalid API key');
130
+ });
131
+ it('should handle 429 rate limit errors', async () => {
132
+ const mockError = {
133
+ response: {
134
+ status: 429,
135
+ data: { message: 'Rate limited' }
136
+ }
137
+ };
138
+ mockedAxios.get.mockRejectedValue(mockError);
139
+ await expect((0, team_1.getTeamWebsite)()).rejects.toThrow('Rate limit exceeded');
140
+ });
141
+ it('should handle timeout errors', async () => {
142
+ const mockError = {
143
+ code: 'ETIMEDOUT',
144
+ message: 'Request timeout'
145
+ };
146
+ mockedAxios.get.mockRejectedValue(mockError);
147
+ await expect((0, team_1.getTeamWebsite)()).rejects.toThrow('Request timed out');
148
+ });
149
+ });
150
+ });
151
+ //# sourceMappingURL=api.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ describe('Error Utils', () => {
64
64
  code: 'ENOTFOUND'
65
65
  };
66
66
  const result = (0, errors_1.handleApiError)(mockError);
67
- expect(result.message).toContain('Cannot connect to ClosedLoop servers');
67
+ expect(result.message).toContain('Cannot connect to ClosedLoop AI servers');
68
68
  expect(result.code).toBe(errors_1.ERROR_CODES.CONNECTION_ERROR);
69
69
  });
70
70
  it('should handle timeout errors', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const validation_1 = require("../utils/validation");
4
+ const test_factories_1 = require("./test-factories");
5
+ describe('Performance Tests', () => {
6
+ describe('Input Validation Performance', () => {
7
+ it('should handle large input efficiently', () => {
8
+ const largeInput = test_factories_1.performanceTestData.largeInput;
9
+ const startTime = performance.now();
10
+ (0, validation_1.validateInputContent)(largeInput);
11
+ const endTime = performance.now();
12
+ const executionTime = endTime - startTime;
13
+ // Should complete within 100ms
14
+ expect(executionTime).toBeLessThan(100);
15
+ });
16
+ it('should handle many validations efficiently', () => {
17
+ const inputs = Array.from({ length: 1000 }, (_, i) => `Test input ${i}`);
18
+ const startTime = performance.now();
19
+ inputs.forEach(input => {
20
+ try {
21
+ (0, validation_1.validateInputContent)(input);
22
+ }
23
+ catch (error) {
24
+ // Some might fail, that's okay for performance test
25
+ }
26
+ });
27
+ const endTime = performance.now();
28
+ const executionTime = endTime - startTime;
29
+ // Should complete 1000 validations within 500ms
30
+ expect(executionTime).toBeLessThan(500);
31
+ });
32
+ });
33
+ describe('Sanitization Performance', () => {
34
+ it('should sanitize large XSS payload efficiently', () => {
35
+ const xssPayload = test_factories_1.securityTestData.xssPayload.repeat(1000);
36
+ const startTime = performance.now();
37
+ (0, validation_1.sanitizeInput)(xssPayload);
38
+ const endTime = performance.now();
39
+ const executionTime = endTime - startTime;
40
+ // Should complete within 50ms
41
+ expect(executionTime).toBeLessThan(50);
42
+ });
43
+ it('should handle many sanitizations efficiently', () => {
44
+ const payloads = Array.from({ length: 500 }, () => test_factories_1.securityTestData.xssPayload);
45
+ const startTime = performance.now();
46
+ payloads.forEach(payload => {
47
+ (0, validation_1.sanitizeInput)(payload);
48
+ });
49
+ const endTime = performance.now();
50
+ const executionTime = endTime - startTime;
51
+ // Should complete 500 sanitizations within 200ms
52
+ expect(executionTime).toBeLessThan(200);
53
+ });
54
+ });
55
+ describe('Memory Usage', () => {
56
+ it('should not leak memory with repeated validations', () => {
57
+ const initialMemory = process.memoryUsage().heapUsed;
58
+ // Perform many validations
59
+ for (let i = 0; i < 10000; i++) {
60
+ try {
61
+ (0, validation_1.validateInputContent)(`Test input ${i}`);
62
+ (0, validation_1.validateApiKey)(`test-key-${i}`);
63
+ (0, validation_1.validateEmail)(`test${i}@example.com`);
64
+ }
65
+ catch (error) {
66
+ // Some might fail, that's okay
67
+ }
68
+ }
69
+ // Force garbage collection if available
70
+ if (global.gc) {
71
+ global.gc();
72
+ }
73
+ const finalMemory = process.memoryUsage().heapUsed;
74
+ const memoryIncrease = finalMemory - initialMemory;
75
+ // Memory increase should be reasonable (less than 50MB)
76
+ expect(memoryIncrease).toBeLessThan(50 * 1024 * 1024);
77
+ });
78
+ });
79
+ });
80
+ describe('Edge Case Tests', () => {
81
+ describe('Boundary Conditions', () => {
82
+ it('should handle exactly maximum length input', () => {
83
+ const maxLengthInput = 'a'.repeat(50000);
84
+ expect(() => (0, validation_1.validateInputContent)(maxLengthInput)).not.toThrow();
85
+ });
86
+ it('should reject input one character over maximum', () => {
87
+ const tooLongInput = 'a'.repeat(50001);
88
+ expect(() => (0, validation_1.validateInputContent)(tooLongInput)).toThrow();
89
+ });
90
+ it('should handle minimum valid API key length', () => {
91
+ const minApiKey = 'a'.repeat(10);
92
+ expect(() => (0, validation_1.validateApiKey)(minApiKey)).not.toThrow();
93
+ });
94
+ it('should reject API key one character under minimum', () => {
95
+ const tooShortApiKey = 'a'.repeat(9);
96
+ expect(() => (0, validation_1.validateApiKey)(tooShortApiKey)).toThrow();
97
+ });
98
+ });
99
+ describe('Unicode and Special Characters', () => {
100
+ it('should handle unicode characters', () => {
101
+ const unicodeInput = 'Test with émojis 🚀 and ñ characters';
102
+ expect(() => (0, validation_1.validateInputContent)(unicodeInput)).not.toThrow();
103
+ });
104
+ it('should handle various unicode ranges', () => {
105
+ const unicodeInputs = [
106
+ 'English text',
107
+ '中文文本',
108
+ 'العربية',
109
+ 'Русский текст',
110
+ '日本語のテキスト',
111
+ '한국어 텍스트'
112
+ ];
113
+ unicodeInputs.forEach(input => {
114
+ expect(() => (0, validation_1.validateInputContent)(input)).not.toThrow();
115
+ });
116
+ });
117
+ it('should handle special characters in URLs', () => {
118
+ const specialUrls = [
119
+ 'https://example.com/path?query=value&other=test',
120
+ 'https://example.com/path#fragment',
121
+ 'https://example.com/path/with-dashes_and_underscores',
122
+ 'https://example.com/path%20with%20spaces'
123
+ ];
124
+ specialUrls.forEach(url => {
125
+ expect(() => (0, validation_1.validateUrl)(url)).not.toThrow();
126
+ });
127
+ });
128
+ });
129
+ describe('Security Edge Cases', () => {
130
+ it('should sanitize various XSS payloads', () => {
131
+ const xssPayloads = [
132
+ test_factories_1.securityTestData.xssPayload,
133
+ test_factories_1.securityTestData.htmlInjection,
134
+ test_factories_1.securityTestData.javascriptUrl,
135
+ '<iframe src="javascript:alert(1)"></iframe>',
136
+ '<img src="x" onerror="alert(1)">',
137
+ '<svg onload="alert(1)"></svg>',
138
+ '<body onload="alert(1)">',
139
+ '<input onfocus="alert(1)" autofocus>'
140
+ ];
141
+ xssPayloads.forEach(payload => {
142
+ const sanitized = (0, validation_1.sanitizeInput)(payload);
143
+ expect(sanitized).not.toContain('<script');
144
+ expect(sanitized).not.toContain('javascript:');
145
+ expect(sanitized).not.toContain('onerror');
146
+ expect(sanitized).not.toContain('onload');
147
+ expect(sanitized).not.toContain('onfocus');
148
+ });
149
+ });
150
+ it('should handle SQL injection attempts', () => {
151
+ const sqlPayloads = [
152
+ test_factories_1.securityTestData.sqlInjection,
153
+ "'; DROP TABLE users; --",
154
+ "' OR '1'='1",
155
+ "'; INSERT INTO users VALUES ('hacker', 'password'); --"
156
+ ];
157
+ sqlPayloads.forEach(payload => {
158
+ const sanitized = (0, validation_1.sanitizeInput)(payload);
159
+ // The current sanitization is basic, so we just check it doesn't contain script tags
160
+ expect(sanitized).not.toContain('<script');
161
+ expect(sanitized).not.toContain('javascript:');
162
+ // Basic check that it's been processed
163
+ expect(sanitized).toBeDefined();
164
+ expect(typeof sanitized).toBe('string');
165
+ });
166
+ });
167
+ it('should handle path traversal attempts', () => {
168
+ const pathPayloads = [
169
+ test_factories_1.securityTestData.pathTraversal,
170
+ '../../../etc/passwd',
171
+ '..\\..\\..\\windows\\system32\\config\\sam',
172
+ '....//....//....//etc/passwd'
173
+ ];
174
+ pathPayloads.forEach(payload => {
175
+ const sanitized = (0, validation_1.sanitizeInput)(payload);
176
+ // The current sanitization is basic, so we just check it doesn't contain script tags
177
+ expect(sanitized).not.toContain('<script');
178
+ expect(sanitized).not.toContain('javascript:');
179
+ // Basic check that it's been processed
180
+ expect(sanitized).toBeDefined();
181
+ expect(typeof sanitized).toBe('string');
182
+ });
183
+ });
184
+ });
185
+ describe('Concurrent Operations', () => {
186
+ it('should handle concurrent validations', async () => {
187
+ const promises = Array.from({ length: 100 }, (_, i) => Promise.resolve((0, validation_1.validateInputContent)(`Concurrent test ${i}`)));
188
+ const results = await Promise.all(promises);
189
+ expect(results).toHaveLength(100);
190
+ });
191
+ it('should handle concurrent sanitizations', async () => {
192
+ const payloads = Array.from({ length: 100 }, () => test_factories_1.securityTestData.xssPayload);
193
+ const promises = payloads.map(payload => Promise.resolve((0, validation_1.sanitizeInput)(payload)));
194
+ const results = await Promise.all(promises);
195
+ expect(results).toHaveLength(100);
196
+ results.forEach(result => {
197
+ expect(result).not.toContain('<script');
198
+ });
199
+ });
200
+ });
201
+ describe('Error Recovery', () => {
202
+ it('should recover from validation errors gracefully', () => {
203
+ const invalidInputs = ['', ' ', 'a'.repeat(50001)];
204
+ const validInputs = ['Valid input 1', 'Valid input 2', 'Valid input 3'];
205
+ let errorCount = 0;
206
+ let successCount = 0;
207
+ [...invalidInputs, ...validInputs].forEach(input => {
208
+ try {
209
+ (0, validation_1.validateInputContent)(input);
210
+ successCount++;
211
+ }
212
+ catch (error) {
213
+ errorCount++;
214
+ }
215
+ });
216
+ expect(errorCount).toBe(3); // 3 invalid inputs
217
+ expect(successCount).toBe(3); // 3 valid inputs
218
+ });
219
+ });
220
+ });
221
+ //# sourceMappingURL=performance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.test.js","sourceRoot":"","sources":["../../src/__tests__/performance.test.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,50 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
  // Test setup file
3
- // This file runs before each test file
4
- // Mock console methods to avoid cluttering test output
4
+ const globals_1 = require("@jest/globals");
5
+ // Mock console methods to avoid noise in tests
5
6
  global.console = {
6
7
  ...console,
7
- log: jest.fn(),
8
- error: jest.fn(),
9
- warn: jest.fn(),
10
- info: jest.fn()
8
+ log: globals_1.jest.fn(),
9
+ error: globals_1.jest.fn(),
10
+ warn: globals_1.jest.fn(),
11
+ info: globals_1.jest.fn(),
12
+ debug: globals_1.jest.fn(),
11
13
  };
12
14
  // Mock process.exit to prevent tests from actually exiting
13
15
  const originalExit = process.exit;
14
16
  beforeAll(() => {
15
- process.exit = jest.fn();
17
+ process.exit = globals_1.jest.fn();
16
18
  });
17
19
  afterAll(() => {
18
20
  process.exit = originalExit;
19
21
  });
22
+ // Mock process.stdin for interactive tests
23
+ Object.defineProperty(process, 'stdin', {
24
+ value: {
25
+ isTTY: false,
26
+ setRawMode: globals_1.jest.fn(),
27
+ resume: globals_1.jest.fn(),
28
+ pause: globals_1.jest.fn(),
29
+ },
30
+ writable: true,
31
+ });
32
+ // Mock process.stdout for output tests
33
+ Object.defineProperty(process, 'stdout', {
34
+ value: {
35
+ write: globals_1.jest.fn(),
36
+ end: globals_1.jest.fn(),
37
+ },
38
+ writable: true,
39
+ });
40
+ // Mock process.stderr for error output tests
41
+ Object.defineProperty(process, 'stderr', {
42
+ value: {
43
+ write: globals_1.jest.fn(),
44
+ end: globals_1.jest.fn(),
45
+ },
46
+ writable: true,
47
+ });
48
+ // Global test timeout
49
+ globals_1.jest.setTimeout(10000);
20
50
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";AAAA,kBAAkB;AAClB,uCAAuC;AAEvC,uDAAuD;AACvD,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;CAChB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAS,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACZ,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC9B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AAClB,2CAAqC;AAErC,+CAA+C;AAC/C,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,CAAC,IAAI,GAAG,cAAI,CAAC,EAAE,EAAS,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACZ,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;IACtC,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,cAAI,CAAC,EAAE,EAAE;QACrB,MAAM,EAAE,cAAI,CAAC,EAAE,EAAE;QACjB,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;KACjB;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,uCAAuC;AACvC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;QAChB,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;KACf;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;QAChB,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;KACf;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,sBAAsB;AACtB,cAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const team_1 = require("../commands/team");
4
+ // Mock chalk and ora
5
+ jest.mock('chalk', () => ({
6
+ green: (text) => text,
7
+ yellow: (text) => text,
8
+ gray: (text) => text,
9
+ red: (text) => text,
10
+ black: (text) => text
11
+ }));
12
+ jest.mock('ora', () => {
13
+ const mockSpinner = {
14
+ start: jest.fn().mockReturnThis(),
15
+ succeed: jest.fn().mockReturnThis(),
16
+ fail: jest.fn().mockReturnThis()
17
+ };
18
+ return jest.fn(() => mockSpinner);
19
+ });
20
+ describe('Team Commands - Simple Tests', () => {
21
+ it('should be a valid Command instance', () => {
22
+ expect(team_1.teamCommand).toBeDefined();
23
+ expect(team_1.teamCommand.name()).toBe('team');
24
+ });
25
+ it('should have website subcommand', () => {
26
+ const websiteCommand = team_1.teamCommand.commands.find(cmd => cmd.name() === 'website');
27
+ expect(websiteCommand).toBeDefined();
28
+ expect(websiteCommand?.name()).toBe('website');
29
+ });
30
+ it('should show help when no subcommand provided', async () => {
31
+ const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
32
+ await team_1.teamCommand.parseAsync(['team']);
33
+ expect(consoleSpy).toHaveBeenCalledWith('Use team subcommands to manage team settings');
34
+ expect(consoleSpy).toHaveBeenCalledWith('Available commands: website');
35
+ consoleSpy.mockRestore();
36
+ });
37
+ });
38
+ //# sourceMappingURL=team-simple.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-simple.test.js","sourceRoot":"","sources":["../../src/__tests__/team-simple.test.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,qBAAqB;AACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC7B,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC9B,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC5B,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC3B,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;CAC9B,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;IACpB,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;KACjC,CAAC;IACF,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,kBAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,kBAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,cAAc,GAAG,kBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;QAClF,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAEnE,MAAM,kBAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,8CAA8C,CAAC,CAAC;QACxF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;QAEvE,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}