1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Add unit tests for utils (#5412)

* add unit tests for Card utils

* add unit tests for DateFnsLocale utils

* fix lint

* add unit tests for Events utils

* fix lint

* fix lint
This commit is contained in:
Raphaël TISON 2024-10-15 22:22:10 +02:00 committed by GitHub
parent f57c089ae2
commit a133a33a00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 184 additions and 0 deletions

89
src/utils/events.test.ts Normal file
View file

@ -0,0 +1,89 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import eventsUtils from './events';
describe('Utils: events', () => {
describe('Method: on', () => {
it('should throw error if object is null', () => {
const call = () => eventsUtils.on(null, 'testEvent', vi.fn());
expect(call).toThrowError(new Error('obj cannot be null!'));
});
it('should init object callbacks with testEvent type if it does not exist', () => {
const obj = {};
const callback = vi.fn();
eventsUtils.on(obj, 'testEvent', callback);
expect(obj).toHaveProperty('_callbacks', {
testEvent: [callback]
});
});
it('should add callback to existing object callbacks', () => {
const initialCallback = vi.fn();
const obj = {
_callbacks: { testEvent: [initialCallback] }
};
const otherCallback = vi.fn();
eventsUtils.on(obj, 'testEvent', otherCallback);
expect(obj).toHaveProperty('_callbacks', {
testEvent: [initialCallback, otherCallback]
});
});
});
describe('Method: off', () => {
let obj: object;
let initialCallback: ReturnType<typeof vi.fn>;
beforeEach(() => {
initialCallback = vi.fn();
obj = {
_callbacks: {
testEvent: [initialCallback]
}
};
});
it('should remove existing callbacks', () => {
eventsUtils.off(obj, 'testEvent', initialCallback);
expect(obj).toHaveProperty('_callbacks', { testEvent: [] });
});
it('should not remove callback if it is not registered for the given event', () => {
eventsUtils.off(obj, 'otherEvent', initialCallback);
expect(obj).toHaveProperty('_callbacks', {
testEvent: [initialCallback],
otherEvent: []
});
});
it('should not remove callback if it is not registered', () => {
const callbackToRemove = vi.fn();
eventsUtils.off(obj, 'testEvent', callbackToRemove);
expect(obj).toHaveProperty('_callbacks', {
testEvent: [initialCallback]
});
});
});
describe('Method: trigger', () => {
it('should trigger registered callback with given parameters', () => {
const obj = {};
const callback = vi.fn();
eventsUtils.on(obj, 'testEvent', callback);
eventsUtils.trigger(obj, 'testEvent', ['testValue1', 'testValue2']);
expect(callback).toHaveBeenCalledWith(
{ type: 'testEvent' },
'testValue1',
'testValue2'
);
});
});
});