@milaboratories/pl-middle-layer 1.10.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block_registry/index.d.ts +4 -0
- package/dist/block_registry/index.d.ts.map +1 -0
- package/dist/block_registry/registry.d.ts +37 -0
- package/dist/block_registry/registry.d.ts.map +1 -0
- package/dist/block_registry/registry_spec.d.ts +12 -0
- package/dist/block_registry/registry_spec.d.ts.map +1 -0
- package/dist/block_registry/watcher.d.ts +15 -0
- package/dist/block_registry/watcher.d.ts.map +1 -0
- package/dist/block_registry/well_known_registries.d.ts +4 -0
- package/dist/block_registry/well_known_registries.d.ts.map +1 -0
- package/dist/cfg_render/executor.d.ts +8 -0
- package/dist/cfg_render/executor.d.ts.map +1 -0
- package/dist/cfg_render/operation.d.ts +29 -0
- package/dist/cfg_render/operation.d.ts.map +1 -0
- package/dist/cfg_render/renderer.d.ts +6 -0
- package/dist/cfg_render/renderer.d.ts.map +1 -0
- package/dist/cfg_render/traverse.d.ts +3 -0
- package/dist/cfg_render/traverse.d.ts.map +1 -0
- package/dist/cfg_render/util.d.ts +5 -0
- package/dist/cfg_render/util.d.ts.map +1 -0
- package/dist/dev/index.d.ts +21 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/util.d.ts +3 -0
- package/dist/dev/util.d.ts.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3587 -0
- package/dist/index.mjs.map +1 -0
- package/dist/js_render/context.d.ts +68 -0
- package/dist/js_render/context.d.ts.map +1 -0
- package/dist/js_render/index.d.ts +6 -0
- package/dist/js_render/index.d.ts.map +1 -0
- package/dist/middle_layer/active_cfg.d.ts +6 -0
- package/dist/middle_layer/active_cfg.d.ts.map +1 -0
- package/dist/middle_layer/block.d.ts +9 -0
- package/dist/middle_layer/block.d.ts.map +1 -0
- package/dist/middle_layer/block_ctx.d.ts +20 -0
- package/dist/middle_layer/block_ctx.d.ts.map +1 -0
- package/dist/middle_layer/block_ctx_unsafe.d.ts +16 -0
- package/dist/middle_layer/block_ctx_unsafe.d.ts.map +1 -0
- package/dist/middle_layer/driver_kit.d.ts +31 -0
- package/dist/middle_layer/driver_kit.d.ts.map +1 -0
- package/dist/middle_layer/frontend_path.d.ts +6 -0
- package/dist/middle_layer/frontend_path.d.ts.map +1 -0
- package/dist/middle_layer/index.d.ts +5 -0
- package/dist/middle_layer/index.d.ts.map +1 -0
- package/dist/middle_layer/middle_layer.d.ts +78 -0
- package/dist/middle_layer/middle_layer.d.ts.map +1 -0
- package/dist/middle_layer/navigation_states.d.ts +10 -0
- package/dist/middle_layer/navigation_states.d.ts.map +1 -0
- package/dist/middle_layer/ops.d.ts +64 -0
- package/dist/middle_layer/ops.d.ts.map +1 -0
- package/dist/middle_layer/project.d.ts +110 -0
- package/dist/middle_layer/project.d.ts.map +1 -0
- package/dist/middle_layer/project_list.d.ts +11 -0
- package/dist/middle_layer/project_list.d.ts.map +1 -0
- package/dist/middle_layer/project_overview.d.ts +8 -0
- package/dist/middle_layer/project_overview.d.ts.map +1 -0
- package/dist/middle_layer/render.d.ts +6 -0
- package/dist/middle_layer/render.d.ts.map +1 -0
- package/dist/middle_layer/types.d.ts +11 -0
- package/dist/middle_layer/types.d.ts.map +1 -0
- package/dist/middle_layer/util.d.ts +3 -0
- package/dist/middle_layer/util.d.ts.map +1 -0
- package/dist/model/args.d.ts +12 -0
- package/dist/model/args.d.ts.map +1 -0
- package/dist/model/block_pack.d.ts +8 -0
- package/dist/model/block_pack.d.ts.map +1 -0
- package/dist/model/block_pack_spec.d.ts +40 -0
- package/dist/model/block_pack_spec.d.ts.map +1 -0
- package/dist/model/frontend.d.ts +10 -0
- package/dist/model/frontend.d.ts.map +1 -0
- package/dist/model/index.d.ts +3 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/project_model.d.ts +67 -0
- package/dist/model/project_model.d.ts.map +1 -0
- package/dist/model/project_model_util.d.ts +29 -0
- package/dist/model/project_model_util.d.ts.map +1 -0
- package/dist/model/template_spec.d.ts +16 -0
- package/dist/model/template_spec.d.ts.map +1 -0
- package/dist/mutator/block-pack/block_pack.d.ts +17 -0
- package/dist/mutator/block-pack/block_pack.d.ts.map +1 -0
- package/dist/mutator/block-pack/frontend.d.ts +4 -0
- package/dist/mutator/block-pack/frontend.d.ts.map +1 -0
- package/dist/mutator/context_export.d.ts +9 -0
- package/dist/mutator/context_export.d.ts.map +1 -0
- package/dist/mutator/project.d.ts +121 -0
- package/dist/mutator/project.d.ts.map +1 -0
- package/dist/mutator/template/render_block.d.ts +32 -0
- package/dist/mutator/template/render_block.d.ts.map +1 -0
- package/dist/mutator/template/render_template.d.ts +12 -0
- package/dist/mutator/template/render_template.d.ts.map +1 -0
- package/dist/mutator/template/template_loading.d.ts +13 -0
- package/dist/mutator/template/template_loading.d.ts.map +1 -0
- package/dist/pool/data.d.ts +24 -0
- package/dist/pool/data.d.ts.map +1 -0
- package/dist/pool/driver.d.ts +22 -0
- package/dist/pool/driver.d.ts.map +1 -0
- package/dist/pool/index.d.ts +3 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/p_object_collection.d.ts +29 -0
- package/dist/pool/p_object_collection.d.ts.map +1 -0
- package/dist/pool/ref_count_pool.d.ts +25 -0
- package/dist/pool/ref_count_pool.d.ts.map +1 -0
- package/dist/pool/result_pool.d.ts +25 -0
- package/dist/pool/result_pool.d.ts.map +1 -0
- package/dist/test/block_packs.d.ts +6 -0
- package/dist/test/block_packs.d.ts.map +1 -0
- package/dist/test/explicit_templates.d.ts +3 -0
- package/dist/test/explicit_templates.d.ts.map +1 -0
- package/dist/test/known_templates.d.ts +6 -0
- package/dist/test/known_templates.d.ts.map +1 -0
- package/package.json +55 -0
- package/src/block_registry/index.ts +3 -0
- package/src/block_registry/registry.test.ts +35 -0
- package/src/block_registry/registry.ts +180 -0
- package/src/block_registry/registry_spec.ts +13 -0
- package/src/block_registry/watcher.ts +72 -0
- package/src/block_registry/well_known_registries.ts +13 -0
- package/src/cfg_render/executor.test.ts +120 -0
- package/src/cfg_render/executor.ts +253 -0
- package/src/cfg_render/operation.ts +38 -0
- package/src/cfg_render/renderer.ts +540 -0
- package/src/cfg_render/traverse.ts +58 -0
- package/src/cfg_render/util.ts +29 -0
- package/src/dev/index.ts +89 -0
- package/src/dev/util.ts +13 -0
- package/src/index.ts +21 -0
- package/src/js_render/context.ts +768 -0
- package/src/js_render/index.ts +41 -0
- package/src/middle_layer/active_cfg.ts +56 -0
- package/src/middle_layer/block.ts +70 -0
- package/src/middle_layer/block_ctx.ts +90 -0
- package/src/middle_layer/block_ctx_unsafe.ts +29 -0
- package/src/middle_layer/driver_kit.ts +107 -0
- package/src/middle_layer/frontend_path.ts +83 -0
- package/src/middle_layer/index.ts +4 -0
- package/src/middle_layer/middle_layer.test.ts +720 -0
- package/src/middle_layer/middle_layer.ts +235 -0
- package/src/middle_layer/navigation_states.ts +48 -0
- package/src/middle_layer/ops.ts +147 -0
- package/src/middle_layer/project.ts +380 -0
- package/src/middle_layer/project_list.ts +59 -0
- package/src/middle_layer/project_overview.ts +220 -0
- package/src/middle_layer/render.test.ts +129 -0
- package/src/middle_layer/render.ts +19 -0
- package/src/middle_layer/types.ts +16 -0
- package/src/middle_layer/util.ts +22 -0
- package/src/model/args.ts +62 -0
- package/src/model/block_pack.ts +8 -0
- package/src/model/block_pack_spec.ts +52 -0
- package/src/model/frontend.ts +10 -0
- package/src/model/index.ts +2 -0
- package/src/model/project_model.test.ts +26 -0
- package/src/model/project_model.ts +142 -0
- package/src/model/project_model_util.test.ts +88 -0
- package/src/model/project_model_util.ts +169 -0
- package/src/model/template_spec.ts +18 -0
- package/src/mutator/block-pack/block_pack.test.ts +53 -0
- package/src/mutator/block-pack/block_pack.ts +187 -0
- package/src/mutator/block-pack/frontend.ts +29 -0
- package/src/mutator/context_export.ts +25 -0
- package/src/mutator/project.test.ts +272 -0
- package/src/mutator/project.ts +1112 -0
- package/src/mutator/template/render_block.ts +91 -0
- package/src/mutator/template/render_template.ts +40 -0
- package/src/mutator/template/template_loading.ts +77 -0
- package/src/mutator/template/template_render.test.ts +272 -0
- package/src/pool/data.ts +239 -0
- package/src/pool/driver.ts +325 -0
- package/src/pool/index.ts +2 -0
- package/src/pool/p_object_collection.ts +122 -0
- package/src/pool/ref_count_pool.ts +76 -0
- package/src/pool/result_pool.ts +284 -0
- package/src/test/block_packs.ts +23 -0
- package/src/test/explicit_templates.ts +8 -0
- package/src/test/known_templates.ts +24 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { field, poll, TestHelpers, toGlobalResourceId } from '@milaboratories/pl-client';
|
|
2
|
+
import { createProject, ProjectMutator, withProject } from './project';
|
|
3
|
+
import { outputRef } from '../model/args';
|
|
4
|
+
import {
|
|
5
|
+
blockFrontendStateKey,
|
|
6
|
+
BlockRenderingStateKey,
|
|
7
|
+
projectFieldName,
|
|
8
|
+
ProjectRenderingState
|
|
9
|
+
} from '../model/project_model';
|
|
10
|
+
import {
|
|
11
|
+
BPSpecEnterV041NotPrepared,
|
|
12
|
+
BPSpecSumV042NotPrepared,
|
|
13
|
+
TestBPPreparer
|
|
14
|
+
} from '../test/block_packs';
|
|
15
|
+
|
|
16
|
+
test('simple test #1', async () => {
|
|
17
|
+
await TestHelpers.withTempRoot(async (pl) => {
|
|
18
|
+
const prj = await pl.withWriteTx('CreatingProject', async (tx) => {
|
|
19
|
+
const prjRef = await createProject(tx);
|
|
20
|
+
tx.createField(field(tx.clientRoot, 'prj'), 'Dynamic', prjRef);
|
|
21
|
+
await tx.commit();
|
|
22
|
+
return await toGlobalResourceId(prjRef);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
await pl.withWriteTx('AddBlock1', async (tx) => {
|
|
26
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
27
|
+
mut.addBlock(
|
|
28
|
+
{ id: 'block1', label: 'Block1', renderingMode: 'Heavy' },
|
|
29
|
+
{
|
|
30
|
+
args: JSON.stringify({ numbers: [1, 2, 3] }),
|
|
31
|
+
blockPack: await TestBPPreparer.prepare(BPSpecEnterV041NotPrepared)
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
mut.save();
|
|
35
|
+
await tx.commit();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
await pl.withWriteTx('AddBlock2', async (tx) => {
|
|
39
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
40
|
+
mut.addBlock(
|
|
41
|
+
{ id: 'block2', label: 'Block2', renderingMode: 'Heavy' },
|
|
42
|
+
{
|
|
43
|
+
args: JSON.stringify({ numbers: [3, 4, 5] }),
|
|
44
|
+
blockPack: await TestBPPreparer.prepare(BPSpecEnterV041NotPrepared)
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
mut.renderProduction(['block1', 'block2']);
|
|
48
|
+
mut.save();
|
|
49
|
+
await tx.commit();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
await pl.withWriteTx('AddBlock3', async (tx) => {
|
|
53
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
54
|
+
mut.addBlock(
|
|
55
|
+
{ id: 'block3', label: 'Block3', renderingMode: 'Heavy' },
|
|
56
|
+
{
|
|
57
|
+
args: JSON.stringify({
|
|
58
|
+
sources: [outputRef('block1', 'column'), outputRef('block2', 'column')]
|
|
59
|
+
}),
|
|
60
|
+
blockPack: await TestBPPreparer.prepare(BPSpecSumV042NotPrepared)
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
const rendered = mut.renderProduction(['block3'], true);
|
|
64
|
+
expect([...rendered]).toEqual(['block3']);
|
|
65
|
+
mut.setUiState('block2', '{"some":1}');
|
|
66
|
+
mut.setUiState('block3', '{"some":2}');
|
|
67
|
+
mut.doRefresh();
|
|
68
|
+
mut.save();
|
|
69
|
+
await tx.commit();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
await poll(pl, async (tx) => {
|
|
73
|
+
const prjR = await tx.get(prj);
|
|
74
|
+
const outputs = await prjR
|
|
75
|
+
.get(projectFieldName('block3', 'prodOutput'))
|
|
76
|
+
.then((r) => r.final());
|
|
77
|
+
const all = await outputs.getAllFinal();
|
|
78
|
+
expect(new Set(Object.keys(all))).toEqual(new Set(['sum', 'dependsOnBlocks']));
|
|
79
|
+
const v = await outputs.get('sum');
|
|
80
|
+
console.log(Buffer.from(v.data.data!).toString());
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
await poll(pl, async (tx) => {
|
|
84
|
+
const prjR = await tx.get(prj);
|
|
85
|
+
const outputs = await prjR
|
|
86
|
+
.get(projectFieldName('block3', 'stagingOutput'))
|
|
87
|
+
.then((r) => r.final());
|
|
88
|
+
const all = await outputs.getAllFinal();
|
|
89
|
+
expect(new Set(Object.keys(all))).toEqual(new Set(['opts', 'dependsOnBlocks']));
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
await pl.withReadTx('CheckFrontendStatePresent', async (tx) => {
|
|
93
|
+
expect(await tx.getKValueString(prj, blockFrontendStateKey('block2'))).toEqual('{"some":1}');
|
|
94
|
+
expect(await tx.getKValueString(prj, blockFrontendStateKey('block3'))).toEqual('{"some":2}');
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
await pl.withWriteTx('DeleteBlock2', async (tx) => {
|
|
98
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
99
|
+
mut.deleteBlock('block2');
|
|
100
|
+
mut.save();
|
|
101
|
+
await tx.commit();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
await pl.withReadTx('CheckFrontendStateAbsent', async (tx) => {
|
|
105
|
+
expect(
|
|
106
|
+
await tx.getKValueStringIfExists(prj, blockFrontendStateKey('block2'))
|
|
107
|
+
).toBeUndefined();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
await withProject(pl, prj, (mut) => {
|
|
111
|
+
mut.setUiState('block3', undefined);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
await pl.withReadTx('CheckFrontendStatePresent', async (tx) => {
|
|
115
|
+
expect(
|
|
116
|
+
await tx.getKValueStringIfExists(prj, blockFrontendStateKey('block3'))
|
|
117
|
+
).toBeUndefined();
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
await withProject(pl, prj, (mut) => {
|
|
121
|
+
mut.setUiState('block3', undefined);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
await pl.withReadTx('CheckFrontendStatePresent', async (tx) => {
|
|
125
|
+
expect(
|
|
126
|
+
await tx.getKValueStringIfExists(prj, blockFrontendStateKey('block3'))
|
|
127
|
+
).toBeUndefined();
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
await poll(pl, async (tx) => {
|
|
131
|
+
const prjR = await tx.get(prj);
|
|
132
|
+
expect(prjR.data.fields.map((f) => f.name)).not.toContain(
|
|
133
|
+
projectFieldName('block3', 'stagingOutput')
|
|
134
|
+
);
|
|
135
|
+
const renderingState = await prjR.getKValueObj<ProjectRenderingState>(BlockRenderingStateKey);
|
|
136
|
+
expect(renderingState.blocksInLimbo).toContain('block3');
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
await pl.withWriteTx('Refresh', async (tx) => {
|
|
140
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
141
|
+
mut.doRefresh();
|
|
142
|
+
mut.save();
|
|
143
|
+
await tx.commit();
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
await poll(pl, async (tx) => {
|
|
147
|
+
const prjR = await tx.get(prj);
|
|
148
|
+
const outputs = await prjR
|
|
149
|
+
.get(projectFieldName('block3', 'stagingOutput'))
|
|
150
|
+
.then((r) => r.final());
|
|
151
|
+
const all = await outputs.getAllFinal();
|
|
152
|
+
expect(new Set(Object.keys(all))).toEqual(new Set(['opts', 'dependsOnBlocks']));
|
|
153
|
+
const renderingState = await prjR.getKValueObj<ProjectRenderingState>(BlockRenderingStateKey);
|
|
154
|
+
expect(renderingState.blocksInLimbo).toContain('block3');
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
await pl.withWriteTx('RenderProduction', async (tx) => {
|
|
158
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
159
|
+
mut.renderProduction(['block1', 'block3']);
|
|
160
|
+
mut.doRefresh();
|
|
161
|
+
mut.save();
|
|
162
|
+
await tx.commit();
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
await poll(pl, async (tx) => {
|
|
166
|
+
const prjR = await tx.get(prj);
|
|
167
|
+
const outputs = await prjR
|
|
168
|
+
.get(projectFieldName('block3', 'prodOutput'))
|
|
169
|
+
.then((r) => r.final());
|
|
170
|
+
const v = await outputs.get('sum');
|
|
171
|
+
// there should be an error here telling that one of the upstream blocks not found
|
|
172
|
+
// console.log(Buffer.from(v.data.data!).toString());
|
|
173
|
+
const renderingState = await prjR.getKValueObj<ProjectRenderingState>(BlockRenderingStateKey);
|
|
174
|
+
expect(renderingState.blocksInLimbo).not.toContain('block3');
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
test('simple test #2 with bp migration', async () => {
|
|
180
|
+
await TestHelpers.withTempRoot(async (pl) => {
|
|
181
|
+
const prj = await pl.withWriteTx('CreatingProject', async (tx) => {
|
|
182
|
+
const prjRef = await createProject(tx);
|
|
183
|
+
tx.createField(field(tx.clientRoot, 'prj'), 'Dynamic', prjRef);
|
|
184
|
+
await tx.commit();
|
|
185
|
+
return await toGlobalResourceId(prjRef);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
await pl.withWriteTx('AddBlock1', async (tx) => {
|
|
189
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
190
|
+
mut.addBlock(
|
|
191
|
+
{ id: 'block1', label: 'Block1', renderingMode: 'Heavy' },
|
|
192
|
+
{
|
|
193
|
+
args: JSON.stringify({ numbers: [1, 2, 3] }),
|
|
194
|
+
blockPack: await TestBPPreparer.prepare(BPSpecEnterV041NotPrepared)
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
mut.addBlock(
|
|
198
|
+
{ id: 'block2', label: 'Block2', renderingMode: 'Heavy' },
|
|
199
|
+
{
|
|
200
|
+
args: JSON.stringify({ numbers: [3, 4, 5] }),
|
|
201
|
+
blockPack: await TestBPPreparer.prepare(BPSpecEnterV041NotPrepared)
|
|
202
|
+
}
|
|
203
|
+
);
|
|
204
|
+
mut.addBlock(
|
|
205
|
+
{ id: 'block3', label: 'Block3', renderingMode: 'Heavy' },
|
|
206
|
+
{
|
|
207
|
+
args: JSON.stringify({
|
|
208
|
+
sources: [outputRef('block1', 'column'), outputRef('block2', 'column')]
|
|
209
|
+
}),
|
|
210
|
+
blockPack: await TestBPPreparer.prepare(BPSpecSumV042NotPrepared)
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
mut.renderProduction(['block2', 'block3'], true);
|
|
214
|
+
mut.doRefresh();
|
|
215
|
+
mut.save();
|
|
216
|
+
await tx.commit();
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
await poll(pl, async (tx) => {
|
|
220
|
+
const prjR = await tx.get(prj);
|
|
221
|
+
const outputs = await prjR
|
|
222
|
+
.get(projectFieldName('block3', 'prodOutput'))
|
|
223
|
+
.then((r) => r.final());
|
|
224
|
+
const all = await outputs.getAllFinal();
|
|
225
|
+
expect(new Set(Object.keys(all))).toEqual(new Set(['sum', 'dependsOnBlocks']));
|
|
226
|
+
const v = await outputs.get('sum');
|
|
227
|
+
console.log(Buffer.from(v.data.data!).toString());
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
await poll(pl, async (tx) => {
|
|
231
|
+
const prjR = await tx.get(prj);
|
|
232
|
+
const outputs = await prjR
|
|
233
|
+
.get(projectFieldName('block3', 'stagingOutput'))
|
|
234
|
+
.then((r) => r.final());
|
|
235
|
+
const all = await outputs.getAllFinal();
|
|
236
|
+
expect(new Set(Object.keys(all))).toEqual(new Set(['opts', 'dependsOnBlocks']));
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
await pl.withWriteTx('MigrateBlock2', async (tx) => {
|
|
240
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
241
|
+
// TODO change to dev
|
|
242
|
+
mut.migrateBlockPack('block2', await TestBPPreparer.prepare(BPSpecEnterV041NotPrepared));
|
|
243
|
+
mut.save();
|
|
244
|
+
await tx.commit();
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
await poll(pl, async (tx) => {
|
|
248
|
+
const prjR = await tx.get(prj);
|
|
249
|
+
expect(prjR.data.fields.map((f) => f.name)).not.toContain(
|
|
250
|
+
projectFieldName('block3', 'stagingOutput')
|
|
251
|
+
);
|
|
252
|
+
const renderingState = await prjR.getKValueObj<ProjectRenderingState>(BlockRenderingStateKey);
|
|
253
|
+
expect(renderingState.blocksInLimbo).toContain('block3');
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
await pl.withWriteTx('Refresh', async (tx) => {
|
|
257
|
+
const mut = await ProjectMutator.load(tx, prj);
|
|
258
|
+
mut.doRefresh();
|
|
259
|
+
mut.save();
|
|
260
|
+
await tx.commit();
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
await poll(pl, async (tx) => {
|
|
264
|
+
const prjR = await tx.get(prj);
|
|
265
|
+
expect(prjR.data.fields.map((f) => f.name)).toContain(
|
|
266
|
+
projectFieldName('block3', 'stagingOutput')
|
|
267
|
+
);
|
|
268
|
+
const renderingState = await prjR.getKValueObj<ProjectRenderingState>(BlockRenderingStateKey);
|
|
269
|
+
expect(renderingState.blocksInLimbo).toContain('block3');
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
});
|