feat(agents): 支持个人微信发布与渠道会话
This commit is contained in:
30
tests/unit/cloud-wechat-qr.test.tsx
Normal file
30
tests/unit/cloud-wechat-qr.test.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
import { render, screen, waitFor } from '@testing-library/react';
|
||||
import { CloudWechatQr } from '@/pages/CloudAgents/CloudWechatQr';
|
||||
|
||||
describe('CloudWechatQr', () => {
|
||||
it('generates an SVG QR locally from the provider login URL', async () => {
|
||||
render(<CloudWechatQr value="https://wechat.example.test/login?ticket=abc" />);
|
||||
|
||||
const qr = await screen.findByAltText('个人微信登录二维码');
|
||||
expect(qr.tagName).toBe('IMG');
|
||||
expect(qr.getAttribute('src')).toMatch(/^data:image\/svg\+xml;charset=utf-8,/);
|
||||
expect(qr.getAttribute('width')).toBe('192');
|
||||
expect(qr.getAttribute('height')).toBe('192');
|
||||
});
|
||||
|
||||
it('does not show the previous QR while the value changes', async () => {
|
||||
const view = render(<CloudWechatQr value="https://wechat.example.test/login?ticket=old" />);
|
||||
await screen.findByAltText('个人微信登录二维码');
|
||||
|
||||
view.rerender(<CloudWechatQr value="https://wechat.example.test/login?ticket=new" />);
|
||||
expect(screen.queryByAltText('个人微信登录二维码')).toBeNull();
|
||||
expect(screen.getByRole('status')).toHaveTextContent('正在生成二维码');
|
||||
await waitFor(() => expect(screen.getByAltText('个人微信登录二维码')).toBeInTheDocument());
|
||||
});
|
||||
|
||||
it('shows a Chinese error when QR generation fails', async () => {
|
||||
render(<CloudWechatQr value={'x'.repeat(5000)} />);
|
||||
|
||||
expect(await screen.findByRole('alert')).toHaveTextContent('二维码生成失败,请重试');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user