5 requires: [Core/Request]
6 provides: [Request.Specs]
9 describe('Request', function(){
11 beforeEach(function(){
12 this.xhr = sinon.useFakeXMLHttpRequest();
13 var requests = this.requests = [];
14 this.xhr.onCreate = function(xhr){
23 it('should create an ajax request', function(){
24 var onComplete = jasmine.createSpy();
26 var request = new Request({
28 onComplete: onComplete
30 '__response': 'res&ponsé'
33 this.requests[0].respond(200, {'Content-Type': 'text/plain'}, 'res&ponsé');
35 // checks the first argument from the first call
36 expect(onComplete.argsForCall[0][0]).toEqual('res&ponsé');
40 it('should create a Request with method get and sending data', function(){
42 var onComplete = jasmine.createSpy();
44 var request = new Request({
45 url: '../Helpers/request.php',
47 onComplete: onComplete
48 }).send({data: {'some': 'data'}});
50 var response = {method: 'get', 'get': {'some':'data'}};
51 this.requests[0].respond(200, {'Content-Type': 'text/json'}, JSON.encode(response));
53 expect(onComplete.wasCalled).toBe(true);
55 expect(JSON.decode(onComplete.argsForCall[0][0])).toEqual(response);
59 it('the options passed on the send method should rewrite the current ones', function(){
61 var onComplete = jasmine.createSpy();
62 var request = new Request({
63 url: '../Helpers/request.php',
65 data: {'setup': 'data'},
66 onComplete: onComplete
67 }).send({method: 'post', data: {'send': 'senddata'}});
69 var requested = this.requests[0];
71 expect(requested.method.toLowerCase()).toBe('post');
73 requested.respond(200, {'Content-Type': 'text/plain'}, '');
75 expect(onComplete.wasCalled).toBe(true);
78 xit('should create an ajax request and as it\'s an invalid XML, onComplete will receive null as the xml document', function(){
81 this.onComplete = jasmine.createSpy();
82 this.request = new Request({
83 url: '../Helpers/request.php',
84 onComplete: this.onComplete
87 '__response': 'response'
91 waitsFor(800, function(){
92 return this.onComplete.wasCalled;
96 expect(this.onComplete.argsForCall[0][0]).toEqual('response');
97 expect(this.request.response.text).toEqual('response');
101 this.chain = jasmine.createSpy();
102 this.request.chain(this.chain).send({data: {
104 '__response': '<node>response</node><no></no>'
108 waitsFor(800, function(){
109 return this.chain.wasCalled;
113 expect(this.onComplete.argsForCall[0][0]).toEqual('<node>response</node><no></no>');
114 expect(this.request.response.text).toEqual('<node>response</node><no></no>');
119 it('should not overwrite the data object', function(){
121 var onComplete = jasmine.createSpy();
122 var request = new Request({
123 url: '../Helpers/request.php',
127 onComplete: onComplete
130 var requested = this.requests[0];
131 requested.respond(200, {'Content-Type': 'text/plain'}, requested.requestBody)
133 expect(onComplete.wasCalled).toBe(true);
135 expect(onComplete.argsForCall[0][0]).toEqual('__response=data');