From 263543ce2d29ee09f25f4ebb9bf2b150af31c594 Mon Sep 17 00:00:00 2001 From: Balthazar Gronon Date: Fri, 6 Feb 2015 18:17:08 +0100 Subject: [PATCH] feat(sockets): add app prompt to ask for socket --- api/index.js | 4 ++-- app/index.js | 15 ++++++++++++++- app/templates/bower.json | 3 ++- app/templates/client/index.html | 3 ++- app/templates/package.json | 3 ++- app/templates/server/server.js | 4 +++- test/test-app.js | 31 ++++++++++++++++++++++++++++++- 7 files changed, 55 insertions(+), 8 deletions(-) diff --git a/api/index.js b/api/index.js index 0760732..40c1618 100644 --- a/api/index.js +++ b/api/index.js @@ -66,10 +66,10 @@ var BangularGenerator = yeoman.generators.NamedBase.extend({ }); if (this.sockets) { - this.template('mongo/socket.js', 'server/api/' + this.fileName + '/' + this.fileName + 'socket.js'); + this.template('mongo/socket.js', 'server/api/' + this.fileName + '/' + this.fileName + '.socket.js'); genUtils.rewriteFile({ - file: 'server/config/socket.js', + file: 'server/config/sockets.js', needle: '// sockets insert', splicable: [ 'require(\'../api/' + this.fileName + '/' + this.fileName + '.socket.js\')' diff --git a/app/index.js b/app/index.js index e79b875..009bbc7 100644 --- a/app/index.js +++ b/app/index.js @@ -98,7 +98,20 @@ var BangularGenerator = yeoman.generators.Base.extend({ }); } - done(); + if (props.backend === 'mongo') { + self.prompt({ + type: 'confirm', + name: 'sockets', + message: 'Do you want to add socket support?', + default: false + }, function (props) { + self.filters.sockets = props.sockets; + done(); + }); + } else { + done(); + } + }); }, diff --git a/app/templates/bower.json b/app/templates/bower.json index d1a536c..3e595ca 100644 --- a/app/templates/bower.json +++ b/app/templates/bower.json @@ -7,7 +7,8 @@ "angular-cookies": "~1.3.0"<% } %><% if (filters.ngResource) { %>, "angular-resource": "~1.3.0"<% } %><% if (filters.ngSanitize) { %>, "angular-sanitize": "~1.3.0"<% } %><% if (filters.ngAnimate) { %>, - "angular-animate": "~1.3.0"<% } %> + "angular-animate": "~1.3.0"<% } %><% if (filters.sockets) { %>, + "angular-socket-io": "^0.7.0"<% } %> }, "devDependencies": { "angular-mocks": "~1.3.0", diff --git a/app/templates/client/index.html b/app/templates/client/index.html index 2c747bf..05ec8c2 100644 --- a/app/templates/client/index.html +++ b/app/templates/client/index.html @@ -26,7 +26,8 @@
- + <% if (filters.sockets) { %> + <% } %> diff --git a/app/templates/package.json b/app/templates/package.json index c52d397..92de299 100644 --- a/app/templates/package.json +++ b/app/templates/package.json @@ -46,7 +46,8 @@ "method-override": "^2.3.1",<% if (filters.backend === 'mongo') { %> "mongoose": "^3.8.22",<% } %> "morgan": "^1.5.1",<% if (filters.backend === 'restock') { %> - "request": "^2.51.1",<% } %> + "request": "^2.51.1",<% } %><% if (filters.sockets) { %> + "socket.io": "^1.3.2",<% } %> "should": "^4.6.2", "supertest": "^0.15.0" }, diff --git a/app/templates/server/server.js b/app/templates/server/server.js index 9d7200d..fb882a5 100644 --- a/app/templates/server/server.js +++ b/app/templates/server/server.js @@ -8,7 +8,9 @@ var mongoose = require('mongoose'); mongoose.connect(config.mongo.uri, config.mongo.options);<% } %> var app = express(); -var server = require('http').createServer(app); +var server = require('http').createServer(app);<% if (filters.sockets) { %> +var socket = require('socket.io')(server, { serveClient: true }); +require('./config/sockets.js')(socket);<% } %> require('./config/express')(app); require('./routes')(app); diff --git a/test/test-app.js b/test/test-app.js index 93d3290..8d02655 100644 --- a/test/test-app.js +++ b/test/test-app.js @@ -45,7 +45,8 @@ describe('Launching app generator tests', function () { .withPrompt({ name: 'Test', backend: 'mongo', - modules: [] + modules: [], + sockets: false }) .on('end', done); @@ -110,6 +111,34 @@ describe('Launching app generator tests', function () { }); + describe('', function () { + + before(function (done) { + + helpers.run(path.join(__dirname, '../app')) + .inDir(path.join(os.tmpdir(), './tmp')) + .withOptions({ 'skipInstall': true }) + .withPrompt({ + name: 'Test', + backend: 'mongo', + modules: [], + sockets: true + }) + .on('end', done); + + }); + + it('should have socket dependency, config and requires', function () { + assert.fileContent('package.json', '"socket.io":'); + assert.fileContent('bower.json', '"angular-socket-io":'); + assert.fileContent('client/index.html', 'socket.io/socket.io.js'); + assert.file('server/config/sockets.js'); + assert.fileContent('server/server.js', 'var socket = require(\'socket.io\')'); + assert.fileContent('server/server.js', 'require(\'./config/sockets.js\')(socket);'); + }); + + }); + describe('', function () { before(function (done) {