blob: 9536be28f87d0a6ebabfe454847647ebda5d8af7 [file] [log] [blame]
import { describe, it, expect, beforeEach } from 'vitest';
import { render, screen } from '@testing-library/react';
import { AuthProvider, useAuth } from './AuthContext';
// 创建一个测试组件来使用 useAuth hook
const TestComponent = () => {
const { user, hasRole } = useAuth();
return (
<div>
<div data-testid="user-info">{user ? JSON.stringify(user) : 'no user'}</div>
<div data-testid="is-admin">{hasRole('admin') ? 'is admin' : 'not admin'}</div>
</div>
);
};
describe('AuthContext', () => {
beforeEach(() => {
window.localStorage.clear();
});
it('应该提供默认值', () => {
render(
<AuthProvider>
<TestComponent />
</AuthProvider>
);
expect(screen.getByTestId('user-info')).toHaveTextContent('no user');
expect(screen.getByTestId('is-admin')).toHaveTextContent('not admin');
});
it('应该从 localStorage 加载用户信息', () => {
// 模拟管理员
window.localStorage.setItem('user', JSON.stringify({
username: 'admin',
role: 'admin'
}));
render(
<AuthProvider>
<TestComponent />
</AuthProvider>
);
expect(screen.getByTestId('user-info')).toHaveTextContent('admin');
expect(screen.getByTestId('is-admin')).toHaveTextContent('is admin');
});
});