Skip to content

Commit

Permalink
Add unit tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
tatsy committed Feb 3, 2015
1 parent fe3ccdc commit 84d7b17
Show file tree
Hide file tree
Showing 12 changed files with 563 additions and 332 deletions.
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
coverage/*
dist/*
node_modules/*
118 changes: 118 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
env:
node: true
browser: false

plugins:
- nodeca

rules:
block-scoped-var: 2
brace-style: [ 2, '1tbs', { allowSingleLine: true } ]
comma-spacing: 2
comma-style: 2
consistent-this: [ 2, self ]
consistent-return: 2
curly: 2
# default-case: 2
dot-notation: 2
eol-last: 2
eqeqeq: 2
guard-for-in: 2
handle-callback-err: 2
max-depth: [ 1, 6 ]
max-nested-callbacks: [ 1, 4 ]
# string can exceed 80 chars, but should not overflow github website :)
max-len: [ 2, 120, 1000 ]
new-cap: 2
new-parens: 2
no-alert: 2
no-array-constructor: 2
no-bitwise: 2
no-caller: 2
no-catch-shadow: 2
no-comma-dangle: 2
no-cond-assign: 2
no-console: 1
no-constant-condition: 2
no-control-regex: 2
no-debugger: 2
no-delete-var: 2
no-dupe-keys: 2
no-div-regex: 2
no-empty: 2
no-empty-class: 2
no-empty-label: 2
no-else-return: 2
no-eq-null: 2
no-ex-assign: 2
no-extend-native: 2
no-extra-bind: 2
no-extra-boolean-cast: 2
no-extra-semi: 2
no-extra-strict: 2
no-eval: 2
no-floating-decimal: 2
no-func-assign: 2
no-implied-eval: 2
no-inner-declarations: 2
no-invalid-regexp: 2
no-irregular-whitespace: 2
no-label-var: 2
no-labels: 2
no-lone-blocks: 2
no-lonely-if: 2
no-loop-func: 2
no-mixed-requires: 2
no-mixed-spaces-and-tabs: 2
no-multi-str: 2
no-native-reassign: 2
no-negated-in-lhs: 2
no-new: 2
no-new-func: 2
no-new-object: 2
no-new-require: 2
no-new-wrappers: 2
no-obj-calls: 2
no-octal: 2
no-octal-escape: 2
no-path-concat: 2
no-redeclare: 2
no-regex-spaces: 2
no-reserved-keys: 2
no-return-assign: 2
no-script-url: 2
no-sequences: 2
no-shadow: 2
no-shadow-restricted-names: 2
no-space-before-semi: 2
no-sparse-arrays: 2
no-trailing-spaces: 2
no-undef: 2
no-undef-init: 2
no-undefined: 2
no-unreachable: 2
no-unused-expressions: 2
no-unused-vars: 2
no-use-before-define: 2
no-with: 2
no-wrap-func: 2
quotes: [ 2, single, avoid-escape ]
radix: 2
semi: 2
space-after-keywords: [ 2, always, , { "checkFunctionKeyword": true } ]
space-before-blocks: 2
space-in-brackets: [ 2, always, { propertyName: false } ]
space-in-parens: [ 2, never ]
space-infix-ops: 2
space-return-throw-case: 2
space-unary-ops: 2
spaced-line-comment: [ 2, always, { exceptions: [ '/' ] } ]
strict: 2
use-isnan: 2
yoda: 2
valid-typeof: 2

#
# Our custom rules
#
nodeca/indent: [ 2, spaces, 2 ]
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
node_modules/*

npm-debug.log

public/articles/*
!public/articles/article_example

Expand Down
79 changes: 41 additions & 38 deletions lib/article-manager.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict';

var fs = require('fs');

var articleDir = './public/articles/';
Expand All @@ -8,48 +10,49 @@ exports.dir = articleDir;
* get information text from ARTICLE_DIR/info.txt
*/
exports.getInfo = function(id) {
return JSON.parse(fs.readFileSync(articleDir + id + '/info.txt'));
}
return JSON.parse(fs.readFileSync(articleDir + id + '/info.txt'));
};

/*
* get article list categorized its post month and day
*/
exports.getList = function(callback) {
if(!fs.existsSync(articleDir)) {
fs.mkdirSync(articleDir);
var i;

if (!fs.existsSync(articleDir)) {
fs.mkdirSync(articleDir);
}

fs.readdir(articleDir, function(err, dirs) {
if (err) {
throw err;
}

fs.readdir(articleDir, function(err, dirs) {
if(err) {
console.log(err);
throw err;
}

var articleList = [];
for(var i=0; i<dirs.length; i++) {
var info = exports.getInfo(dirs[i]);
articleList.push({
title: info.title,
datetime: info.datetime,
id: dirs[i],
link: './articles/' + dirs[i]
});
}

// sort with created date
var hash = {};
for(var i=0; i<articleList.length; i++) {
var date = new Date(articleList[i].datetime);
var year = 1900 + date.getYear();
var month = 1 + date.getMonth();
if(hash[year] === undefined) {
hash[year] = {};
}
if(hash[year][month] === undefined) {
hash[year][month] = [];
}
hash[year][month].push(articleList[i]);
}
callback(err, hash);
});
}
var articleList = [];
for (i = 0; i < dirs.length; i++) {
var info = exports.getInfo(dirs[i]);
articleList.push({
title: info.title,
datetime: info.datetime,
id: dirs[i],
link: './articles/' + dirs[i]
});
}

// sort with created date
var hash = {};
for (i = 0; i < articleList.length; i++) {
var date = new Date(articleList[i].datetime);
var year = 1900 + date.getYear();
var month = 1 + date.getMonth();
if (!hash[year]) {
hash[year] = {};
}
if (!hash[year][month]) {
hash[year][month] = [];
}
hash[year][month].push(articleList[i]);
}
callback(err, hash);
});
};
Loading

0 comments on commit 84d7b17

Please sign in to comment.