Skip to content

Commit 8c0bb71

Browse files
committed
chapter 03: extracting a factory function that touches the filesystem and calling it
1 parent 703639a commit 8c0bb71

File tree

2 files changed

+41
-30
lines changed

2 files changed

+41
-30
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
const fs = require('fs');
2+
const util = require('util');
3+
4+
const readFilePromisied = util.promisify(fs.readFile);
5+
6+
function fileExtensionManager() {
7+
/**
8+
* @param {string} fileName
9+
*/
10+
async function isValid(fileName) {
11+
const fileNameExtensions = await readFilePromisied(
12+
`${__dirname}/fileNameExtensions.config.json`,
13+
'utf8'
14+
).then(fileContent => JSON.parse(fileContent).extensions);
15+
16+
const isValidExtension = fileNameExtensions.some(
17+
function checkFileNameExtension(extension) {
18+
if (
19+
fileName
20+
.toUpperCase()
21+
.endsWith(`.${extension.toUpperCase()}`)
22+
) {
23+
return true;
24+
}
25+
26+
return false;
27+
}
28+
);
29+
30+
return isValidExtension;
31+
}
32+
33+
return {
34+
isValid,
35+
};
36+
}
37+
38+
module.exports = fileExtensionManager;

chapter_03-using-stubs-to-break-dependencies/LogAn/logAnalyzer.js

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
const fs = require('fs');
2-
const util = require('util');
31
const ArgumentError = require('./ArgumentError');
2+
const fileExtensionManagerFactory = require('./fileExtensionManager');
43

5-
const readFilePromisied = util.promisify(fs.readFile);
4+
const fileExtensionManager = fileExtensionManagerFactory();
65

76
function logAnalyzer() {
87
/**
@@ -28,7 +27,7 @@ function logAnalyzer() {
2827
throw new ArgumentError('filename has to be provided');
2928
}
3029

31-
const result = await isValid(fileName);
30+
const result = await fileExtensionManager.isValid(fileName);
3231

3332
if (!result) {
3433
return false;
@@ -38,32 +37,6 @@ function logAnalyzer() {
3837
return true;
3938
}
4039

41-
/**
42-
* @param {string} fileName
43-
*/
44-
async function isValid(fileName) {
45-
const fileNameExtensions = await readFilePromisied(
46-
`${__dirname}/fileNameExtensions.config.json`,
47-
'utf8'
48-
).then(fileContent => JSON.parse(fileContent).extensions);
49-
50-
const isValidExtension = fileNameExtensions.some(
51-
function checkFileNameExtension(extension) {
52-
if (
53-
fileName
54-
.toUpperCase()
55-
.endsWith(`.${extension.toUpperCase()}`)
56-
) {
57-
return true;
58-
}
59-
60-
return false;
61-
}
62-
);
63-
64-
return isValidExtension;
65-
}
66-
6740
return {
6841
getWasLastFileNameValid,
6942
isValidLogFileName,

0 commit comments

Comments
 (0)