mirror of
https://github.com/google/blockly.git
synced 2026-01-08 09:30:06 +01:00
feat: add after queued renders promises to render management (#6981)
* feat: add promise to render queue system * chore: update docs for variables * chore: add export of render management * chore: add tests for resolving render management promises * fix: modify insertion marker manager to use render management promises * chore: format * chore: remove callback from afterQueuedRenders * chore: don't store resolver * chore: rename afterQueuedRenders -> finishQueuedRenders * chore: fix tests
This commit is contained in:
@@ -113,6 +113,7 @@
|
||||
'Blockly.test.procedureMap',
|
||||
'Blockly.test.procedures',
|
||||
'Blockly.test.registry',
|
||||
'Blockly.test.renderManagement',
|
||||
'Blockly.test.serialization',
|
||||
'Blockly.test.shortcutRegistry',
|
||||
'Blockly.test.touch',
|
||||
|
||||
64
tests/mocha/render_management_test.js
Normal file
64
tests/mocha/render_management_test.js
Normal file
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2023 Google LLC
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
goog.declareModuleId('Blockly.test.renderManagement');
|
||||
|
||||
import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js';
|
||||
|
||||
|
||||
suite('Render Management', function() {
|
||||
setup(function() {
|
||||
this.clock = sharedTestSetup.call(this).clock;
|
||||
});
|
||||
|
||||
teardown(function() {
|
||||
sharedTestTeardown.call(this);
|
||||
});
|
||||
|
||||
suite('finish queued renders callback', function() {
|
||||
function createMockBlock() {
|
||||
return {
|
||||
hasRendered: false,
|
||||
renderEfficiently: function() {this.hasRendered = true;},
|
||||
|
||||
// All of the APIs the render management system needs.
|
||||
getParent: () => null,
|
||||
getChildren: () => [],
|
||||
isDisposed: () => false,
|
||||
getConnections_: () => [],
|
||||
getRelativeToSurfaceXY: () => ({x: 0, y: 0}),
|
||||
workspace: {
|
||||
resizeContents: () => {},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
test('the queueRender promise is properly resolved after rendering',
|
||||
function() {
|
||||
const block = createMockBlock();
|
||||
const promise = Blockly.renderManagement.queueRender(block)
|
||||
.then(() => {
|
||||
chai.assert.isTrue(
|
||||
block.hasRendered, 'Expected block to be rendered');
|
||||
});
|
||||
this.clock.runAll();
|
||||
return promise;
|
||||
});
|
||||
|
||||
test(
|
||||
'the finish queued renders promise is properly resolved after rendering',
|
||||
function() {
|
||||
const block = createMockBlock();
|
||||
Blockly.renderManagement.queueRender(block);
|
||||
const promise = Blockly.renderManagement.finishQueuedRenders(() => {
|
||||
chai.assert.isTrue(
|
||||
block.hasRendered, 'Expected block to be rendered');
|
||||
});
|
||||
this.clock.runAll();
|
||||
return promise;
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user