nexus site path corrected
[portal.git] / ecomp-portal-FE / client / bower_components / lodash / vendor / backbone / test / sync.js
1 (function() {
2
3   var Library = Backbone.Collection.extend({
4     url: function() { return '/library'; }
5   });
6   var library;
7
8   var attrs = {
9     title: 'The Tempest',
10     author: 'Bill Shakespeare',
11     length: 123
12   };
13
14   QUnit.module('Backbone.sync', {
15
16     beforeEach: function(assert) {
17       library = new Library;
18       library.create(attrs, {wait: false});
19     },
20
21     afterEach: function(assert) {
22       Backbone.emulateHTTP = false;
23     }
24
25   });
26
27   QUnit.test('read', function(assert) {
28     assert.expect(4);
29     library.fetch();
30     assert.equal(this.ajaxSettings.url, '/library');
31     assert.equal(this.ajaxSettings.type, 'GET');
32     assert.equal(this.ajaxSettings.dataType, 'json');
33     assert.ok(_.isEmpty(this.ajaxSettings.data));
34   });
35
36   QUnit.test('passing data', function(assert) {
37     assert.expect(3);
38     library.fetch({data: {a: 'a', one: 1}});
39     assert.equal(this.ajaxSettings.url, '/library');
40     assert.equal(this.ajaxSettings.data.a, 'a');
41     assert.equal(this.ajaxSettings.data.one, 1);
42   });
43
44   QUnit.test('create', function(assert) {
45     assert.expect(6);
46     assert.equal(this.ajaxSettings.url, '/library');
47     assert.equal(this.ajaxSettings.type, 'POST');
48     assert.equal(this.ajaxSettings.dataType, 'json');
49     var data = JSON.parse(this.ajaxSettings.data);
50     assert.equal(data.title, 'The Tempest');
51     assert.equal(data.author, 'Bill Shakespeare');
52     assert.equal(data.length, 123);
53   });
54
55   QUnit.test('update', function(assert) {
56     assert.expect(7);
57     library.first().save({id: '1-the-tempest', author: 'William Shakespeare'});
58     assert.equal(this.ajaxSettings.url, '/library/1-the-tempest');
59     assert.equal(this.ajaxSettings.type, 'PUT');
60     assert.equal(this.ajaxSettings.dataType, 'json');
61     var data = JSON.parse(this.ajaxSettings.data);
62     assert.equal(data.id, '1-the-tempest');
63     assert.equal(data.title, 'The Tempest');
64     assert.equal(data.author, 'William Shakespeare');
65     assert.equal(data.length, 123);
66   });
67
68   QUnit.test('update with emulateHTTP and emulateJSON', function(assert) {
69     assert.expect(7);
70     library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
71       emulateHTTP: true,
72       emulateJSON: true
73     });
74     assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
75     assert.equal(this.ajaxSettings.type, 'POST');
76     assert.equal(this.ajaxSettings.dataType, 'json');
77     assert.equal(this.ajaxSettings.data._method, 'PUT');
78     var data = JSON.parse(this.ajaxSettings.data.model);
79     assert.equal(data.id, '2-the-tempest');
80     assert.equal(data.author, 'Tim Shakespeare');
81     assert.equal(data.length, 123);
82   });
83
84   QUnit.test('update with just emulateHTTP', function(assert) {
85     assert.expect(6);
86     library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
87       emulateHTTP: true
88     });
89     assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
90     assert.equal(this.ajaxSettings.type, 'POST');
91     assert.equal(this.ajaxSettings.contentType, 'application/json');
92     var data = JSON.parse(this.ajaxSettings.data);
93     assert.equal(data.id, '2-the-tempest');
94     assert.equal(data.author, 'Tim Shakespeare');
95     assert.equal(data.length, 123);
96   });
97
98   QUnit.test('update with just emulateJSON', function(assert) {
99     assert.expect(6);
100     library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
101       emulateJSON: true
102     });
103     assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
104     assert.equal(this.ajaxSettings.type, 'PUT');
105     assert.equal(this.ajaxSettings.contentType, 'application/x-www-form-urlencoded');
106     var data = JSON.parse(this.ajaxSettings.data.model);
107     assert.equal(data.id, '2-the-tempest');
108     assert.equal(data.author, 'Tim Shakespeare');
109     assert.equal(data.length, 123);
110   });
111
112   QUnit.test('read model', function(assert) {
113     assert.expect(3);
114     library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
115     library.first().fetch();
116     assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
117     assert.equal(this.ajaxSettings.type, 'GET');
118     assert.ok(_.isEmpty(this.ajaxSettings.data));
119   });
120
121   QUnit.test('destroy', function(assert) {
122     assert.expect(3);
123     library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
124     library.first().destroy({wait: true});
125     assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
126     assert.equal(this.ajaxSettings.type, 'DELETE');
127     assert.equal(this.ajaxSettings.data, null);
128   });
129
130   QUnit.test('destroy with emulateHTTP', function(assert) {
131     assert.expect(3);
132     library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
133     library.first().destroy({
134       emulateHTTP: true,
135       emulateJSON: true
136     });
137     assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
138     assert.equal(this.ajaxSettings.type, 'POST');
139     assert.equal(JSON.stringify(this.ajaxSettings.data), '{"_method":"DELETE"}');
140   });
141
142   QUnit.test('urlError', function(assert) {
143     assert.expect(2);
144     var model = new Backbone.Model();
145     assert.raises(function() {
146       model.fetch();
147     });
148     model.fetch({url: '/one/two'});
149     assert.equal(this.ajaxSettings.url, '/one/two');
150   });
151
152   QUnit.test('#1052 - `options` is optional.', function(assert) {
153     assert.expect(0);
154     var model = new Backbone.Model();
155     model.url = '/test';
156     Backbone.sync('create', model);
157   });
158
159   QUnit.test('Backbone.ajax', function(assert) {
160     assert.expect(1);
161     Backbone.ajax = function(settings){
162       assert.strictEqual(settings.url, '/test');
163     };
164     var model = new Backbone.Model();
165     model.url = '/test';
166     Backbone.sync('create', model);
167   });
168
169   QUnit.test('Call provided error callback on error.', function(assert) {
170     assert.expect(1);
171     var model = new Backbone.Model;
172     model.url = '/test';
173     Backbone.sync('read', model, {
174       error: function() { assert.ok(true); }
175     });
176     this.ajaxSettings.error();
177   });
178
179   QUnit.test('Use Backbone.emulateHTTP as default.', function(assert) {
180     assert.expect(2);
181     var model = new Backbone.Model;
182     model.url = '/test';
183
184     Backbone.emulateHTTP = true;
185     model.sync('create', model);
186     assert.strictEqual(this.ajaxSettings.emulateHTTP, true);
187
188     Backbone.emulateHTTP = false;
189     model.sync('create', model);
190     assert.strictEqual(this.ajaxSettings.emulateHTTP, false);
191   });
192
193   QUnit.test('Use Backbone.emulateJSON as default.', function(assert) {
194     assert.expect(2);
195     var model = new Backbone.Model;
196     model.url = '/test';
197
198     Backbone.emulateJSON = true;
199     model.sync('create', model);
200     assert.strictEqual(this.ajaxSettings.emulateJSON, true);
201
202     Backbone.emulateJSON = false;
203     model.sync('create', model);
204     assert.strictEqual(this.ajaxSettings.emulateJSON, false);
205   });
206
207   QUnit.test('#1756 - Call user provided beforeSend function.', function(assert) {
208     assert.expect(4);
209     Backbone.emulateHTTP = true;
210     var model = new Backbone.Model;
211     model.url = '/test';
212     var xhr = {
213       setRequestHeader: function(header, value) {
214         assert.strictEqual(header, 'X-HTTP-Method-Override');
215         assert.strictEqual(value, 'DELETE');
216       }
217     };
218     model.sync('delete', model, {
219       beforeSend: function(_xhr) {
220         assert.ok(_xhr === xhr);
221         return false;
222       }
223     });
224     assert.strictEqual(this.ajaxSettings.beforeSend(xhr), false);
225   });
226
227   QUnit.test('#2928 - Pass along `textStatus` and `errorThrown`.', function(assert) {
228     assert.expect(2);
229     var model = new Backbone.Model;
230     model.url = '/test';
231     model.on('error', function(m, xhr, options) {
232       assert.strictEqual(options.textStatus, 'textStatus');
233       assert.strictEqual(options.errorThrown, 'errorThrown');
234     });
235     model.fetch();
236     this.ajaxSettings.error({}, 'textStatus', 'errorThrown');
237   });
238
239 })();