Added support for serialization
Summary: Make sure that DataSources can be serialized directly with a single setting, just like plain state atoms Reviewed By: nikoant Differential Revision: D26944954 fbshipit-source-id: 2b0d625d7d67f27a7c2e33dd7c4b534dfa4d3e82
This commit is contained in:
committed by
Facebook GitHub Bot
parent
dd4cf9cb4a
commit
66774c90c6
@@ -14,6 +14,7 @@ import {PluginClient} from '../plugin/Plugin';
|
||||
import {DevicePluginClient} from '../plugin/DevicePlugin';
|
||||
import mockConsole from 'jest-mock-console';
|
||||
import {sleep} from '../utils/sleep';
|
||||
import {createDataSource} from '../state/DataSource';
|
||||
|
||||
test('it can start a plugin and lifecycle events', () => {
|
||||
const {instance, ...p} = TestUtils.startPlugin(testPlugin);
|
||||
@@ -557,3 +558,29 @@ test('GKs are supported', () => {
|
||||
expect(plugin.instance.isTest()).toBe(false);
|
||||
}
|
||||
});
|
||||
|
||||
test('plugins can serialize dataSources', () => {
|
||||
const {instance, exportState} = TestUtils.startPlugin(
|
||||
{
|
||||
plugin(_client: PluginClient) {
|
||||
const ds = createDataSource([1, 2, 3], {persist: 'ds'});
|
||||
return {ds};
|
||||
},
|
||||
Component() {
|
||||
return null;
|
||||
},
|
||||
},
|
||||
{
|
||||
initialState: {
|
||||
ds: [4, 5],
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
expect(instance.ds.records).toEqual([4, 5]);
|
||||
instance.ds.shift(1);
|
||||
instance.ds.append(6);
|
||||
expect(exportState()).toEqual({
|
||||
ds: [5, 6],
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user