Skip to content

Commit 616b9af

Browse files
committed
Mock flat-file-db instead of db.js
1 parent 9d25775 commit 616b9af

File tree

6 files changed

+40
-33
lines changed

6 files changed

+40
-33
lines changed

src/db.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ module.exports = {
1414
getAll: adapter.getAll,
1515
put: adapter.put,
1616
has: adapter.has,
17+
keys: adapter.keys,
1718
}

src/flat-file-adapter.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,24 @@ const promise = require('promise')
33

44
const db = flatfile.sync(process.env.DB_NAME || 'views.db')
55

6-
function getAll(options) {
7-
const data = {};
8-
const keys = db.keys()
9-
.filter(key => String(options.filter) === 'false' ? true : key.startsWith(pathname));
10-
11-
return Promise.resolve(keys.map(key => db.get(key)));
12-
}
136

147
module.exports = {
15-
get: promise.denodeify(db.get.bind(db)),
168
put: promise.denodeify(db.put.bind(db)),
17-
has: promise.denodeify(db.has.bind(db)),
18-
getAll: getAll,
9+
10+
has: (key) => Promise.resolve(db.has(key)),
11+
get: (key) => Promise.resolve(db.get(key)),
12+
keys: () => Promise.resolve(db.keys()),
13+
14+
getAll: async function getAll(options) {
15+
const data = {}
16+
const keys = await module.exports.keys()
17+
18+
keys
19+
.filter(key => String(options.filter) === 'false' ? true : key.startsWith(options.pathname))
20+
.forEach((key) => {
21+
data[key] = db.get(key)
22+
})
23+
24+
return data
25+
}
1926
}

src/index.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ module.exports = async function (req, res) {
88
const { pathname, query } = url.parse(req.url, /* parseQueryString */ true)
99
// Send all views down if "?all" is true
1010
if (String(query.all) === 'true') {
11-
const data = {
12-
data: await db.getAll(),
13-
time: Date.now()
11+
try {
12+
const data = {
13+
data: await db.getAll({ pathname: pathname, filter: query.filter }),
14+
time: Date.now()
15+
}
16+
send(res, 200, data)
17+
return
18+
} catch (err) {
19+
console.log(err)
20+
throw createError(500, 'Internal server error.')
1421
}
15-
send(res, 200, data)
16-
return
1722
}
1823
// Check that a page is provided
1924
if (pathname.length <= 1) {

tests/atomicity.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const request = require('request-promise')
22
const { listen, mockDb } = require('./utils')
33

4-
jest.mock('../src/flat-file-adapter', () => mockDb)
4+
jest.mock('flat-file-db', () => mockDb)
55
const service = require('../src')
66
let url
77

tests/items.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const request = require('request-promise')
22
const { listen, mockDb } = require('./utils')
33

4-
jest.mock('../src/flat-file-adapter', () => mockDb)
4+
jest.mock('flat-file-db', () => mockDb)
55
const service = require('../src')
66
let url
77

tests/utils.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,17 @@ const DB = () => {
66
let DELAY = 1
77

88
return {
9-
get: (key) => new Promise((res, rej) => {
10-
setTimeout(() => {
11-
res(data[key])
12-
}, DELAY)
9+
sync: () => ({
10+
get: (key) => data[key],
11+
put: (key, val, cb) => {
12+
setTimeout(() => {
13+
data[key] = val
14+
cb()
15+
}, DELAY)
16+
},
17+
has: (key) => ({}.hasOwnProperty.call(data, key)),
18+
keys: () => Object.keys(data),
1319
}),
14-
put: (key, val) => new Promise((res, rej) => {
15-
setTimeout(() => {
16-
data[key] = val
17-
res()
18-
}, DELAY)
19-
}),
20-
has: (key) => new Promise((res, rej) => {
21-
setTimeout(() => {
22-
res(!!data[key])
23-
}, DELAY)
24-
}),
25-
getAll: (options) => Object.assign({}, data),
2620

2721
// Custom methods used in tests
2822
_reset: () => { data = {} },

0 commit comments

Comments
 (0)