b27a97f2c5
## Summary This PR enforces the use of `@/` alias for imports instead of relative parent imports (`../`). ## Changes ### ESLint Configuration - Added `no-restricted-imports` pattern in `eslint.config.react.mjs` to block `../*` imports with the message "Relative parent imports are not allowed. Use @/ alias instead." - Removed the non-working `import/no-relative-parent-imports` rule (doesn't work properly in ESLint flat config) ### VS Code Settings - Added `javascript.preferences.importModuleSpecifier: non-relative` to `.vscode/settings.json` (TypeScript setting was already there) ### Code Fixes - Fixed **941 relative parent imports** across **706 files** in `packages/twenty-front` - All `../` imports converted to use `@/` alias ## Why - Consistent import style across the codebase - Easier to move files without breaking imports - Better IDE support for auto-imports - Clearer understanding of where imports come from
77 lines
2.1 KiB
TypeScript
77 lines
2.1 KiB
TypeScript
import { type MutableRefObject } from 'react';
|
|
import { combineRefs } from '~/utils/combineRefs';
|
|
|
|
describe('combineRefs', () => {
|
|
it('should handle function refs', () => {
|
|
const ref1 = jest.fn();
|
|
const ref2 = jest.fn();
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs(ref1, ref2);
|
|
combinedRef(node);
|
|
|
|
expect(ref1).toHaveBeenCalledWith(node);
|
|
expect(ref2).toHaveBeenCalledWith(node);
|
|
});
|
|
|
|
it('should handle object refs', () => {
|
|
const ref1: MutableRefObject<HTMLDivElement | null> = { current: null };
|
|
const ref2: MutableRefObject<HTMLDivElement | null> = { current: null };
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs(ref1, ref2);
|
|
combinedRef(node);
|
|
|
|
expect(ref1.current).toBe(node);
|
|
expect(ref2.current).toBe(node);
|
|
});
|
|
|
|
it('should handle mixed function and object refs', () => {
|
|
const funcRef = jest.fn();
|
|
const objRef: MutableRefObject<HTMLDivElement | null> = { current: null };
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs(funcRef, objRef);
|
|
combinedRef(node);
|
|
|
|
expect(funcRef).toHaveBeenCalledWith(node);
|
|
expect(objRef.current).toBe(node);
|
|
});
|
|
|
|
it('should handle undefined refs', () => {
|
|
const ref1 = jest.fn();
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs(ref1, undefined);
|
|
combinedRef(node);
|
|
|
|
expect(ref1).toHaveBeenCalledWith(node);
|
|
});
|
|
|
|
it('should handle all undefined refs', () => {
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs(undefined, undefined);
|
|
|
|
expect(() => combinedRef(node)).not.toThrow();
|
|
});
|
|
|
|
it('should handle empty refs array', () => {
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs();
|
|
|
|
expect(() => combinedRef(node)).not.toThrow();
|
|
});
|
|
|
|
it('should handle null refs', () => {
|
|
const ref1 = jest.fn();
|
|
const node = document.createElement('div');
|
|
|
|
const combinedRef = combineRefs(ref1, null);
|
|
combinedRef(node);
|
|
|
|
expect(ref1).toHaveBeenCalledWith(node);
|
|
});
|
|
});
|