core-watermark.spec.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { describe, expect, it } from 'vitest';
  2. import {
  3. buildFileViewerWatermarkBackgroundImage,
  4. buildFileViewerWatermarkInlineStyle,
  5. buildFileViewerWatermarkStyle,
  6. normalizeFileViewerWatermark,
  7. resolveFileViewerWatermarkPresentationState,
  8. } from '../packages/core/src';
  9. describe('@file-viewer/core watermark helpers', () => {
  10. it('normalizes watermark options and builds framework-neutral style payloads', () => {
  11. expect(normalizeFileViewerWatermark(false)).toBeNull();
  12. expect(normalizeFileViewerWatermark({ text: '' })).toBeNull();
  13. expect(normalizeFileViewerWatermark(true)).toMatchObject({
  14. enabled: true,
  15. text: 'Flyfish Viewer',
  16. });
  17. const watermark = {
  18. text: 'Confidential',
  19. color: '#123456',
  20. opacity: 0.2,
  21. };
  22. const backgroundImage = buildFileViewerWatermarkBackgroundImage(watermark);
  23. expect(backgroundImage).toContain('data:image/svg+xml');
  24. expect(backgroundImage).toContain('Confidential');
  25. expect(buildFileViewerWatermarkStyle(watermark)).toEqual({
  26. backgroundImage,
  27. });
  28. expect(buildFileViewerWatermarkStyle(undefined)).toBeUndefined();
  29. expect(buildFileViewerWatermarkInlineStyle(watermark)).toContain(`background-image:${backgroundImage}`);
  30. const presentation = resolveFileViewerWatermarkPresentationState(watermark);
  31. expect(presentation.normalizedWatermark).toMatchObject(watermark);
  32. expect(presentation.watermarkStyle).toEqual({ backgroundImage });
  33. expect(presentation.watermarkInlineStyle).toBe(buildFileViewerWatermarkInlineStyle(watermark));
  34. expect(resolveFileViewerWatermarkPresentationState(false)).toEqual({
  35. normalizedWatermark: null,
  36. watermarkStyle: undefined,
  37. watermarkInlineStyle: '',
  38. });
  39. });
  40. });