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
70 changes: 70 additions & 0 deletions api/controllers/FriendController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/**
* FriendController
*
* @description :: Server-side logic for managing friends
* @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers
*/

module.exports = {
index: async (req, res) => {
try {

let friendExist = await FriendService.getFriend();
console.log("friend : " + friendExist);

// 回傳驗證結果
res.ok(friendExist);
res.end;
//return res.json(user);
} catch (e) {
res.serverError(e);
}
},
create: async (req, res) => {
try {
let newFriend = req.body

let friendNew = await FriendService.createFriend(newFriend);
console.log("friend : " + friendNew);

// 回傳驗證結果
res.ok(friendNew);
res.end;
//return res.json(user);
} catch (e) {
res.serverError(e);
}
},
update: async (req, res) => {
try {

let updatef = req.body;

let friendUpdate = await FriendService.updateFriend(updatef);
console.log("friend : " + friendUpdate);

// 回傳驗證結果
res.ok(friendUpdate);
res.end;
//return res.json(user);
} catch (e) {
res.serverError(e);
}
},
delete: async (req, res) => {
try {
let deleteid = req.params['id'];

let friendDelete = await FriendService.deleteFriend(deleteid);
console.log("friend : " + friendDelete);

// 回傳驗證結果
res.ok(friendDelete);
res.end;
//return res.json(user);
} catch (e) {
res.serverError(e);
}
},

};
25 changes: 25 additions & 0 deletions api/models/Friend.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* Friend.js
*
* @description :: TODO: You might write a short summary of how this model works and what it represents here.
* @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models
*/

module.exports = {

attributes: {
fbId: {
type: Sequelize.STRING,
allowNull: false
},
name: {
type: Sequelize.STRING,
allowNull: false
},
email: {
type: Sequelize.STRING,
allowNull: false
}

}
};
76 changes: 76 additions & 0 deletions api/services/FriendService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
module.exports = {

getFriend: async () => {
try {

// 根據 model 的 spec 完成下列實作
let friendExist = await Friend.findAll();

return friendExist;

} catch (e) {
throw e;
}
},

createFriend: async (friend) => {
try {

console.log(friend.email);
console.log(friend.fbId);
console.log(friend.name);

// 根據 model 的 spec 完成下列實作
let friendCreate = await Friend.create({
email: friend.email,
name: friend.name,
fbId: friend.fbId
});

return friendCreate;

} catch (e) {
throw e;
}
},
updateFriend: async (friend) => {
try {

console.log(friend.email);
console.log(friend.fbId);
console.log(friend.name);

// 根據 model 的 spec 完成下列實作
let friendUpdate = await Friend.update({
email: friend.email,
name: friend.name,
fbId: friend.fbId
},{
where:{ id : friend.id}
});

return friendUpdate;

} catch (e) {
throw e;
}
},
deleteFriend: async (did) => {
try {

console.log(did);

// 根據 model 的 spec 完成下列實作
let friendDelete = await Friend.findOne({
where:{id: did}
});

let deleteFriend = await friendDelete.destroy();

return deleteFriend;

} catch (e) {
throw e;
}
},
}
8 changes: 7 additions & 1 deletion config/policies.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,13 @@ module.exports.policies = {
'find': []
},
'DashboardController': {
'*': []
'*': [],
},
'FriendController' : {
'index':[],
'create':[],
'update':[],
'delete':[],
}
/***************************************************************************
* *
Expand Down
5 changes: 5 additions & 0 deletions config/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ module.exports.routes = {
'get /api/arrow/authOfFirstPost': 'DashboardController.get_arrow',
'get /api/async/authOfFirstPost': 'DashboardController.get_async',

'get /friend' : 'FriendController.index' ,
'post /friend/create' : 'FriendController.create' ,
'put /friend/update' : 'FriendController.update' ,
'delete /friend/delete/:id' : 'FriendController.delete' ,

/***************************************************************************
* *
* Custom routes here... *
Expand Down
115 changes: 115 additions & 0 deletions test/unit/controllers/friendController.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
describe.only('對 friend Controller 進行使用者驗證', function() {
let friend = null;
before(async (done) => {
// 建立測試的 friend 資料
// 在進行 Login 驗證前需要 friend 事先存在
try {
friend = await Friend.create({
email: 'test@gmail.com',
name: 'test',
fbId: '123456',
});

done();
} catch (e) {
done(e);
}
});

it('get all friends', async (done) => {
try {

// 實作 controller 呼叫 service 完成 login 動作
// 檔案位置:api/controllers/FriendController.js
let result = await request(sails.hooks.http.app)
.get('/friend')
result.status.should.be.eq(200);

done();
} catch (e) {
done(e);
}
});

it('add friend', async (done) => {
try {

// 實作 controller 呼叫 service 完成 login 動作
// 檔案位置:api/controllers/FriendController.js
let result = await request(sails.hooks.http.app)
.post('/friend/create')
.send({
fbId: '1234567',
name: 'test2',
email: 'test2@mail.com',
});
result.status.should.be.eq(200);
let find = await Friend.findOne({
where:{
name: 'test2'
}
});
console.log(find);
(find === null).should.be.false;


done();
} catch (e) {
done(e);
}
});

it('update friend', async (done) => {
try {

// 實作 controller 呼叫 service 完成 login 動作
// 檔案位置:api/controllers/FriendController.js
let result = await request(sails.hooks.http.app)
.put('/friend/update')
.send({
fbId: '1234567',
name: 'test2',
email: 'test2@mail.com',
id : 1
});
result.status.should.be.eq(200);
let find = await Friend.findOne({
where:{
id: 1
}
});
console.log(find);
(find === null).should.be.false;
find.name.should.be.eq('test2');


done();
} catch (e) {
done(e);
}
});
it('delete friend', async (done) => {
try {

// 實作 controller 呼叫 service 完成 login 動作
// 檔案位置:api/controllers/FriendController.js
let result = await request(sails.hooks.http.app)
.delete('/friend/delete/1');

result.status.should.be.eq(200);
let find = await Friend.findOne({
where:{
id: 1
}
});
console.log(find);
(find === null).should.be.true;


done();
} catch (e) {
done(e);
}
});

});