Skip to content

Commit

Permalink
Merge pull request #8 from jonniespratley/feature/blog
Browse files Browse the repository at this point in the history
Feature/blog
  • Loading branch information
jonniespratley committed Mar 2, 2016
2 parents 8b8c62c + a988674 commit 34d4c5a
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 122 deletions.
32 changes: 25 additions & 7 deletions src/plugins/blog-plugin/blog-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,35 +16,53 @@ module.exports = function (Logger, BlogService) {

BlogController.renderPost = function (req, res, next) {
log('post', req.url);
res.render('post');
BlogService.get(req.params.id, function (err, result) {
if (err) {
res.status(404).send(err);
}
log('found post', result);
res.locals.post = result;
res.render('post', {post: result});
});

};

BlogController.get = function (req, res, next) {
BlogService.get(req.params.id, function (err, result) {
if (err) {
res.status(404).json(err);
res.status(404).send(err);
}
res.status(200).json(result);
log('found post', result);
res.locals.post = result;
res.status(200).send(result);
});
};

BlogController.put = function (req, res, next) {
log('put', req.body);
log('put', req.params.id, req.body);
req.body['id'] = req.params.id;
BlogService.put(req.body, function (err, result) {
if (err) {
res.status(404).json(err);
}
res.status(200).json(result);
res.status(200).json({
ok: true,
data: req.body
});
});
};

BlogController.post = function (req, res, next) {
log('post', req.body);
log('post', req.params.id, req.body);
req.body['id'] = req.params.id;
BlogService.post(req.body, function (err, result) {
if (err) {
res.status(404).json(err);
}
res.status(201).json(result);
res.status(201).json({
ok: true,
data: req.body
});
});
};

Expand Down
42 changes: 24 additions & 18 deletions src/plugins/blog-plugin/blog-router.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,36 @@ const serveStatic = require('serve-static');
const flash = require('connect-flash');
const path = require('path');
const ejs = require('ejs');
const bodyParser = require('body-parser');

module.exports = function(app, BlogService, BlogController) {
var blog = express();
var blogAdmin = express();
var blog = express();
var blogAdmin = express();

blog.set('views', path.resolve(__dirname, './views'));
blog.set('view engine', 'ejs');
blog.engine('html', ejs.renderFile);
blog.set('views', path.resolve(__dirname, './views'));
blog.set('view engine', 'ejs');
blog.engine('html', ejs.renderFile);

blog.use('/blog', serveStatic(path.resolve(__dirname, './views')));
blog.use(flash());
blog.use('/', serveStatic(path.resolve(__dirname, './views')));
blog.use(flash());

blog.get('/', BlogController.renderPosts);
blog.get('/posts/:id', BlogController.renderPost);
blog.route('/:id?').get(BlogController.get);
blog.get('/', BlogController.index);
blog.get('/posts', BlogController.renderPosts);
blog.get('/posts/:id', BlogController.renderPost);
blog.delete('/posts/:id', BlogController.remove)
blog.put('/posts/:id', bodyParser.json(), BlogController.put)
blog.post('/posts', bodyParser.json(), BlogController.post)
blog.route('/:id?').get(BlogController.get);

blogAdmin.route('/:id?')
.get(BlogController.get)
.put(BlogController.put)
.post(BlogController.post)
.delete(BlogController.remove);
blogAdmin.route('/:id?')
.get(BlogController.get)
.put(bodyParser.json(), BlogController.put)
.post(bodyParser.json(), BlogController.post)
.delete(BlogController.remove);

app.use('/blog', blog);
blog.use('/admin', blogAdmin);

return blog;
app.use('/blog', blog);
blog.use('/admin', blogAdmin);

return blog;
};
198 changes: 103 additions & 95 deletions src/plugins/blog-plugin/index-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,112 +13,120 @@ program.use(plugin);

var app = program.get('app');

describe('blog-plugin', function() {

it('should be defined', function() {
assert(plugin);
});
describe('Routes', function() {

it('GET - /blog - should return 200', function(done) {
request(app)
.get('/blog')
.set('Accept', 'text/html')
.expect('Content-Type', /html/)
.expect(200, done);
});

it('GET - /blog - should return 200', function(done) {
request(app)
.get('/blog')
//.set('Accept', 'application/json')
//.expect('Content-Type', /json/)
.expect(200, done);
});


xit('GET - /blog/:page - should return 200', function(done) {
request(app)
.get('/blog/about-page')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, done);
});
var mockPage = {
id: 'page-1',
title: 'page 1',
body: 'Contents'
};


it('POST - /blog/admin - should return 201', function(done) {
request(app)
.post('/blog/admin')
.send({
id: 'about-page',
title: 'Home'
})
.expect('Content-Type', /json/)
.expect(201, done);
});
describe('blog-plugin', function () {

xit('GET - /blog/admin/:id - should return 200', function(done) {
request(app)
.get('/blog/admin/about-page')
.expect('Content-Type', /json/)
.expect(200, done);
it('should be defined', function () {
assert(plugin);
});
describe('Routes', function () {

it('GET - /blog - should return 200', function (done) {
request(app)
.get('/blog')
.set('Accept', 'text/html')
.expect('Content-Type', /html/)
.expect(200, done);
});

it('GET - /blog - should return 200', function (done) {
request(app)
.get('/blog')
//.set('Accept', 'application/json')
//.expect('Content-Type', /json/)
.expect(200, done);
});
it('PUT - /blog/admin/page-1 - should return 201', function (done) {
request(app)
.put('/blog/admin/page-1')

.send({
title: 'Home'
})
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, done);
});


it('POST - /blog/admin - should return 201', function (done) {
request(app)
.post('/blog/admin')
.set('Accept', 'application/json')
.send(mockPage)
.expect('Content-Type', /json/)
.expect(201, done);
});

it('GET - /blog/admin/:id - should return 200', function (done) {
request(app)
.get('/blog/admin/' + mockPage.id)
.expect('Content-Type', /json/)
.expect(200, done);
});

it('GET - /blog/:page - should return 200', function (done) {
request(app)
.get('/blog/' + mockPage.id)
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, done);
});


it('PUT - /blog/:id - should update post andreturn 200', function (done) {
request(app)
.put('/blog/admin/' + mockPage.id)
.send({

title: 'Home',
type: 'post'
})
.expect('Content-Type', /json/)
.expect(200, done);
});

it('DELETE - /blog/:id - should return 200', function (done) {
request(app)
.delete('/blog/admin/' + mockPage.id)
.expect('Content-Type', /json/)
.expect(200, done);
});

xit('GET - /blog/:page - should return 200', function(done) {
request(app)
.get('/blog/about-page')
// .set('Accept', 'application/json')
//.expect('Content-Type', /json/)
.expect(200, done);
});

describe('Controller', function () {

it('PUT - /blog/:id - should update post andreturn 200', function(done) {
request(app)
.put('/blog/admin/home-page')
.send({
id: 'home-page',
title: 'Home',
type: 'post'
})
.expect('Content-Type', /json/)
.expect(200, done);
});

it('DELETE - /blog/:id - should return 200', function(done) {
request(app)
.delete('/blog/admin/home-page')
.expect('Content-Type', /json/)
.expect(200, done);
});

});

describe('Controller', function() {

});

describe('Service', function() {
var testPost = {
id: 'test-post',
title: 'Test'
};
it('put(post) - updates post', function(done) {

done();
});
it('get(id) - returns post', function(done) {
//
done();
});
it('post(p) - creates post', function(done) {
//
done();
});
it('remove(id) - removes post', function(done) {
//
done();
describe('Service', function () {
var testPost = {
id: 'test-post',
title: 'Test'
};
it('put(post) - updates post', function (done) {

done();
});
it('get(id) - returns post', function (done) {
//
done();
});
it('post(p) - creates post', function (done) {
//
done();
});
it('remove(id) - removes post', function (done) {
//
done();
});
});
});

});
9 changes: 7 additions & 2 deletions src/plugins/blog-plugin/views/post.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@
<html>
<head>
<meta charset="utf-8">
<title>post</title>
<title>post <%= post.id %></title>
</head>
<body>
<h2>Post</h2>
<h2>
<%= post.title %>
</h2>
<p>
<%= post.body %>
</p>
</body>
</html>

0 comments on commit 34d4c5a

Please sign in to comment.