From df467cc61bd5878c83cca19d3f012fa499ea0dbb Mon Sep 17 00:00:00 2001 From: dead-horse Date: Fri, 17 Feb 2017 17:59:56 +0800 Subject: [PATCH] feat: add redefine app.Controller example --- redefine-controller/app.js | 21 ++++++++++++++ redefine-controller/app/controller/api.js | 13 +++++++++ redefine-controller/app/router.js | 6 ++++ redefine-controller/config/config.default.js | 3 ++ redefine-controller/package.json | 15 ++++++++++ .../test/controller/api.test.js | 28 +++++++++++++++++++ 6 files changed, 86 insertions(+) create mode 100644 redefine-controller/app.js create mode 100644 redefine-controller/app/controller/api.js create mode 100644 redefine-controller/app/router.js create mode 100644 redefine-controller/config/config.default.js create mode 100644 redefine-controller/package.json create mode 100644 redefine-controller/test/controller/api.test.js diff --git a/redefine-controller/app.js b/redefine-controller/app.js new file mode 100644 index 00000000..80bb94ab --- /dev/null +++ b/redefine-controller/app.js @@ -0,0 +1,21 @@ +'use strict'; + +module.exports = app => { + class CustomController extends app.Controller { + success(result) { + this.ctx.body = { + success: true, + result, + }; + } + + fail(message) { + this.ctx.body = { + success: false, + message, + }; + } + } + + app.Controller = CustomController; +}; diff --git a/redefine-controller/app/controller/api.js b/redefine-controller/app/controller/api.js new file mode 100644 index 00000000..237e3618 --- /dev/null +++ b/redefine-controller/app/controller/api.js @@ -0,0 +1,13 @@ +'use strict'; + +module.exports = app => { + return class ApiController extends app.Controller { + * successAction() { + this.success({ foo: 'bar' }); + } + + * failAction() { + this.fail('something wrong'); + } + }; +}; diff --git a/redefine-controller/app/router.js b/redefine-controller/app/router.js new file mode 100644 index 00000000..d26f49a2 --- /dev/null +++ b/redefine-controller/app/router.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = app => { + app.get('/success', 'api.successAction'); + app.get('/fail', 'api.failAction'); +}; diff --git a/redefine-controller/config/config.default.js b/redefine-controller/config/config.default.js new file mode 100644 index 00000000..5a194a17 --- /dev/null +++ b/redefine-controller/config/config.default.js @@ -0,0 +1,3 @@ +'use strict'; + +exports.keys = 'keys'; diff --git a/redefine-controller/package.json b/redefine-controller/package.json new file mode 100644 index 00000000..6f2e6aeb --- /dev/null +++ b/redefine-controller/package.json @@ -0,0 +1,15 @@ +{ + "name": "redefine-controller", + "dependencies": { + "egg": "^0.12.0" + }, + "devDependencies": { + "egg-bin": "^2.2.0", + "egg-mock": "^3.0.0", + "supertest": "^3.0.0" + }, + "scripts": { + "test": "egg-bin test", + "dev": "egg-bin dev" + } +} diff --git a/redefine-controller/test/controller/api.test.js b/redefine-controller/test/controller/api.test.js new file mode 100644 index 00000000..efa9bcfb --- /dev/null +++ b/redefine-controller/test/controller/api.test.js @@ -0,0 +1,28 @@ +'use strict'; + +const request = require('supertest'); +const mm = require('egg-mock'); + +describe('test/controller/api.tset.js', () => { + let app; + before(() => { + app = mm.app(); + return app.ready(); + }); + + after(() => app.close()); + + it('should get /success ok', () => { + return request(app.callback()) + .get('/success') + .expect(200) + .expect({ success: true, result: { foo: 'bar' } }); + }); + + it('should get /fail ok', () => { + return request(app.callback()) + .get('/fail') + .expect(200) + .expect({ success: false, message: 'something wrong' }); + }); +});