Code coverage report for lib\CategoryModel.js

Statements: 95.65% (22 / 23)      Branches: 87.5% (7 / 8)      Functions: 100% (4 / 4)      Lines: 95.65% (22 / 23)      Ignored: none     

All files » lib/ » CategoryModel.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        1   1 2 2 2 2   2 4 4 3 3 9 9 9     1   4 4     2 1 1 1             1
/*jslint node: true */
/*jshint laxbreak: true */
'use strict';
 
var _ = require('underscore');
 
var CategoryModel = function(catTitle, ordering) {
    var catModel = this;
    catModel.title = catTitle;
    catModel.ordering = ordering;
    catModel.elements = [];
 
    catModel.addElement = function(element) {
        var sortedIndex = 0;
        if (catModel.ordering && element.ordering) {
            var rest = _.pluck(catModel.elements, 'ordering');
            _.each(ordering, function(attr) {
                var index = _.sortedIndex(rest, element.ordering, attr);
                sortedIndex = sortedIndex + index;
                rest = _.rest(rest, index);
            });
        } else {
            sortedIndex = catModel.elements.length;
        }
        catModel.elements.splice(sortedIndex, 0, element);
        return sortedIndex;
    };
 
    catModel.removeElement = function(index) {
        Eif ((0 <= index) && (index < catModel.elements.length)) {
            catModel.elements.splice(index, 1);
            return index;
        } else {
            return -1;
        }
    };
};
 
module.exports = CategoryModel;