Skip to content

Commit

Permalink
fix #493 (call stack bug) & tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mashpie committed Mar 5, 2022
1 parent 388642f commit 1d956f3
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 2 deletions.
4 changes: 2 additions & 2 deletions i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -1025,7 +1025,7 @@ const i18n = function I18n(_OPTS = false) {
' retrying in ' +
defaultLocale
)
mutator(translate(defaultLocale, singular, plural))
mutator(translate(defaultLocale, singular, plural, true))
} else {
mutator({
one: defaultSingular || singular,
Expand All @@ -1047,7 +1047,7 @@ const i18n = function I18n(_OPTS = false) {
' retrying in ' +
defaultLocale
)
mutator(translate(defaultLocale, singular, plural))
mutator(translate(defaultLocale, singular, plural, true))
} else {
mutator(defaultSingular || singular)
}
Expand Down
101 changes: 101 additions & 0 deletions test/i18n.retryInDefaultLocaleWithSync.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
const { I18n } = require('..')
const should = require('should')
const fs = require('fs')

describe('retryInDefaultLocaleWithSync', () => {
const DIRECTORY = './locales_in_sync'
const CONFIG = {
locales: ['en', 'de'],
directory: DIRECTORY,
defaultLocale: 'en',
retryInDefaultLocale: true,
syncFiles: true
}

const readJson = (locale) => {
return JSON.parse(fs.readFileSync(`${DIRECTORY}/${locale}.json`))
}

const writeJson = (locale, data) => {
fs.writeFileSync(
`${DIRECTORY}/${locale}.json`,
JSON.stringify(data, null, '\t')
)
}

describe('writing', () => {
const i18n = new I18n(CONFIG)
const req = {}
i18n.init(req)
after(() => {
try {
fs.unlinkSync(`${DIRECTORY}/de.json`)
fs.unlinkSync(`${DIRECTORY}/en.json`)
fs.rmdirSync(DIRECTORY)
} catch (e) {}
})

it('should not throw', () => {
req.setLocale('en')
should.equal(req.__('test'), 'test')

req.setLocale('de')
should.equal(req.__('test'), 'test')

req.setLocale('fr')
should.equal(req.__('test'), 'test')
})

it('should have written all files', () => {
const statsen = fs.lstatSync(`${DIRECTORY}/en.json`)
const statsde = fs.lstatSync(`${DIRECTORY}/de.json`)
should.exist(statsen)
should.exist(statsde)
})

it('should not have written unsupported locale files', () => {
let statsfr
try {
statsfr = fs.lstatSync(`${DIRECTORY}/fr.json`)
} catch (e) {
should.equal(e.code, 'ENOENT')
}
should.not.exist(statsfr)
})

it('should have written same data to all files', () => {
const dataEn = readJson('en')
const dataDe = readJson('de')
should.deepEqual(dataEn, dataDe)
})
})

describe('reading', () => {
writeJson('en', { test: 'test', welcome: 'welcome' })
writeJson('de', { test: 'test', welcome: 'Willkommen' })
const i18n = new I18n(CONFIG)
const req = {}
i18n.init(req)
after(() => {
try {
fs.unlinkSync(`${DIRECTORY}/de.json`)
fs.unlinkSync(`${DIRECTORY}/en.json`)
fs.rmdirSync(DIRECTORY)
} catch (e) {}
})

it('should still return default locales value', () => {
req.setLocale('en')
should.equal(req.__('test'), 'test')
should.equal(req.__('welcome'), 'welcome')

req.setLocale('de')
should.equal(req.__('test'), 'test')
should.equal(req.__('welcome'), 'Willkommen')

req.setLocale('fr')
should.equal(req.__('test'), 'test')
should.equal(req.__('welcome'), 'welcome')
})
})
})

0 comments on commit 1d956f3

Please sign in to comment.