🧪 **Test Infrastructure Enhancements:** - Fixed PDF generator tests by stubbing QR code generation properly - Simplified job tests by replacing complex mocking with functional testing - Added missing `expired_drafts` scope to Ticket model for job functionality - Enhanced test coverage across all components 📋 **Specific Component Fixes:** **PDF Generator Tests (17 tests):** - Added QR code mocking to avoid external dependency issues - Fixed price validation issues for zero/low price scenarios - Simplified complex mocking to focus on functional behavior - All tests now pass with proper assertions **Job Tests (14 tests):** - Replaced complex Rails logger mocking with functional testing - Fixed `expired_drafts` scope missing from Ticket model - Simplified ExpiredOrdersCleanupJob tests to focus on core functionality - Simplified CleanupExpiredDraftsJob tests to avoid brittle mocks - All job tests now pass with proper error handling **Model & Service Tests:** - Enhanced Order model tests (42 tests) with comprehensive coverage - Fixed StripeInvoiceService tests with proper Stripe API mocking - Added comprehensive validation and business logic testing - All model tests passing with edge case coverage **Infrastructure:** - Added rails-controller-testing and mocha gems for better test support - Enhanced test helpers with proper Devise integration - Fixed QR code generation in test environment - Added necessary database migrations and schema updates 🎯 **Test Coverage Summary:** - 202+ tests across the entire application - Models: Order (42 tests), Ticket, Event, User coverage - Controllers: Events (17 tests), Orders (21 tests), comprehensive actions - Services: PDF generation, Stripe integration, business logic - Jobs: Background processing, cleanup operations - All major application functionality covered 🔧 **Technical Improvements:** - Replaced fragile mocking with functional testing approaches - Added proper test data setup and teardown - Enhanced error handling and edge case coverage - Improved test maintainability and reliability 🚀 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
53 lines
2.5 KiB
CSS
53 lines
2.5 KiB
CSS
:root {
|
|
--background: oklch(0.9961 0.0039 106.7952);
|
|
--foreground: oklch(0.0902 0.0203 286.0532);
|
|
--card: oklch(0.9961 0.0039 106.7952);
|
|
--card-foreground: oklch(0.0902 0.0203 286.0532);
|
|
--popover: oklch(0.9961 0.0039 106.7952);
|
|
--popover-foreground: oklch(0.0902 0.0203 286.0532);
|
|
--primary: oklch(0.4902 0.2314 320.7094);
|
|
--primary-foreground: oklch(0.9961 0.0039 106.7952);
|
|
--secondary: oklch(0.6471 0.1686 342.5570);
|
|
--secondary-foreground: oklch(0.0902 0.0203 286.0532);
|
|
--muted: oklch(0.9412 0.0196 106.7952);
|
|
--muted-foreground: oklch(0.4706 0.0157 286.0532);
|
|
--accent: oklch(0.7255 0.1451 51.2345);
|
|
--accent-foreground: oklch(0.0902 0.0203 286.0532);
|
|
--destructive: oklch(0.5765 0.2314 27.3319);
|
|
--destructive-foreground: oklch(0.9961 0.0039 106.7952);
|
|
--border: oklch(0.8824 0.0157 106.7952);
|
|
--input: oklch(0.8824 0.0157 106.7952);
|
|
--ring: oklch(0.4902 0.2314 320.7094);
|
|
--chart-1: oklch(0.4902 0.2314 320.7094);
|
|
--chart-2: oklch(0.6471 0.1686 342.5570);
|
|
--chart-3: oklch(0.7255 0.1451 51.2345);
|
|
--chart-4: oklch(0.5490 0.2157 142.4953);
|
|
--chart-5: oklch(0.6157 0.2275 328.3634);
|
|
--sidebar: oklch(0.9412 0.0196 106.7952);
|
|
--sidebar-foreground: oklch(0.0902 0.0203 286.0532);
|
|
--sidebar-primary: oklch(0.4902 0.2314 320.7094);
|
|
--sidebar-primary-foreground: oklch(0.9961 0.0039 106.7952);
|
|
--sidebar-accent: oklch(0.6471 0.1686 342.5570);
|
|
--sidebar-accent-foreground: oklch(0.0902 0.0203 286.0532);
|
|
--sidebar-border: oklch(0.8824 0.0157 106.7952);
|
|
--sidebar-ring: oklch(0.4902 0.2314 320.7094);
|
|
--font-sans: 'Inter', sans-serif;
|
|
--font-serif: 'Playfair Display', serif;
|
|
--font-mono: 'Fira Code', monospace;
|
|
--radius: 1rem;
|
|
--shadow-2xs: 0 1px 2px 0px hsl(320 70% 20% / 0.08);
|
|
--shadow-xs: 0 1px 3px 0px hsl(320 70% 20% / 0.10);
|
|
--shadow-sm: 0 2px 4px 0px hsl(320 70% 20% / 0.10), 0 1px 2px -1px hsl(320 70% 20% / 0.06);
|
|
--shadow: 0 4px 6px 0px hsl(320 70% 20% / 0.12), 0 2px 4px -1px hsl(320 70% 20% / 0.08);
|
|
--shadow-md: 0 6px 8px 0px hsl(320 70% 20% / 0.15), 0 4px 6px -1px hsl(320 70% 20% / 0.10);
|
|
--shadow-lg: 0 10px 15px 0px hsl(320 70% 20% / 0.20), 0 6px 8px -1px hsl(320 70% 20% / 0.15);
|
|
--shadow-xl: 0 20px 25px 0px hsl(320 70% 20% / 0.25), 0 10px 15px -1px hsl(320 70% 20% / 0.20);
|
|
--shadow-2xl: 0 25px 50px 0px hsl(320 70% 20% / 0.30);
|
|
--tracking-normal: 0em;
|
|
--spacing: 0.25rem;
|
|
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-lg: var(--radius);
|
|
--radius-xl: calc(var(--radius) + 4px);
|
|
} |