lobe-chat

Форк
0
/
compressImage.test.ts 
59 строк · 1.7 Кб
1
import compressImage from './compressImage';
2

3
const getContextSpy = vi.spyOn(global.HTMLCanvasElement.prototype, 'getContext');
4
const drawImageSpy = vi.spyOn(CanvasRenderingContext2D.prototype, 'drawImage');
5

6
beforeEach(() => {
7
  getContextSpy.mockClear();
8
  drawImageSpy.mockClear();
9
});
10

11
describe('compressImage', () => {
12
  it('should compress image with maxWidth', () => {
13
    const img = document.createElement('img');
14
    img.width = 3000;
15
    img.height = 2000;
16

17
    const r = compressImage({ img });
18

19
    expect(r).toMatch(/^data:image\/webp;base64,/);
20

21
    expect(getContextSpy).toBeCalledTimes(1);
22
    expect(getContextSpy).toBeCalledWith('2d');
23

24
    expect(drawImageSpy).toBeCalledTimes(1);
25
    expect(drawImageSpy).toBeCalledWith(img, 0, 0, 3000, 2000, 0, 0, 2160, 1440);
26
  });
27

28
  it('should compress image with maxHeight', () => {
29
    const img = document.createElement('img');
30
    img.width = 2000;
31
    img.height = 3000;
32

33
    const r = compressImage({ img });
34

35
    expect(r).toMatch(/^data:image\/webp;base64,/);
36

37
    expect(getContextSpy).toBeCalledTimes(1);
38
    expect(getContextSpy).toBeCalledWith('2d');
39

40
    expect(drawImageSpy).toBeCalledTimes(1);
41
    expect(drawImageSpy).toBeCalledWith(img, 0, 0, 2000, 3000, 0, 0, 1440, 2160);
42
  });
43

44
  it('should not compress image', () => {
45
    const img = document.createElement('img');
46
    img.width = 2000;
47
    img.height = 2000;
48

49
    const r = compressImage({ img });
50

51
    expect(r).toMatch(/^data:image\/webp;base64,/);
52

53
    expect(getContextSpy).toBeCalledTimes(1);
54
    expect(getContextSpy).toBeCalledWith('2d');
55

56
    expect(drawImageSpy).toBeCalledTimes(1);
57
    expect(drawImageSpy).toBeCalledWith(img, 0, 0, 2000, 2000, 0, 0, 2000, 2000);
58
  });
59
});
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.