forked from jslatts/nodechat-tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsync.js
More file actions
121 lines (104 loc) · 3.87 KB
/
Copy pathsync.js
File metadata and controls
121 lines (104 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
$(document).ready(function() {
module("Backbone.sync");
// Variable to catch the last request.
window.lastRequest = null;
// Stub out jQuery.ajax...
$.ajax = function(obj) {
lastRequest = obj;
};
var Library = Backbone.Collection.extend({
url : function() { return '/library'; }
});
var library = new Library();
var attrs = {
title : "The Tempest",
author : "Bill Shakespeare",
length : 123
};
test("sync: read", function() {
Backbone.sync = originalSync;
library.fetch();
equals(lastRequest.url, '/library');
equals(lastRequest.type, 'GET');
equals(lastRequest.dataType, 'json');
ok(_.isEmpty(lastRequest.data));
});
test("sync: create", function() {
library.add(library.create(attrs));
equals(lastRequest.url, '/library');
equals(lastRequest.type, 'POST');
equals(lastRequest.dataType, 'json');
var data = JSON.parse(lastRequest.data);
equals(data.title, 'The Tempest');
equals(data.author, 'Bill Shakespeare');
equals(data.length, 123);
});
test("sync: update", function() {
library.first().save({id: '1-the-tempest', author: 'William Shakespeare'});
equals(lastRequest.url, '/library/1-the-tempest');
equals(lastRequest.type, 'PUT');
equals(lastRequest.dataType, 'json');
var data = JSON.parse(lastRequest.data);
equals(data.id, '1-the-tempest');
equals(data.title, 'The Tempest');
equals(data.author, 'William Shakespeare');
equals(data.length, 123);
});
test("sync: update with emulateHTTP and emulateJSON", function() {
Backbone.emulateHTTP = Backbone.emulateJSON = true;
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
equals(lastRequest.url, '/library/2-the-tempest');
equals(lastRequest.type, 'POST');
equals(lastRequest.dataType, 'json');
equals(lastRequest.data._method, 'PUT');
var data = JSON.parse(lastRequest.data.model);
equals(data.id, '2-the-tempest');
equals(data.author, 'Tim Shakespeare');
equals(data.length, 123);
Backbone.emulateHTTP = Backbone.emulateJSON = false;
});
test("sync: update with just emulateHTTP", function() {
Backbone.emulateHTTP = true;
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
equals(lastRequest.url, '/library/2-the-tempest');
equals(lastRequest.type, 'POST');
equals(lastRequest.contentType, 'application/json');
var data = JSON.parse(lastRequest.data);
equals(data.id, '2-the-tempest');
equals(data.author, 'Tim Shakespeare');
equals(data.length, 123);
Backbone.emulateHTTP = false;
});
test("sync: update with just emulateJSON", function() {
Backbone.emulateJSON = true;
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
equals(lastRequest.url, '/library/2-the-tempest');
equals(lastRequest.type, 'PUT');
equals(lastRequest.contentType, 'application/x-www-form-urlencoded');
var data = JSON.parse(lastRequest.data.model);
equals(data.id, '2-the-tempest');
equals(data.author, 'Tim Shakespeare');
equals(data.length, 123);
Backbone.emulateJSON = false;
});
test("sync: read model", function() {
library.first().fetch();
equals(lastRequest.url, '/library/2-the-tempest');
equals(lastRequest.type, 'GET');
ok(_.isEmpty(lastRequest.data));
});
test("sync: destroy", function() {
library.first().destroy();
equals(lastRequest.url, '/library/2-the-tempest');
equals(lastRequest.type, 'DELETE');
equals(lastRequest.data, null);
});
test("sync: destroy with emulateHTTP", function() {
Backbone.emulateHTTP = Backbone.emulateJSON = true;
library.first().destroy();
equals(lastRequest.url, '/library/2-the-tempest');
equals(lastRequest.type, 'POST');
equals(JSON.stringify(lastRequest.data), '{"_method":"DELETE"}');
Backbone.emulateHTTP = Backbone.emulateJSON = false;
});
});