forked from Saleslogix/SDataJavaScriptClientLib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSDataBatchRequestTests.js
More file actions
125 lines (103 loc) · 4.59 KB
/
Copy pathSDataBatchRequestTests.js
File metadata and controls
125 lines (103 loc) · 4.59 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
122
123
124
125
define('spec/SDataBatchRequestTests', [
'dojo/text!./TestBatch.xml'
], function(xmlText) {
describe('SDataBatchRequest', function() {
var service,
xml = new XML.ObjTree(),
withResponseContent = function(text) {
spyOn(Sage.SData.Client.Ajax, 'request').and.callFake(function(options) {
options.success.call(options.scope || this, {
responseText: text
});
});
};
beforeEach(function() {
service = new Sage.SData.Client.SDataService({
serverName: 'localhost',
virtualDirectory: 'sdata',
applicationName: 'aw',
contractName: 'dynamic'
});
});
it('can build url for batch', function() {
var request = new Sage.SData.Client.SDataBatchRequest(service)
.setResourceKind('employees');
expect(request.build()).toEqual("http://localhost/sdata/aw/dynamic/-/employees/%24batch");
});
it('can add requests to batch', function() {
var batch = new Sage.SData.Client.SDataBatchRequest(service),
employeeA = {},
employeeB = {};
batch.using(function() {
new Sage.SData.Client.SDataSingleResourceRequest(service)
.setResourceKind('employees')
.setResourceSelector('1')
.update(employeeA);
new Sage.SData.Client.SDataSingleResourceRequest(service)
.setResourceKind('employees')
.setResourceSelector('2')
.update(employeeB);
});
expect(batch.items.length).toEqual(2);
expect(batch.items[0].url).toEqual("http://localhost/sdata/aw/dynamic/-/employees(1)");
expect(batch.items[1].url).toEqual("http://localhost/sdata/aw/dynamic/-/employees(2)");
});
xit('can format feed for batch request', function() {
spyOn(Sage.SData.Client.Ajax, 'request');
var batch = new Sage.SData.Client.SDataBatchRequest(service)
.setResourceKind('employees');
var employeeA = {
'$name': 'Employee',
'$etag': 'abc',
'Name': 'one'
},
employeeB = {
'$name': 'Employee',
'$etag': 'def',
'Name': 'two'
};
batch.using(function() {
new Sage.SData.Client.SDataSingleResourceRequest(service)
.setResourceKind('employees')
.setResourceSelector('1')
.update(employeeA);
new Sage.SData.Client.SDataSingleResourceRequest(service)
.setResourceKind('employees')
.setResourceSelector('2')
.update(employeeB);
});
batch.commit();
(function(formatted) {
expect(formatted).toHaveProperty('feed');
expect(formatted).toHaveProperty('feed.entry');
expect(formatted).toHaveProperty('feed.entry.length', 2);
expect(formatted).toHaveProperty('feed.entry.0.id', 'http://localhost/sdata/aw/dynamic/-/employees(1)');
expect(formatted).toHaveProperty('feed.entry.1.id', 'http://localhost/sdata/aw/dynamic/-/employees(2)');
})(xml.parseXML(Sage.SData.Client.Ajax.request.calls.mostRecent().args[0].body));
});
it('can commit batch request', function() {
withResponseContent(xmlText);
var success = jasmine.createSpy(),
failure = jasmine.createSpy();
var batch = new Sage.SData.Client.SDataBatchRequest(service),
employeeA = {},
employeeB = {};
batch.using(function() {
new Sage.SData.Client.SDataSingleResourceRequest(service)
.setResourceKind('employees')
.setResourceSelector('1')
.update(employeeA);
new Sage.SData.Client.SDataSingleResourceRequest(service)
.setResourceKind('employees')
.setResourceSelector('2')
.update(employeeB);
});
batch.commit({
success: success,
failure: failure
});
expect(success).toHaveBeenCalled();
expect(failure).not.toHaveBeenCalled();
});
});
});