Files
yeuimu 6c61a4e871 feat(deploy): production deployment setup and fixes
- Debian-based api image (bookworm-slim), docker/debian mirrors, prisma
  binaryTargets for openssl 3.0
- nginx: admin SPA under /admin, TLS via acme.sh (ZeroSSL) + auto-renewal
  cron, http->https redirect
- prisma: add origin_goods.delisted migration, sync missing schema
  (good_image/tag_font_color/good_tags), fix users.createdAt Timestamptz
- api: CORS wildcard reflection, helmet CORP cross-origin, price
  backfill in persistProductDetail, categoryIcon ancestor fallback,
  mediaByColor per-color gallery in public goods detail
- admin: /admin base path (vite + router)
- import-data.mjs: udt_name casting, serial sequence advance fix
2026-08-26 14:23:09 +08:00

29 lines
1.0 KiB
TypeScript

import { readFileSync } from 'node:fs';
import { resolve } from 'node:path';
import { describe, expect, it } from 'vitest';
describe('product center layout', () => {
it('removes the sidebar left edge and extends filter dividers to the viewport right', () => {
const source = readFileSync(
resolve(process.cwd(), 'app/pages/product-center.vue'),
'utf8',
);
expect(source).not.toMatch(/\.sidebar-shell\s*\{[^}]*border-left:/u);
expect(source).toContain('.countries::after, .filter-tools::after');
expect(source).toContain('right: calc(-1 * var(--page-gutter))');
expect(source).toContain('left: 0');
expect(source).toContain('height: 1px');
expect(source).toContain('background: #e5e7eb');
});
it('adds breathing room between root category rows', () => {
const source = readFileSync(
resolve(process.cwd(), 'app/components/product/ProductSidebar.vue'),
'utf8',
);
expect(source).toMatch(/\.root-row\s*\{[^}]*margin-bottom:\s*10px/u);
});
});