import React from 'react'; import { describe, it, expect, jest, beforeAll, afterEach, afterAll, } from '@jest/globals'; import { render, screen, waitFor } from '@testing-library/react'; import { http, HttpResponse } from 'msw'; import { setupServer } from 'msw/node'; import { BrowserRouter } from 'react-router-dom'; import Page from '../arm'; const server = setupServer( http.post('/api/arm/orders', () => { return HttpResponse.json({ success: true, body: [ { id: 'order1', carNumber: 'A123BC', startWashTime: '2024-11-24T10:30:00.000Z', endWashTime: '2024-11-24T16:30:00.000Z', orderDate: '2024-11-24T08:41:46.366Z', status: 'pending', phone: '79001234563', location: 'Казань, ул. Баумана, 1', master: { name: 'Олег Макаров', phone: '79001234567', id: '23423442', }, notes: '', }, { id: 'order2', carNumber: 'A245BC', startWashTime: '2024-11-24T11:30:00.000Z', endWashTime: '2024-11-24T17:30:00.000Z', orderDate: '2024-11-24T07:40:46.366Z', status: 'progress', phone: '79001234567', location: 'Казань, ул. Баумана, 43', master: [], notes: '', }, ], }); }), http.get('/api/arm/masters', () => { return HttpResponse.json({ success: true, body: [ { id: '4545423234', name: 'Иван Иванов', phone: '+7 900 123 45 67', }, { name: 'Олег Макаров', phone: '79001234567', id: '23423442', }, { id: '345354234', name: 'Иван Галкин', schedule: [ { id: 'order1', startWashTime: '2024-11-24T10:30:00.000Z', endWashTime: '2024-11-24T16:30:00.000Z', }, { id: 'order2', startWashTime: '2024-11-24T11:30:00.000Z', endWashTime: '2024-11-24T17:30:00.000Z', }, ], phone: '+7 900 123 45 67', }, ], }); }), ); jest.mock('react-i18next', () => { return { useTranslation: () => { return { t: (key: never) => `${key}`, i18n: {}, }; }, }; }); jest.mock('@brojs/cli', () => { return { getNavigationValue: () => '/auth/login', getConfigValue: () => '/api', }; }); describe('Arm Page', () => { beforeAll(() => server.listen()); afterEach(() => server.resetHandlers()); afterAll(() => server.close()); it('render ', async () => { server.events.on('request:start', ({ request }) => { console.log('Outgoing:', request.method, request.url); }); const { container } = render( <BrowserRouter> <Page mockUser={{ name: 'ilnaz' }} /> </BrowserRouter>, ); expect(container).toMatchSnapshot(); await waitFor(() => screen.getByText('A123BC')); expect(container).toMatchSnapshot(); }); });