Skip to content

Commit

Permalink
Fix tests, recompile JS
Browse files Browse the repository at this point in the history
Fix #66
  • Loading branch information
willdurand committed Dec 13, 2012
1 parent e859ae6 commit c91a172
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 50 deletions.
60 changes: 30 additions & 30 deletions Resources/js/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ fos.Router.prototype.getBaseUrl = function() {
* @param {string} prefix
*/
fos.Router.prototype.setPrefix = function(prefix) {
this.context_.prefix = prefix;
this.context_.prefix = prefix;
};

/**
Expand Down Expand Up @@ -100,10 +100,10 @@ fos.Router.prototype.getRoute = function(name) {
if (!this.routes_.containsKey(prefixedName)) {
// Check first for default route before failing
if (!this.routes_.containsKey(name)) {
throw new Error('The route "' + name + '" does not exist.');
throw new Error('The route "' + name + '" does not exist.');
}
} else {
name = prefixedName;
name = prefixedName;
}

return (this.routes_.get(name));
Expand Down Expand Up @@ -135,31 +135,31 @@ fos.Router.prototype.generate = function(name, opt_params, absolute) {
if ('variable' === token[0]) {
var hasDefault = goog.object.containsKey(route.defaults, token[3]);
if (false === optional || !hasDefault
|| (goog.object.containsKey(params, token[3]) && params[token[3]] != route.defaults[token[3]])) {
var value;
if (goog.object.containsKey(params, token[3])) {
value = params[token[3]];
goog.object.remove(unusedParams, token[3]);
|| (goog.object.containsKey(params, token[3]) && params[token[3]] != route.defaults[token[3]])) {
var value;
if (goog.object.containsKey(params, token[3])) {
value = params[token[3]];
goog.object.remove(unusedParams, token[3]);
} else if (hasDefault) {
value = route.defaults[token[3]];
} else if (optional) {
return;
} else {
throw new Error('The route "' + name + '" requires the parameter "' + token[3] + '".');
}

var empty = true === value || false === value || '' === value;

if (!empty || !optional) {
url = token[1] + encodeURIComponent(value).replace(/%2F/g, '/') + url;
}

optional = false;
} else if (hasDefault) {
value = route.defaults[token[3]];
} else if (optional) {
return;
} else {
throw new Error('The route "' + name + '" requires the parameter "' + token[3] + '".');
}

var empty = true === value || false === value || '' === value;

if (!empty || !optional) {
url = token[1] + encodeURIComponent(value).replace(/%2F/g, '/') + url;
goog.object.remove(unusedParams, token[3]);
}

optional = false;
} else if (hasDefault) {
goog.object.remove(unusedParams, token[3]);
}

return;
return;
}

throw new Error('The token type "' + token[0] + '" is not supported.');
Expand All @@ -171,12 +171,12 @@ fos.Router.prototype.generate = function(name, opt_params, absolute) {

url = this.context_.base_url + url;
if (goog.object.containsKey(route.requirements, "_scheme")) {
if (this.getScheme() != route.requirements["_scheme"]) {
url = route.requirements["_scheme"] + "://" + this.getHost() + url;
}
if (this.getScheme() != route.requirements["_scheme"]) {
url = route.requirements["_scheme"] + "://" + this.getHost() + url;
}
} else if (absolute === true) {
url = this.getScheme() + "://" + this.getHost() + url;
}
url = this.getScheme() + "://" + this.getHost() + url;
}

if (goog.object.getCount(unusedParams) > 0) {
url = goog.uri.utils.appendParamsFromMap(url, unusedParams);
Expand Down
37 changes: 19 additions & 18 deletions Resources/js/router_test.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
literal: {
tokens: [['text', '/homepage']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -27,7 +27,7 @@
blog_post: {
tokens: [['variable', '/', '[^/]+?', 'slug'], ['text', '/blog-post']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -39,13 +39,13 @@
homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements : {}
requirements: {}
}
});

assertEquals('/foo/bar', router.generate('homepage'));
}

function testGenerateUsesSchemeRequirements() {
var router = new fos.Router({base_url: '/foo', host: "localhost"}, {
homepage: {
Expand All @@ -57,13 +57,13 @@

assertEquals('https://localhost/foo/bar', router.generate('homepage'));
}

function testGenerateUsesAbsoluteUrl() {
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http"}, {
homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -75,7 +75,7 @@
posts: {
tokens: [['variable', '.', '', '_format'], ['text', '/posts']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -87,7 +87,8 @@
var router = new fos.Router({base_url: ''}, {
posts: {
tokens: [['variable', '/', '[1-9]+[0-9]*', 'page'], ['text', '/blog-posts']],
defaults: {'page' : 1}
defaults: {'page' : 1},
requirements: {}
}
});

Expand All @@ -99,7 +100,7 @@
posts: {
tokens: [['variable', '/', '.+', 'id'], ['text', '/blog-post']],
defaults: {},
requirements : {}
requirements: {}
}
});
assertEquals('/blog-post/foo/bar', router.generate('posts', {id: 'foo/bar'}));
Expand All @@ -111,7 +112,7 @@
foo: {
tokens: [['variable', '/', '', 'bar']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -126,7 +127,7 @@
foo: {
tokens: [['text', '/moo'], ['variable', '/', '', 'bar']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -152,7 +153,7 @@
homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -164,17 +165,17 @@
en__RG__homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements : {}
requirements: {}
},
es__RG__homepage: {
tokens: [['text', '/es/bar']],
defaults: {},
requirements : {}
requirements: {}
},
_admin: {
tokens: [['text', '/admin']],
defaults: {},
requirements : {}
requirements: {}
}
});

Expand All @@ -190,17 +191,17 @@
blog_post: {
tokens: [['variable', '/', '[^/]+?', 'slug'], ['text', '/blog-post']],
defaults: {},
requirements : {"_scheme": "http"}
requirements: {"_scheme": "http"}
}
});

var expected = {
'defaults' : {},
'defaults': {},
'tokens' : [
['variable', '/', '[^/]+?', 'slug'],
['text', '/blog-post'],
],
'requirements' : {"_scheme": "http"}
'requirements': {"_scheme": "http"}
};

assertObjectEquals(expected, router.getRoute('blog_post'));
Expand Down
5 changes: 3 additions & 2 deletions Resources/public/js/router.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit c91a172

Please sign in to comment.