mirror of
https://github.com/informaticker/discord-jellyfin-bot.git
synced 2024-11-25 02:51:57 +01:00
✅ Add tests for utils
This commit is contained in:
parent
2ec9c03b48
commit
ad3519ea8c
@ -29,7 +29,7 @@ import {
|
||||
} from '../models/jellyfinAudioItems';
|
||||
import { PlaybackService } from '../playback/playback.service';
|
||||
import { RemoteImageResult } from '@jellyfin/sdk/lib/generated-client/models';
|
||||
import { chooseSuitableRemoteImage } from '../utils/remoteImages';
|
||||
import { chooseSuitableRemoteImage } from '../utils/remoteImages/remoteImages';
|
||||
import { trimStringToFixedLength } from '../utils/stringUtils';
|
||||
|
||||
@Command({
|
||||
|
@ -6,7 +6,7 @@ import { DiscordMessageService } from '../clients/discord/discord.message.servic
|
||||
import { GenericCustomReply } from '../models/generic-try-handler';
|
||||
import { PlaybackService } from '../playback/playback.service';
|
||||
import { Constants } from '../utils/constants';
|
||||
import { chooseSuitableRemoteImageFromTrack } from '../utils/remoteImages';
|
||||
import { chooseSuitableRemoteImageFromTrack } from '../utils/remoteImages/remoteImages';
|
||||
import { trimStringToFixedLength } from '../utils/stringUtils';
|
||||
import { formatMillisecondsAsHumanReadable } from '../utils/timeUtils';
|
||||
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
} from '@nestjs/terminus';
|
||||
import { HealthCheckExecutor } from '@nestjs/terminus/dist/health-check/health-check-executor.service';
|
||||
import { Test } from '@nestjs/testing';
|
||||
import { useDefaultMockerToken } from '../utils/tests';
|
||||
import { useDefaultMockerToken } from '../utils/tests/defaultMockerToken';
|
||||
import { HealthController } from './health.controller';
|
||||
import { DiscordHealthIndicator } from './indicators/discord.indicator';
|
||||
import { JellyfinHealthIndicator } from './indicators/jellyfin.indicator';
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { HealthIndicatorResult } from '@nestjs/terminus';
|
||||
import { Test } from '@nestjs/testing';
|
||||
import { JellyfinService } from '../../clients/jellyfin/jellyfin.service';
|
||||
import { useDefaultMockerToken } from '../../utils/tests';
|
||||
import { useDefaultMockerToken } from '../../utils/tests/defaultMockerToken';
|
||||
import { JellyfinHealthIndicator } from './jellyfin.indicator';
|
||||
|
||||
describe('JellyfinHealthIndicator', () => {
|
||||
|
@ -3,7 +3,7 @@ import axios from 'axios';
|
||||
import { Client, GuildMember } from 'discord.js';
|
||||
import { DiscordMessageService } from '../clients/discord/discord.message.service';
|
||||
import { GithubRelease } from '../models/github-release';
|
||||
import { useDefaultMockerToken } from '../utils/tests';
|
||||
import { useDefaultMockerToken } from '../utils/tests/defaultMockerToken';
|
||||
import { UpdatesService } from './updates.service';
|
||||
|
||||
// mock axios: https://stackoverflow.com/questions/51275434/type-of-axios-mock-using-jest-typescript/55351900#55351900
|
||||
|
29
src/utils/remoteImages/remoteImages.spec.ts
Normal file
29
src/utils/remoteImages/remoteImages.spec.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { ImageType } from '@jellyfin/sdk/lib/generated-client/models';
|
||||
import { chooseSuitableRemoteImageFromTrack } from './remoteImages';
|
||||
|
||||
describe('remoteImages', () => {
|
||||
it('chooseSuitableRemoteImageFromTrack', () => {
|
||||
const remoteImage = chooseSuitableRemoteImageFromTrack({
|
||||
name: 'Testing Music',
|
||||
durationInMilliseconds: 6969,
|
||||
jellyfinId: '7384783',
|
||||
remoteImages: {
|
||||
Images: [
|
||||
{
|
||||
Type: ImageType.Primary,
|
||||
Url: 'nice picture.png',
|
||||
},
|
||||
{
|
||||
Type: ImageType.Screenshot,
|
||||
Url: 'not nice picture',
|
||||
},
|
||||
],
|
||||
},
|
||||
streamUrl: 'http://jellyfin/example-stream',
|
||||
});
|
||||
|
||||
expect(remoteImage).not.toBeNull();
|
||||
expect(remoteImage.Type).toBe(ImageType.Primary);
|
||||
expect(remoteImage.Url).toBe('nice picture.png');
|
||||
});
|
||||
});
|
@ -3,7 +3,7 @@ import {
|
||||
RemoteImageInfo,
|
||||
RemoteImageResult,
|
||||
} from '@jellyfin/sdk/lib/generated-client/models';
|
||||
import { Track } from '../types/track';
|
||||
import { Track } from '../../types/track';
|
||||
|
||||
export const chooseSuitableRemoteImage = (
|
||||
remoteImageResult: RemoteImageResult,
|
23
src/utils/stringUtils/stringUtils.spec.ts
Normal file
23
src/utils/stringUtils/stringUtils.spec.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import { trimStringToFixedLength } from './stringUtils';
|
||||
|
||||
describe('stringUtils', () => {
|
||||
it('trimStringToFixedLengthShouldNotTrim', () => {
|
||||
const trimmedString = trimStringToFixedLength('test', 20);
|
||||
|
||||
expect(trimmedString).toBe('test');
|
||||
});
|
||||
|
||||
it('trimStringToFixedLengthShouldThrowError', () => {
|
||||
const action = () => {
|
||||
trimStringToFixedLength('testing value', 0);
|
||||
};
|
||||
|
||||
expect(action).toThrow(Error);
|
||||
});
|
||||
|
||||
it('trimStringToFixedLengthShouldTrimWhenLengthExceeded', () => {
|
||||
const trimmedString = trimStringToFixedLength('hello world', 5);
|
||||
|
||||
expect(trimmedString).toBe('he...');
|
||||
});
|
||||
});
|
@ -3,7 +3,11 @@ export const trimStringToFixedLength = (value: string, maxLength: number) => {
|
||||
throw new Error('max length must be positive');
|
||||
}
|
||||
|
||||
return value.length > maxLength
|
||||
? value.substring(0, maxLength - 3) + '...'
|
||||
: value;
|
||||
if (value.length <= maxLength) {
|
||||
return value;
|
||||
}
|
||||
|
||||
const upperBound = maxLength - 3;
|
||||
|
||||
return value.substring(0, upperBound) + '...';
|
||||
};
|
17
src/utils/tests/defaultMockerToken.spec.ts
Normal file
17
src/utils/tests/defaultMockerToken.spec.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import { useDefaultMockerToken } from './defaultMockerToken';
|
||||
|
||||
describe('defaultMockerToken', () => {
|
||||
it('useDefaultMockerTokenShouldbeNull', () => {
|
||||
const mockerToken = useDefaultMockerToken('test');
|
||||
|
||||
expect(mockerToken).toBeNull();
|
||||
});
|
||||
|
||||
it('useDefaultMockerTokenShouldReturnNull', () => {
|
||||
const mockerToken = useDefaultMockerToken(() => ({
|
||||
test: () => jest.fn(),
|
||||
}));
|
||||
|
||||
expect(mockerToken).not.toBeNull();
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user