Skip to content

Commit 306b97a

Browse files
author
pipeline
committed
v31.1.20 is released
1 parent a0785bb commit 306b97a

File tree

278 files changed

+12334
-3037
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

278 files changed

+12334
-3037
lines changed

controls/base/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22

33
## [Unreleased]
44

5-
## 31.1.19 (2025-09-11)
5+
## 31.1.20 (2025-09-10)
6+
7+
### Common
8+
9+
#### Bug Fixes
10+
11+
- `#I973865` - The number and percentage formatting issue has been resolved.
12+
13+
## 31.1.17 (2025-09-05)
614

715
### Common
816

controls/base/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-base",
3-
"version": "18.92.0",
3+
"version": "31.1.17",
44
"description": "A common package of Essential JS 2 base libraries, methods and class definitions",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

controls/base/spec/ajax.spec.ts

Lines changed: 347 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,347 @@
1+
/**
2+
* Spec for ajax module
3+
*/
4+
import { Ajax } from '../src/ajax';
5+
import '../node_modules/es6-promise/dist/es6-promise';
6+
import { throwError } from '../src/index'
7+
describe('Ajax', () => {
8+
describe('onSuccess event', () => {
9+
beforeAll(() => {
10+
jasmine.Ajax.install();
11+
});
12+
afterAll(() => {
13+
jasmine.Ajax.uninstall();
14+
});
15+
it('Ajax options using objects.', () => {
16+
let doneFn = jasmine.createSpy('onSuccess');
17+
let ajaxObj = new Ajax();
18+
ajaxObj.url = '/test';
19+
ajaxObj.type = 'GET';
20+
ajaxObj.onSuccess = doneFn;
21+
ajaxObj.send();
22+
let request = jasmine.Ajax.requests.mostRecent();
23+
24+
// check the url get reflected in jasmine ajax
25+
expect(request.url).toBe(ajaxObj.url);
26+
// check the method get reflected in jasmine ajax
27+
expect(request.method).toBe('GET');
28+
// check the event not fired before jasmine ajax request
29+
expect(doneFn).not.toHaveBeenCalled();
30+
request.respondWith({
31+
'status': 200,
32+
'contentType': 'text/plain',
33+
'responseText': 'Response from Ajax'
34+
});
35+
// check the event fired properly after jasmine ajax request
36+
expect(doneFn).toHaveBeenCalled();
37+
});
38+
it('Ajax event get success.', () => {
39+
let doneFn = jasmine.createSpy('onSuccess');
40+
let ajaxObj = new Ajax('/test', 'GET', true);
41+
ajaxObj.onSuccess = doneFn;
42+
ajaxObj.send();
43+
let request = jasmine.Ajax.requests.mostRecent();
44+
45+
// check the url get reflected in jasmine ajax
46+
expect(request.url).toBe(ajaxObj.url);
47+
// check the method get reflected in jasmine ajax
48+
expect(request.method).toBe('GET');
49+
// check the event not fired before jasmine ajax request
50+
expect(doneFn).not.toHaveBeenCalled();
51+
request.respondWith({
52+
'status': 200,
53+
'contentType': 'text/plain',
54+
'responseText': 'Response from Ajax'
55+
});
56+
// check the event fired properly after jasmine ajax request
57+
expect(doneFn).toHaveBeenCalled();
58+
});
59+
60+
it('Ajax event get success without async.', () => {
61+
let doneFn = jasmine.createSpy('onSuccess');
62+
let ajaxObj = new Ajax('/test');
63+
ajaxObj.onSuccess = doneFn;
64+
ajaxObj.send();
65+
let request = jasmine.Ajax.requests.mostRecent();
66+
67+
expect(request.method).toBe('GET');
68+
// check the event not fired before jasmine ajax request
69+
expect(doneFn).not.toHaveBeenCalled();
70+
request.respondWith({
71+
'status': 200,
72+
'contentType': 'text/plain',
73+
'responseText': 'Response without async'
74+
});
75+
// check the event fired properly after jasmine ajax request
76+
expect(doneFn).toHaveBeenCalled();
77+
});
78+
});
79+
describe('onFailure event', () => {
80+
beforeAll(() => {
81+
jasmine.Ajax.install();
82+
});
83+
afterAll(() => {
84+
jasmine.Ajax.uninstall();
85+
});
86+
it('Ajax event get failure.', () => {
87+
let failFn = jasmine.createSpy('onFailure');
88+
let ajaxObj = new Ajax('ajax.ts', 'GET', true);
89+
ajaxObj.onFailure = failFn;
90+
ajaxObj.send();
91+
let request = jasmine.Ajax.requests.mostRecent();
92+
93+
// check the event not fired before jasmine ajax request
94+
expect(failFn).not.toHaveBeenCalled();
95+
request.respondWith({});
96+
// check the event fired properly after jasmine ajax request
97+
expect(failFn).toHaveBeenCalled();
98+
});
99+
it('Ajax event get failure without async.', () => {
100+
let failFn = jasmine.createSpy('onFailure');
101+
let ajaxObj = new Ajax('ajax.ts', 'GET');
102+
ajaxObj.onFailure = failFn;
103+
ajaxObj.send();
104+
let request = jasmine.Ajax.requests.mostRecent();
105+
106+
// check the event not fired before jasmine ajax request
107+
expect(failFn).not.toHaveBeenCalled();
108+
request.respondWith({});
109+
// check the event fired properly after jasmine ajax request
110+
expect(failFn).toHaveBeenCalled();
111+
});
112+
});
113+
describe('Send method', () => {
114+
beforeAll(() => {
115+
jasmine.Ajax.install();
116+
});
117+
afterAll(() => {
118+
jasmine.Ajax.uninstall();
119+
});
120+
it('Ajax event get success with data in send method.', () => {
121+
let doneFn = jasmine.createSpy('onSuccess');
122+
let ajaxObj = new Ajax('/test', 'GET', true);
123+
ajaxObj.onSuccess = doneFn;
124+
ajaxObj.send('some string');
125+
let request: any = jasmine.Ajax.requests.mostRecent();
126+
127+
// check the event not fired before jasmine ajax request
128+
expect(doneFn).not.toHaveBeenCalled();
129+
request.respondWith({
130+
'status': 200,
131+
'contentType': 'text/plain',
132+
'responseText': 'Response from Ajax'
133+
});
134+
// check the event fired properly after jasmine ajax respond
135+
expect(doneFn).toHaveBeenCalled();
136+
// check the send data is reflected in jasmine ajax request
137+
expect(request.params).toEqual(ajaxObj.data);
138+
});
139+
});
140+
141+
describe('without onSuccess event', () => {
142+
beforeAll(() => {
143+
jasmine.Ajax.install();
144+
});
145+
afterAll(() => {
146+
jasmine.Ajax.uninstall();
147+
});
148+
it('Ajax event get success.', () => {
149+
let ajaxObj: any = new Ajax('/test', 'GET', true);
150+
ajaxObj.send();
151+
152+
let request = jasmine.Ajax.requests.mostRecent();
153+
request.respondWith({
154+
'status': 200,
155+
'responseText': 'Response from Ajax'
156+
});
157+
// check the event fired properly after jasmine ajax request
158+
expect(ajaxObj.httpRequest.responseText).toEqual('Response from Ajax');
159+
});
160+
});
161+
162+
describe('without onFailure event', () => {
163+
beforeAll(() => {
164+
jasmine.Ajax.install();
165+
});
166+
afterAll(() => {
167+
jasmine.Ajax.uninstall();
168+
});
169+
it('Ajax event get failure.', () => {
170+
let ajaxObj: any = new Ajax('ajax.ts', 'GET', true);
171+
ajaxObj.send();
172+
173+
let request = jasmine.Ajax.requests.mostRecent();
174+
request.respondWith({
175+
'responseText': 'XMLHttpRequest failed'
176+
});
177+
// check the event fired properly after jasmine ajax request
178+
expect(ajaxObj.httpRequest.responseText).toEqual('XMLHttpRequest failed');
179+
180+
});
181+
});
182+
183+
describe('getResponseHeader', () => {
184+
let ajax: Ajax;
185+
beforeAll((done: Function) => {
186+
jasmine.Ajax.install();
187+
ajax = new Ajax('mock/url', 'GET');
188+
let promise: Promise<Object> = ajax.send();
189+
let request: JasmineAjaxRequest = jasmine.Ajax.requests.mostRecent();
190+
request.respondWith({
191+
'status': 200,
192+
'contentType': 'application/json',
193+
'responseText': JSON.stringify([{ Item: 1 }, { Item: 2 }, { Item: 3 }]),
194+
'responseHeaders': { 'testheader': 'hi', 'Content-Type': 'application/json' }
195+
});
196+
promise.then((e) => {
197+
done();
198+
});
199+
});
200+
afterAll(() => {
201+
jasmine.Ajax.uninstall();
202+
});
203+
it('check responseHeaders', () => {
204+
expect(ajax.getResponseHeader('testheader')).toBe('hi');
205+
expect(ajax.getResponseHeader('dude')).toBeNull();
206+
});
207+
});
208+
209+
describe('option as object', () => {
210+
let ajax: Ajax; let request: JasmineAjaxRequest;
211+
beforeAll((done: Function) => {
212+
jasmine.Ajax.install();
213+
ajax = new Ajax({ url: 'mock/url', type: 'GET' });
214+
let promise: Promise<Object> = ajax.send();
215+
this.request = jasmine.Ajax.requests.mostRecent();
216+
this.request.respondWith({
217+
'status': 200,
218+
'contentType': 'application/json',
219+
'responseText': JSON.stringify([{ Item: 1 }, { Item: 2 }, { Item: 3 }])
220+
});
221+
promise.then((e) => {
222+
done();
223+
});
224+
});
225+
afterAll(() => {
226+
jasmine.Ajax.uninstall();
227+
});
228+
it('check options in request', () => {
229+
expect(this.request.url).toBe(ajax.url);
230+
expect(this.request.method).toBe(ajax.type);
231+
});
232+
});
233+
234+
describe('beforeSend callback', () => {
235+
let ajax: Ajax;
236+
let request: JasmineAjaxRequest;
237+
let spyBeforeSend = jasmine.createSpy('beforeSend');
238+
let spyOnload = jasmine.createSpy('onLoad');
239+
let spyOnprogress = jasmine.createSpy('onProgress');
240+
beforeAll((done: Function) => {
241+
jasmine.Ajax.install();
242+
ajax = new Ajax({
243+
url: 'mock/url', type: 'GET',
244+
beforeSend: spyBeforeSend,
245+
onLoad: spyOnload,
246+
onProgress: spyOnprogress,
247+
dataType: 'json', contentType: 'application/json', data: JSON.stringify({ hi: 'hello' })
248+
});
249+
let promise: Promise<Object> = ajax.send();
250+
this.request = jasmine.Ajax.requests.mostRecent();
251+
this.request.respondWith({
252+
'status': 200,
253+
'contentType': 'application/json',
254+
'responseText': ''
255+
});
256+
promise.then((e) => {
257+
done();
258+
});
259+
});
260+
afterAll(() => {
261+
jasmine.Ajax.uninstall();
262+
});
263+
it('beforeSend call check', () => {
264+
expect(spyBeforeSend).toHaveBeenCalled();
265+
expect(this.request.requestHeaders['Content-Type']).toBe('application/json');
266+
});
267+
it('onload', () => {
268+
expect(spyOnload).toHaveBeenCalled();
269+
});
270+
it('onprogress', () => {
271+
expect(spyOnprogress).toHaveBeenCalled();
272+
});
273+
});
274+
275+
describe('AJAX request with content-type null', () => {
276+
let ajax: Ajax;
277+
let request: JasmineAjaxRequest;
278+
let spyBeforeSend = jasmine.createSpy('beforeSend');
279+
let spyOnload = jasmine.createSpy('onLoad');
280+
let spyOnprogress = jasmine.createSpy('onProgress');
281+
beforeAll((done: Function) => {
282+
jasmine.Ajax.install();
283+
ajax = new Ajax({
284+
url: 'mock/url', type: 'GET',
285+
beforeSend: spyBeforeSend,
286+
onLoad: spyOnload,
287+
onProgress: spyOnprogress,
288+
dataType: 'json', contentType: null, data: JSON.stringify({ hi: 'hello' })
289+
});
290+
let promise: Promise<Object> = ajax.send();
291+
this.request = jasmine.Ajax.requests.mostRecent();
292+
this.request.respondWith({
293+
'status': 200,
294+
'contentType': 'application/json',
295+
'responseText': ''
296+
});
297+
promise.then((e) => {
298+
done();
299+
});
300+
});
301+
afterAll(() => {
302+
jasmine.Ajax.uninstall();
303+
});
304+
it('beforeSend call check', () => {
305+
expect(spyBeforeSend).toHaveBeenCalled();
306+
expect(this.request.requestHeaders['Content-Type']).not.toBe('application/json');
307+
});
308+
it('onload', () => {
309+
expect(spyOnload).toHaveBeenCalled();
310+
});
311+
it('onprogress', () => {
312+
expect(spyOnprogress).toHaveBeenCalled();
313+
});
314+
});
315+
316+
describe('Cancel the request in beforeSend event', () => {
317+
let ajax: Ajax;
318+
let spyUploadInprogress = jasmine.createSpy('spyUploadInprogress');
319+
beforeAll((done: Function) => {
320+
jasmine.Ajax.install();
321+
ajax = new Ajax({
322+
url: 'mock/url', type: 'GET',
323+
beforeSend: function (args: any) {
324+
args.cancel = true;
325+
},
326+
data: JSON.stringify({ hi: 'hello' })
327+
});
328+
ajax.onUploadProgress = spyUploadInprogress;
329+
let promise: Promise<Object> = ajax.send();
330+
this.request = jasmine.Ajax.requests.mostRecent();
331+
this.request.respondWith({
332+
'status': 200,
333+
'responseText': ''
334+
});
335+
promise.then((e) => {
336+
done();
337+
});
338+
});
339+
afterAll(() => {
340+
jasmine.Ajax.uninstall();
341+
});
342+
343+
it('Upload progress', () => {
344+
expect(spyUploadInprogress).not.toHaveBeenCalled();
345+
});
346+
});
347+
});

0 commit comments

Comments
 (0)