Fix demo task readiness and gate event creation
This commit is contained in:
@@ -399,7 +399,17 @@ describe('MobileDashboardPage', () => {
|
||||
|
||||
expect(screen.getByText('Experience')).toBeInTheDocument();
|
||||
expect(screen.getByText('Settings')).toBeInTheDocument();
|
||||
expect(screen.queryByText('Create Event')).not.toBeInTheDocument();
|
||||
|
||||
authState.user = { role: 'tenant_admin' };
|
||||
});
|
||||
|
||||
it('shows create event action for reseller packages', () => {
|
||||
fixtures.activePackage.package_type = 'reseller';
|
||||
fixtures.activePackage.remaining_events = 2;
|
||||
|
||||
render(<MobileDashboardPage />);
|
||||
|
||||
expect(screen.getByText('Create Event')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -63,11 +63,13 @@ vi.mock('../hooks/useBackNavigation', () => ({
|
||||
}));
|
||||
|
||||
const selectEventMock = vi.fn();
|
||||
const refetchMock = vi.fn();
|
||||
|
||||
vi.mock('../../context/EventContext', () => ({
|
||||
useEventContext: () => ({
|
||||
activeEvent: fixtures.event,
|
||||
selectEvent: selectEventMock,
|
||||
refetch: refetchMock,
|
||||
}),
|
||||
}));
|
||||
|
||||
@@ -245,7 +247,12 @@ vi.mock('../components/FormControls', () => ({
|
||||
}));
|
||||
|
||||
vi.mock('../components/Sheet', () => ({
|
||||
MobileSheet: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,
|
||||
MobileSheet: ({ children, footer }: { children: React.ReactNode; footer?: React.ReactNode }) => (
|
||||
<div>
|
||||
{children}
|
||||
{footer}
|
||||
</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../components/Tag', () => ({
|
||||
@@ -336,4 +343,23 @@ describe('MobileEventTasksPage', () => {
|
||||
expect(screen.queryByLabelText('Add')).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
it('refetches events after creating a task', async () => {
|
||||
refetchMock.mockClear();
|
||||
(api.createTask as unknown as { mockResolvedValueOnce: (value: any) => void }).mockResolvedValueOnce({ id: 99 });
|
||||
|
||||
render(<MobileEventTasksPage />);
|
||||
|
||||
expect(await screen.findByText('Photo tasks for guests')).toBeInTheDocument();
|
||||
|
||||
fireEvent.change(screen.getByPlaceholderText('z.B. Erstes Gruppenfoto'), {
|
||||
target: { value: 'New Task' },
|
||||
});
|
||||
|
||||
fireEvent.click(screen.getAllByRole('button', { name: 'Fotoaufgabe speichern' })[0]);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(refetchMock).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -255,6 +255,41 @@ describe('MobileEventsPage', () => {
|
||||
});
|
||||
|
||||
it('shows the create button when an active package has remaining events', async () => {
|
||||
vi.mocked(api.getTenantPackagesOverview).mockResolvedValueOnce({
|
||||
packages: [
|
||||
{
|
||||
id: 2,
|
||||
package_id: 2,
|
||||
package_name: 'Reseller',
|
||||
package_type: 'reseller',
|
||||
included_package_slug: 'standard',
|
||||
active: true,
|
||||
used_events: 1,
|
||||
remaining_events: 2,
|
||||
price: 240,
|
||||
currency: 'EUR',
|
||||
purchased_at: null,
|
||||
expires_at: null,
|
||||
package_limits: { max_events_per_year: 5 },
|
||||
},
|
||||
],
|
||||
activePackage: {
|
||||
id: 2,
|
||||
package_id: 2,
|
||||
package_name: 'Reseller',
|
||||
package_type: 'reseller',
|
||||
included_package_slug: 'standard',
|
||||
active: true,
|
||||
used_events: 1,
|
||||
remaining_events: 2,
|
||||
price: 240,
|
||||
currency: 'EUR',
|
||||
purchased_at: null,
|
||||
expires_at: null,
|
||||
package_limits: { max_events_per_year: 5 },
|
||||
},
|
||||
});
|
||||
|
||||
render(<MobileEventsPage />);
|
||||
|
||||
expect(await screen.findByText('New event')).toBeInTheDocument();
|
||||
|
||||
Reference in New Issue
Block a user