directus

Форк
0
/
use-bus.test.ts 
65 строк · 1.5 Кб
1
import { createBus, type BusLocal, type BusRedis } from '@directus/memory';
2
import type { Redis } from 'ioredis';
3
import { afterEach, beforeEach, expect, test, vi } from 'vitest';
4
import { redisConfigAvailable, useRedis } from '../../redis/index.js';
5
import { _cache, useBus } from './use-bus.js';
6

7
vi.mock('../../redis/index.js');
8
vi.mock('@directus/memory');
9

10
let mockBus: BusLocal | BusRedis;
11

12
beforeEach(() => {
13
	mockBus = {} as unknown as BusLocal;
14
	vi.mocked(createBus).mockReturnValue(mockBus);
15
});
16

17
afterEach(() => {
18
	vi.clearAllMocks();
19
	_cache.bus = undefined;
20
});
21

22
test('Returns existing bus if exists', () => {
23
	_cache.bus = mockBus;
24

25
	const bus = useBus();
26

27
	expect(bus).toBe(mockBus);
28
});
29

30
test('Creates Redis based bus if Redis configuration is available', () => {
31
	const mockRedis = {} as unknown as Redis;
32
	vi.mocked(redisConfigAvailable).mockReturnValue(true);
33
	vi.mocked(useRedis).mockReturnValue(mockRedis);
34

35
	useBus();
36

37
	expect(createBus).toHaveBeenCalledWith({
38
		type: 'redis',
39
		redis: mockRedis,
40
		namespace: 'directus:bus',
41
	});
42

43
	expect(_cache.bus).toBe(mockBus);
44
});
45

46
test('Creates Local bus if Redis configuration is unavailable', () => {
47
	vi.mocked(redisConfigAvailable).mockReturnValue(false);
48

49
	useBus();
50

51
	expect(createBus).toHaveBeenCalledWith({
52
		type: 'local',
53
	});
54

55
	expect(_cache.bus).toBe(mockBus);
56
});
57

58
test('Returns created bus', () => {
59
	vi.mocked(redisConfigAvailable).mockReturnValue(false);
60

61
	const bus = useBus();
62

63
	expect(bus).toBe(_cache.bus);
64
	expect(bus).toBe(mockBus);
65
});
66

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

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

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

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