/
emojisCache.spec.js
101 lines (83 loc) 路 2.61 KB
/
emojisCache.spec.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import { pathExistsSync } from 'path-exists'
import fs from 'fs'
import path from 'path'
import emojisCache, {
GITMOJI_CACHE,
CACHE_PATH
} from '../../src/utils/emojisCache'
import * as stubs from './stubs'
jest.mock('os', () => ({
homedir: jest.fn().mockReturnValue('/Users/Test/')
}))
describe('emojisCache', () => {
it('should match GITMOJI_CACHE', () => {
expect(GITMOJI_CACHE).toMatchSnapshot()
})
it('should match CACHE_PATH', () => {
expect(CACHE_PATH).toMatchSnapshot()
})
describe('isAvailable', () => {
emojisCache.isAvailable()
it('should check that cache path exists', () => {
expect(pathExistsSync).toHaveBeenCalledWith(CACHE_PATH)
})
})
describe('createEmojis', () => {
describe('when cache directory does not exists', () => {
beforeAll(() => {
pathExistsSync.mockReturnValue(false)
emojisCache.createEmojis(stubs.gitmojis)
})
it('should create cache directory', () => {
expect(fs.mkdirSync).toHaveBeenCalledWith(path.dirname(CACHE_PATH))
})
it('should write the gitmojis.json file', () => {
expect(fs.writeFileSync).toHaveBeenCalledWith(
CACHE_PATH,
JSON.stringify(stubs.gitmojis)
)
})
})
describe('when cache directory exists', () => {
beforeAll(() => {
pathExistsSync.mockReturnValue(true)
fs.mkdirSync.mockClear()
fs.writeFileSync.mockClear()
emojisCache.createEmojis(stubs.gitmojis)
})
it('should create cache directory', () => {
expect(fs.mkdirSync).not.toHaveBeenCalled()
})
it('should write the gitmojis.json file', () => {
expect(fs.writeFileSync).toHaveBeenCalledWith(
CACHE_PATH,
JSON.stringify(stubs.gitmojis)
)
})
})
})
describe('getEmojis', () => {
describe('when cache exists', () => {
beforeAll(() => {
fs.readFileSync.mockReturnValue(JSON.stringify(stubs.gitmojis))
})
it('should read and return the emojis from the cache', () => {
const emojis = emojisCache.getEmojis()
expect(fs.readFileSync).toHaveBeenCalledWith(CACHE_PATH)
expect(emojis).toEqual(stubs.gitmojis)
})
})
describe('when cache doesn\'t exists', () => {
beforeAll(() => {
fs.readFileSync.mockImplementation(() => {
throw new Error('ERROR: Cache doesn\'t exist')
})
})
it('should return an empty array', () => {
const emojis = emojisCache.getEmojis()
expect(fs.readFileSync).toHaveBeenCalled()
expect(emojis).toEqual([])
})
})
})
})