import { describe, expect, it } from 'vitest';
|
|
import { defaultPosition, defaultWatermark, validatePositionConfiguration } from '../model';
|
|
describe('watermark paper positions', () => {
|
it('centers the default mark on both orientations of A4 and A3', () => {
|
expect(defaultPosition('A4')).toMatchObject({
|
paperWidthMm: 210,
|
paperHeightMm: 297,
|
portraitXMm: 65,
|
portraitYMm: 138,
|
landscapeXMm: 108,
|
landscapeYMm: 95,
|
});
|
expect(defaultPosition('A3')).toMatchObject({
|
paperWidthMm: 297,
|
paperHeightMm: 420,
|
portraitXMm: 108,
|
portraitYMm: 200,
|
landscapeXMm: 170,
|
landscapeYMm: 138,
|
});
|
expect(defaultPosition('A3', 100, 30)).toMatchObject({ portraitXMm: 98, portraitYMm: 195, landscapeXMm: 160, landscapeYMm: 133 });
|
});
|
|
it('accepts centered positions on all four page variants', () => {
|
const config = defaultWatermark();
|
config.positions.push(defaultPosition('A3'));
|
expect(validatePositionConfiguration(config)).toBeUndefined();
|
});
|
|
it('rejects duplicate paper types and coordinates that exceed a rotated mark boundary', () => {
|
const config = defaultWatermark();
|
config.positions.push(defaultPosition('A4'));
|
expect(validatePositionConfiguration(config)).toContain('请勿重复添加');
|
|
config.positions.pop();
|
config.positions[0]!.portraitXMm = 205;
|
expect(validatePositionConfiguration(config)).toContain('纵向位置会使水印超出纸张');
|
|
config.positions[0]!.portraitXMm = 65;
|
config.positions[0]!.landscapeYMm = 211;
|
expect(validatePositionConfiguration(config)).toContain('横向位置的 X/Y 必须位于纸张范围内');
|
|
config.positions[0]!.landscapeYMm = 95;
|
config.rotationAngle = -30;
|
config.positions[0]!.portraitYMm = 0;
|
expect(validatePositionConfiguration(config)).toContain('纵向位置会使水印超出纸张');
|
});
|
|
it('allows a tiled origin without requiring the entire mark to fit at that origin', () => {
|
const config = defaultWatermark();
|
config.layoutMode = 'TILED';
|
config.positions[0]!.portraitYMm = 290;
|
expect(validatePositionConfiguration(config)).toBeUndefined();
|
});
|
});
|