8862887baa
新增充值订单查询、通用用户详情、钱包冻结与部分退款操作 接入微信V3退款申请、回调、主动查单、交易账单对账与安全诊断 新增退款占用、权益追回、异常欠账和消费限制事务 补齐Native支付SSE自动收口及退款编号与部分退款校验 同步SpacetimeDB schema、生成绑定、测试与项目文档
45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
import { describe, expect, test } from 'vitest';
|
|
|
|
const stylesheet = fs.readFileSync(
|
|
path.resolve(process.cwd(), 'apps/admin-web/src/styles/admin.css'),
|
|
'utf8',
|
|
);
|
|
|
|
describe('admin shell scrolling contract', () => {
|
|
test('desktop shell keeps sidebar separate from the scrollable content', () => {
|
|
expect(ruleFor('.admin-shell')).toContain('\n height: 100dvh;');
|
|
expect(ruleFor('.admin-shell')).toContain('overflow: hidden');
|
|
expect(ruleFor('.admin-sidebar')).toContain('min-height: 0');
|
|
expect(ruleFor('.admin-sidebar')).toContain('overflow-y: auto');
|
|
expect(ruleFor('.admin-main')).toContain('min-height: 0');
|
|
expect(ruleFor('.admin-main')).toContain('overflow: hidden');
|
|
expect(ruleFor('.admin-content')).toContain('min-height: 0');
|
|
expect(ruleFor('.admin-content')).toContain('overflow: auto');
|
|
});
|
|
|
|
test('mobile navigation stays in one horizontally scrollable row', () => {
|
|
const mobileStyles = stylesheet.slice(stylesheet.indexOf('@media (max-width: 980px)'));
|
|
expect(mobileStyles).toContain('.admin-bottom-nav {');
|
|
expect(mobileStyles).toContain('display: flex');
|
|
expect(mobileStyles).toContain('overflow-x: auto');
|
|
expect(mobileStyles).not.toContain(
|
|
'grid-template-columns: repeat(auto-fit, minmax(64px, 1fr))',
|
|
);
|
|
expect(mobileStyles).toContain('flex: 0 0 76px');
|
|
});
|
|
});
|
|
|
|
function ruleFor(selector: string) {
|
|
const escapedSelector = selector.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
const match = stylesheet.match(
|
|
new RegExp(`${escapedSelector}\\s*\\{([^}]*)\\}`),
|
|
);
|
|
if (!match) {
|
|
throw new Error(`Missing CSS rule for ${selector}`);
|
|
}
|
|
return match[1];
|
|
}
|