1
0
Fork 0
mirror of https://github.com/overleaf/overleaf.git synced 2025-04-08 08:13:10 +00:00

filter out duplicates learned words

This commit is contained in:
Tim Alby 2020-02-18 10:58:03 -05:00
parent 1d405914fd
commit 72d16c7c1f
3 changed files with 16 additions and 3 deletions
services/spelling

View file

@ -60,8 +60,14 @@ const LearnedWordsManager = {
if (error != null) {
return callback(error)
}
const words =
let words =
(preferences != null ? preferences.learnedWords : undefined) || []
if (words) {
// remove duplicates
words = words.filter(
(value, index, self) => self.indexOf(value) === index
)
}
mongoCache.set(userToken, words)
callback(null, words)
})

View file

@ -54,6 +54,8 @@ describe('learning words', function() {
const dictResponse = await getDict()
const responseBody = JSON.parse(dictResponse.body)
// the response from getlearnedwords filters out duplicates, so this test
// can succeed even if the word is stored twice in the database
expect(responseBody.length).to.equals(1)
})

View file

@ -22,6 +22,9 @@ describe('LearnedWordsManager', function() {
del: sinon.stub()
}
this.LearnedWordsManager = SandboxedModule.require(modulePath, {
globals: {
console: console
},
requires: {
'./DB': this.db,
'./MongoCache': this.cache,
@ -92,8 +95,10 @@ describe('LearnedWordsManager', function() {
describe('getLearnedWords', function() {
beforeEach(function() {
this.wordList = ['apples', 'bananas', 'pears']
this.wordListWithDuplicates = this.wordList.slice()
this.wordListWithDuplicates.push('bananas')
this.db.spellingPreferences.findOne = (conditions, callback) => {
callback(null, { learnedWords: this.wordList })
callback(null, { learnedWords: this.wordListWithDuplicates })
}
sinon.spy(this.db.spellingPreferences, 'findOne')
this.LearnedWordsManager.getLearnedWords(this.token, this.callback)
@ -105,7 +110,7 @@ describe('LearnedWordsManager', function() {
).to.equal(true)
})
it('should return the word list in the callback', function() {
it('should return the word list in the callback without duplicates', function() {
expect(this.callback.calledWith(null, this.wordList)).to.equal(true)
})
})