fix: remove redundant timer, add navigation verification to CartSnackbar tests

This commit is contained in:
Kirill
2026-05-25 17:29:54 +05:00
parent ddae0e8583
commit b17e571772
5 changed files with 2115 additions and 2155 deletions
+4 -8
View File
@@ -1,4 +1,3 @@
import { useEffect } from 'react'
import Alert from '@mui/material/Alert'
import Button from '@mui/material/Button'
import Snackbar from '@mui/material/Snackbar'
@@ -10,13 +9,10 @@ export function CartSnackbar() {
const open = useUnit($cartSnackOpen)
const navigate = useNavigate()
useEffect(() => {
if (!open) return
const timer = setTimeout(() => cartDismissed(), 4000)
return () => clearTimeout(timer)
}, [open])
const handleClose = () => cartDismissed()
const handleClose = (_event: React.SyntheticEvent | Event, reason?: string) => {
if (reason === 'clickaway') return
cartDismissed()
}
const handleGoToCart = () => {
cartDismissed()
@@ -1,12 +1,19 @@
import { render, screen, fireEvent, act } from '@testing-library/react'
import { describe, it, expect, vi } from 'vitest'
import { MemoryRouter } from 'react-router-dom'
import { MemoryRouter, useLocation } from 'react-router-dom'
import { cartAdded, cartDismissed } from '@/shared/model/cart-notifications'
import { CartSnackbar } from '@/shared/ui/CartSnackbar'
function LocationSpy() {
const location = useLocation()
;(window as any).__testLocation = location
return null
}
function renderWithRouter() {
render(
<MemoryRouter>
<MemoryRouter initialEntries={['/']}>
<LocationSpy />
<CartSnackbar />
</MemoryRouter>,
)
@@ -50,6 +57,7 @@ describe('CartSnackbar', () => {
cartAdded()
const goBtn = screen.getByRole('button', { name: /перейти в корзину/i })
fireEvent.click(goBtn)
expect((window as any).__testLocation.pathname).toBe('/cart')
expect(screen.queryByText(/товар добавлен/i)).not.toBeInTheDocument()
})
})