mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Adding tests for Backbone.Controller
This commit is contained in:
80
test/controller.js
Normal file
80
test/controller.js
Normal file
@@ -0,0 +1,80 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
module("Backbone.Controller");
|
||||
|
||||
var Controller = Backbone.Controller.extend({
|
||||
|
||||
routes: {
|
||||
"search/:query": "search",
|
||||
"search/:query/p:page": "search",
|
||||
"splat/*args/end": "splat",
|
||||
"*first/complex-:part/*rest": "complex"
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
this.testing = options.testing;
|
||||
},
|
||||
|
||||
search : function(query, page) {
|
||||
this.query = query;
|
||||
this.page = page;
|
||||
},
|
||||
|
||||
splat : function(args) {
|
||||
this.args = args;
|
||||
},
|
||||
|
||||
complex : function(first, part, rest) {
|
||||
this.first = first;
|
||||
this.part = part;
|
||||
this.rest = rest;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var controller = new Controller({testing: 101});
|
||||
|
||||
Backbone.history.interval = 9;
|
||||
Backbone.history.start();
|
||||
|
||||
test("Controller: initialize", function() {
|
||||
equals(controller.testing, 101);
|
||||
});
|
||||
|
||||
asyncTest("Controller: routes (simple)", 2, function() {
|
||||
window.location.hash = 'search/news';
|
||||
setTimeout(function() {
|
||||
equals(controller.query, 'news');
|
||||
equals(controller.page, undefined);
|
||||
start();
|
||||
}, 10);
|
||||
});
|
||||
|
||||
asyncTest("Controller: routes (two part)", 2, function() {
|
||||
window.location.hash = 'search/nyc/p10';
|
||||
setTimeout(function() {
|
||||
equals(controller.query, 'nyc');
|
||||
equals(controller.page, '10');
|
||||
start();
|
||||
}, 10);
|
||||
});
|
||||
|
||||
asyncTest("Controller: routes (splats)", function() {
|
||||
window.location.hash = 'splat/long-list/of/splatted_99args/end';
|
||||
setTimeout(function() {
|
||||
equals(controller.args, 'long-list/of/splatted_99args');
|
||||
start();
|
||||
}, 10);
|
||||
});
|
||||
|
||||
asyncTest("Controller: routes (complex)", 3, function() {
|
||||
window.location.hash = 'one/two/three/complex-part/four/five/six/seven';
|
||||
setTimeout(function() {
|
||||
equals(controller.first, 'one/two/three');
|
||||
equals(controller.part, 'part');
|
||||
equals(controller.rest, 'four/five/six/seven');
|
||||
start();
|
||||
}, 10);
|
||||
});
|
||||
|
||||
});
|
||||
@@ -12,6 +12,7 @@
|
||||
<script type="text/javascript" src="events.js"></script>
|
||||
<script type="text/javascript" src="model.js"></script>
|
||||
<script type="text/javascript" src="collection.js"></script>
|
||||
<script type="text/javascript" src="controller.js"></script>
|
||||
<script type="text/javascript" src="view.js"></script>
|
||||
<script type="text/javascript" src="sync.js"></script>
|
||||
<script type="text/javascript" src="speed.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user