diff --git a/database.db b/database.db index 3f8ea29..4cbc4c2 100644 Binary files a/database.db and b/database.db differ diff --git a/src/models/friends.js b/src/models/friends.js new file mode 100644 index 0000000..0d25f8a --- /dev/null +++ b/src/models/friends.js @@ -0,0 +1,17 @@ +'use strict'; + +module.exports = (sequelize, DataTypes) => { + var friends = sequelize.define ('friends', { + name: DataTypes.STRING, + email: DataTypes.STRING, + facebookId: DataTypes.STRING + }, { + classMethods: { + associate: (models) => { + } + } + }); + + return friends; + +} diff --git a/src/models/post.js b/src/models/post.js index 9f437cf..f47bb26 100644 --- a/src/models/post.js +++ b/src/models/post.js @@ -4,6 +4,7 @@ module.exports = (sequelize, DataTypes) => { var Post = sequelize.define('Post', { title: DataTypes.STRING, desc: DataTypes.STRING, + price: DataTypes.INTEGER }, { classMethods: { associate: (models) => { diff --git a/test/unit/database/practice.test.js b/test/unit/database/practice.test.js index 8918755..b3327fa 100644 --- a/test/unit/database/practice.test.js +++ b/test/unit/database/practice.test.js @@ -42,7 +42,7 @@ describe('practice', () => { price: 100, }; - let result; + let result = await models.Post.create(input); result.title.should.be.eq('AAA'); result.desc.should.be.eq('BBB'); @@ -74,7 +74,8 @@ describe('practice', () => { it('使用 sequelize 尋找 targetPost ', async (done) => { try { - let findTarget; + let findTarget = await models.Post.findOne({id: targetPost.id}); + //models.Post.findById(targetPost.id) 也會pass findTarget.id.should.be.eq(targetPost.id); done(); @@ -91,8 +92,11 @@ describe('practice', () => { price: 999, } - let findTarget; - let result; + let findTarget = await models.Post.findById(targetPost.id); + findTarget.title = input.title; + findTarget.desc = input.desc; + findTarget.price = input.price; + let result = await findTarget.save(); result.title.should.be.eq(input.title); result.desc.should.be.eq(input.desc); @@ -106,7 +110,8 @@ describe('practice', () => { it('使用 sequelize 刪除 targetPost', async (done) => { try { - let findTarget; + let findTarget = await models.Post.findById(targetPost.id); + await findTarget.destroy(); let check = await models.Post.findAll(); (check.length === 0).should.be.true; diff --git a/test/unit/facebook/friends.test.js b/test/unit/facebook/friends.test.js new file mode 100644 index 0000000..86df71b --- /dev/null +++ b/test/unit/facebook/friends.test.js @@ -0,0 +1,124 @@ +import FacebookHelper from '../../../src/facebook/helper.js' +import task1_initModel from '../../../src/database/task1'; + +describe.only('Facebook model test here', () => { + let facebookHelper = null; + let model = null; + let rawFriends = []; + let friends = []; + + before( async (done) => { + + let userId = "718145738235098"; + let token = "EAACEdEose0cBAAf3LjhVUNt2RFiaLwAeYKEutSUjb707wZABVylwox6CeZBW5kSvCZCAQM2Dg5PTeFk67NvmCzBTYWEaAMgJKXmzx4sWDFUAtlKP0pe7HoauD5cH8kAp3NaExlLbmtVqrqf1QNZCOY3tfTs10CYibGkzAeojLwZDZD"; + facebookHelper = await new FacebookHelper({userId, token}); + model = await task1_initModel(); + + try { + rawFriends = await facebookHelper.getFriends() + + done(); + } catch(e) { + done(e); + } + }); + + it('If friends from FB API should not empty', () => { + rawFriends.length.should.be.above(0); + }); + + it('Create your friends list', async (done) => { + + try { + let formattedFriends = rawFriends.map((rawFriend) => { + let friend = {}; + friend.name = rawFriend.name; + friend.email = rawFriend.email; + friend.facebookId = rawFriend.id; + + return friend; + }); + + // console.log(`friendsList:::::${friendsList}`); + // console.log(`Model: ${model}, friends: ${model.friends}`); + friends = await model.friends.bulkCreate(formattedFriends); + + friends.length.should.be.eq(rawFriends.length); + + done(); + } catch(e) { + done(e); + } + + }); + + it('Find your friend', async (done) => { + try { + + let resultFriends = await model.friends.findAll(); + + let dataFbIds = resultFriends.map((resultfriend) => { + return resultfriend.facebookId; + }); + console.log(dataFbIds); + + let apiFriendsId = rawFriends.map((friend) => { + return friend.id; + }); + console.log(apiFriendsId); + + dataFbIds.should.be.eql(apiFriendsId); + // resultFriend.should.not.be.eq(null); + + done(); + + } catch(e){ + done(e); + } + + }); + + it('Update your friends data', async (done) => { + try { + const targetData = { + name: 'Trunk-studio', + email: 'hellojs@trunk.studio', + } + + rawFriends.length.should.be.above(4); + + let friendToUpdate = await model.friends.findOne({facebookId: rawFriends[3].id}); + console.log(`friendToUpdate: ${friendToUpdate}`); + + friendToUpdate.name = targetData.name; + friendToUpdate.email = targetData.email; + + let result = await friendToUpdate.save(); + + result.name.should.be.eq(targetData.name); + result.email.should.be.eq(targetData.email); + + done(); + } catch(e) { + done(e); + } + }); + + + it('Delete your friend data', async (done) =>{ + try{ + + let trunk = await model.friends.findOne({ where : {name: 'Trunk-studio'}}); + + console.log(`trunk::: ${trunk}`); + await trunk.destroy(); + + let check = await model.friends.findOne({ where : {name: 'Trunk-studio'}}); + (check === null).should.be.true; + + done(); + } catch(e){ + done(e); + } + }); +}); diff --git a/test/unit/facebook/helper.test.js b/test/unit/facebook/helper.test.js index 6856c56..7e88471 100644 --- a/test/unit/facebook/helper.test.js +++ b/test/unit/facebook/helper.test.js @@ -1,11 +1,13 @@ import FacebookHelper from '../../../src/facebook/helper.js' + describe('facebook-helper', () => { let facebookHelper = null; + before((done) => { - let userId = ""; - let token = ""; + let userId = "718145738235098"; + let token = "EAACEdEose0cBAEkcosKegVyQm61gWxVDCTGg4l1VSnoT2Y3aQUq4t96IjHKETxzPuMK0HNsDdkONInFHdugqUIUDNXt6uBNP4IUaBk1Sr5P2qPTNGgiLmZBmGsiRHz0PNFCWTs5T1e5qgJYOBuy9ZC2kcGR8f1rfcAAam9dAZDZD"; facebookHelper = new FacebookHelper({userId, token}); console.log(facebookHelper); done();