@gravity-ui/data-source
Version:
A wrapper around data fetching
100 lines (99 loc) • 3.01 kB
JavaScript
;
var _ClientDataManager = require("../ClientDataManager");
describe('normalization edge cases', function () {
var dataManager;
beforeEach(function () {
dataManager = new _ClientDataManager.ClientDataManager({
defaultOptions: {
queries: {
retry: false
},
mutations: {
retry: false
}
},
normalizerConfig: {
devLogging: false
}
});
});
afterEach(function () {
dataManager.queryClient.clear();
});
it('should work correctly with empty data', function () {
expect(dataManager.normalizer).toBeDefined();
var queryKey = ['empty'];
dataManager.queryClient.setQueryData(queryKey, []);
dataManager.normalizer.setQuery(JSON.stringify(queryKey), []);
var mutationData = {
id: '1',
name: 'New'
};
expect(function () {
dataManager.optimisticUpdate(mutationData);
}).not.toThrow();
});
it('should work correctly with null data', function () {
expect(dataManager.normalizer).toBeDefined();
var queryKey = ['null'];
dataManager.queryClient.setQueryData(queryKey, null);
var mutationData = {
id: '1',
name: 'New'
};
expect(function () {
dataManager.optimisticUpdate(mutationData);
}).not.toThrow();
});
it('should work correctly with undefined data', function () {
expect(dataManager.normalizer).toBeDefined();
var queryKey = ['undefined'];
dataManager.queryClient.setQueryData(queryKey, undefined);
var mutationData = {
id: '1',
name: 'New'
};
expect(function () {
dataManager.optimisticUpdate(mutationData);
}).not.toThrow();
});
it('should work correctly with arrays of objects', function () {
expect(dataManager.normalizer).toBeDefined();
var queryKey = ['array'];
var data = [{
id: '1',
name: 'Item 1'
}, {
id: '2',
name: 'Item 2'
}];
dataManager.queryClient.setQueryData(queryKey, data);
dataManager.normalizer.setQuery(JSON.stringify(queryKey), data);
var mutationData = {
id: '1',
name: 'Updated Item 1'
};
dataManager.optimisticUpdate(mutationData);
var updatedData = dataManager.queryClient.getQueryData(queryKey);
expect(updatedData[0].name).toBe('Updated Item 1');
expect(updatedData[1].name).toBe('Item 2');
});
it('should work correctly with single objects', function () {
expect(dataManager.normalizer).toBeDefined();
var queryKey = ['single'];
var data = {
id: '1',
name: 'Item'
};
dataManager.queryClient.setQueryData(queryKey, data);
dataManager.normalizer.setQuery(JSON.stringify(queryKey), data);
var mutationData = {
id: '1',
name: 'Updated Item'
};
dataManager.optimisticUpdate(mutationData);
var updatedData = dataManager.queryClient.getQueryData(queryKey);
expect(updatedData.name).toBe('Updated Item');
});
});
// #sourceMappingURL=normalizationEdgeCases.test.js.map