From e38d71cc354037289b6682f342a0df50633d6de8 Mon Sep 17 00:00:00 2001 From: xiang36 Date: Fri, 29 Jul 2016 08:34:07 +0800 Subject: [PATCH] Commit Week2 HomeWork --- database.db | Bin 4096 -> 5120 bytes src/models/friend.js | 14 ++++++ test/unit/facebook/friend.test.js | 81 ++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 src/models/friend.js create mode 100644 test/unit/facebook/friend.test.js diff --git a/database.db b/database.db index 3f8ea29c89b51cba05d8a6532ceaa61bd2b83607..f63eaff1e15464982e7671f9415502c3c4a6357f 100644 GIT binary patch literal 5120 zcmWFz^vNtqRY=P(%1ta$FlJz3U}R))P*7lCVA{#Rz`zQ`P{8C4WU#<^K$;PWje`j^ zL-*xNUS@Fy7Dh2e;l@l>c5!iW#%9Bk#H5_m(BjmhVlct#9OUX4 z;;Inh=;Y(7kN_4-P|!%oOi57i^b2uycMVbq2=erG42o3nc8yeU3=Q%3^aE=0b@dC; zQAj8Snv|EAo0^~y<{0Gc;TWW0WNNAjlt|4@%*??MEl4abF3&Fl8jhwsF&$_G)Iy-{ zQ}HBDSj=eiPjSLLUbPddPjVu)m46KZetxOE{Of1Y5 zw1GSW18lOUhQ?4?pK14w?pV5qlbu1Hfx*-Bd0+SQiQP|kZ^xz!znKVGzi+c2-&okL z1#&&m%*fI_UFXaU1@}@iT#7Ii7}cvMf1P`e59-tx6V|-kvisTWIg~gRXlNKLpn*f1A+%8v3zLtr!nhI0r20K2?_ AumAu6 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/models/friend.js b/src/models/friend.js new file mode 100644 index 0000000..c9e9dbb --- /dev/null +++ b/src/models/friend.js @@ -0,0 +1,14 @@ +'use strict'; +module.exports = (sequelize, DataTypes) => { + var friend = sequelize.define('friend', { + name : DataTypes.STRING, + facebookId: DataTypes.STRING, + email : DataTypes.STRING + }, { + classMethods: { + associate: (models) =>{ + } + } + }); + return friend; +}; diff --git a/test/unit/facebook/friend.test.js b/test/unit/facebook/friend.test.js new file mode 100644 index 0000000..9697840 --- /dev/null +++ b/test/unit/facebook/friend.test.js @@ -0,0 +1,81 @@ +import task1_initModel from '../../../src/database/task1'; +import FacebookHelper from '../../../src/facebook/helper.js' + +describe.only('Test models for friend.js', () => { + let facebookHelper = null; + let model = null; + let fbFriendList = []; + + before( async (done) => { + let userId = "685135364915800"; + let token = "EAACEdEose0cBABQaouDe4W7a8gsSeZAiDP2s04bdnAAsZBLkCRS9x4Oj5UlnZBIwXd6cbFArLyhANSW19P5Ou3eHpk0r09tnjL9ZBboJZCTUusCozWu717lZBpOSDkeOlfSl7GYZBXSqqj5ARdxUtM3GKPSjz3bLZCMwbME2YKZCiwwZDZD"; + facebookHelper = await new FacebookHelper({userId, token}); + model = await task1_initModel(); + console.log(facebookHelper); + done(); + }); + + // 1 + it('把從 facebook 取得的 friends list 存入 sequelize 之 friend model (create)', async (done) => { + try { + fbFriendList = await facebookHelper.getFriends(); + console.log(fbFriendList); + let result = await model.friend.bulkCreate(fbFriendList); + result.length.should.be.eq(fbFriendList.length); + done(); + } catch(e) { + done(e); + } + }); + + // 2 + it('原本用 api 取得 friends list 改為透過查詢資料庫的方式 (find)', async (done) => { + try { + let findFriend = await model.friend.findOne({ + where: { + name: '賴念翔' + }, + }); + findFriend.name.should.be.eq(fbFriendList[0].name); + done(); + } catch(e) { + done(e); + } + }); + + // 3 + it('將其中一個 friend 更新其 email 欄位為 hellojs@trunk.studio (update)', async (done) => { + try { + let friend = await model.friend.findById(fbFriendList[1].id); + friend.email = 'hellojs@trunk.studio'; + await friend.save(); + friend.email.should.be.eq('hellojs@trunk.studio'); + done(); + } catch(e) { + done(e); + } + }); + + // 4 + it('刪除該位 friend (delete)', async (done) => { + try { + let friend = await model.friend.findOne({ + where: { + name: '萬鴻曜' + }, + }); + await friend.destroy(); + + let test = await model.friend.findOne({ + where: { + name: '萬鴻曜' + }, + }); + + (test === null).should.be.true; + done(); + } catch(e) { + done(e); + } + }); +});