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 (
-
{loading ? (
) : error ? (
-
error_outline
+
error_outline
{error}
) : coupons.length === 0 ? (
-
confirmation_number
+
confirmation_number
No tienes cupones disponibles en este momento.
) : (
@@ -76,12 +77,12 @@ const V2CouponCenter = () => {
Vence: {coupon.expires}
copyToClipboard(coupon.code)}
>
- content_copy
+ content_copy
Copiar Código
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);