Files
med-notes/.pnpm-store/v10/files/49/b723171a6a4395277dbd1172767c1215e4bb09ebb85a4454464ff6704fee307a4a23a628106157d257aae715c3983c208e5edf4687c9575b7d3ff83276b091
2025-05-09 05:30:08 +02:00

69 lines
1.7 KiB
Plaintext

import { describe, expect, it, vi } from 'vitest';
import { createRef } from 'react';
import { render } from '@testing-library/react';
import mergeRefs from './index.js';
describe('mergeRefs()', () => {
it('returns falsy result given no arguments', () => {
const result = mergeRefs();
expect(result).toBeFalsy();
});
it('returns falsy result given falsy arguments', () => {
const result = mergeRefs(null, null);
expect(result).toBeFalsy();
});
it('returns original ref given only one ref', () => {
const ref = vi.fn();
const result = mergeRefs(ref);
expect(result).toBe(ref);
});
it('returns original ref given one ref and one falsy argument', () => {
const ref = vi.fn();
const result = mergeRefs(ref, null);
expect(result).toBe(ref);
});
it('returns merged refs properly', () => {
const ref1 = vi.fn();
const ref2 = createRef<HTMLDivElement>();
const result = mergeRefs(ref1, ref2);
expect(result).not.toBe(ref1);
expect(result).toEqual(expect.any(Function));
});
it('handles merged functional refs properly', () => {
const ref1 = vi.fn();
const ref2 = createRef<HTMLDivElement>();
const mergedRef = mergeRefs(ref1, ref2);
const { container } = render(<div ref={mergedRef} />);
expect(ref1).toHaveBeenCalledTimes(1);
expect(ref1).toHaveBeenCalledWith(container.firstElementChild);
});
it('handles merged object refs properly', () => {
const ref1 = createRef<HTMLDivElement>();
const ref2 = vi.fn();
const mergedRef = mergeRefs(ref1, ref2);
const { container } = render(<div ref={mergedRef} />);
expect(ref1.current).toBe(container.firstElementChild);
});
});