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:
Michel Weststrate
2021-03-16 14:54:53 -07:00
committed by Facebook GitHub Bot
parent dd4cf9cb4a
commit 66774c90c6
12 changed files with 97 additions and 22 deletions

View File

@@ -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],
});
});