Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

minor formatting changes, removing tests requiring more complex spies…

… (to be covered later)
  • Loading branch information...
commit b776458d45f49b8e80dd330579b2d0e12a05be10 1 parent 0bb3c38
Addy Osmani authored
6  js/ext/template.js
... ...
@@ -1,4 +1,5 @@
1 1
 (function($) {
  2
+
2 3
     var cache = {};
3 4
     
4 5
     function _render(elt, template, data, callback) {
@@ -9,6 +10,7 @@
9 10
         elt.append(html);
10 11
         callback();
11 12
     }
  13
+
12 14
     
13 15
     /**
14 16
      * Fetches the Underscore.js template at the given path,
@@ -30,7 +32,9 @@
30 32
             cache[path] = _.template(data);
31 33
             _render(self, cache[path], obj, callback);
32 34
         });
33  
-        
  35
+
34 36
         return self;
35 37
     };
  38
+
  39
+    
36 40
 })(jQuery);
27  js/koans/aboutApps.js
... ...
@@ -1,7 +1,5 @@
1 1
 
2  
-
3 2
 module('About Backbone Applications', {
4  
-
5 3
     setup: function() {
6 4
         Backbone.localStorageDB = new Store('testTodos');
7 5
         $('#qunit-fixture').append('<div id="app"></div>');   
@@ -12,20 +10,17 @@ module('About Backbone Applications', {
12 10
         this.App.todos.reset();
13 11
         $('#app').remove();
14 12
     }
15  
-
16 13
 });
17 14
     
18  
-    test('Should bootstrap the application by initializing the Collection.', function() {
19  
-        expect(2);
20  
-        notEqual(this.App.todos, undefined);
21  
-        equal(this.App.todos.length, 0);
22  
-    });
23  
-    
24  
-    /*
25  
-    test('Should bind Collection events to View creation.', function() {
26  
-        $('#new-todo').val('Foo');
27  
-        $('#new-todo').trigger(new $.Event('keypress', { keyCode: 13 }));
28  
-        equal(this.App.todos.length, 1);
29  
-    });
  15
+test('Should bootstrap the application by initializing the Collection.', function() {
  16
+    expect(2);
  17
+    notEqual(this.App.todos, undefined);
  18
+    equal(this.App.todos.length, 0);
  19
+});
  20
+
30 21
 
31  
-*/
  22
+test('Should bind Collection events to View creation.', function() {
  23
+    $('#new-todo').val('Foo');
  24
+    $('#new-todo').trigger(new $.Event('keypress', { keyCode: 13 }));
  25
+    equal(this.App.todos.length, 1);
  26
+});
109  js/koans/aboutCollections.js
... ...
@@ -1,63 +1,58 @@
1 1
 
2  
-
3 2
 module('About Backbone.Collection');
4 3
 
5  
-    test('Can add Model instances as objects and arrays.', function() {
6  
-
7  
-        expect(3);
8  
-
9  
-        var todos = new TodoList();
10  
-        
11  
-        equal(todos.length, 0);
12  
-        
13  
-        todos.add({ text: 'Clean the kitchen' });
14  
-
15  
-        console.log(todos);
16  
-        
17  
-        equal(todos.length, 1);
18  
-        
19  
-        todos.add([
20  
-            { text: 'Do the laundry', done: true }, 
21  
-            { text: 'Go to the gym'}
22  
-        ]);
23  
-        
24  
-        equal(todos.length, 3);
25  
-    });
26  
-    
27  
-    test('Can have a url property to define the basic url structure for all contained models.', function() {
28  
-        expect(1);
29  
-        var todos = new TodoList();
30  
-        equal(todos.url, '/todos/');
31  
-    });
32  
-    
33  
-    test('Fires custom named events when the models change.', function() {
34  
-
35  
-        expect(2);
36  
-        var todos = new TodoList();
37  
-        
38  
-        var addModelCallback = function(){
39  
-            ok( true, 'add model callback called');  
40  
-            start(); 
41  
-        }
42  
-
43  
-        stop();
44  
-        todos.bind('add', addModelCallback);
45  
-        
46  
-        // How would you get the 'add' event to trigger?
47  
-        todos.add({text:"New todo"});
48  
-        
49  
-        var removeModelCallback = function(){
50  
-            ok( true, 'remove model callback called');
51  
-            start();
52  
-        }
53  
-
54  
-        stop();
55  
-        todos.bind('remove', removeModelCallback);
56  
-        
57  
-        // How would you get the 'remove' callback to trigger?
58  
-        todos.remove(todos.last());
59  
-        
60  
-    });
  4
+test('Can add Model instances as objects and arrays.', function() {
  5
+
  6
+    expect(3);
  7
+
  8
+    var todos = new TodoList();
  9
+    equal(todos.length, 0);
  10
+    
  11
+    todos.add({ text: 'Clean the kitchen' });
  12
+    equal(todos.length, 1);
  13
+    
  14
+    todos.add([
  15
+        { text: 'Do the laundry', done: true }, 
  16
+        { text: 'Go to the gym'}
  17
+    ]);
  18
+    
  19
+    equal(todos.length, 3);
  20
+});
  21
+
  22
+test('Can have a url property to define the basic url structure for all contained models.', function() {
  23
+    expect(1);
  24
+    var todos = new TodoList();
  25
+    equal(todos.url, '/todos/');
  26
+});
  27
+
  28
+test('Fires custom named events when the models change.', function() {
  29
+
  30
+    expect(2);
  31
+    var todos = new TodoList();
  32
+    
  33
+    var addModelCallback = function(){
  34
+        ok( true, 'add model callback called');  
  35
+        start(); 
  36
+    }
  37
+
  38
+    stop();
  39
+    todos.bind('add', addModelCallback);
  40
+    
  41
+    // How would you get the 'add' event to trigger?
  42
+    todos.add({text:"New todo"});
  43
+    
  44
+    var removeModelCallback = function(){
  45
+        ok( true, 'remove model callback called');
  46
+        start();
  47
+    }
  48
+
  49
+    stop();
  50
+    todos.bind('remove', removeModelCallback);
  51
+    
  52
+    // How would you get the 'remove' callback to trigger?
  53
+    todos.remove(todos.last());
  54
+    
  55
+});
61 56
 
62 57
 
63 58
 
246  js/koans/aboutEvents.js
... ...
@@ -1,166 +1,162 @@
1 1
 
2  
-
3 2
 module('About Backbone.Events', {
4  
-    
5 3
     setup: function() {
6 4
         this.obj = {};
7 5
         _.extend(this.obj, Backbone.Events);
8 6
         this.obj.unbind(); // remove all custom events before each spec is run.
9 7
     }
10  
-
11 8
 });
12 9
     
13  
-    test('Can extend javascript objects to support custom events.', function() {
14 10
 
15  
-        expect(3);
16  
-        var basicObject = {};
17  
-        
18  
-        // How would you give basicObject these functions?
19  
-        // Hint: http://documentcloud.github.com/backbone/#Events
20  
-        
21  
-        _.extend(basicObject, Backbone.Events);
22 11
 
23  
-        equal(typeof basicObject.bind, 'function');
24  
-        equal(typeof basicObject.unbind, 'function');
25  
-        equal(typeof basicObject.trigger, 'function');
26  
-    });
  12
+test('Can extend javascript objects to support custom events.', function() {
  13
+
  14
+    expect(3);
  15
+    var basicObject = {};
27 16
     
28  
-    test('Allows us to bind and trigger custom named events on an object.', function() {
29  
-        
30  
-        expect(1);
  17
+    // How would you give basicObject these functions?
  18
+    // Hint: http://documentcloud.github.com/backbone/#Events
  19
+    
  20
+    _.extend(basicObject, Backbone.Events);
31 21
 
32  
-        var callback = function(){
33  
-            ok('custom event callback called');
34  
-            start();
35  
-        }
36  
-        
37  
-        
38  
-        this.obj.bind('basic event', callback);
  22
+    equal(typeof basicObject.bind, 'function');
  23
+    equal(typeof basicObject.unbind, 'function');
  24
+    equal(typeof basicObject.trigger, 'function');
  25
+});
39 26
 
40  
-        stop();
41  
-        this.obj.trigger("basic event");
42  
-        // How would you cause the callback for this custom event to be called?
43  
-        
44  
-    });
  27
+
  28
+
  29
+test('Allows us to bind and trigger custom named events on an object.', function() {
45 30
     
46  
-    test('Also passes along any arguments to the callback when an event is triggered.', function() {
  31
+    expect(1);
47 32
 
48  
-        expect(1);
  33
+    var callback = function(){
  34
+        ok('custom event callback called');
  35
+        start();
  36
+    }
  37
+    
  38
+    
  39
+    this.obj.bind('basic event', callback);
49 40
 
50  
-        var passedArgs = [];
51  
-        
52  
-        this.obj.bind('some event', function() {
53  
-            for (var i = 0; i < arguments.length; i++) {
54  
-                passedArgs.push(arguments[i]);
55  
-            }
56  
-        });
57  
-        
58  
-        this.obj.trigger('some event', 'arg1', 'arg2');
59  
-        
60  
-        deepEqual(passedArgs, ['arg1', 'arg2']);
61  
-    });
  41
+    stop();
  42
+    this.obj.trigger("basic event");
  43
+    // How would you cause the callback for this custom event to be called?
62 44
     
63  
-    test('Can also bind the passed context to the event callback.', function() {
  45
+});
64 46
 
65  
-        expect(2);
  47
+test('Also passes along any arguments to the callback when an event is triggered.', function() {
66 48
 
67  
-        var foo = { color: 'blue' };
68  
-        
69  
-        var changeColor = function() {
70  
-            this.color = 'red';
71  
-            ok('color changed');
72  
-            start();
  49
+    expect(1);
  50
+
  51
+    var passedArgs = [];
  52
+    
  53
+    this.obj.bind('some event', function() {
  54
+        for (var i = 0; i < arguments.length; i++) {
  55
+            passedArgs.push(arguments[i]);
73 56
         }
74  
-        
75  
-        // How would you get 'this.color' to refer to 'foo' in the changeColor function?
76  
-        
77  
-        this.obj.bind('an event', changeColor, foo);
78  
-        
79  
-        stop();
80  
-        this.obj.trigger('an event');
81  
-        
82  
-        equal(foo.color, 'red');
83 57
     });
84 58
     
85  
-    test("Uses 'all' as a special event name to capture all events bound to the object.", function() {
  59
+    this.obj.trigger('some event', 'arg1', 'arg2');
  60
+    
  61
+    deepEqual(passedArgs, ['arg1', 'arg2']);
  62
+});
86 63
 
87  
-        expect(2);
  64
+test('Can also bind the passed context to the event callback.', function() {
88 65
 
89  
-        var calledCount = 0;
90  
-        var callback = function(){
91  
-            ok('custom event callback called');
92  
-            calledCount +=1;
93  
-            start();
94  
-        }
95  
-        
96  
-        
97  
-        this.obj.bind('all', callback);
98  
-        
99  
-        stop();
100  
-        this.obj.trigger("custom event");
  66
+    expect(2);
101 67
 
102  
-        equal(calledCount, 1);
  68
+    var foo = { color: 'blue' };
  69
+    
  70
+    var changeColor = function() {
  71
+        this.color = 'red';
  72
+        ok('color changed');
  73
+        start();
  74
+    }
  75
+    
  76
+    // How would you get 'this.color' to refer to 'foo' in the changeColor function?
  77
+    
  78
+    this.obj.bind('an event', changeColor, foo);
  79
+    
  80
+    stop();
  81
+    this.obj.trigger('an event');
  82
+    
  83
+    equal(foo.color, 'red');
  84
+});
103 85
 
104  
-    });
  86
+
  87
+test("Uses 'all' as a special event name to capture all events bound to the object.", function() {
  88
+
  89
+    expect(2);
  90
+
  91
+    var calledCount = 0;
  92
+    var callback = function(){
  93
+        ok('custom event callback called');
  94
+        calledCount +=1;
  95
+        start();
  96
+    }
  97
+    
  98
+    this.obj.bind('all', callback);
105 99
     
106  
-    test('Also can remove custom events from objects.', function() {
  100
+    stop();
  101
+    this.obj.trigger("custom event");
107 102
 
108  
-        expect(4);
  103
+    equal(calledCount, 1);
109 104
 
110  
-        var spyCount1 = 0, 
111  
-            spyCount2 = 0, 
112  
-            spyCount3 = 0;
  105
+});
113 106
 
114  
-        var spy1 = function(){
115  
-            ok( true, 'spy 1');
116  
-            spyCount1 +=1;
117  
-            start();
118  
-        }
119  
-        var spy2 = function(){
120  
-            ok( true, 'spy 2');
121  
-            spyCount2+=1;
122  
-            start();
123  
-        }
124  
-        
125  
-        var spy3 = function(){
126  
-            ok( true, 'spy 1');
127  
-            spyCount3+=1;
128  
-            start();
129  
-        }
130 107
 
131  
-        this.obj.bind('foo', spy1);
132  
-        this.obj.bind('foo', spy2);
133  
-        this.obj.bind('foo', spy3);
134  
-        this.obj.bind('bar', spy1);
135  
-        
136  
-        // How do you unbind just a single callback for the event?
  108
+test('Also can remove custom events from objects.', function() {
137 109
 
138  
-        this.obj.unbind('foo', spy1);
  110
+    expect(4);
139 111
 
140  
-        stop();
141  
-        this.obj.trigger('foo');
142  
-        
143  
-        //equal(spyCount1, 1);
144  
-        
145  
-        // How do you unbind all callbacks tied to the event with a single method?
146  
-        
147  
-        this.obj.unbind('foo');
  112
+    var spyCount1 = 0, 
  113
+        spyCount2 = 0, 
  114
+        spyCount3 = 0;
148 115
 
149  
-        //stop();
150  
-        this.obj.trigger('foo');
151  
-        
152  
-        equal(spyCount2, 1);
153  
-        equal(spyCount3, 1);
154  
-        
155  
-        // How do you unbind all callbacks and events tied to the object with a single method?
156  
-        
157  
-        this.obj.unbind('bar');
  116
+    var spy1 = function(){
  117
+        ok( true, 'spy 1');
  118
+        spyCount1 +=1;
  119
+        start();
  120
+    }
  121
+    var spy2 = function(){
  122
+        ok( true, 'spy 2');
  123
+        spyCount2+=1;
  124
+        start();
  125
+    }
  126
+    
  127
+    var spy3 = function(){
  128
+        ok( true, 'spy 1');
  129
+        spyCount3+=1;
  130
+        start();
  131
+    }
158 132
 
159  
-        //stop();
160  
-        this.obj.trigger('bar');
  133
+    this.obj.bind('foo', spy1);
  134
+    this.obj.bind('foo', spy2);
  135
+    this.obj.bind('foo', spy3);
  136
+    this.obj.bind('bar', spy1);
  137
+    
  138
+    // How do you unbind just a single callback for the event?
  139
+
  140
+    this.obj.unbind('foo', spy1);
  141
+
  142
+    stop();
  143
+    this.obj.trigger('foo');
161 144
         
  145
+    // How do you unbind all callbacks tied to the event with a single method
  146
+    this.obj.unbind('foo');
  147
+
  148
+    this.obj.trigger('foo');
162 149
     
163  
-    });
  150
+    equal(spyCount2, 1);
  151
+    equal(spyCount3, 1);
  152
+    
  153
+    // How do you unbind all callbacks and events tied to the object with a single method?
  154
+    this.obj.unbind('bar');
  155
+
  156
+    //stop();
  157
+    this.obj.trigger('bar');
  158
+
  159
+});
164 160
     
165 161
 
166 162
 
107  js/koans/aboutModels.js
@@ -2,66 +2,63 @@
2 2
 
3 3
 module('About Backbone.Model');
4 4
     
5  
-    test('Can be created with default values for its attributes.', function() {
6  
-        expect(1);
7  
-        var todo = new Todo();
8  
-        equal(todo.get('text'), "");
9  
-    });
10  
-    
11  
-    test('Will set passed attributes on the model instance when created.', function() {
  5
+test('Can be created with default values for its attributes.', function() {
  6
+    expect(1);
  7
+    var todo = new Todo();
  8
+    equal(todo.get('text'), "");
  9
+});
12 10
 
13  
-        expect(3);
14  
-        var todo = new Todo({ text: 'Get oil change for car.' });
15  
-        
16  
-        equal(todo.get('text'), "Get oil change for car.");
17  
-        equal(todo.get('done'), false);
18  
-        equal(todo.get('order'), 0);
19  
-    });
20  
-    
21  
-    test('Will call a custom initialize function on the model instance when created.', function() {
  11
+test('Will set passed attributes on the model instance when created.', function() {
22 12
 
23  
-        expect(1);
24  
-        var toot = new Todo({ text: 'Stop monkeys from throwing their own crap!' });
25  
-        
26  
-        equal(toot.get('text'), 'Stop monkeys from throwing their own rainbows!');
27  
-    });
  13
+    expect(3);
  14
+    var todo = new Todo({ text: 'Get oil change for car.' });
28 15
     
29  
-    test('Fires a custom event when the state changes.', function() {
  16
+    equal(todo.get('text'), "Get oil change for car.");
  17
+    equal(todo.get('done'), false);
  18
+    equal(todo.get('order'), 0);
  19
+});
  20
+
  21
+test('Will call a custom initialize function on the model instance when created.', function() {
  22
+
  23
+    expect(1);
  24
+    var toot = new Todo({ text: 'Stop monkeys from throwing their own crap!' });
  25
+    equal(toot.get('text'), 'Stop monkeys from throwing their own rainbows!');
  26
+});
30 27
 
31  
-        expect(1);
32  
-        var spy = function(){
33  
-            ok( true, 'change event callback called');
34  
-            start();
35  
-        }
36  
-        
37  
-        var todo = new Todo();
38  
-        
39  
-        todo.bind('change', spy);
40  
-        
41  
-        stop();
42  
-        todo.set({text:"new text"});
43  
-        // How would you update a property on the todo here?
44  
-        // Hint: http://documentcloud.github.com/backbone/#Model-set
45  
-        
46  
-    });
  28
+test('Fires a custom event when the state changes.', function() {
  29
+
  30
+    expect(1);
  31
+    var spy = function(){
  32
+        ok( true, 'A change event callback was correctly triggered');
  33
+        start();
  34
+    }
  35
+    
  36
+    var todo = new Todo();
  37
+    
  38
+    todo.bind('change', spy);
47 39
     
48  
-    test('Can contain custom validation rules, and will trigger an error event on failed validation.', function() {
49  
-        
50  
-        expect(1);
51  
-        
52  
-        var errorCallback = function(){
53  
-            ok( true, 'error callback called');
54  
-            start();
55  
-        }
56  
-        
57  
-        var todo = new Todo();
58  
-        
59  
-        todo.bind('error', errorCallback);
60  
-        
61  
-        // What would you need to set on the todo properties to cause validation to fail?
62  
-        todo.set({done:"not a boolean"});
  40
+    stop();
  41
+    todo.set({text:"new text"});
  42
+    // How would you update a property on the todo here?
  43
+    // Hint: http://documentcloud.github.com/backbone/#Model-set
  44
+    
  45
+});
63 46
 
64  
-        //tobedefined, must be a boolean
  47
+test('Can contain custom validation rules, and will trigger an error event on failed validation.', function() {
  48
+    
  49
+    expect(1);
  50
+    
  51
+    var errorCallback = function(){
  52
+        ok( true, 'A failed validation correctly triggered an error');
  53
+        start();
  54
+    }
  55
+    
  56
+    var todo = new Todo();
  57
+    
  58
+    todo.bind('error', errorCallback);
  59
+    
  60
+    // What would you need to set on the todo properties to cause validation to fail?
  61
+    todo.set({done:"not a boolean"});
65 62
 
66  
-    });
  63
+});
67 64
 
67  js/koans/aboutViews.js
... ...
@@ -1,10 +1,6 @@
1 1
 
2  
-
3 2
 module('About Backbone.View', {
4  
-    
5  
-
6 3
     setup: function() {
7  
-        
8 4
         $('body').append('<ul id="todoList"></ul>');
9 5
         this.todoView = new TodoView({ model: new Todo() });
10 6
     },
@@ -16,49 +12,24 @@ module('About Backbone.View', {
16 12
 
17 13
 });
18 14
     
19  
-    test('Should be tied to a DOM element when created, based off the property provided.', function() {
20  
-        equal(this.todoView.el.tagName.toLowerCase(), 'li');
21  
-    });
22  
-    
23  
-    test('Is backed by a model instance, which provides the data.', function() {
24  
-        notEqual(this.todoView.model, undefined);
25  
-        equal(this.todoView.model.get('done'), false);
26  
-    });
27  
-    
28  
-    test('Can render, after which the DOM representation of the view will be visible.', function() {
29  
-       this.todoView.render();
30  
-       
31  
-        // Hint: render() just builds the DOM representation of the view, but doesn't insert it into the DOM.
32  
-        //       How would you append it to the ul#todoList? 
33  
-        //       How do you access the view's DOM representation?
34  
-        //
35  
-        // Hint: http://documentcloud.github.com/backbone/#View-el
  15
+test('Should be tied to a DOM element when created, based off the property provided.', function() {
  16
+    equal(this.todoView.el.tagName.toLowerCase(), 'li');
  17
+});
36 18
 
37  
-        $('ul#todoList').append(this.todoView.el);
38  
-        equal($('#todoList').find('li').length, 1);
39  
-    });
40  
-    
41  
-    test('Can use an events hash to wire up view methods to DOM elements.', function() {
42  
-        var viewElt;
43  
-        
44  
-        //spyOn(todoView.model, 'toggle');
45  
-        
46  
-        
47  
-        $('#todoList').append(this.todoView.render().el);
48  
-        
49  
-        
50  
-        setTimeout(function() {
51  
-            viewElt = $('#todoList li input.check').filter(':first');
52  
-            equal(viewElt.length > 0, true);
53  
-        }, 1000);
54  
-        
55  
-        //runs(function() {
56  
-            // Hint: How would you trigger the view, via a DOM Event, to toggle the 'done' status?
57  
-            //       (See todos.js line 70, where the events hash is defined.)
58  
-            //
59  
-            // Hint: http://api.jquery.com/click
60  
-            //todoView.toggleDone();
61  
-            //expect(todoView.model.toggle).toHaveBeenCalled();
62  
-        //});
63  
-    });
  19
+test('Is backed by a model instance, which provides the data.', function() {
  20
+    notEqual(this.todoView.model, undefined);
  21
+    equal(this.todoView.model.get('done'), false);
  22
+});
64 23
 
  24
+test('Can render, after which the DOM representation of the view will be visible.', function() {
  25
+   this.todoView.render();
  26
+   
  27
+    // Hint: render() just builds the DOM representation of the view, but doesn't insert it into the DOM.
  28
+    //       How would you append it to the ul#todoList? 
  29
+    //       How do you access the view's DOM representation?
  30
+    //
  31
+    // Hint: http://documentcloud.github.com/backbone/#View-el
  32
+
  33
+    $('ul#todoList').append(this.todoView.el);
  34
+    equal($('#todoList').find('li').length, 1);
  35
+});
5  js/todos.js
@@ -81,9 +81,12 @@
81 81
         render: function() {
82 82
             var self = this;
83 83
             
  84
+            
84 85
             $(self.el).empty().template(TEMPLATE_URL + '/templates/item.html', self.model.toJSON(), function() {
85 86
                 self.setText();
86 87
             });
  88
+
  89
+
87 90
             
88 91
             return this;
89 92
         },
@@ -139,6 +142,7 @@
139 142
                 
140 143
             TEMPLATE_URL = options.templateUrl || TEMPLATE_URL;
141 144
             
  145
+            
142 146
             parentElt.template(TEMPLATE_URL + '/templates/app.html', {}, function() {
143 147
                 self.el = $('#todoapp');
144 148
                 self.delegateEvents();
@@ -151,6 +155,7 @@
151 155
 
152 156
                 self.todos.fetch();
153 157
             });
  158
+
154 159
         },
155 160
 
156 161
         render: function() {
10  specrunner.html
@@ -9,9 +9,8 @@
9 9
     <script type="text/javascript" src="js/ext/backbone.localStorage.js"></script>
10 10
     <script type="text/javascript" src="js/todos.js"></script>
11 11
     
12  
-
13 12
     <script type="text/javascript" src="http://code.jquery.com/qunit/qunit-git.js"></script>
14  
-<link rel="stylesheet" type="text/css" href="http://code.jquery.com/qunit/qunit-1.2.0.css">
  13
+    <link rel="stylesheet" type="text/css" href="http://code.jquery.com/qunit/qunit-1.2.0.css">
15 14
 
16 15
     <script type="text/javascript" src="js/koans/aboutEvents.js"></script>
17 16
     <script type="text/javascript" src="js/koans/aboutModels.js"></script>
@@ -22,13 +21,14 @@
22 21
 </head>
23 22
 <body>
24 23
     <h1>Backbone Koans</h1>
25  
-    
  24
+
26 25
     <h1 id="qunit-header">QUnit Test Suite</h1>  
27 26
     <h2 id="qunit-banner"></h2>  
28 27
     <div id="qunit-testrunner-toolbar"></div>  
29 28
     <h2 id="qunit-userAgent"></h2>  
30 29
     <ol id="qunit-tests"></ol>  
31  
-    <div id="qunit-fixture">test markup, will be hidden</div>
  30
+    <div id="qunit-fixture">
  31
+    </div>
32 32
     
33 33
     <script type="text/javascript">
34 34
     
@@ -39,5 +39,7 @@ <h2 id="qunit-userAgent"></h2>
39 39
   
40 40
     });
41 41
     </script>
  42
+
  43
+
42 44
 </body>
43 45
 </html>

0 notes on commit b776458

Please sign in to comment.
Something went wrong with that request. Please try again.