From 766009098221f5038ac4357a6c504016b0e9cdb3 Mon Sep 17 00:00:00 2001 From: zpeng Date: Tue, 2 Aug 2016 16:18:41 +0800 Subject: [PATCH] OK --- api/controllers/FriendController.js | 70 +++++++++++ api/models/Friend.js | 25 ++++ api/services/FriendService.js | 76 ++++++++++++ config/policies.js | 8 +- config/routes.js | 5 + .../unit/controllers/friendController.spec.js | 115 ++++++++++++++++++ 6 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 api/controllers/FriendController.js create mode 100644 api/models/Friend.js create mode 100644 api/services/FriendService.js create mode 100644 test/unit/controllers/friendController.spec.js diff --git a/api/controllers/FriendController.js b/api/controllers/FriendController.js new file mode 100644 index 0000000..63ffe11 --- /dev/null +++ b/api/controllers/FriendController.js @@ -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); + } + }, + +}; diff --git a/api/models/Friend.js b/api/models/Friend.js new file mode 100644 index 0000000..7e413aa --- /dev/null +++ b/api/models/Friend.js @@ -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 + } + + } +}; diff --git a/api/services/FriendService.js b/api/services/FriendService.js new file mode 100644 index 0000000..abc03e9 --- /dev/null +++ b/api/services/FriendService.js @@ -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; + } + }, +} diff --git a/config/policies.js b/config/policies.js index fd8e96e..5ec9f28 100644 --- a/config/policies.js +++ b/config/policies.js @@ -27,7 +27,13 @@ module.exports.policies = { 'find': [] }, 'DashboardController': { - '*': [] + '*': [], + }, + 'FriendController' : { + 'index':[], + 'create':[], + 'update':[], + 'delete':[], } /*************************************************************************** * * diff --git a/config/routes.js b/config/routes.js index 9a6885d..cfab0c3 100644 --- a/config/routes.js +++ b/config/routes.js @@ -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... * diff --git a/test/unit/controllers/friendController.spec.js b/test/unit/controllers/friendController.spec.js new file mode 100644 index 0000000..e1764bd --- /dev/null +++ b/test/unit/controllers/friendController.spec.js @@ -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); + } + }); + +});