Code coverage report for server/boot/challengeMap.js

Statements: 32.26% (10 / 31)      Branches: 0% (0 / 4)      Functions: 11.11% (1 / 9)      Lines: 33.33% (10 / 30)      Ignored: none     

All files » server/boot/ » challengeMap.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 661           1 1 1   1 1     1       1   1                                             1                                            
var R = require('ramda'),
  // debug = require('debug')('freecc:cntr:challengeMap'),
  utils = require('./../utils'),
  middleware = require('../utils/middleware');
 
 
module.exports = function(app) {
  var User = app.models.User;
  var router = app.loopback.Router();
 
  router.get('/map', middleware.userMigration, challengeMap);
  router.get('/learn-to-code', function(req, res) {
    res.redirect(301, '/map');
  });
  router.get('/about', function(req, res) {
    res.redirect(301, '/map');
  });
 
  app.use(router);
 
  function challengeMap(req, res, next) {
    var completedList = [];
 
    if (req.user) {
      completedList = req.user.completedChallenges;
    }
 
    var noDuplicatedChallenges = R.uniq(completedList);
 
    var completedChallengeList = noDuplicatedChallenges
      .map(function(challenge) {
        return challenge.id;
      });
    var challengeList = utils.
      getChallengeMapForDisplay(completedChallengeList);
 
    Object.keys(challengeList).forEach(function(key) {
      challengeList[key].completed = challengeList[key]
        .challenges.filter(function(elem) {
        return completedChallengeList.indexOf(elem.id) > -1;
      });
    });
 
    function numberWithCommas(x) {
      return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    }
 
    var date1 = new Date('10/15/2014');
    var date2 = new Date();
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24));
 
    User.count(function(err, camperCount) {
      if (err) { return next(err); }
 
      res.render('challengeMap/show', {
        daysRunning: daysRunning,
        camperCount: numberWithCommas(camperCount),
        title: "A map of all Free Code Camp's Challenges",
        challengeList: challengeList,
        completedChallengeList: completedChallengeList
      });
    });
  }
};