diff --git a/database.db b/database.db index 3f8ea29..f63eaff 100644 Binary files a/database.db and b/database.db differ 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); + } + }); +});