From 5859dc74c38ca544e130d543750b7f5bc8657176 Mon Sep 17 00:00:00 2001 From: zpeng Date: Sat, 9 Jul 2016 21:09:36 +0800 Subject: [PATCH 1/5] some question --- README.md | 11 +++++ add.js | 4 ++ add.test.js | 36 +++++++++++++++ package.json | 2 +- src/server/add.js | 4 ++ src/server/requestHandlers.js | 10 ++++- src/server/router.js | 7 ++- src/server/test.js | 80 ++++++++++++++++++++++++++++++++++ src/server/testadd.js | 18 ++++++++ test/unit/server/add.test.js | 36 +++++++++++++++ test/unit/server/test.test.js | 45 +++++++++++++++++++ testadd.js | 18 ++++++++ testadd.tar.gz | Bin 0 -> 671 bytes 13 files changed, 266 insertions(+), 5 deletions(-) create mode 100644 add.js create mode 100644 add.test.js create mode 100644 src/server/add.js create mode 100644 src/server/test.js create mode 100644 src/server/testadd.js create mode 100644 test/unit/server/add.test.js create mode 100644 test/unit/server/test.test.js create mode 100644 testadd.js create mode 100644 testadd.tar.gz diff --git a/README.md b/README.md index c5ea273..1455a4f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,17 @@ npm install npm test ``` +##安裝babel-cli + +``` +npm install -g babel-cli +``` + +開起檔案 +``` +babel-node <檔案名稱.js> +``` + ## reference diff --git a/add.js b/add.js new file mode 100644 index 0000000..0a996b3 --- /dev/null +++ b/add.js @@ -0,0 +1,4 @@ +export default function add(x,y){ + console.log("add ok"); + return x + y; +} diff --git a/add.test.js b/add.test.js new file mode 100644 index 0000000..e3470b7 --- /dev/null +++ b/add.test.js @@ -0,0 +1,36 @@ + +import add_startServer from '../../../src/server/testadd'; + + +describe.only('node server add', () => { + + let app = null; + beforeEach(async (done) => { + try { + app = await add_startServer() + done() + } catch (e) { + done(e) + } + }); + + it('check server', async (done) => { + try { + let result = await request(app).get("/").expect(200) + result.text.should.be.eq('content2') + + let {text} = await request(app).get("/").expect(200) + text.should.be.eq('content2') + done() + } catch (e) { + done(e) + } + }); + + afterEach(async (done) => { + app.close(() => { + done(); + }); + }) + +}); diff --git a/package.json b/package.json index 241e605..235e550 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "test": "./node_modules/.bin/mocha" }, "devDependencies": { - "babel-cli": "*", + "babel-cli": "^6.10.1", "babel-core": "^6.8.0", "babel-eslint": "^6.0.4", "babel-plugin-syntax-async-functions": "^6.8.0", diff --git a/src/server/add.js b/src/server/add.js new file mode 100644 index 0000000..0a996b3 --- /dev/null +++ b/src/server/add.js @@ -0,0 +1,4 @@ +export default function add(x,y){ + console.log("add ok"); + return x + y; +} diff --git a/src/server/requestHandlers.js b/src/server/requestHandlers.js index c50c115..3ea638c 100644 --- a/src/server/requestHandlers.js +++ b/src/server/requestHandlers.js @@ -1,6 +1,12 @@ -export function start() { +export function start(response) { console.log("Request handler 'start' was called."); + response.writeHead(200, {"Content-Type": "text/plain"}); + response.write("Hello Start"); + response.end(); } -export function upload() { +export function upload(response) { console.log("Request handler 'upload' was called."); + response.writeHead(200, {"Content-Type": "text/plain"}); + response.write("Hello Upload"); + response.end(); } diff --git a/src/server/router.js b/src/server/router.js index e3f30ac..c73a0d7 100644 --- a/src/server/router.js +++ b/src/server/router.js @@ -1,9 +1,12 @@ -export default function route(handle, pathname) { +export default function route(handle, pathname, response) { console.log("About to route a request for " + pathname); if (typeof handle[pathname] === 'function') { - handle[pathname](); + handle[pathname](response); } else { console.log("No request handler found for " + pathname); + response.writeHead(404, {"Content-Type": "text/plain"}); + response.write("404 not found"); + response.end(); } } diff --git a/src/server/test.js b/src/server/test.js new file mode 100644 index 0000000..a7284c7 --- /dev/null +++ b/src/server/test.js @@ -0,0 +1,80 @@ +import http from 'http' + +async function test_startServer() { + + let app = await new Promise((resolve, reject) => { + let app = http.createServer(function(request, response) { + //Including dependency + var Sequelize = require("sequelize"); + + //Setting up the config + var sequelize = new Sequelize('your-database-name', 'db-username', 'db-password', { + host: "localhost", + port: 3306, + dialect: 'mysql' + }); + + sequelize.authenticate().then(function (err) { + + console.log('There is connection in ERROR'); + }) + .catch (function(err) { + console.log('Connection has been established successfully'); + }) + .done(); + + var Item = sequelize.define('Item', { + id : {type:Sequelize.STRING,primaryKey:true}, + name:Sequelize.STRING, + description: Sequelize.STRING, + qty: Sequelize.INTEGER + }); + +//Applying Item Table to database +sequelize.sync({force:true}).then(function (err) { + + console.log('An error occur while creating table'); + }).catch(function(err){ + console.log('Item table created successfully'); + }).done(); + +//There is two way of inserting data into database +//One way: Forming object from modal +var item1 = Item.build({ + id: 1, + name:'Laptop', + description: 'Acer 2340TL', + qty: 23 +}); +//Inserting Data into database +item1.save().then(function (err) { + + console.log('Error in Inserting Record'); + }) .catch(function() { + console.log('Data successfully inserted'); + console.log(item1.name); + }).done(); + +//Other way: Immediate insertion of data into database +/*sequelize.sync().then(function () { + Item.create({ + id: 2, + name:'Cell Phone', + description: 'Sony', + qty: 20 + }).then(function (data) { + console.log(data.values) + }) +});*/ + + + response.writeHead(200, {"Content-Type": "text/plain"}); + response.write("Hello World"); + response.end(); + }).listen(8888); + resolve(app); + }) + + return app; +} +test_startServer(); diff --git a/src/server/testadd.js b/src/server/testadd.js new file mode 100644 index 0000000..4cce51f --- /dev/null +++ b/src/server/testadd.js @@ -0,0 +1,18 @@ +import http from 'http' +import add from './add' + +export default async function add_startServer() { + + let app = await new Promise((resolve, reject) => { + let app = http.createServer(function(request, response) { + response.writeHead(200, {"Content-Type": "text/plain"}); + var content = add(1,1); + console.log("content : " + content); + response.write("content" + content); + response.end(); + }).listen(8888); + resolve(app); + }) + + return app; +} diff --git a/test/unit/server/add.test.js b/test/unit/server/add.test.js new file mode 100644 index 0000000..e3470b7 --- /dev/null +++ b/test/unit/server/add.test.js @@ -0,0 +1,36 @@ + +import add_startServer from '../../../src/server/testadd'; + + +describe.only('node server add', () => { + + let app = null; + beforeEach(async (done) => { + try { + app = await add_startServer() + done() + } catch (e) { + done(e) + } + }); + + it('check server', async (done) => { + try { + let result = await request(app).get("/").expect(200) + result.text.should.be.eq('content2') + + let {text} = await request(app).get("/").expect(200) + text.should.be.eq('content2') + done() + } catch (e) { + done(e) + } + }); + + afterEach(async (done) => { + app.close(() => { + done(); + }); + }) + +}); diff --git a/test/unit/server/test.test.js b/test/unit/server/test.test.js new file mode 100644 index 0000000..ed2b830 --- /dev/null +++ b/test/unit/server/test.test.js @@ -0,0 +1,45 @@ + +import startServer from '../../../src/server/test'; + + +describe('node server test', () => { + + let app = null; + beforeEach(async (done) => { + try { + app = await startServer() + done() + } catch (e) { + done(e) + } + }); + + it('check server start', async (done) => { + try { + + let {text} = await request(app).get("/start").expect(200) + text.should.be.eq('Hello Start') + done() + } catch (e) { + done(e) + } + }); + + it('check server upload', async (done) => { + try { + + let {text} = await request(app).get("/upload").expect(200) + text.should.be.eq('Hello World') + done() + } catch (e) { + done(e) + } + }); + + afterEach(async (done) => { + app.close(() => { + done(); + }); + }) + +}); diff --git a/testadd.js b/testadd.js new file mode 100644 index 0000000..4cce51f --- /dev/null +++ b/testadd.js @@ -0,0 +1,18 @@ +import http from 'http' +import add from './add' + +export default async function add_startServer() { + + let app = await new Promise((resolve, reject) => { + let app = http.createServer(function(request, response) { + response.writeHead(200, {"Content-Type": "text/plain"}); + var content = add(1,1); + console.log("content : " + content); + response.write("content" + content); + response.end(); + }).listen(8888); + resolve(app); + }) + + return app; +} diff --git a/testadd.tar.gz b/testadd.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c2413ac8c9d37002195057ff92f418b2fe434bb5 GIT binary patch literal 671 zcmV;Q0$}|giwFR8p@3Ha1MOB_Z<{a_?K8jPiWiKQIgrn3QTH-U+T*0{y>j8Ep`|u8 zrcD;*zwbI2N;)agG^JBDj-uGu*Vo4;_vDB)Yyr(&_v~Df%4`^+^PBcEYP-Z1YUMuC~ZKb>6N_+ z^BwggYFKJ@4*}=H`cvv;Sng+r_SZtu!NT*r6w5?s*T|L3H!P4UMX1AU!e9U_gv(E` z^*n$aX_umaOOREbFKFZ%mrCOok*t^~H!=a1Dv53d5RBfq9=N6ANo2o~Wuc3)%iY5c z5@C`RFv_>>PNSQr?_IdC#4^KzWQEC{qfWF>)3K+~SXQ}dS!sNz=x!J>4fzck<`4al zEbC=db!)@Rm8$ZT(+%PSu~5>WG@~H&I@@e*Lag> znDHc6B{J3-ZFXDK>Gti84r+V3mPf&NGEtyvltxyYoya}EXIQD|_M$ucKJj0bT$d!UL< z7^NaHbWd&QA&)ltXei3`*(>opD=Cb9Ah literal 0 HcmV?d00001 From 6371f74c8db994a1c9b6c47ae9d78599cb1f77ad Mon Sep 17 00:00:00 2001 From: zpeng Date: Fri, 22 Jul 2016 11:27:14 +0800 Subject: [PATCH 2/5] fb api --- src/facebook/helper.js | 5 +++-- test/unit/facebook/helper.test.js | 6 +++--- test/unit/server/add.test.js | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/facebook/helper.js b/src/facebook/helper.js index fabc928..bded1bf 100644 --- a/src/facebook/helper.js +++ b/src/facebook/helper.js @@ -7,7 +7,7 @@ import FB from 'fb' // }); // }; -export default class FacebookHelper { +class FacebookHelper { constructor({token, userId}) { this.FB = FB; @@ -45,4 +45,5 @@ export default class FacebookHelper { } } -} +}; +FacebookHelper.publishPost({"hello"}); diff --git a/test/unit/facebook/helper.test.js b/test/unit/facebook/helper.test.js index 04b9c53..e345746 100644 --- a/test/unit/facebook/helper.test.js +++ b/test/unit/facebook/helper.test.js @@ -1,11 +1,11 @@ import FacebookHelper from '../../../src/facebook/helper.js' -describe('facebook-helper', () => { +describe.only('facebook-helper', () => { let facebookHelper = null; before((done) => { - let userId = "100000233810027"; - let token = "EAACEdEose0cBAEwW8XaqzmqfzNLXZBynbm1Ft5lXnYPYNa5UX8febjOjCZCaD7ZBXftbT9LmfPuDyEoaiQ8EWZAUkpsMjbqjwyEMZCtsLJXiM3RzqMbsINzkygnZCn032u8n1rTq3pdZBlT8xoRVTfWJtZBpZBUdN3mDrQHwdpigzsbKgcSTo2hq3onDskcTZANz0ZD"; + let userId = "618444968267382"; + let token = "EAACEdEose0cBAKoO5ng9l1E05SJ26zo0siYhFE1NaZC8T2FcNknu9CcOy0k7cqkzOkF7Iyk26IhL4CIXyChmXjZA8Y6TZADyjApUImykZC0SDCFJxHq5OS3RAjRZA3AcJ6ZAvFX9Ft8ZC1T6pQlHYrJjERhZCeijbm9gGqVM6WxKqwZDZD"; facebookHelper = new FacebookHelper({userId, token}); done(); }); diff --git a/test/unit/server/add.test.js b/test/unit/server/add.test.js index f43f917..c1511dd 100644 --- a/test/unit/server/add.test.js +++ b/test/unit/server/add.test.js @@ -2,7 +2,7 @@ import add from '../../../src/server/add.js'; var expect = require("chai").expect; -describe.only('node server add', function() { +describe('node server add', function() { it("OK", function() { var testadd = add(1,1); From 9eed4817afd31bb918696d51ebdf8032444e2b5d Mon Sep 17 00:00:00 2001 From: zpeng Date: Sun, 24 Jul 2016 11:12:43 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E9=81=93=E5=B0=8D?= =?UTF-8?q?=E4=B8=8D=E5=B0=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database.db | Bin 4096 -> 6144 bytes src/facebook/helper.js | 8 +-- src/models/user.js | 5 +- test/unit/database/task1.test.js | 41 +++++++++++++++- test/unit/facebook/helper.test.js | 78 ++++++++++++++++++++++++++++-- 5 files changed, 121 insertions(+), 11 deletions(-) diff --git a/database.db b/database.db index 3f8ea29c89b51cba05d8a6532ceaa61bd2b83607..1b59e5d49c8dfe39dce9cb41ae5797c1bb8c8df6 100644 GIT binary patch literal 6144 zcmWFz^vNtqRY=P(%1ta$FlJz3U}R))P*7lCVE(|sz`zE?P{7OqWU#<^K$;PWje`j^ zL-*xNUS<&nX2!P+Oox~qfYd0Uc?dLSvapMbi!(MGmLw+Sq=pu!78L`D#vrILGm3Cg zF^hAMt7C|(LWrZ2kE=ogSbc(mMnYyvf`X@Ch^xD6kU~I^r>|pBq=L6=q=I8;h`*;F zP?N8#Ux5tT^0QNLlpc%eSCl>l@_Gnl-3MjViVWaW{d=Tskkr)n4IH_QwvK|^O951 zxXdWtM3dA2c|r%MQxh0HI!K|%#sbL&jX}(iKm~;!T+kLG*aWdZAiubz7)&ss*p&bl zBPB>nGD~tW!!#weIGL)U#|uh}$hn&4X>-(q(GVC7fx!|2p#0Cs{Eh*LM!{$ZjE2Cl z4gmp1W^p!f>yCjnU~Bt#l?+y(e;Jv-fPBpcr1}^w7#}iqGnp})GIujQ014v&K8;Q1 zyI(FjqruJ~&%og6>6MtAU8$fDUTS1uXr^mmu4`nXU|?)zXlP|@q-SYiq@ZnJU}a!{ zU)HCwXU_h)-w&HX4ShCm`m-4upRVh~s?FE{pP_JBpT?HQ^KLBYk%1cew13I-*&R=I zti@)ig@qv=LlLq*jgux#dh+a83Cz%mD{#Bi!W6Hea9N*e_jW9Oy3!MB=F6FzpRQf} za>hce4mC2v=TNw;PvhK=lkWGd4}}Hk+`gwvr@mOd1*@S3ruYnn%lb6#_;K>b+4GVx zLzi|v+rIuq&va~tnwy*BF%%&SH1xoYdpGU{!Gg4_^XZDl7oF>|8ft2R&rrCmPvh02 z^KVV>tA`pIoROH9s^C$KHJO?l;qyL1*0=HSi|LD3>VrPz0s@$WVpI#5`Q4nweYT zaVkPKr}6aWZ{HW3tYT+SSJ(FRbk0c4OV@SHQwS+e1a@kQOB_HQD!t_VTnkGRQwwu* zLt_gIOH*U4dCJV#1gE9I9L)*~7Et}q#juWnc@1+oGZWKVrU)ix#&wL5jLbm6b=dNL zF_JS)(Vdx*nv;{CRqRkwRGOEqS6ot>l9^ATYmM~`EMW;~2*u`5$|5u=A!t!P4x#FS z7PTV{ss~8>e>DU1Y6ehK05lT7MA!UpU}a*YXKI0?DhJAvlmEennwjA!0?}lNF3lnO zjEu1ttZ1^t=6|p@b9iF~t*%3pCANx$XoFYRSPg~C65B$67;1()ri}E=;j+ZGkHCgn z7~yCip~({4JOpdA#8sK2$r9TW^HoXCJR Zy7ta^HoyP*HZ1K}V4g9+-8@8=1pq{};9md$ literal 4096 zcmeH}L2uJA6vyqPwB2DBG$}%e;bW_=B}rGd_0%vTh-kBtrAR$c;-zMb)Gl4)X+ns@ z;N$QaxF9|QXRiAKJ8;4=V@+B*3N2C(u_7n-i+?Zg|Kca_Kd*a~px6Gek0~mH6o3%a z5CTAu0AR!G2EW9|0A8D>J}^e{;$l@?10wtigwNswc1zlSSK!=BWh6<09~6oYdZZPQ zVZgi8uBB_Xj%@8wT}KX|b5PFlx(+f-TYsWksA(Au&1$1(dK+mid(SZ0qK0nT8^}3j zq+{GC4tk+kyH7PMr&cO?W*~j+^(JNqI0(-CA%l;-jt?2)${}0r4hg2Dt5F9%W}jyp z4IP<#HZoiFdgyh~oodcEg|t*Cz&4LGIO(z9`BgwpPRX%L#)e`n`Y~fJjBA6f%(L{| zji}f31DZ~ydD6~Jkqi6&Eq5210^SKRw8Q8AMp)|6-lVEs61WrE4The(F!fehSWx^3 z*p;+Ifkc7jRbU@xz@7WhFb1sZAk6!)Ky+1Ed03RUimHlarMkIYt;i)=l~F;Kt1^4I z$@+8uUjp%Rc>_xBg|k^8 zDH5xvlmv8>ceOY8$oEUG-!IWKJ|j((PgyB#ZSPDgt}$yT!(0@8xhRLga_ulYDTglj zaBVJrI?7i=pc?0^>vQpMMfpm|SK@r-_B?!?`sWnvRLVD`U}Wux(GX@&!HDp?07ur2 V5arLFf)U{ld>G}=o`PBVKLE?bgt-6! diff --git a/src/facebook/helper.js b/src/facebook/helper.js index 4390d88..757d153 100644 --- a/src/facebook/helper.js +++ b/src/facebook/helper.js @@ -7,7 +7,7 @@ import FB from 'fb' // }); // }; -class FacebookHelper { +export default class FacebookHelper { constructor({token, userId}) { this.FB = FB; @@ -18,11 +18,14 @@ class FacebookHelper { async getFriends() { try { let result = await new Promise((resolve, reject) => { - this.FB.api(`${this.userId}/friends`, function(res, error) { + this.FB.api(`${this.userId}/friends?fields=id,email,name,fbId`, function(res, error) { if(error) reject(error); resolve(res.data); }); }); + result[0].email = 'test@mail.com'; + result[0].fbId = result[0].id; + console.log(result[0].email); return result; } catch (e) { throw e; @@ -45,4 +48,3 @@ class FacebookHelper { } }; -FacebookHelper.publishPost({"hello"}); diff --git a/src/models/user.js b/src/models/user.js index 1a893c2..9024958 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -2,10 +2,9 @@ module.exports = (sequelize, DataTypes) => { var User = sequelize.define('User', { - username: DataTypes.STRING, + name: DataTypes.STRING, email: DataTypes.STRING, - password: DataTypes.STRING, - age: DataTypes.INTEGER, + fbId: DataTypes.STRING, }, { classMethods: { associate: (models) => { diff --git a/test/unit/database/task1.test.js b/test/unit/database/task1.test.js index 463745d..0d88f83 100644 --- a/test/unit/database/task1.test.js +++ b/test/unit/database/task1.test.js @@ -1,6 +1,6 @@ import task1_initModel from '../../../src/database/task1'; -describe('database level 1', () => { +describe.skip('database level 1', () => { let models = null; beforeEach(async (done) => { try { @@ -143,7 +143,7 @@ describe('database level 1', () => { }); -describe('database task1 find', () => { +describe.skip('database task1 find', () => { let models = null; beforeEach(async (done) => { @@ -198,3 +198,40 @@ describe('database task1 find', () => { }); }); + +describe('model define' , () => { + let models = null; + beforeEach(async (done) => { + try { + models = await task1_initModel() + done() + } catch (e) { + done(e) + } + }); + + it('model defined', async (done) => { + try { + let addUser = {name: 'test', fbId: 'test', email: 'test@mail.com' }; + let result = {}; + result = await models.User.create(addUser) + result.toJSON().should.has.keys( + 'id', + 'name', + 'fbId', + 'email', + 'createdAt', + 'updatedAt' + ); + result.name.should.be.eq('test'); + result.name.should.be.string; + result.fbId.should.be.string; + result.email.should.be.string; + done(); + } catch (e) { + done(e); + } + }); + + +}) diff --git a/test/unit/facebook/helper.test.js b/test/unit/facebook/helper.test.js index 942eea1..d1715cb 100644 --- a/test/unit/facebook/helper.test.js +++ b/test/unit/facebook/helper.test.js @@ -1,13 +1,19 @@ import FacebookHelper from '../../../src/facebook/helper.js' +import task1_initModel from '../../../src/database/task1'; describe.only('facebook-helper', () => { let facebookHelper = null; + let models = null - before((done) => { + before(async (done) => { let userId = "618444968267382"; - let token = "EAACEdEose0cBAKoO5ng9l1E05SJ26zo0siYhFE1NaZC8T2FcNknu9CcOy0k7cqkzOkF7Iyk26IhL4CIXyChmXjZA8Y6TZADyjApUImykZC0SDCFJxHq5OS3RAjRZA3AcJ6ZAvFX9Ft8ZC1T6pQlHYrJjERhZCeijbm9gGqVM6WxKqwZDZD"; + let token = "EAACEdEose0cBABkTTZAGFMsipFXZAJllnb7YzpIeXviw1wcOi7ZAl6od6o9fZCoflqZCuW6xpILuIiCmyeQAureWZBIWIL2Wd3Kd59c6mke665pLOrfmV3kurMCm523B8NEygk5lbpyZCc1J4j5CKFQjGtxJhGpDUBAZCCZCol7HwZAAZDZD"; facebookHelper = new FacebookHelper({userId, token}); console.log(facebookHelper); + try{ + models = await task1_initModel() + }catch(e){done(e)} + done(); }); @@ -17,7 +23,73 @@ describe.only('facebook-helper', () => { console.log("friends", friends); (friends != null).should.be.true; friends.should.be.Array; - friends[0].should.have.keys("name", "id"); + friends[0].should.have.keys("name", "id", "email", "fbId"); + let result = {}; + for(var i=0;i<12;i++) + result[i] = await models.User.create(friends[i]); + // console.log(result); + + (result[0].name != null).should.be.true; + done(); + } catch (e) { + done(e); + } + }); + + it("find friends list", async (done) => { + try { + let result_find = await models.User.findAll(); + // console.log(result_find); + + (result_find != null).should.be.true; + done(); + } catch (e) { + done(e); + } + }); + + it("update friends list", async (done) => { + try { + await models.User.update( + { + email: 'hellojs@trunk.studio' + }, + { + where:{ + name:'Cheng-En Tsai' + } + } + ); + let result_find = await models.User.findOne({ + where:{ + name:'Cheng-En Tsai' + } + }); + console.log(result_find); + + result_find.email.should.be.eq('hellojs@trunk.studio'); + done(); + } catch (e) { + done(e); + } + }); + + it("delete friends list", async (done) => { + try { + await models.User.destroy({ + where:{ + name:'Cheng-En Tsai' + } + }); + //console.log(result_find); + let result_find = models.User.findOne({ + where:{ + name:'Cheng-En Tsai' + } + }); + console.log("find = " + result_find.name); + + (result_find.name === undefined).should.be.true; done(); } catch (e) { done(e); From 99e4f8a51623b7d5cfd1107e133d16302540ab53 Mon Sep 17 00:00:00 2001 From: zpeng Date: Thu, 28 Jul 2016 11:19:52 +0800 Subject: [PATCH 4/5] for await --- database.db | Bin 6144 -> 6144 bytes src/facebook/helper.js | 5 +---- test/unit/facebook/helper.test.js | 35 ++++++++++++++++++++++-------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/database.db b/database.db index 1b59e5d49c8dfe39dce9cb41ae5797c1bb8c8df6..265d6a7ae23c0fe0bdd18b858ed47b829caf83ab 100644 GIT binary patch literal 6144 zcmeHK&u<$=7~ScRkNLZ@xF* z`*yti+CtSa(YeOPddWddib}F9%^@U7V{4Km#o*&Lt+$1N$2NJ zrt_1O^C{>w*GtvfK<~M=EDYNB)AEK{a?DEFDWaEQ9);{;2IWo{P;O;m0Y=(cyh_F4)Q|`=Yw) zbvs|&?|f&Uf2meL1`t(bQCfvPv*=3=j_A9`+%2u2Ew6!^a= z;QC)y{*vH5Y9j?k3Ov#ZJSi)Q*or+4C%Lo9J3a>S%E~=A>M`YBWLa*@Z_7_hH>LDH z6v7&hOV6H2X0y!?ZnSp3ZGN-un6@+L?)_5b#=53bof!-ZqHoe3qn9UMn zmeCX-D2eebJ_NOnc}(q(zia*cb?f#IJ|>+Qg6f#41_wetkcsMHOkLE9A22mY`T6V`_c+e)Ia(y_?_rm^7g>0}F!*RZvX?F=4?%m<~{D z>^{@=%dOkHd+%NIF&Tt`YFy_`0?jjg@y-99FwYD~qHVvb3` znv;|;w4pKeqL$(@EnB6!iB8&^J|@8g(HI5sm`Vs4R1e0|NElNWtw!R~b8eQeuAtRY zeSpf)2oZ+PFn2>!1F6(dsxDfSEMZw^)argN@CjTiZA1N{`&{hiE$HoEuO_8Px(~QinSQn7Zis$K%rT zt}jnDta=@STIzEp=bFx_fSM*W5HOI74oyBcsxE3h=0(-K^3|PB-u>ez|59;SBTj^X zTxM7cTq&ZfA^IJluK$mL*_EqGGV)vGtbA9#^k4g*K^+b$S2P8S_h9@#+HLIb)keFG S?*6lPKQU<8Ui6XNZTt;zU6~F5 literal 6144 zcmWFz^vNtqRY=P(%1ta$FlJz3U}R))P*7lCVE(|sz`zE?P{7OqWU#<^K$;PWje`j^ zL-*xNUS<&nX2!P+Oox~qfYd0Uc?dLSvapMbi!(MGmLw+Sq=pu!78L`D#vrILGm3Cg zF^hAMt7C|(LWrZ2kE=ogSbc(mMnYyvf`X@Ch^xD6kU~I^r>|pBq=L6=q=I8;h`*;F zP?N8#Ux5tT^0QNLlpc%eSCl>l@_Gnl-3MjViVWaW{d=Tskkr)n4IH_QwvK|^O951 zxXdWtM3dA2c|r%MQxh0HI!K|%#sbL&jX}(iKm~;!T+kLG*aWdZAiubz7)&ss*p&bl zBPB>nGD~tW!!#weIGL)U#|uh}$hn&4X>-(q(GVC7fx!|2p#0Cs{Eh*LM!{$ZjE2Cl z4gmp1W^p!f>yCjnU~Bt#l?+y(e;Jv-fPBpcr1}^w7#}iqGnp})GIujQ014v&K8;Q1 zyI(FjqruJ~&%og6>6MtAU8$fDUTS1uXr^mmu4`nXU|?)zXlP|@q-SYiq@ZnJU}a!{ zU)HCwXU_h)-w&HX4ShCm`m-4upRVh~s?FE{pP_JBpT?HQ^KLBYk%1cew13I-*&R=I zti@)ig@qv=LlLq*jgux#dh+a83Cz%mD{#Bi!W6Hea9N*e_jW9Oy3!MB=F6FzpRQf} za>hce4mC2v=TNw;PvhK=lkWGd4}}Hk+`gwvr@mOd1*@S3ruYnn%lb6#_;K>b+4GVx zLzi|v+rIuq&va~tnwy*BF%%&SH1xoYdpGU{!Gg4_^XZDl7oF>|8ft2R&rrCmPvh02 z^KVV>tA`pIoROH9s^C$KHJO?l;qyL1*0=HSi|LD3>VrPz0s@$WVpI#5`Q4nweYT zaVkPKr}6aWZ{HW3tYT+SSJ(FRbk0c4OV@SHQwS+e1a@kQOB_HQD!t_VTnkGRQwwu* zLt_gIOH*U4dCJV#1gE9I9L)*~7Et}q#juWnc@1+oGZWKVrU)ix#&wL5jLbm6b=dNL zF_JS)(Vdx*nv;{CRqRkwRGOEqS6ot>l9^ATYmM~`EMW;~2*u`5$|5u=A!t!P4x#FS z7PTV{ss~8>e>DU1Y6ehK05lT7MA!UpU}a*YXKI0?DhJAvlmEennwjA!0?}lNF3lnO zjEu1ttZ1^t=6|p@b9iF~t*%3pCANx$XoFYRSPg~C65B$67;1()ri}E=;j+ZGkHCgn z7~yCip~({4JOpdA#8sK2$r9TW^HoXCJR Zy7ta^HoyP*HZ1K}V4g9+-8@8=1pq{};9md$ diff --git a/src/facebook/helper.js b/src/facebook/helper.js index 757d153..3ccf76e 100644 --- a/src/facebook/helper.js +++ b/src/facebook/helper.js @@ -18,14 +18,11 @@ export default class FacebookHelper { async getFriends() { try { let result = await new Promise((resolve, reject) => { - this.FB.api(`${this.userId}/friends?fields=id,email,name,fbId`, function(res, error) { + this.FB.api(`${this.userId}/friends?fields=id,name`, function(res, error) { if(error) reject(error); resolve(res.data); }); }); - result[0].email = 'test@mail.com'; - result[0].fbId = result[0].id; - console.log(result[0].email); return result; } catch (e) { throw e; diff --git a/test/unit/facebook/helper.test.js b/test/unit/facebook/helper.test.js index d1715cb..3e15258 100644 --- a/test/unit/facebook/helper.test.js +++ b/test/unit/facebook/helper.test.js @@ -7,7 +7,7 @@ describe.only('facebook-helper', () => { before(async (done) => { let userId = "618444968267382"; - let token = "EAACEdEose0cBABkTTZAGFMsipFXZAJllnb7YzpIeXviw1wcOi7ZAl6od6o9fZCoflqZCuW6xpILuIiCmyeQAureWZBIWIL2Wd3Kd59c6mke665pLOrfmV3kurMCm523B8NEygk5lbpyZCc1J4j5CKFQjGtxJhGpDUBAZCCZCol7HwZAAZDZD"; + let token = "EAACEdEose0cBAJBuihGBu1zyt10CihhZBUbX3QEOIawrPUHDZBP7EiuDvSVV9AgUWldYqxZBoiuXeVaQAAJuj22ymzIBY6hBi3b06Pwiv7UvnUGqZC82AiVfZCcW5zSnoAxZB4AnqRLngZBh1aAiZCLumWEOwgxBaXJ5SCuZAbszMtAZDZD"; facebookHelper = new FacebookHelper({userId, token}); console.log(facebookHelper); try{ @@ -20,16 +20,33 @@ describe.only('facebook-helper', () => { it("get friends list", async (done) => { try { let friends = await facebookHelper.getFriends(); + let friends_list = {}; console.log("friends", friends); - (friends != null).should.be.true; - friends.should.be.Array; - friends[0].should.have.keys("name", "id", "email", "fbId"); - let result = {}; - for(var i=0;i<12;i++) - result[i] = await models.User.create(friends[i]); - // console.log(result); + console.log("QAQ"); + let j=0; + for(let i of friends) + { + friends_list[j] = await models.User.create({ + fbId: friends[j].id , + name: friends[j].name , + email: 'test@mail.com', + }); + console.log("QAQ" + j); + j=j+1; + } + console.log(friends_list); - (result[0].name != null).should.be.true; + console.log(friends_list[0].name); + (friends_list != null).should.be.true; + friends_list.should.be.Array; + // for(var i=0;i<12;i++) + // friends_list[i].should.have.keys("name", "email", "fbId"); + for(var i=0;i<12;i++) + { + (friends_list[i].name != null).should.be.true; + (friends_list[i].fbId != null).should.be.true; + (friends_list[i].email != null).should.be.true; + } done(); } catch (e) { done(e); From d9ccf250d0e4b1f43da572f9ef0d8adb8aee29e4 Mon Sep 17 00:00:00 2001 From: zpeng Date: Sun, 31 Jul 2016 15:28:27 +0800 Subject: [PATCH 5/5] friend model --- database.db | Bin 6144 -> 7168 bytes src/models/friend.js | 16 ++++++++++++++++ test/unit/facebook/helper.test.js | 14 +++++++------- 3 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 src/models/friend.js diff --git a/database.db b/database.db index 265d6a7ae23c0fe0bdd18b858ed47b829caf83ab..58f79adb022c0593ca584b9a209cca99fcbdb31b 100644 GIT binary patch literal 7168 zcmeHL-*4MQ0QQgk*chFL1d31}IE2tzvQ&3IpM6&esi6dx(Pkx0H}XWX#KYOrgvHJS z4+xdM&&q@++{9nsjF`i7NQsTO7SI;z!70c*YZWW&|=CY+6C}m$*$bpL6R{>L% zM!f>^g;MV2ToEi4^NZPH8N8A!gX~J_WWK;pTFezn$3Uf3T{SA;RJJ&OJX@Sn2$|-c z#%i_E+|_&bOrBqK?5nkoQMHYF)~{B!bPC0{cjGsBpr{`ntFel;(cdD+vCMQ#qlj3^Pwdkcz!)Vnl?;!auTJd@x#Hjyr z^y6HhDBpEtCgr=*vN#am5uXrl2w7M8-j#VUDLi#FozM3^yx!mZruX%RZCLi4Gk0fd z?Nv=xbWAa1NF}NU6^OJ9)H4_XsLv|;tjcC|s)00wvv3d8Jm4`6KK{1<<5&G#-}{(! zM46&Pq*B5O^*|<-gfR_KGdW`F-TY#(`MHk?L0%9eP+^G63S>eojA@9P36H7&=?A@Q zm$z?x=VQ{CiYa6iGnFYC3uJ;gjA@9P@q0|yF7|J2ZNGoT$3zk4t`VJJjSwY}Nuz2A z(+D+V9#ik)M(_IC_Quv26H+y-LPdcDqQEiN6eWylh?=s;v}{&e1~_hYeM}59q+x}d zhgF17kb8uM&Ak!YkdngF&MYslfO569i;8LpF{)!o9BFDGl?FpZks;a?lfqGlYTh(j zZ)9>UP_nB0M{UQVqD&=J*Ab?a5gceCR%r;Ei}JOdI5@#;QT|iluc$;0L=Nn02abqx zDsf1ZCq?fu<*>80ql z3E^mzHU#gqjmxFn6L_JO35{r~Sbk(N!J+YMAk`5e0|B{9Z!xs}X8G z>M`{{yAl*XBTa{d5Xy5@tZ0Fnl(3|X4bgLllEO1iE_b4Bwpv`&(pV}-h^AwO@l2Cx v+`u3%O2dN95o$i-sp?(&^3Esk{dU_wRD_QaL5v|CVyFd<6b=1L7@>awR0CWM literal 6144 zcmeHK&u<$=7~ScRkNLZ@xF* z`*yti+CtSa(YeOPddWddib}F9%^@U7V{4Km#o*&Lt+$1N$2NJ zrt_1O^C{>w*GtvfK<~M=EDYNB)AEK{a?DEFDWaEQ9);{;2IWo{P;O;m0Y=(cyh_F4)Q|`=Yw) zbvs|&?|f&Uf2meL1`t(bQCfvPv*=3=j_A9`+%2u2Ew6!^a= z;QC)y{*vH5Y9j?k3Ov#ZJSi)Q*or+4C%Lo9J3a>S%E~=A>M`YBWLa*@Z_7_hH>LDH z6v7&hOV6H2X0y!?ZnSp3ZGN-un6@+L?)_5b#=53bof!-ZqHoe3qn9UMn zmeCX-D2eebJ_NOnc}(q(zia*cb?f#IJ|>+Qg6f#41_wetkcsMHOkLE9A22mY`T6V`_c+e)Ia(y_?_rm^7g>0}F!*RZvX?F=4?%m<~{D z>^{@=%dOkHd+%NIF&Tt`YFy_`0?jjg@y-99FwYD~qHVvb3` znv;|;w4pKeqL$(@EnB6!iB8&^J|@8g(HI5sm`Vs4R1e0|NElNWtw!R~b8eQeuAtRY zeSpf)2oZ+PFn2>!1F6(dsxDfSEMZw^)argN@CjTiZA1N{`&{hiE$HoEuO_8Px(~QinSQn7Zis$K%rT zt}jnDta=@STIzEp=bFx_fSM*W5HOI74oyBcsxE3h=0(-K^3|PB-u>ez|59;SBTj^X zTxM7cTq&ZfA^IJluK$mL*_EqGGV)vGtbA9#^k4g*K^+b$S2P8S_h9@#+HLIb)keFG S?*6lPKQU<8Ui6XNZTt;zU6~F5 diff --git a/src/models/friend.js b/src/models/friend.js new file mode 100644 index 0000000..d613d24 --- /dev/null +++ b/src/models/friend.js @@ -0,0 +1,16 @@ +'use strict'; + +module.exports = (sequelize, DataTypes) => { + var Friend = sequelize.define('Friend', { + name: DataTypes.STRING, + email: DataTypes.STRING, + fbId: DataTypes.STRING, + }, { + classMethods: { + associate: (models) => { + } + } + }); + + return Friend; +}; diff --git a/test/unit/facebook/helper.test.js b/test/unit/facebook/helper.test.js index 3e15258..4f91cf2 100644 --- a/test/unit/facebook/helper.test.js +++ b/test/unit/facebook/helper.test.js @@ -7,7 +7,7 @@ describe.only('facebook-helper', () => { before(async (done) => { let userId = "618444968267382"; - let token = "EAACEdEose0cBAJBuihGBu1zyt10CihhZBUbX3QEOIawrPUHDZBP7EiuDvSVV9AgUWldYqxZBoiuXeVaQAAJuj22ymzIBY6hBi3b06Pwiv7UvnUGqZC82AiVfZCcW5zSnoAxZB4AnqRLngZBh1aAiZCLumWEOwgxBaXJ5SCuZAbszMtAZDZD"; + let token = "EAACEdEose0cBAI7Se9TQU9ZCM3gG7cph9V3eEDBGQTPClEKFgS0oiZCWzP0ZCCZCBmrEBlVKpuSbDnVttsXzKhFbH1625eRkp1xp9VM7IABD2m9upze185blIj8hbcZAd8kjsj79DXux4yKbUXZBnmuWGcWjc84VkzhYaJ3KqqRgZDZD"; facebookHelper = new FacebookHelper({userId, token}); console.log(facebookHelper); try{ @@ -26,7 +26,7 @@ describe.only('facebook-helper', () => { let j=0; for(let i of friends) { - friends_list[j] = await models.User.create({ + friends_list[j] = await models.Friend.create({ fbId: friends[j].id , name: friends[j].name , email: 'test@mail.com', @@ -55,7 +55,7 @@ describe.only('facebook-helper', () => { it("find friends list", async (done) => { try { - let result_find = await models.User.findAll(); + let result_find = await models.Friend.findAll(); // console.log(result_find); (result_find != null).should.be.true; @@ -67,7 +67,7 @@ describe.only('facebook-helper', () => { it("update friends list", async (done) => { try { - await models.User.update( + await models.Friend.update( { email: 'hellojs@trunk.studio' }, @@ -77,7 +77,7 @@ describe.only('facebook-helper', () => { } } ); - let result_find = await models.User.findOne({ + let result_find = await models.Friend.findOne({ where:{ name:'Cheng-En Tsai' } @@ -93,13 +93,13 @@ describe.only('facebook-helper', () => { it("delete friends list", async (done) => { try { - await models.User.destroy({ + await models.Friend.destroy({ where:{ name:'Cheng-En Tsai' } }); //console.log(result_find); - let result_find = models.User.findOne({ + let result_find = models.Friend.findOne({ where:{ name:'Cheng-En Tsai' }