From 6d039a82304f2f25eb68ee89fef7dbc8fc8f7242 Mon Sep 17 00:00:00 2001 From: Vit Brunner Date: Fri, 19 Dec 2014 18:40:23 +0100 Subject: [PATCH] Route gets arrays --- source/scripts/services/route.js.coffee | 10 ++++- source/tests/services/route.js.coffee | 49 ++++++++++++++++++------- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/source/scripts/services/route.js.coffee b/source/scripts/services/route.js.coffee index 2186571..54a25e1 100644 --- a/source/scripts/services/route.js.coffee +++ b/source/scripts/services/route.js.coffee @@ -5,7 +5,15 @@ angular.module("sideBySide").service "route", ['$location', ($location) -> .map (item) -> item.split(':') .reduce((params, param) -> - params[param[0]] = param[1] + key = param.shift() + + if (param.length > 1) + value = {} + value[param[0]] = param[1].split(',') + else + value = param[0] + + params[key] = value params , {}) diff --git a/source/tests/services/route.js.coffee b/source/tests/services/route.js.coffee index 8df8f74..fd1b418 100644 --- a/source/tests/services/route.js.coffee +++ b/source/tests/services/route.js.coffee @@ -1,24 +1,25 @@ route = {} -module "route", { - setup: () -> - angular.module("sideBySide").service("$location", () -> - @path = () -> - '/asdf:zxcv/qwerty:asdf' - @url = () -> - '/asdf:zxcv/qwerty:asdf#test' - @absUrl = () -> - 'http://example.com/asdf:zxcv/qwerty:asdf#test' - @ - ) +module "route", {} - route = angular.injector(['ng', 'sideBySide']).get('route') -} +simpleSetup = () -> + angular.module("sideBySide").service("$location", () -> + @path = () -> + '/asdf:zxcv/qwerty:asdf' + @url = () -> + '/asdf:zxcv/qwerty:asdf#test' + @absUrl = () -> + 'http://example.com/asdf:zxcv/qwerty:asdf#test' + @ + ) + route = angular.injector(['ng', 'sideBySide']).get('route') test "has app url", () -> + simpleSetup() equal route.appUrl, 'http://example.com' test "gets parameters", () -> + simpleSetup() deepEqual route.params, { 'asdf': 'zxcv' 'qwerty': 'asdf' @@ -26,6 +27,7 @@ test "gets parameters", () -> } test "updates parameters", () -> + simpleSetup() route.update('asdf', 'hjkl') deepEqual route.params, { 'asdf': 'hjkl' @@ -34,6 +36,7 @@ test "updates parameters", () -> } test "adds parameter", () -> + simpleSetup() route.update('new', 'one') deepEqual route.params, { 'asdf': 'zxcv' @@ -41,3 +44,23 @@ test "adds parameter", () -> 'base': '' 'new': 'one' } + +test "gets arrays", () -> + angular.module("sideBySide").service("$location", () -> + urlPath = '/display:Language:Czech,English' + @path = () -> + urlPath + @url = () -> + urlPath + @absUrl = () -> + 'http://example.com/' + urlPath + @ + ) + route = angular.injector(['ng', 'sideBySide']).get('route') + + deepEqual route.params, { + 'base': '' + 'display': { + 'Language': [ 'Czech', 'English' ] + } + }