diff --git a/src/models/friend.js b/src/models/friend.js new file mode 100644 index 0000000..774611d --- /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, + facebookId: DataTypes.INTEGER + }, { + classMethods: { + associate: (models) => { + } + } + }); + + return friend; +}; 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..1cdaa0b 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,7 @@ describe('practice', () => { it('使用 sequelize 尋找 targetPost ', async (done) => { try { - let findTarget; + let findTarget = await models.Post.findById(targetPost.id); findTarget.id.should.be.eq(targetPost.id); done(); @@ -91,8 +91,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 +109,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/helper.test.js b/test/unit/facebook/helper.test.js index 6856c56..68aa489 100644 --- a/test/unit/facebook/helper.test.js +++ b/test/unit/facebook/helper.test.js @@ -1,23 +1,83 @@ import FacebookHelper from '../../../src/facebook/helper.js' +import task1_initModel from '../../../src/database/task1'; describe('facebook-helper', () => { let facebookHelper = null; + let models = null; - before((done) => { - let userId = ""; - let token = ""; + before(async (done) => { + let userId = "718927014853837"; + let token = "EAACEdEose0cBANQIY2OfwDlxZAkTIQZCiiUcCjzbEfcrrAKmRws5qff9ebYEE1dE8pvbEOZAOh2fZCN0tTRbrnNF6mEGFjQOAuy8RuP3uIhkEDj8TMYZAKZBVHbWp1fl2oAco9i8CZCF10FId1YC3yoOOkrZBZBf9bWqSohkjdnLFKBHn9oiIsjCh"; facebookHelper = new FacebookHelper({userId, token}); + models = await task1_initModel(); console.log(facebookHelper); done(); }); - it("get friends list", async (done) => { + it("get friends list and save in database", async (done) => { try { let friends = await facebookHelper.getFriends(); console.log("friends", friends); (friends != null).should.be.true; friends.should.be.Array; friends[0].should.have.keys("name", "id"); + + friends.forEach((e, i) => { + e.facebookId = e.id; + e.id = undefined; + }); + await models.Friend.bulkCreate(friends); + done(); + } catch (e) { + done(e); + } + }); + + it("get friends list in database", async (done) => { + try { + let friends = await models.Friend.findAll(); + friends.should.be.Array; + friends[0].toJSON().should.has.keys( + 'id', + 'name', + 'email', + 'facebookId', + 'createdAt', + 'updatedAt' + ); + done(); + } catch (e) { + done(e); + } + }); + + it("update one of friend's email in database", async (done) => { + try { + let friend = await models.Friend.findOne(); + friend.email = 'hellojs@trunk.studio'; + let result = await friend.save(); + result.email.should.be.eq('hellojs@trunk.studio'); + done(); + } catch (e) { + done(e); + } + }); + + it("delete the friend who has trunk.studio email in database", async (done) => { + try { + let friend = await models.Friend.findOne({ + where: { + email: 'hellojs@trunk.studio' + } + }); + await friend.destroy(); + + let result = await models.Friend.findOne({ + where: { + email: 'hellojs@trunk.studio' + } + }); + (result === null).should.be.true; done(); } catch (e) { done(e);