Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/models/friend.js
Original file line number Diff line number Diff line change
@@ -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;
};
1 change: 1 addition & 0 deletions src/models/post.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) => {
Expand Down
14 changes: 9 additions & 5 deletions test/unit/database/practice.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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();
Expand All @@ -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);
Expand All @@ -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;
Expand Down
68 changes: 64 additions & 4 deletions test/unit/facebook/helper.test.js
Original file line number Diff line number Diff line change
@@ -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);
Expand Down