mirror of
https://github.com/google/blockly.git
synced 2026-01-07 17:10:11 +01:00
* 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
65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
/**
|
|
* @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;
|
|
});
|
|
});
|
|
});
|