From b0dd1ad4d71fd35cb4a4aef6e7f177546b25dd66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 24 May 2017 13:25:47 -0400 Subject: [PATCH] admin navigation test --- src/controllers/admin/navigation.js | 31 ++++++++++---------- src/navigation/admin.js | 21 +++++++------- src/navigation/index.js | 45 +++++++++++++++-------------- test/controllers-admin.js | 14 +++++++-- 4 files changed, 60 insertions(+), 51 deletions(-) diff --git a/src/controllers/admin/navigation.js b/src/controllers/admin/navigation.js index 9c96444be3..e54c6b0eb1 100644 --- a/src/controllers/admin/navigation.js +++ b/src/controllers/admin/navigation.js @@ -1,23 +1,22 @@ 'use strict'; -var navigationController = {}; - -navigationController.get = function (req, res, next) { - require('../../navigation/admin').getAdmin(function (err, data) { - if (err) { - return next(err); - } +var async = require('async'); +var navigationAdmin = require('../../navigation/admin'); +var navigationController = module.exports; - data.enabled.forEach(function (enabled, index) { - enabled.index = index; - enabled.selected = index === 0; - }); +navigationController.get = function (req, res, next) { + async.waterfall([ + navigationAdmin.getAdmin, + function (data) { + data.enabled.forEach(function (enabled, index) { + enabled.index = index; + enabled.selected = index === 0; + }); - data.navigation = data.enabled.slice(); + data.navigation = data.enabled.slice(); - res.render('admin/general/navigation', data); - }); + res.render('admin/general/navigation', data); + }, + ], next); }; - -module.exports = navigationController; diff --git a/src/navigation/admin.js b/src/navigation/admin.js index 6b0984a466..cf854a80a4 100644 --- a/src/navigation/admin.js +++ b/src/navigation/admin.js @@ -48,17 +48,18 @@ admin.getAdmin = function (callback) { }; admin.get = function (callback) { - db.getSortedSetRange('navigation:enabled', 0, -1, function (err, data) { - if (err) { - return callback(err); - } - - data = data.map(function (item, idx) { - return JSON.parse(item)[idx]; - }); + async.waterfall([ + function (next) { + db.getSortedSetRange('navigation:enabled', 0, -1, next); + }, + function (data, next) { + data = data.map(function (item, idx) { + return JSON.parse(item)[idx]; + }); - callback(null, data); - }); + next(null, data); + }, + ], callback); }; function getAvailable(callback) { diff --git a/src/navigation/index.js b/src/navigation/index.js index 76b0ceeceb..9aec34dd25 100644 --- a/src/navigation/index.js +++ b/src/navigation/index.js @@ -1,40 +1,41 @@ 'use strict'; +var async = require('async'); var nconf = require('nconf'); + var admin = require('./admin'); var translator = require('../translator'); -var navigation = {}; +var navigation = module.exports; navigation.get = function (callback) { if (admin.cache) { return callback(null, admin.cache); } - admin.get(function (err, data) { - if (err) { - return callback(err); - } - - data = data.filter(function (item) { - return item && item.enabled; - }).map(function (item) { - if (!item.route.startsWith('http')) { - item.route = nconf.get('relative_path') + item.route; - } - - for (var i in item) { - if (item.hasOwnProperty(i)) { - item[i] = translator.unescape(item[i]); + async.waterfall([ + admin.get, + function (data, next) { + data = data.filter(function (item) { + return item && item.enabled; + }).map(function (item) { + if (!item.route.startsWith('http')) { + item.route = nconf.get('relative_path') + item.route; + } + + for (var i in item) { + if (item.hasOwnProperty(i)) { + item[i] = translator.unescape(item[i]); + } } - } - return item; - }); + return item; + }); - admin.cache = data; + admin.cache = data; - callback(null, data); - }); + next(null, data); + }, + ], callback); }; diff --git a/test/controllers-admin.js b/test/controllers-admin.js index dbc1f5fd53..df5d3d58d8 100644 --- a/test/controllers-admin.js +++ b/test/controllers-admin.js @@ -303,10 +303,18 @@ describe('Admin Controllers', function () { }); it('should load /admin/general/navigation', function (done) { - request(nconf.get('url') + '/api/admin/general/navigation', { jar: jar, json: true }, function (err, res, body) { + var navigation = require('../src/navigation/admin'); + var data = require('../install/data/navigation.json'); + + navigation.save(data, function (err) { assert.ifError(err); - assert(body); - done(); + request(nconf.get('url') + '/api/admin/general/navigation', { jar: jar, json: true }, function (err, res, body) { + assert.ifError(err); + assert(body); + assert(body.available); + assert(body.enabled); + done(); + }); }); });