feat: implement AI styling foundation and billing scope rework
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-02-06 20:01:58 +01:00
parent df00deb0df
commit 36bed12ff9
80 changed files with 8944 additions and 49 deletions

View File

@@ -2,6 +2,11 @@ import React from 'react';
import { describe, expect, it, vi } from 'vitest';
import { render, screen } from '@testing-library/react';
const mockEventData = {
token: 'token',
event: { name: 'Demo Event', capabilities: { ai_styling: false } },
};
vi.mock('react-router-dom', () => ({
useParams: () => ({ photoId: '123' }),
useNavigate: () => vi.fn(),
@@ -36,8 +41,12 @@ vi.mock('../components/ShareSheet', () => ({
default: () => <div>ShareSheet</div>,
}));
vi.mock('../components/AiMagicEditSheet', () => ({
default: () => <div>AiMagicEditSheet</div>,
}));
vi.mock('../context/EventDataContext', () => ({
useEventData: () => ({ token: 'token', event: { name: 'Demo Event' } }),
useEventData: () => mockEventData,
}));
vi.mock('../services/photosApi', () => ({
@@ -66,9 +75,18 @@ import PhotoLightboxScreen from '../screens/PhotoLightboxScreen';
describe('PhotoLightboxScreen', () => {
it('renders lightbox layout', async () => {
mockEventData.event = { name: 'Demo Event', capabilities: { ai_styling: false } };
render(<PhotoLightboxScreen />);
expect(await screen.findByText('Gallery')).toBeInTheDocument();
expect(await screen.findByText('Like')).toBeInTheDocument();
expect(screen.queryByLabelText('AI Magic Edit')).not.toBeInTheDocument();
});
it('keeps ai magic edit action hidden while rollout flag is disabled', async () => {
mockEventData.event = { name: 'Demo Event', capabilities: { ai_styling: true } };
render(<PhotoLightboxScreen />);
expect(screen.queryByLabelText('AI Magic Edit')).not.toBeInTheDocument();
});
});