diff --git a/src/v2/pages/V2CaseStudy.jsx b/src/v2/pages/V2CaseStudy.jsx index 9ded442..b05f170 100644 --- a/src/v2/pages/V2CaseStudy.jsx +++ b/src/v2/pages/V2CaseStudy.jsx @@ -1,6 +1,5 @@ import { useReducer, useEffect } from 'react'; import { useParams, useHistory } from 'react-router-dom'; -import UserExamService from '../../services/UserExamService'; import CustomPreloader from '../../components/custom/CustomPreloader'; import '../styles/v2-theme.css'; diff --git a/src/v2/pages/V2CouponCenter.jsx b/src/v2/pages/V2CouponCenter.jsx index 10fe313..982a375 100644 --- a/src/v2/pages/V2CouponCenter.jsx +++ b/src/v2/pages/V2CouponCenter.jsx @@ -1,6 +1,8 @@ import { useState, useEffect } from 'react'; import { useHistory } from 'react-router-dom'; import CouponService from '../../services/CouponService'; +import Util from '../../commons/Util'; +import CustomPreloader from '../../components/custom/CustomPreloader'; import '../styles/v2-theme.css'; const V2CouponCenter = () => { @@ -27,36 +29,35 @@ const V2CouponCenter = () => { const copyToClipboard = (code) => { navigator.clipboard.writeText(code); - // Toast logic could be added here if a global toast exists + Util.showToast('Código copiado al portapapeles'); }; return (
-

Centro de Cupones

{loading ? (
-
-
-
-
-
-
-
+
) : error ? (
- error_outline +

{error}

) : coupons.length === 0 ? (
- confirmation_number +

No tienes cupones disponibles en este momento.

) : ( @@ -76,12 +77,12 @@ const V2CouponCenter = () => {
Vence: {coupon.expires}
diff --git a/src/v2/pages/V2CouponCenter.test.jsx b/src/v2/pages/V2CouponCenter.test.jsx index 713c6ed..c08c21a 100644 --- a/src/v2/pages/V2CouponCenter.test.jsx +++ b/src/v2/pages/V2CouponCenter.test.jsx @@ -20,6 +20,9 @@ vi.mock('../../services/CouponService'); describe('V2CouponCenter', () => { beforeEach(() => { vi.clearAllMocks(); + if (globalThis.M && globalThis.M.toast) { + globalThis.M.toast.mockClear(); + } }); it('renders loading state initially', () => { @@ -29,7 +32,7 @@ describe('V2CouponCenter', () => { ); - expect(document.querySelector('.preloader-wrapper')).toBeTruthy(); + expect(screen.getByRole('progressbar')).toBeTruthy(); }); it('renders coupons after loading', async () => { @@ -51,7 +54,7 @@ describe('V2CouponCenter', () => { }); }); - it('handles copy to clipboard', async () => { + it('handles copy to clipboard and shows toast', async () => { const mockClipboard = { writeText: vi.fn().mockResolvedValue(undefined), }; @@ -73,5 +76,18 @@ describe('V2CouponCenter', () => { fireEvent.click(copyButton); expect(mockClipboard.writeText).toHaveBeenCalledWith('PROMO2025'); + expect(globalThis.M.toast).toHaveBeenCalledWith({ html: 'Código copiado al portapapeles' }); + }); + + it('handles go back button', async () => { + CouponService.getCoupons.mockResolvedValue({ data: [] }); + render( + + + + ); + const backButton = screen.getByLabelText('Volver'); + fireEvent.click(backButton); + expect(mockGoBack).toHaveBeenCalled(); }); }); diff --git a/src/v2/pages/V2FlashcardStudy.jsx b/src/v2/pages/V2FlashcardStudy.jsx index df190e6..50a813a 100644 --- a/src/v2/pages/V2FlashcardStudy.jsx +++ b/src/v2/pages/V2FlashcardStudy.jsx @@ -14,6 +14,7 @@ const V2FlashcardStudy = () => { const handleAnswer = (quality) => { // En una implementación real, aquí se llamaría al backend con la calidad del SRS + console.log('Quality:', quality); if (currentIndex < flashcards.length - 1) { setCurrentIndex(currentIndex + 1); setShowAnswer(false);