/
favsAndSkinTone.test.js
83 lines (73 loc) · 2.56 KB
/
favsAndSkinTone.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { ALL_EMOJI, basicAfterEach, basicBeforeEach } from '../shared'
import Database from '../../../src/database/Database'
describe('database tests', () => {
let db
beforeEach(() => {
basicBeforeEach()
db = new Database({ dataSource: ALL_EMOJI })
})
afterEach(async () => {
await basicAfterEach()
await db.delete()
})
test('get and set preferred skin tone', async () => {
expect(await db.getPreferredSkinTone()).toBe(0)
await db.setPreferredSkinTone(5)
expect(await db.getPreferredSkinTone()).toBe(5)
await expect(() => db.setPreferredSkinTone()).rejects.toThrow()
})
test('get and set favorite emoji', async () => {
expect(await db.getTopFavoriteEmoji(10)).toStrictEqual([])
await db.incrementFavoriteEmojiCount('🐵')
expect((await db.getTopFavoriteEmoji(10)).map(_ => _.unicode)).toStrictEqual([
'🐵'
])
for (let i = 0; i < 3; i++) {
await db.incrementFavoriteEmojiCount('🐒')
}
for (let i = 0; i < 2; i++) {
await db.incrementFavoriteEmojiCount('😀')
}
expect((await db.getTopFavoriteEmoji(10)).map(_ => _.unicode)).toStrictEqual([
'🐒',
'😀',
'🐵'
])
expect((await db.getTopFavoriteEmoji(1))[0].tokens).toBeFalsy()
})
test('emoji favorite counts', async () => {
await db.incrementFavoriteEmojiCount('🐵')
const emojis = ['🐒', '😀', '🐵', '😅', '🤣', '🖐️', '🤏', '✌️', '🐶', '🎉', '✨️']
for (let i = 0; i < emojis.length; i++) {
for (let j = 0; j < emojis.length - i + 1; j++) {
await db.incrementFavoriteEmojiCount(emojis[i])
}
}
expect((await db.getTopFavoriteEmoji(10)).map(_ => _.unicode)).toStrictEqual(
emojis.slice(0, 10)
)
expect((await db.getTopFavoriteEmoji(11)).map(_ => _.unicode)).toStrictEqual(
emojis.slice(0, 11)
)
expect((await db.getTopFavoriteEmoji(3)).map(_ => _.unicode)).toStrictEqual(
emojis.slice(0, 3)
)
expect((await db.getTopFavoriteEmoji(0)).map(_ => _.unicode)).toStrictEqual(
[]
)
})
test('nonexistent emoji in favorites are ignored', async () => {
await db.incrementFavoriteEmojiCount('fake')
expect((await db.getTopFavoriteEmoji(10)).map(_ => _.unicode)).toStrictEqual(
[]
)
await db.incrementFavoriteEmojiCount('0')
expect((await db.getTopFavoriteEmoji(10)).map(_ => _.unicode)).toStrictEqual(
[]
)
await db.incrementFavoriteEmojiCount('🐒')
expect((await db.getTopFavoriteEmoji(10)).map(_ => _.unicode)).toStrictEqual(
['🐒']
)
})
})