UNPKG

@gravity-ui/data-source

Version:
100 lines (99 loc) 3.01 kB
"use strict"; 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