完成上传下载连接,公告管理与详情页面,求种区页面,轮播图折扣显示,修改部分bug
Change-Id: I86fc294e32911cb3426a8b16f90aca371f975c11
diff --git a/src/components/Administer.test.jsx b/src/components/Administer.test.jsx
index 5a452fa..7f446ed 100644
--- a/src/components/Administer.test.jsx
+++ b/src/components/Administer.test.jsx
@@ -3,193 +3,122 @@
import { MemoryRouter } from 'react-router-dom';
import '@testing-library/jest-dom';
import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
import Administer from './Administer';
-// Mock axios
-jest.mock('axios');
-
-// Mock localStorage
-const localStorageMock = {
- getItem: jest.fn(),
- setItem: jest.fn(),
- removeItem: jest.fn(),
- clear: jest.fn(),
-};
-global.localStorage = localStorageMock;
-
describe('Administer Component', () => {
- beforeEach(() => {
- localStorageMock.getItem.mockReturnValue('test-token');
- jest.clearAllMocks();
+ let mock;
+
+ beforeAll(() => {
+ mock = new MockAdapter(axios);
+ localStorage.setItem('token', 'test-token');
});
- const mockUsers = [
- {
- username: 'user1',
- authority: 'USER',
- registTime: '2023-01-01T00:00:00',
- lastLogin: '2023-05-01T00:00:00',
- upload: 1000,
- download: 500,
- shareRate: 2.0,
- magicPoints: 100
- },
- {
- username: 'admin1',
- authority: 'ADMIN',
- registTime: '2023-01-15T00:00:00',
- lastLogin: '2023-05-10T00:00:00',
- upload: 5000,
- download: 1000,
- shareRate: 5.0,
- magicPoints: 500
- }
- ];
+ afterEach(() => {
+ mock.reset();
+ });
- const mockDiscounts = [
- {
- id: 1,
- name: '五一活动',
- discountType: 'FREE',
- startTime: '2023-05-01T00:00:00',
- endTime: '2023-05-07T23:59:59',
- createTime: '2023-04-25T10:00:00',
- status: '已过期'
- },
- {
- id: 2,
- name: '端午节活动',
- discountType: 'HALF',
- startTime: '2023-06-10T00:00:00',
- endTime: '2023-06-15T23:59:59',
- createTime: '2023-05-30T10:00:00',
- status: '已过期'
- }
- ];
+ afterAll(() => {
+ mock.restore();
+ });
- const mockCurrentDiscount = {
- id: 3,
- name: '国庆活动',
- discountType: 'DOUBLE',
- startTime: '2023-10-01T00:00:00',
- endTime: '2023-10-07T23:59:59',
- createTime: '2023-09-25T10:00:00',
- status: '进行中'
- };
+ test('renders user management tab by default', async () => {
+ mock.onGet('http://localhost:8088/user/allUser').reply(200, {
+ code: 200,
+ data: { data: [] }
+ });
- const renderAdminister = () => {
- return render(
+ render(
<MemoryRouter>
<Administer />
</MemoryRouter>
);
- };
- test('renders Administer component with user tab by default', async () => {
- axios.get.mockResolvedValueOnce({
- data: {
- code: 200,
- data: { data: mockUsers }
- }
- });
-
- renderAdminister();
-
- expect(screen.getByText('系统管理')).toBeInTheDocument();
expect(screen.getByText('用户管理')).toBeInTheDocument();
expect(screen.getByText('折扣管理')).toBeInTheDocument();
-
- await waitFor(() => {
- expect(screen.getByText('user1')).toBeInTheDocument();
- });
-
- expect(screen.getByText('admin1')).toBeInTheDocument();
+ expect(screen.getByText('公告管理')).toBeInTheDocument();
});
- test('switches between user and discount tabs', async () => {
- axios.get
- .mockResolvedValueOnce({
- data: {
- code: 200,
- data: { data: mockUsers }
- }
- })
- .mockResolvedValueOnce({
- data: {
- code: 200,
- data: { data: mockDiscounts }
- }
- })
- .mockResolvedValueOnce({
- data: {
- code: 200,
- data: { data: mockCurrentDiscount }
- }
- });
+ test('fetches and displays users', async () => {
+ const mockUsers = [
+ {
+ username: 'testuser',
+ authority: 'USER',
+ registTime: '2023-01-01',
+ lastLogin: '2023-05-01',
+ upload: 1000,
+ download: 500,
+ shareRate: 2.0,
+ magicPoints: 100
+ }
+ ];
- renderAdminister();
+ mock.onGet('http://localhost:8088/user/allUser').reply(200, {
+ code: 200,
+ data: { data: mockUsers }
+ });
+
+ render(
+ <MemoryRouter>
+ <Administer />
+ </MemoryRouter>
+ );
await waitFor(() => {
- expect(screen.getByText('user1')).toBeInTheDocument();
+ expect(screen.getByText('testuser')).toBeInTheDocument();
});
+ });
+
+ test('handles user search', async () => {
+ const mockUsers = [
+ {
+ username: 'searchuser',
+ authority: 'USER'
+ }
+ ];
+
+ mock.onGet('http://localhost:8088/user/searchUser').reply(200, {
+ code: 200,
+ data: { data: mockUsers }
+ });
+
+ render(
+ <MemoryRouter>
+ <Administer />
+ </MemoryRouter>
+ );
+
+ fireEvent.change(screen.getByPlaceholderText('输入用户名搜索'), {
+ target: { value: 'search' }
+ });
+ fireEvent.click(screen.getByText('搜索'));
+
+ await waitFor(() => {
+ expect(screen.getByText('searchuser')).toBeInTheDocument();
+ });
+ });
+
+ test('switches between tabs', async () => {
+ mock.onGet('http://localhost:8088/user/allUser').reply(200, {
+ code: 200,
+ data: { data: [] }
+ });
+
+ mock.onGet('http://localhost:8088/discount/all').reply(200, {
+ code: 200,
+ data: { data: [] }
+ });
+
+ render(
+ <MemoryRouter>
+ <Administer />
+ </MemoryRouter>
+ );
fireEvent.click(screen.getByText('折扣管理'));
await waitFor(() => {
- expect(screen.getByText('五一活动')).toBeInTheDocument();
- });
-
- expect(screen.getByText('国庆活动')).toBeInTheDocument();
- });
-
-
-
- test('changes user authority', async () => {
- axios.get.mockResolvedValueOnce({
- data: {
- code: 200,
- data: { data: mockUsers }
- }
- });
- axios.put.mockResolvedValueOnce({
- data: {
- code: 200,
- message: '修改用户权限成功'
- }
- });
-
- renderAdminister();
-
- await waitFor(() => {
- expect(screen.getByText('user1')).toBeInTheDocument();
- });
-
- const selectElement = screen.getAllByRole('combobox')[0];
- fireEvent.change(selectElement, { target: { value: 'ADMIN' } });
-
- await waitFor(() => {
- expect(axios.put).toHaveBeenCalled();
- });
-
- expect(axios.put).toHaveBeenCalledWith(
- expect.stringContaining('/user/changeAuthority'),
- {
- changeUsername: 'user1',
- authority: 'ADMIN'
- },
- expect.any(Object)
- );
- });
-
-
-
- test('shows error messages', async () => {
- axios.get.mockRejectedValueOnce(new Error('Network Error'));
-
- renderAdminister();
-
- await waitFor(() => {
- expect(screen.getByText(/获取用户列表失败/)).toBeInTheDocument();
+ expect(screen.getByText('添加新折扣')).toBeInTheDocument();
});
});
});
\ No newline at end of file