Skip to content

Commit da1c7f2

Browse files
committed
Node library functionality with tests
1 parent bbac8fd commit da1c7f2

File tree

5 files changed

+189
-13
lines changed

5 files changed

+189
-13
lines changed

README.md

+61-7
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,74 @@
11

2+
Node.js cartoon avatar library
3+
========================
4+
A library to generate cartoon style avatar URLs in Node.js
25

3-
# cartoon-avatar
46

7+
Installation
8+
-----------
9+
```sh
10+
$ npm install cartoon-avatar
11+
```
512

13+
Usage
14+
------
615

7-
## Usage
16+
```javascript
17+
var toonavatar = require('cartoon-avatar');
818

19+
toonavatar.generate_avatar();
20+
toonavatar.generate_avatar(options);
921

22+
```
1023

11-
## Developing
24+
`options`:
25+
* `Gender` can be `male` or `m` or `female` or `f` .
26+
* `id` can be any number within the Range limit specified below.
27+
28+
` id Range` for a given gender :
29+
* MALE : 129
30+
* FEMALE : 114
1231

32+
### Examples
1333

34+
```javascript
1435

15-
### Tools
36+
var toonavatar = require('cartoon-avatar');
1637

17-
Created with [Nodeclipse](https://github.com/Nodeclipse/nodeclipse-1)
18-
([Eclipse Marketplace](http://marketplace.eclipse.org/content/nodeclipse), [site](http://www.nodeclipse.org))
38+
var url = toonavatar.generate_avatar()
39+
//Generates Image URL with random gender avatar.
40+
//https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/female/10.png
41+
//https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/male/86.png
42+
43+
var url = toonavatar.generate_avatar({"gender":"male"})
44+
//Generates Image URL with random Male avatars
45+
//https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/male/45.png
46+
47+
48+
var url = toonavatar.generate_avatar({"gender":"female"})
49+
//Generates Image URL with random Female avatars
50+
//https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/female/68.png
51+
52+
53+
var url = toonavatar.generate_avatar({"gender":"male","id":5})
54+
//Generates Image URL with Male avatar having id 5
55+
//https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/male/5.png
56+
57+
58+
var url = toonavatar.generate_avatar({"gender":"female","id":5})
59+
//Generates Image URL with Female avatar having id 5
60+
//https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/female/5.png
61+
62+
63+
```
64+
65+
##Running test
66+
67+
```sh
68+
$ npm test
69+
```
70+
71+
## Avatar Image Credits
72+
[People vector designed by Skydesign - Freepik.com](http://www.freepik.com/free-photos-vectors/people).
73+
1974

20-
Nodeclipse is free open-source project that grows with your contributions.

config.js

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
module.exports.MALE_IMAGE_COUNT = 129;
2+
module.exports.FEMALE_IMAGE_COUNT = 114;

lib/cartoon-avatar.js

+50-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,52 @@
1+
var config = require("../config");
12

23
var toonavatar = module.exports = {
3-
4-
5-
};
4+
/**
5+
* generate_avatar will generate a cartoon avatar.
6+
*
7+
* @param {Object}
8+
* options
9+
* @return {String}
10+
*/
11+
generate_avatar : function(options) {
12+
/*
13+
* options = { "gender": "male" , "id":xxx}
14+
*
15+
*/
16+
var baseURL = "https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/";
17+
var gender, id;
18+
if (typeof options != 'undefined' && options) {
19+
if (typeof options.gender === 'undefined') {
20+
gender = getRandomInt(0, 1) % 2 ? "male" : "female";
21+
} else {
22+
gender = getGender(options.gender);
23+
}
24+
25+
if ( typeof options.id === 'undefined') {
26+
id = getRandomInt(1,
27+
gender === "male" ? config.MALE_IMAGE_COUNT
28+
: config.FEMALE_IMAGE_COUNT);
29+
} else {
30+
id = options.id;
31+
}
32+
}
33+
return baseURL + gender + "/" + id + ".png";
34+
35+
}
36+
37+
};
38+
39+
function getGender(gender) {
40+
41+
gender = gender.trim().toLowerCase();
42+
if (gender === "male" || gender === "m") {
43+
return "male";
44+
} else if (gender === "female" || gender === "f") {
45+
return "female";
46+
47+
}
48+
}
49+
50+
function getRandomInt(min, max) {
51+
return Math.floor(Math.random() * (max - min + 1)) + min;
52+
}

package.json

+9-3
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@
44
"description": "A Node js library for cartoon style avatars",
55
"main": "index.js",
66
"scripts": {
7-
"test": "echo \"Error: no test specified\" && exit 1"
7+
"test": "node ./node_modules/mocha/bin/mocha -R spec"
88
},
99
"keywords": [
1010
"gravatar",
1111
"avatar",
1212
"cartoon",
1313
"avatar",
1414
"cartoon-avatar",
15-
"cartoon-gravatar"
15+
"cartoon-gravatar",
16+
"toon",
17+
"toon avatar"
1618
],
1719
"author": "Ashwin Valento <[email protected]> (https://ashwinvalento.github.io)",
18-
"license": "ISC"
20+
"license": "ISC",
21+
"devDependencies": {
22+
"chai": "^3.5.0",
23+
"mocha": "^2.5.3"
24+
}
1925
}

test/index.js

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
var should = require('chai').should(),
2+
toonavatar = require("../lib/cartoon-avatar");
3+
4+
describe('generate_avatar', function() {
5+
var baseURL = "https://raw.githubusercontent.com/Ashwinvalento/cartoon-avatar/master/lib/images/";
6+
7+
it('should generate correct uri given no options', function() {
8+
toonavatar.generate_avatar().should.be.ok;
9+
});
10+
11+
it('should generate correct uri given gender as male and an id', function() {
12+
toonavatar.generate_avatar({"gender":"male","id":1}).should.equal(baseURL+"male/1.png");
13+
toonavatar.generate_avatar({"gender":"male","id":75}).should.equal(baseURL+"male/75.png");
14+
toonavatar.generate_avatar({"gender":"male","id":129}).should.equal(baseURL+"male/129.png");
15+
toonavatar.generate_avatar({"gender":"male","id":129}).should.not.equal(baseURL+"female/129.png");
16+
17+
18+
});
19+
20+
it('should generate correct uri given gender as male using shorthand and an id', function() {
21+
toonavatar.generate_avatar({"gender":"m","id":1}).should.equal(baseURL+"male/1.png");
22+
toonavatar.generate_avatar({"gender":"m","id":75}).should.equal(baseURL+"male/75.png");
23+
toonavatar.generate_avatar({"gender":"m","id":129}).should.equal(baseURL+"male/129.png");
24+
toonavatar.generate_avatar({"gender":"m","id":129}).should.not.equal(baseURL+"female/129.png");
25+
26+
27+
});
28+
29+
it('should generate correct uri given gender as female and an id', function() {
30+
toonavatar.generate_avatar({"gender":"female","id":1}).should.equal(baseURL+"female/1.png");
31+
toonavatar.generate_avatar({"gender":"female","id":75}).should.equal(baseURL+"female/75.png");
32+
toonavatar.generate_avatar({"gender":"female","id":114}).should.equal(baseURL+"female/114.png");
33+
toonavatar.generate_avatar({"gender":"female","id":114}).should.not.equal(baseURL+"male/114.png");
34+
35+
});
36+
37+
it('should generate correct uri given gender as female using shorthand and an id', function() {
38+
toonavatar.generate_avatar({"gender":"f","id":1}).should.equal(baseURL+"female/1.png");
39+
toonavatar.generate_avatar({"gender":"f","id":75}).should.equal(baseURL+"female/75.png");
40+
toonavatar.generate_avatar({"gender":"f","id":114}).should.equal(baseURL+"female/114.png");
41+
toonavatar.generate_avatar({"gender":"f","id":114}).should.not.equal(baseURL+"male/114.png");
42+
43+
});
44+
45+
it('should generate correct uri given gender as male and No id', function() {
46+
toonavatar.generate_avatar({"gender":"male"}).should.have.string("male");
47+
toonavatar.generate_avatar({"gender":"male"}).should.not.have.string("female");
48+
49+
});
50+
51+
it('should generate correct uri given gender as male as shorthand and No id', function() {
52+
toonavatar.generate_avatar({"gender":"m"}).should.have.string("male");
53+
toonavatar.generate_avatar({"gender":"m"}).should.not.have.string("female");
54+
55+
});
56+
57+
it('should generate correct uri given gender as female and No id', function() {
58+
toonavatar.generate_avatar({"gender":"female"}).should.have.string("female");
59+
60+
});
61+
62+
it('should generate correct uri given gender as female as shorthand and No id', function() {
63+
toonavatar.generate_avatar({"gender":"f"}).should.have.string("female");
64+
65+
});
66+
67+
});

0 commit comments

Comments
 (0)