diff --git a/services/spelling/test/acceptance/js/CheckTest.js b/services/spelling/test/acceptance/js/CheckTest.js index 981d64b563..2f55d992d8 100644 --- a/services/spelling/test/acceptance/js/CheckTest.js +++ b/services/spelling/test/acceptance/js/CheckTest.js @@ -3,11 +3,12 @@ const request = require('./helpers/request') const USER_ID = 101 -const checkWord = words => +const checkWord = (words, language) => request.post({ url: `/user/${USER_ID}/check`, body: JSON.stringify({ - words + words, + language }) }) @@ -78,4 +79,53 @@ describe('checking words', () => { } }) }) + + describe('when a very long list of words with utf8 responses', () => { + beforeEach(async () => { + let words = [] + for (let i = 0; i <= 20000; i++) { + words.push('anéther') + } + response = await checkWord(words, 'bg') // use Bulgarian to generate utf8 response + }) + + it('should return misspellings for the first 10K results only', async () => { + const body = JSON.parse(response.body) + expect(body.misspellings.length).to.equal(10000) + }) + + it('should have misspelling suggestions with consecutive indexes', async () => { + const body = JSON.parse(response.body) + const indexList = body.misspellings.map(mspl => mspl.index) + expect(indexList.length).to.equal(10000) // avoid testing over an incorrect array + for (let i = 0; i < indexList.length - 1; i++) { + expect(indexList[i] + 1).to.equal(indexList[i + 1]) + } + }) + }) + + + describe('when multiple words with utf8 are submitted', () => { + beforeEach(async () => { + response = await checkWord(['mneá', 'meniésn', 'meônoi', 'mneá'], 'pt_BR') + }) + + it('should return the misspellings for all the words', async () => { + const body = JSON.parse(response.body) + expect(body.misspellings.length).to.equal(4) + }) + + it('should have misspelling suggestions with consecutive indexes', async () => { + const body = JSON.parse(response.body) + const indexes = body.misspellings.map(mspl => mspl.index) + expect(indexes).to.deep.equal([0, 1, 2, 3]) + }) + + it('should return identical suggestions for the same entry', async () => { + const body = JSON.parse(response.body) + expect(body.misspellings[0].suggestions).to.deep.equal( + body.misspellings[3].suggestions + ) + }) + }) })