From 49d6555592729a544fda4c5065160931ce88a9ee Mon Sep 17 00:00:00 2001 From: sakuxz Date: Tue, 2 Aug 2016 12:05:47 +0800 Subject: [PATCH 1/4] finished HW3 --- README.md | 2 + api/controllers/FriendController.js | 46 +++++++++++++++ api/models/Friend.js | 14 +++++ config/policies.js | 6 ++ config/routes.js | 6 ++ .../unit/controllers/FriendController.spec.js | 56 +++++++++++++++++++ 6 files changed, 130 insertions(+) create mode 100644 api/controllers/FriendController.js create mode 100644 api/models/Friend.js create mode 100644 test/unit/controllers/FriendController.spec.js diff --git a/README.md b/README.md index 0ee50f6..ae50d1a 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ sailsProject a [Sails](http://sailsjs.org) application +> 須使用 npm@3 安裝相依模組 + gem install ----------- diff --git a/api/controllers/FriendController.js b/api/controllers/FriendController.js new file mode 100644 index 0000000..63a237a --- /dev/null +++ b/api/controllers/FriendController.js @@ -0,0 +1,46 @@ +module.exports = { + create: async (req, res) => { + try { + let friend = await Friend.create(req.body); + res.ok(friend); + } catch (e) { + res.serverError(e); + } + }, + + find: async (req, res) => { + try { + let friends = await Friend.findAll(); + res.ok({friends}); + } catch (e) { + res.serverError(e); + } + }, + + update: async (req, res) => { + try { + let result = await Friend.update(req.body,{ + where: { + id: req.params.id + } + }); + res.ok(result); + } catch (e) { + res.serverError(e); + } + }, + + delete: async (req, res) => { + try { + let result = await Friend.destroy({ + where: { + id: req.params.id + } + }); + res.ok(true); + } catch (e) { + res.serverError(e); + } + }, + +} diff --git a/api/models/Friend.js b/api/models/Friend.js new file mode 100644 index 0000000..38dea2b --- /dev/null +++ b/api/models/Friend.js @@ -0,0 +1,14 @@ +module.exports = { + attributes: { + name: Sequelize.STRING, + email: Sequelize.STRING, + facebookId: Sequelize.INTEGER + }, + associations: function() { + }, + options: { + classMethods: {}, + instanceMethods: {}, + hooks: {} + } +}; diff --git a/config/policies.js b/config/policies.js index fd8e96e..db002eb 100644 --- a/config/policies.js +++ b/config/policies.js @@ -26,6 +26,12 @@ module.exports.policies = { 'index': [], 'find': [] }, + 'FriendController': { + 'create': [], + 'find': [], + 'update': [], + 'delete': [] + }, 'DashboardController': { '*': [] } diff --git a/config/routes.js b/config/routes.js index 9a6885d..78a118b 100644 --- a/config/routes.js +++ b/config/routes.js @@ -57,6 +57,12 @@ module.exports.routes = { 'get /api/arrow/authOfFirstPost': 'DashboardController.get_arrow', 'get /api/async/authOfFirstPost': 'DashboardController.get_async', + 'post /friend/create': 'FriendController.create', + 'get /friend/find': 'FriendController.find', + 'put /friend/update/:id': 'FriendController.update', + 'delete /friend/destroy/: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..266f95c --- /dev/null +++ b/test/unit/controllers/FriendController.spec.js @@ -0,0 +1,56 @@ +describe.only('test Friend CRUD', () => { + let friendId = null; + before(async (done) => { + done(); + }); + + it('create a friend', async (done) => { + let newFriend = { + name: 'wahaha', + email: 'wahaha@gm.com', + facebookId: '1234567' + } + let res = await request(sails.hooks.http.app) + .post(`/friend/create`) + .send(newFriend).expect(200); + res.body.should.have.keys('id', 'name', 'email', 'facebookId', 'updatedAt', 'createdAt'); + friendId = res.body.id; + done(); + }); + + it('get friends', async (done) => { + let res = await request(sails.hooks.http.app).get(`/friend/find`).expect(200); + let {friends} = res.body; + friends.should.be.Array; + friends[0].should.have.keys('id', 'name', 'email', 'facebookId', 'updatedAt', 'createdAt'); + done(); + }); + + it('update a friend', async (done) => { + let newInfo = { + name: 'haha' + } + let res = await request(sails.hooks.http.app) + .put(`/friend/update/${friendId}`) + .send(newInfo) + .expect(200); + res.body.should.be.Array; + res.body[0].should.be.eq(1); + + let friend = await Friend.findById(friendId); + friend.name.should.be.eq('haha'); + done(); + }); + + it('delete a friend', async (done) => { + let res = await request(sails.hooks.http.app) + .delete(`/friend/delete/${friendId}`) + .expect(200); + console.log(res.body); + + let friend = await Friend.findById(friendId); + (friend === null).should.be.true; + done(); + }); + +}); From fa980ab7974db3a05bab17348407c53f60797ad1 Mon Sep 17 00:00:00 2001 From: sakuxz Date: Tue, 2 Aug 2016 13:47:18 +0800 Subject: [PATCH 2/4] fixed some --- api/controllers/FriendController.js | 4 ++-- config/policies.js | 4 ++-- config/routes.js | 4 ++-- test/unit/controllers/FriendController.spec.js | 5 ++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/api/controllers/FriendController.js b/api/controllers/FriendController.js index 63a237a..330cf70 100644 --- a/api/controllers/FriendController.js +++ b/api/controllers/FriendController.js @@ -8,7 +8,7 @@ module.exports = { } }, - find: async (req, res) => { + findAll: async (req, res) => { try { let friends = await Friend.findAll(); res.ok({friends}); @@ -30,7 +30,7 @@ module.exports = { } }, - delete: async (req, res) => { + destroy: async (req, res) => { try { let result = await Friend.destroy({ where: { diff --git a/config/policies.js b/config/policies.js index db002eb..f09fe92 100644 --- a/config/policies.js +++ b/config/policies.js @@ -28,9 +28,9 @@ module.exports.policies = { }, 'FriendController': { 'create': [], - 'find': [], + 'findAll': [], 'update': [], - 'delete': [] + 'destroy': [] }, 'DashboardController': { '*': [] diff --git a/config/routes.js b/config/routes.js index 78a118b..ada604b 100644 --- a/config/routes.js +++ b/config/routes.js @@ -58,9 +58,9 @@ module.exports.routes = { 'get /api/async/authOfFirstPost': 'DashboardController.get_async', 'post /friend/create': 'FriendController.create', - 'get /friend/find': 'FriendController.find', + 'get /friend/find': 'FriendController.findAll', 'put /friend/update/:id': 'FriendController.update', - 'delete /friend/destroy/:id': 'FriendController.delete', + 'delete /friend/destroy/:id': 'FriendController.destroy', /*************************************************************************** diff --git a/test/unit/controllers/FriendController.spec.js b/test/unit/controllers/FriendController.spec.js index 266f95c..ea7b4af 100644 --- a/test/unit/controllers/FriendController.spec.js +++ b/test/unit/controllers/FriendController.spec.js @@ -1,4 +1,4 @@ -describe.only('test Friend CRUD', () => { +describe('test Friend CRUD', () => { let friendId = null; before(async (done) => { done(); @@ -44,9 +44,8 @@ describe.only('test Friend CRUD', () => { it('delete a friend', async (done) => { let res = await request(sails.hooks.http.app) - .delete(`/friend/delete/${friendId}`) + .delete(`/friend/destroy/${friendId}`) .expect(200); - console.log(res.body); let friend = await Friend.findById(friendId); (friend === null).should.be.true; From 49b7f1fb02cc2fbf1f1521558341bbc2f2dbe62e Mon Sep 17 00:00:00 2001 From: sakuxz Date: Wed, 3 Aug 2016 17:42:11 +0000 Subject: [PATCH 3/4] add dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 4e4c810..5eb56a6 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "author": "spooky", "license": "", "devDependencies": { + "babel-cli": "^6.11.4", "chai": "^3.4.1", "grunt-bower-task": "^0.4.0", "grunt-cli": "^0.1.13", From 110c58e568b7d74e82cbf0e67ebba9d12d87e1f5 Mon Sep 17 00:00:00 2001 From: sakuxz Date: Fri, 5 Aug 2016 11:59:45 +0800 Subject: [PATCH 4/4] fixed mocha test bad code --- .../unit/controllers/FriendController.spec.js | 82 ++++++++++++------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/test/unit/controllers/FriendController.spec.js b/test/unit/controllers/FriendController.spec.js index ea7b4af..f0da8e9 100644 --- a/test/unit/controllers/FriendController.spec.js +++ b/test/unit/controllers/FriendController.spec.js @@ -1,55 +1,81 @@ describe('test Friend CRUD', () => { let friendId = null; before(async (done) => { - done(); + try { + const newFriend = { + name: 'wahaha', + email: 'wahaha@gm.com', + facebookId: '1234567' + }; + const result = await Friend.create(newFriend); + friendId = result.id; + done(); + }catch (e){ + done(); + } }); it('create a friend', async (done) => { - let newFriend = { - name: 'wahaha', - email: 'wahaha@gm.com', - facebookId: '1234567' - } - let res = await request(sails.hooks.http.app) + try{ + const newFriend = { + name: 'wahaha', + email: 'wahaha@gm.com', + facebookId: '1234567' + } + let res = await request(sails.hooks.http.app) .post(`/friend/create`) .send(newFriend).expect(200); - res.body.should.have.keys('id', 'name', 'email', 'facebookId', 'updatedAt', 'createdAt'); - friendId = res.body.id; - done(); + res.body.should.have.keys('id', 'name', 'email', 'facebookId', 'updatedAt', 'createdAt'); + done(); + }catch(e){ + done(); + } }); it('get friends', async (done) => { - let res = await request(sails.hooks.http.app).get(`/friend/find`).expect(200); - let {friends} = res.body; - friends.should.be.Array; - friends[0].should.have.keys('id', 'name', 'email', 'facebookId', 'updatedAt', 'createdAt'); - done(); + try{ + let res = await request(sails.hooks.http.app).get(`/friend/find`).expect(200); + let {friends} = res.body; + friends.should.be.Array; + friends[0].should.have.keys('id', 'name', 'email', 'facebookId', 'updatedAt', 'createdAt'); + done(); + }catch(e){ + done(); + } }); it('update a friend', async (done) => { - let newInfo = { - name: 'haha' - } - let res = await request(sails.hooks.http.app) + try{ + let newInfo = { + name: 'haha' + } + let res = await request(sails.hooks.http.app) .put(`/friend/update/${friendId}`) .send(newInfo) .expect(200); - res.body.should.be.Array; - res.body[0].should.be.eq(1); + res.body.should.be.Array; + res.body[0].should.be.eq(1); - let friend = await Friend.findById(friendId); - friend.name.should.be.eq('haha'); - done(); + let friend = await Friend.findById(friendId); + friend.name.should.be.eq('haha'); + done(); + }catch(e){ + done(); + } }); it('delete a friend', async (done) => { - let res = await request(sails.hooks.http.app) + try{ + let res = await request(sails.hooks.http.app) .delete(`/friend/destroy/${friendId}`) .expect(200); - let friend = await Friend.findById(friendId); - (friend === null).should.be.true; - done(); + let friend = await Friend.findById(friendId); + (friend === null).should.be.true; + done(); + }catch(e){ + done(); + } }); });