Add upgrade CTAs for branding and watermarks
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { describe, expect, it, vi, beforeEach } from 'vitest';
|
||||
import { render, screen, waitFor } from '@testing-library/react';
|
||||
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
||||
|
||||
const navigateMock = vi.fn();
|
||||
const backMock = vi.fn();
|
||||
@@ -163,4 +163,38 @@ describe('MobileBrandingPage', () => {
|
||||
expect(screen.getByText('Theme')).toBeInTheDocument();
|
||||
expect(screen.getByText('Colors')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('offers an upgrade CTA when branding is locked', async () => {
|
||||
getEventMock.mockResolvedValueOnce({
|
||||
...baseEvent,
|
||||
package: { branding_allowed: false, watermark_allowed: false },
|
||||
});
|
||||
|
||||
render(<MobileBrandingPage />);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText('Unlock branding')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
expect(screen.getByText('Upgrade package')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('offers an upgrade CTA on the watermark tab when disabled', async () => {
|
||||
getEventMock.mockResolvedValueOnce({
|
||||
...baseEvent,
|
||||
package: { branding_allowed: true, watermark_allowed: false },
|
||||
});
|
||||
|
||||
render(<MobileBrandingPage />);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText('Branding Source')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
fireEvent.click(screen.getByText('Wasserzeichen'));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText('Upgrade to Premium')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -56,6 +56,16 @@ describe('selectRecommendedPackageId', () => {
|
||||
const active = { id: 10, price: 250, max_photos: 999, max_guests: 999, gallery_days: 365, features: { advanced_analytics: true } } as any;
|
||||
expect(selectRecommendedPackageId(packages, 'advanced_analytics', active)).toBe(2);
|
||||
});
|
||||
|
||||
it('selects the cheapest package with watermark access when requested', () => {
|
||||
const watermarkPackages = [
|
||||
{ id: 1, price: 100, watermark_allowed: false, features: {} },
|
||||
{ id: 2, price: 120, watermark_allowed: true, features: {} },
|
||||
{ id: 3, price: 180, watermark_allowed: true, features: {} },
|
||||
] as any;
|
||||
const active = { id: 1, price: 100, watermark_allowed: false, features: {} } as any;
|
||||
expect(selectRecommendedPackageId(watermarkPackages, 'watermark_allowed', active)).toBe(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('buildPackageComparisonRows', () => {
|
||||
|
||||
Reference in New Issue
Block a user