mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
add tests for i18n and getUserLanguage
This commit is contained in:
89
test/api/v3/unit/middlewares/getUserLanguage.test.js
Normal file
89
test/api/v3/unit/middlewares/getUserLanguage.test.js
Normal file
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
generateRes,
|
||||
generateReq,
|
||||
generateNext,
|
||||
} from '../../../../helpers/api-unit.helper';
|
||||
import getUserLanguage from '../../../../../website/src/middlewares/api-v3/getUserLanguage';
|
||||
import Q from 'q';
|
||||
import { model as User } from '../../../../../website/src/models/user';
|
||||
import { translations } from '../../../../../website/src/libs/api-v3/i18n';
|
||||
import accepts from 'accepts';
|
||||
|
||||
describe('getUserLanguage', () => {
|
||||
let res, req, next;
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
req = generateReq();
|
||||
next = generateNext();
|
||||
|
||||
sandbox.stub(User, 'findOne').returns({
|
||||
exec() {
|
||||
return Q.resolve({
|
||||
preferences: {
|
||||
language: 'it',
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('query parameter', () => {
|
||||
it('uses the language in the query parameter if avalaible', () => {
|
||||
req.query = {
|
||||
lang: 'es',
|
||||
};
|
||||
|
||||
getUserLanguage(req, res, next);
|
||||
expect(req.language).to.equal('es');
|
||||
});
|
||||
|
||||
it('falls back to english if the query parameter language does not exists', () => {
|
||||
req.query = {
|
||||
lang: 'bla',
|
||||
};
|
||||
|
||||
getUserLanguage(req, res, next);
|
||||
expect(req.language).to.equal('en');
|
||||
});
|
||||
});
|
||||
|
||||
describe('authorized request', () => {
|
||||
it('uses the user preferred language if avalaible', () => {
|
||||
req.locals = {
|
||||
user: {
|
||||
preferences: {
|
||||
language: 'it',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
getUserLanguage(req, res, next);
|
||||
expect(req.language).to.equal('it');
|
||||
});
|
||||
|
||||
xit('falls back to english if the user preferred language is not avalaible', () => {
|
||||
req.locals = {
|
||||
user: {
|
||||
preferences: {
|
||||
language: 'bla',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
getUserLanguage(req, res, next);
|
||||
expect(req.language).to.equal('en');
|
||||
});
|
||||
});
|
||||
|
||||
describe('request with session', () => {
|
||||
it('uses the user preferred language if avalaible', () => {
|
||||
req.session = {
|
||||
userId: 123
|
||||
};
|
||||
|
||||
getUserLanguage(req, res, next);
|
||||
expect(req.language).to.equal('it');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user