2014-01-22 04:01:41 +04:00
|
|
|
/*global expect, describe, it, beforeEach */
|
2014-05-29 15:45:29 +04:00
|
|
|
|
|
|
|
define(["dimple"], function (dimple) {
|
2014-01-22 04:01:41 +04:00
|
|
|
"use strict";
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-07-10 00:02:34 +04:00
|
|
|
describe("_getOrderedList", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
var data,
|
|
|
|
getResults;
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
beforeEach(function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
data = [
|
|
|
|
{ "Int": 1, "Float": 234, "Text": "XFBGR", "Date": "12/5/99", "Group": "A"},
|
|
|
|
{ "Int": 2, "Float": 54.35, "Text": "YTREB", "Date": "1/1/00", "Group": "A"},
|
|
|
|
{ "Int": 3, "Float": -453, "Text": "XGFDY", "Date": "2 February 2007", "Group": "B"},
|
2014-07-12 04:19:05 +04:00
|
|
|
{ "Int": 0, "Float": 5436546, "Text": "XGFDE", "Date": "2000-03-01", "Group": "B"},
|
2014-01-22 04:01:41 +04:00
|
|
|
{ "Int": 5, "Float": 4323, "Text": "YTREB", "Date": "10/10/2000", "Group": "C"},
|
|
|
|
{ "Int": 6, "Float": 0, "Text": "GFDHN", "Date": "11/10/2000", "Group": "C"},
|
|
|
|
{ "Int": 7, "Float": -453, "Text": "TRET", "Date": "10/9/2000", "Group": "D"},
|
|
|
|
{ "Int": 1, "Float": 5436546, "Text": "GFDGFDHG", "Date": "10/10/2000", "Group": "E"}
|
|
|
|
];
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
getResults = function (data, field, levelDefinitions) {
|
2014-01-22 04:01:41 +04:00
|
|
|
var ordered = dimple._getOrderedList(data, field, levelDefinitions),
|
|
|
|
retString = "";
|
|
|
|
ordered.forEach(function (d, i) {
|
|
|
|
retString += (i > 0 ? ", " : "") + d;
|
|
|
|
});
|
|
|
|
return retString;
|
|
|
|
};
|
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Implicitly orders by a single dimension", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int"))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("0, 1, 2, 3, 5, 6, 7");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Float"))
|
|
|
|
.toEqual("-453, 0, 54.35, 234, 4323, 5436546");
|
|
|
|
expect(getResults(data, "Text"))
|
|
|
|
.toEqual("GFDGFDHG, GFDHN, TRET, XFBGR, XGFDE, XGFDY, YTREB");
|
|
|
|
expect(getResults(data, "Date"))
|
|
|
|
.toEqual("12/5/99, 1/1/00, 2000-03-01, 10/9/2000, 10/10/2000, 11/10/2000, 2 February 2007");
|
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Explicitly orders by a single dimension", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", { ordering : "Int" }))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("0, 1, 2, 3, 5, 6, 7");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Float", { ordering : "Float" }))
|
|
|
|
.toEqual("-453, 0, 54.35, 234, 4323, 5436546");
|
|
|
|
expect(getResults(data, "Text", { ordering : "Text" }))
|
|
|
|
.toEqual("GFDGFDHG, GFDHN, TRET, XFBGR, XGFDE, XGFDY, YTREB");
|
|
|
|
expect(getResults(data, "Date", { ordering : "Date" }))
|
|
|
|
.toEqual("12/5/99, 1/1/00, 2000-03-01, 10/9/2000, 10/10/2000, 11/10/2000, 2 February 2007");
|
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Orders descending by a single dimension", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", { ordering : "Int", desc : true }))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("7, 6, 5, 3, 2, 1, 0");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Float", { ordering : "Float", desc : true }))
|
|
|
|
.toEqual("5436546, 4323, 234, 54.35, 0, -453");
|
|
|
|
expect(getResults(data, "Text", { ordering : "Text", desc : true }))
|
|
|
|
.toEqual("YTREB, XGFDY, XGFDE, XFBGR, TRET, GFDHN, GFDGFDHG");
|
|
|
|
expect(getResults(data, "Date", { ordering : "Date", desc : true }))
|
|
|
|
.toEqual("2 February 2007, 11/10/2000, 10/10/2000, 10/9/2000, 2000-03-01, 1/1/00, 12/5/99");
|
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Orders by a passed array", function () {
|
2014-07-12 04:19:05 +04:00
|
|
|
expect(getResults(data, "Int", { ordering : [3, 7, 0, 5, 2, 1, 6] }))
|
|
|
|
.toEqual("3, 7, 0, 5, 2, 1, 6");
|
|
|
|
expect(getResults(data, "Int", { ordering : [3, 7, 0, 5, 2, 1, 6], desc : true }))
|
|
|
|
.toEqual("6, 1, 2, 5, 0, 7, 3");
|
|
|
|
expect(getResults(data, "Int", { ordering : [3, 7, 0] }))
|
|
|
|
.toEqual("3, 7, 0, 1, 2, 5, 6");
|
|
|
|
expect(getResults(data, "Int", { ordering : [3, 7, 0], desc : true }))
|
|
|
|
.toEqual("0, 7, 3, 1, 2, 5, 6");
|
|
|
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0", "5", "2", "1", "6"] }))
|
|
|
|
.toEqual("3, 7, 0, 5, 2, 1, 6");
|
|
|
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0", "5", "2", "1", "6"], desc : true }))
|
|
|
|
.toEqual("6, 1, 2, 5, 0, 7, 3");
|
|
|
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0"] }))
|
|
|
|
.toEqual("3, 7, 0, 1, 2, 5, 6");
|
|
|
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0"], desc : true }))
|
|
|
|
.toEqual("0, 7, 3, 1, 2, 5, 6");
|
2014-01-22 04:01:41 +04:00
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Orders by a custom function", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Text", { ordering : function (a, b) { return a.Text.length - b.Text.length; }}))
|
|
|
|
.toEqual("TRET, GFDHN, XFBGR, XGFDE, XGFDY, YTREB, GFDGFDHG");
|
|
|
|
expect(getResults(data, "Text", { ordering : function (a, b) { return a.Text.length - b.Text.length; }, desc : true }))
|
|
|
|
.toEqual("GFDGFDHG, GFDHN, XFBGR, XGFDE, XGFDY, YTREB, TRET");
|
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Orders by a second category", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", { ordering : "Text" }))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("6, 7, 1, 0, 3, 2, 5");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", { ordering : "Text", desc : true }))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("2, 5, 3, 0, 1, 7, 6");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Group", { ordering : "Float" }))
|
|
|
|
.toEqual("D, A, C, B, E");
|
|
|
|
expect(getResults(data, "Group", { ordering : "Float", desc : true }))
|
|
|
|
.toEqual("E, B, C, A, D");
|
|
|
|
});
|
|
|
|
|
2014-05-29 15:45:29 +04:00
|
|
|
it("Orders by a third category", function () {
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", [{ ordering : "Group" }, { ordering : "Float" }]))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("2, 1, 3, 0, 6, 5, 7");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", [{ ordering : "Group", desc : true}, { ordering : "Float" }]))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("7, 6, 5, 3, 0, 2, 1");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", [{ ordering : "Group"}, { ordering : "Float", desc : true }]))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("1, 2, 0, 3, 5, 6, 7");
|
2014-01-22 04:01:41 +04:00
|
|
|
expect(getResults(data, "Int", [{ ordering : "Group", desc : true}, { ordering : "Float", desc : true }]))
|
2014-07-12 04:19:05 +04:00
|
|
|
.toEqual("7, 5, 6, 0, 3, 1, 2");
|
2014-01-22 04:01:41 +04:00
|
|
|
});
|
2014-01-19 17:39:01 +04:00
|
|
|
});
|
2014-05-29 15:45:29 +04:00
|
|
|
});
|