added messages list, new client form, logic for client Apps plus others
This commit is contained in:
160
public/libs/tabulator-master/test/unit/modules/Ajax.spec.js
Normal file
160
public/libs/tabulator-master/test/unit/modules/Ajax.spec.js
Normal file
@@ -0,0 +1,160 @@
|
||||
import TabulatorFull from '../../../src/js/core/TabulatorFull.js';
|
||||
|
||||
describe('Ajax', function(){
|
||||
let table, ajax;
|
||||
|
||||
beforeEach(function(){
|
||||
let element = document.createElement("div");
|
||||
|
||||
table = new TabulatorFull(element, {
|
||||
ajaxURL: 'fake-data-url.json'
|
||||
});
|
||||
|
||||
ajax = table.module("ajax");
|
||||
// Need to manually set URL since the ajax module doesn't seem to initialize from options
|
||||
ajax.setUrl('fake-data-url.json');
|
||||
});
|
||||
|
||||
afterEach(function(){
|
||||
table.destroy();
|
||||
});
|
||||
|
||||
test('module is initialized', function(){
|
||||
expect(ajax).toBeDefined();
|
||||
expect(ajax.url).toBe('fake-data-url.json');
|
||||
});
|
||||
|
||||
test('getUrl returns the correct URL', function(){
|
||||
expect(ajax.getUrl()).toBe('fake-data-url.json');
|
||||
});
|
||||
|
||||
test('setUrl updates the URL', function(){
|
||||
ajax.setUrl('new-url.json');
|
||||
expect(ajax.url).toBe('new-url.json');
|
||||
expect(ajax.getUrl()).toBe('new-url.json');
|
||||
});
|
||||
|
||||
test('setDefaultConfig handles string config', function(){
|
||||
ajax.setDefaultConfig('post');
|
||||
expect(ajax.config.method).toBe('post');
|
||||
});
|
||||
|
||||
test('setDefaultConfig handles object config', function(){
|
||||
const config = {
|
||||
method: 'put',
|
||||
headers: {'Content-Type': 'application/json'}
|
||||
};
|
||||
ajax.setDefaultConfig(config);
|
||||
expect(ajax.config.method).toBe('put');
|
||||
expect(ajax.config.headers).toEqual({'Content-Type': 'application/json'});
|
||||
});
|
||||
|
||||
test('generateConfig with string parameter', function(){
|
||||
const result = ajax.generateConfig('delete');
|
||||
expect(result.method).toBe('delete');
|
||||
});
|
||||
|
||||
test('generateConfig with object parameter', function(){
|
||||
const config = {
|
||||
method: 'patch',
|
||||
timeout: 5000
|
||||
};
|
||||
const result = ajax.generateConfig(config);
|
||||
expect(result.method).toBe('patch');
|
||||
expect(result.timeout).toBe(5000);
|
||||
});
|
||||
|
||||
test('requestParams merges parameters correctly', function(){
|
||||
// Set up a table with ajaxParams
|
||||
let element = document.createElement("div");
|
||||
let customTable = new TabulatorFull(element, {
|
||||
ajaxURL: 'test.json',
|
||||
ajaxParams: {page: 1, size: 10}
|
||||
});
|
||||
|
||||
let customAjax = customTable.module("ajax");
|
||||
let result = customAjax.requestParams(null, null, false, {filter: 'active'});
|
||||
|
||||
expect(result).toEqual({page: 1, size: 10, filter: 'active'});
|
||||
|
||||
customTable.destroy();
|
||||
});
|
||||
|
||||
test('requestParams handles function parameters', function(){
|
||||
// Set up a table with function ajaxParams
|
||||
let element = document.createElement("div");
|
||||
let customTable = new TabulatorFull(element, {
|
||||
ajaxURL: 'test.json',
|
||||
ajaxParams: function() {
|
||||
return {dynamic: true, timestamp: 12345};
|
||||
}
|
||||
});
|
||||
|
||||
let customAjax = customTable.module("ajax");
|
||||
let result = customAjax.requestParams(null, null, false, {sort: 'name'});
|
||||
|
||||
expect(result).toEqual({dynamic: true, timestamp: 12345, sort: 'name'});
|
||||
|
||||
customTable.destroy();
|
||||
});
|
||||
|
||||
test('requestDataCheck returns true for string data with url', function(){
|
||||
expect(ajax.requestDataCheck('stringData')).toBe(true);
|
||||
});
|
||||
|
||||
test('requestDataCheck returns false for object data', function(){
|
||||
expect(ajax.requestDataCheck({id: 1, name: 'test'})).toBe(false);
|
||||
});
|
||||
|
||||
// This test needs special handling since the requestDataCheck behavior depends on ajax.url
|
||||
test('requestDataCheck returns true for null data with url', function(){
|
||||
// Ensure url is set
|
||||
ajax.url = 'fake-data-url.json';
|
||||
expect(ajax.requestDataCheck(null)).toBe(true);
|
||||
});
|
||||
|
||||
test('sendRequest calls ajaxRequesting callback', function(){
|
||||
// Create a table with custom ajaxRequesting callback
|
||||
let requestingCalled = false;
|
||||
let element = document.createElement("div");
|
||||
let customTable = new TabulatorFull(element, {
|
||||
ajaxURL: 'test.json',
|
||||
ajaxRequesting: function() {
|
||||
requestingCalled = true;
|
||||
return true; // Allow request to proceed
|
||||
}
|
||||
});
|
||||
|
||||
let customAjax = customTable.module("ajax");
|
||||
customAjax.loaderPromise = jest.fn().mockResolvedValue({data: []});
|
||||
customAjax.sendRequest('test.json', {}, {});
|
||||
|
||||
expect(requestingCalled).toBe(true);
|
||||
expect(customAjax.loaderPromise).toHaveBeenCalled();
|
||||
|
||||
customTable.destroy();
|
||||
});
|
||||
|
||||
test('sendRequest handles canceled requests', function(done){
|
||||
// Create a table with ajaxRequesting that cancels requests
|
||||
let element = document.createElement("div");
|
||||
let customTable = new TabulatorFull(element, {
|
||||
ajaxURL: 'test.json',
|
||||
ajaxRequesting: function() {
|
||||
return false; // Cancel the request
|
||||
}
|
||||
});
|
||||
|
||||
let customAjax = customTable.module("ajax");
|
||||
customAjax.loaderPromise = jest.fn();
|
||||
|
||||
// Using Promise catch to handle the rejection
|
||||
customAjax.sendRequest('test.json', {}, {})
|
||||
.catch(() => {
|
||||
// Verify the loader was not called
|
||||
expect(customAjax.loaderPromise).not.toHaveBeenCalled();
|
||||
customTable.destroy();
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user