Avoid billing redirect for endcustomer packages

This commit is contained in:
Codex Agent
2026-01-16 14:05:20 +01:00
parent cb9a456b49
commit c27038b741
2 changed files with 36 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
import React from 'react';
import { describe, expect, it, vi } from 'vitest';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { render, screen } from '@testing-library/react';
const fixtures = vi.hoisted(() => ({
@@ -41,6 +41,13 @@ const authState = {
status: 'authenticated',
user: { role: 'tenant_admin' },
};
const eventContext = {
events: [fixtures.event],
activeEvent: fixtures.event,
hasEvents: true,
hasMultipleEvents: false,
isLoading: false,
};
vi.mock('react-router-dom', () => ({
useNavigate: () => navigateMock,
@@ -98,11 +105,7 @@ vi.mock('@tanstack/react-query', () => ({
vi.mock('../../context/EventContext', () => ({
useEventContext: () => ({
events: [fixtures.event],
activeEvent: fixtures.event,
hasEvents: true,
hasMultipleEvents: false,
isLoading: false,
...eventContext,
selectEvent: vi.fn(),
}),
}));
@@ -231,6 +234,31 @@ vi.mock('../eventDate', () => ({
import MobileDashboardPage from '../DashboardPage';
describe('MobileDashboardPage', () => {
afterEach(() => {
eventContext.events = [fixtures.event];
eventContext.activeEvent = fixtures.event;
eventContext.hasEvents = true;
eventContext.hasMultipleEvents = false;
fixtures.activePackage.package_type = 'standard';
fixtures.activePackage.remaining_events = 3;
navigateMock.mockClear();
});
it('does not redirect endcustomer packages without remaining event quota', () => {
eventContext.events = [];
eventContext.activeEvent = null as unknown as typeof fixtures.event;
eventContext.hasEvents = false;
eventContext.hasMultipleEvents = false;
fixtures.activePackage.package_type = 'endcustomer';
fixtures.activePackage.remaining_events = 0;
render(<MobileDashboardPage />);
expect(navigateMock).not.toHaveBeenCalledWith('/event-admin/mobile/billing#packages', { replace: true });
});
it('shows package usage progress when a limit is available', () => {
render(<MobileDashboardPage />);