('.ant-qrcode canvas')).toHaveStyle(
'width: 100%; height: 80%;',
);
});
it('custom status render', () => {
const refreshCb = jest.fn();
const customStatusRender: QRCodeProps['statusRender'] = (info) => {
switch (info.status) {
case 'expired':
return (
{info.locale?.expired}
);
case 'loading':
return Loading
;
case 'scanned':
return {info.locale?.scanned}
;
default:
return null;
}
};
const { container } = render(
<>
>,
);
expect(
container.querySelector('.qrcode-expired .custom-expired>span')?.textContent,
).toBe('QR code expired');
fireEvent.click(container?.querySelector('#refresh')!);
expect(refreshCb).toHaveBeenCalled();
expect(
container.querySelector('.qrcode-loading .custom-loading')?.textContent,
).toBe('Loading');
expect(
container.querySelector('.qrcode-scanned .custom-scanned')?.textContent,
).toBe('Scanned');
expect(container).toMatchSnapshot();
});
it('should pass aria and data props to qrcode element', () => {
const { container } = render();
const qrcodeElement = container.querySelector('.ant-qrcode canvas');
expect(qrcodeElement).toHaveAttribute('aria-label', 'Test QR Code');
});
it('should not pass other props to qrcode element', () => {
const { container } = render(
,
);
const qrcodeElement = container.querySelector('.ant-qrcode canvas');
expect(qrcodeElement).toHaveAttribute('aria-label', 'Test QR Code');
expect(qrcodeElement).not.toHaveAttribute('title', 'qr-title');
});
it('should work with both canvas and svg type', () => {
const ariaLabel = 'Test QR Code';
// test canvas type
const { container: canvasContainer } = render(
,
);
expect(canvasContainer.querySelector('canvas')).toHaveAttribute('aria-label', ariaLabel);
// test svg type
const { container: svgContainer } = render(
,
);
expect(svgContainer.querySelector('svg')).toHaveAttribute('aria-label', ariaLabel);
});
});