Skip to content

Commit

Permalink
fix bug and optimized code
Browse files Browse the repository at this point in the history
  • Loading branch information
52cik committed Mar 16, 2017
1 parent 4edff4a commit 5aa49ad
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 29 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ node_js:
- '4'
- '5'
- '6'
- '7'
sudo: false
script:
- "npm run test-cov"
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ app.listen(8000);
├── home
⎪ ├── data.json
├── user
⎪ ├── data.js
⎪ ├── data.json
├── game
├── data.json
Expand Down
52 changes: 24 additions & 28 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ function mock(dir) {
var route = {}; // route list
var docs = {}; // document list

walkdir(dir, '.json', function (filename) {
var content = fs.readFileSync(filename, 'utf8');
walkdir(dir, ['.js', '.json'], function (filename) {
var content = String(fs.readFileSync(filename, 'utf8')).trim() || '{}';

var url = '/' + path.basename(filename, '.json');
var doc = '[file:' + filename + '] no description!';
var url = filename;
var doc = '[Mock Warn]: file "' + filename + '" no description!';

var m = content.match(RE);

Expand All @@ -22,8 +22,12 @@ function mock(dir) {
doc = m[1].replace(/(^[\s*]+|[\s*]+$)/g, '');
}

if (route[url] || docs[url]) {
mock.debug && console.warn('[Mock Warn]: "' + filename + ': ' + url + '" already exists and has been covered with new data.');
if (mock.debug && route[url]) {
console.warn('[Mock Warn]: [' + filename + ': ' + url + '] already exists and has been covered with new data.');
}

if (url[0] !== '/') { // fix url path
url = '/' + url;
}

docs[url] = doc;
Expand All @@ -33,38 +37,30 @@ function mock(dir) {

route[url] = json;
} catch (e) {
var err = '"' + filename + ': ' + url + '" - Parse error!';

route[url] = {
err: err
}

mock.debug && console.warn('[Mock Warn]: ' + err);
delete route[url];
delete docs[url];
mock.debug && console.warn('[Mock Warn]: ', e);
}
});

return function (req, res, next) {
return function (req, res) {
var url = req.url.split('?')[0];

if (route[url]) {
res.json(Mock.mock(route[url]));
} else {
var host = req.protocol + '://' + req.headers.host + req.baseUrl;
var html = JSON.stringify(docs, function (k, v) {
if (k[0] === '/') {
return '<a href=' + (host + k) + '>' + v + '</a>';
}
return v;
}, ' ');

res.type('html');

// Add b tags to prevent 'JSON Viewer' parsing.
res.end('<b><pre>' + html);
var host = '//' + req.headers.host + req.baseUrl;

var html = ['<ol>'];
Object.keys(docs).sort().forEach(function (key) {
html.push('<li><a href=' + (host + key) + '>' + docs[key] + '</a></li>');
});
html.push('</ol>');

res.type('html').end(html.join(''));
}
};

}

mock.debug = true;
mock.debug = false;
module.exports = mock;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "express-mockjs",
"version": "0.2.1",
"version": "0.3.0",
"description": "express mockjs",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit 5aa49ad

Please sign in to comment.