All checks were successful
Deploy / deploy (push) Successful in 2m24s
- Add master catalog (bambuLabCatalog.ts) as single source of truth for materials, finishes, colors, and refill/spool availability - Fix incorrect finish-per-material mappings (remove PLA: 85A/90A/95A HF/FR/GF/HF, add ASA: Basic/CF/Aero, fix PETG/PC) - Implement cascading filters on public site: material restricts finish, finish restricts color - Add AdminSidebar component across all admin pages - Redirect /upadaj to /dashboard when already authenticated - Update color hex mappings and tests to match official Bambu Lab names
73 lines
3.0 KiB
TypeScript
73 lines
3.0 KiB
TypeScript
import { readFileSync } from 'fs';
|
|
import { join } from 'path';
|
|
|
|
describe('UI Features Tests', () => {
|
|
it('should have color hex input in admin form', () => {
|
|
const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
|
|
const adminContent = readFileSync(adminDashboardPath, 'utf-8');
|
|
|
|
// Check for color input
|
|
expect(adminContent).toContain('type="color"');
|
|
expect(adminContent).toContain('boja_hex');
|
|
expect(adminContent).toContain('Hex kod boje');
|
|
});
|
|
|
|
it('should display color hex in frontend table', () => {
|
|
const filamentTablePath = join(process.cwd(), 'src', 'components', 'FilamentTableV2.tsx');
|
|
const tableContent = readFileSync(filamentTablePath, 'utf-8');
|
|
|
|
// Check for color display
|
|
expect(tableContent).toContain('backgroundColor: filament.boja_hex');
|
|
expect(tableContent).toContain('boja_hex');
|
|
});
|
|
|
|
it('should have number inputs for quantity fields', () => {
|
|
const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
|
|
const adminContent = readFileSync(adminDashboardPath, 'utf-8');
|
|
|
|
// Check for number inputs for quantities
|
|
expect(adminContent).toMatch(/type="number"[\s\S]*?name="refill"/);
|
|
expect(adminContent).toMatch(/type="number"[\s\S]*?name="spulna"/);
|
|
expect(adminContent).toContain('Refil');
|
|
expect(adminContent).toContain('Špulna');
|
|
expect(adminContent).toContain('Ukupna količina');
|
|
});
|
|
|
|
it('should have number input for quantity', () => {
|
|
const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
|
|
const adminContent = readFileSync(adminDashboardPath, 'utf-8');
|
|
|
|
// Check for number input
|
|
expect(adminContent).toMatch(/type="number"[\s\S]*?name="kolicina"/);
|
|
expect(adminContent).toContain('min="0"');
|
|
expect(adminContent).toContain('step="1"');
|
|
});
|
|
|
|
it('should have predefined material options', () => {
|
|
const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
|
|
const adminContent = readFileSync(adminDashboardPath, 'utf-8');
|
|
|
|
// Check for material select dropdown (now generated from catalog)
|
|
expect(adminContent).toContain('getMaterialOptions()');
|
|
expect(adminContent).toContain('Izaberi tip');
|
|
});
|
|
|
|
it('should have admin sidebar and header', () => {
|
|
const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
|
|
const dashboardContent = readFileSync(adminDashboardPath, 'utf-8');
|
|
|
|
// Check for admin sidebar and header
|
|
expect(dashboardContent).toContain('AdminSidebar');
|
|
expect(dashboardContent).toContain('Odjava');
|
|
});
|
|
|
|
it('should have Safari-specific select styling', () => {
|
|
const selectCssPath = join(process.cwd(), 'src', 'styles', 'select.css');
|
|
const selectContent = readFileSync(selectCssPath, 'utf-8');
|
|
|
|
// Check for Safari fixes
|
|
expect(selectContent).toContain('-webkit-appearance: none !important');
|
|
expect(selectContent).toContain('@supports (-webkit-appearance: none)');
|
|
expect(selectContent).toContain('-webkit-min-device-pixel-ratio');
|
|
});
|
|
}); |