-
Notifications
You must be signed in to change notification settings - Fork 373
Expand file tree
/
Copy pathswc-config.spec.jsx
More file actions
43 lines (36 loc) · 1.5 KB
/
swc-config.spec.jsx
File metadata and controls
43 lines (36 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// This test verifies that SWC is configured correctly for:
// 1. Stimulus controller class name preservation (keepClassNames: true)
// 2. React 19 compatibility (automatic runtime)
/* eslint-disable max-classes-per-file */
import React from 'react';
describe('SWC Configuration', () => {
describe('Class name preservation (required for Stimulus)', () => {
it('preserves class names when transpiled', () => {
// Define a test class similar to Stimulus controllers
class TestController {
constructor() {
this.name = 'test';
}
}
// Verify class name is preserved (keepClassNames: true in swc.config.js)
expect(TestController.name).toBe('TestController');
});
it('preserves class names for extended classes', () => {
class BaseController {}
class CommentsController extends BaseController {}
// This is critical for Stimulus to discover controllers by name
expect(CommentsController.name).toBe('CommentsController');
expect(BaseController.name).toBe('BaseController');
});
});
describe('React automatic runtime (React 19 compatibility)', () => {
it('allows JSX to work with automatic runtime', () => {
// With automatic runtime configured in SWC, JSX works seamlessly
// This test verifies the runtime is properly configured
const element = <div>Test</div>;
expect(element).toBeDefined();
expect(element.type).toBe('div');
expect(element.props.children).toBe('Test');
});
});
});