angular-state-router
Version:
An AngularJS state-based router designed for flexibility and ease of use.
66 lines (54 loc) • 2.12 kB
JavaScript
;
describe('UrlDictionary', function() {
var UrlDictionary = require('../../../src/utils/url-dictionary');
describe('#add', function() {
it('Should associate a url with a reference', function() {
var ud = new UrlDictionary();
ud.add('/products/:id', {
lorem: 'ipsum'
});
});
});
describe('#lookup', function() {
it('Should retrieve added references according to the url pattern', function() {
var ud = new UrlDictionary();
var data1, data2, data3, data4;
// Match parameter variable
ud.add('/pets/:id', data1 = { dolor: 'sed' });
expect(ud.lookup('/pets/cat').ref).toBe(data1);
// Match parameter variable
ud.add('/pets/:id/color', data2 = { lorem: 'sed' });
expect(ud.lookup('/pets/cat/color').ref).toBe(data2);
expect(ud.lookup('/pets/cat/color').params).toEqual({
id: 'cat'
});
// Match special characters
ud.add('/pets/:id/color/:color', data1 = { dolor: 'sed' });
expect(ud.lookup('/pets/cat/color/yellow%20purple').ref).toBe(data1);
expect(ud.lookup('/pets/cat/color/yellow%20purple').params).toEqual({
id: 'cat',
color: 'yellow%20purple'
});
// Matches query strings
ud.add('/pets/:id/color?hue', data3 = { ut: 'sed' });
expect(ud.lookup('/pets/cat/color?hue=green').ref).toBe(data3);
expect(ud.lookup('/pets/cat/color?hue=green')).not.toBe(data2);
expect(ud.lookup('/pets/cat/color?hue=green').params).toEqual({
id: 'cat',
hue: 'green'
});
// Match query strings bleeding into variables when followed immediately
expect(ud.lookup('/pets/horse?desaturate').params).toEqual({
id: 'horse',
desaturate: true
});
// Including escape characters
ud.add('/pets/:id/variety%20type/:type', data4 = { ipsum: 'sed' });
expect(ud.lookup('/pets/dog/variety%20type/poodle').ref).toBe(data4);
expect(ud.lookup('/pets/dog/variety%20type/poodle').params).toEqual({
id: 'dog',
'type': 'poodle'
});
});
});
});