mirror of
https://github.com/hexastack/hexabot
synced 2025-06-26 18:27:28 +00:00
fix: i18n types
This commit is contained in:
parent
f14f5a7422
commit
ef4f34fbab
@ -69,7 +69,7 @@ describe('LanguageController', () => {
|
||||
}).compile();
|
||||
languageService = module.get<LanguageService>(LanguageService);
|
||||
languageController = module.get<LanguageController>(LanguageController);
|
||||
language = await languageService.findOne({ code: 'en' });
|
||||
language = (await languageService.findOne({ code: 'en' })) as Language;
|
||||
});
|
||||
|
||||
afterEach(jest.clearAllMocks);
|
||||
@ -92,7 +92,7 @@ describe('LanguageController', () => {
|
||||
|
||||
expect(languageService.findOne).toHaveBeenCalledWith(language.id);
|
||||
expect(result).toEqualPayload(
|
||||
languageFixtures.find(({ code }) => code === language.code),
|
||||
languageFixtures.find(({ code }) => code === language.code) as Language,
|
||||
);
|
||||
});
|
||||
});
|
||||
@ -142,7 +142,9 @@ describe('LanguageController', () => {
|
||||
it('should mark a language as default', async () => {
|
||||
jest.spyOn(languageService, 'updateOne');
|
||||
const translationUpdateDto = { isDefault: true };
|
||||
const frLang = await languageService.findOne({ code: 'fr' });
|
||||
const frLang = (await languageService.findOne({
|
||||
code: 'fr',
|
||||
})) as Language;
|
||||
const result = await languageController.updateOne(
|
||||
frLang.id,
|
||||
translationUpdateDto,
|
||||
@ -157,7 +159,9 @@ describe('LanguageController', () => {
|
||||
...translationUpdateDto,
|
||||
});
|
||||
|
||||
const enLang = await languageService.findOne({ code: 'en' });
|
||||
const enLang = (await languageService.findOne({
|
||||
code: 'en',
|
||||
})) as Language;
|
||||
expect(enLang.isDefault).toBe(false);
|
||||
});
|
||||
|
||||
@ -171,7 +175,9 @@ describe('LanguageController', () => {
|
||||
|
||||
describe('deleteOne', () => {
|
||||
it('should throw when attempting to delete the default language', async () => {
|
||||
const defaultLang = await languageService.findOne({ isDefault: true });
|
||||
const defaultLang = (await languageService.findOne({
|
||||
isDefault: true,
|
||||
})) as Language;
|
||||
|
||||
await expect(
|
||||
languageController.deleteOne(defaultLang.id),
|
||||
|
||||
@ -11,6 +11,7 @@ import {
|
||||
forwardRef,
|
||||
Global,
|
||||
Inject,
|
||||
InternalServerErrorException,
|
||||
Module,
|
||||
} from '@nestjs/common';
|
||||
import { HttpAdapterHost } from '@nestjs/core';
|
||||
@ -54,6 +55,11 @@ export class I18nModule extends NativeI18nModule {
|
||||
|
||||
static forRoot(options: I18nOptions): DynamicModule {
|
||||
const { imports, providers, controllers, exports } = super.forRoot(options);
|
||||
if (!providers || !exports) {
|
||||
throw new InternalServerErrorException(
|
||||
'I18n: Unable to find providers and/or exports forRoot()',
|
||||
);
|
||||
}
|
||||
return {
|
||||
module: I18nModule,
|
||||
imports: (imports || []).concat([
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
|
||||
*/
|
||||
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Injectable, InternalServerErrorException } from '@nestjs/common';
|
||||
import {
|
||||
I18nService as NativeI18nService,
|
||||
Path,
|
||||
@ -34,6 +34,11 @@ export class I18nService<
|
||||
...options,
|
||||
};
|
||||
let { lang } = options;
|
||||
|
||||
if (!lang) {
|
||||
throw new InternalServerErrorException('I18nService: lang is undefined');
|
||||
}
|
||||
|
||||
lang = this.resolveLanguage(lang);
|
||||
|
||||
// Translate block message, button text, ...
|
||||
|
||||
4
api/src/utils/test/fixtures/language.ts
vendored
4
api/src/utils/test/fixtures/language.ts
vendored
@ -8,10 +8,10 @@
|
||||
|
||||
import mongoose from 'mongoose';
|
||||
|
||||
import { LanguageUpdateDto } from '@/i18n/dto/language.dto';
|
||||
import { LanguageCreateDto } from '@/i18n/dto/language.dto';
|
||||
import { LanguageModel } from '@/i18n/schemas/language.schema';
|
||||
|
||||
export const languageFixtures: LanguageUpdateDto[] = [
|
||||
export const languageFixtures: LanguageCreateDto[] = [
|
||||
{
|
||||
title: 'English',
|
||||
code: 'en',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user