este-library-oldschool
Version:
Library for github.com/steida/este.git
152 lines • 3.96 kB
JavaScript
// Generated by github.com/steida/coffee2closure 900.1.18
suite('este.labs.Route', function() {
var Route, testData;
Route = este.labs.Route;
testData = [
{
path: 'user/:user',
url: 'user/joe',
params: {
user: 'joe'
}
}, {
path: 'users/:id?',
url: 'users',
params: {
id: void 0
}
}, {
path: 'users/:id?',
url: 'users/1',
params: {
id: '1'
}
}, {
path: 'user/:id/:operation?',
url: 'user/1',
params: {
id: '1',
operation: void 0
}
}, {
path: 'user/:id/:operation?',
url: 'user/1/edit',
params: {
id: '1',
operation: 'edit'
}
}, {
path: 'products.:format',
url: 'products.json',
params: {
format: 'json'
}
}, {
path: 'products.:format',
url: 'products.xml',
params: {
format: 'xml'
}
}, {
path: 'products.:format?',
url: 'products',
params: {
format: void 0
}
}, {
path: 'user/:id.:format?',
url: 'user/12',
params: {
id: '12',
format: void 0
}
}, {
path: 'user/:id.:format?',
url: 'user/12.json',
params: {
id: '12',
format: 'json'
}
}, {
path: '/',
url: '/',
params: null
}, {
path: 'assets/*',
url: 'assets/este.js',
params: ['este.js']
}, {
path: 'assets/*.*',
url: 'assets/steida.js',
params: ['steida', 'js']
}, {
path: 'assets/*',
url: 'assets/js/este.js',
params: ['js/este.js']
}, {
path: 'assets/*.*',
url: 'assets/js/steida.js',
params: ['js/steida', 'js']
}
];
suite('testData', function() {
suite('match', function() {
return test('should match url', function() {
var data, i, len, results, route;
results = [];
for (i = 0, len = testData.length; i < len; i++) {
data = testData[i];
route = new Route(data.path);
results.push(assert.isTrue(route.match(data.url)));
}
return results;
});
});
suite('params', function() {
return test('should return params from url', function() {
var data, i, len, params, results, route;
results = [];
for (i = 0, len = testData.length; i < len; i++) {
data = testData[i];
route = new Route(data.path);
params = route.params(data.url);
results.push(assert.deepEqual(params, data.params, data.url));
}
return results;
});
});
return suite('url', function() {
test('should return url from params', function() {
var data, i, len, results, route, url;
results = [];
for (i = 0, len = testData.length; i < len; i++) {
data = testData[i];
route = new Route(data.path);
url = route.url(data.params);
results.push(assert.equal(url, data.url, data.url));
}
return results;
});
return test('should remove unused params', function() {
var route, url;
route = new Route('/drug/:name/:condition?/:question?');
url = route.url({
'name': 'name'
});
return assert.equal(url, '/drug/name');
});
});
});
return suite('instance match', function() {
return test('should work', function() {
assert.isTrue(new Route('/').match('/'));
assert.isFalse(new Route('/').match('/f'));
assert.isTrue(new Route('/foo').match('/foo'));
assert.isFalse(new Route('/foo').match('/boo'));
assert.isTrue(new Route('/:foo').match('/foo'));
assert.isFalse(new Route('/:foo').match('/'));
assert.isTrue(new Route('/users/:foo?').match('/users'));
return assert.isTrue(new Route('/users/:foo?').match('/users/foo'));
});
});
});