File "tooltip_test.js"
Full path: /usr/home/mndrn/domains/mndrn.ru/public_html/block-hill/blockly/tests/mocha/tooltip_test.js
File size: 5.77 KiB (5910 bytes)
MIME-type: text/plain
Charset: utf-8
/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
suite('Tooltip', function() {
setup(function() {
sharedTestSetup.call(this);
this.workspace = new Blockly.Workspace();
});
teardown(function() {
sharedTestTeardown.call(this);
});
suite('set/getTooltip', function() {
setup(function() {
Blockly.defineBlocksWithJsonArray([
{
"type": "test_block",
"message0": "%1",
"args0": [
{
"type": "field_input",
"name": "FIELD"
}
]
}
]);
});
teardown(function() {
delete Blockly.Blocks["test_block"];
});
var tooltipText = 'testTooltip';
function assertTooltip(obj) {
chai.assert.equal(obj.getTooltip(), tooltipText);
}
function setStringTooltip(obj) {
obj.setTooltip(tooltipText);
}
function setFunctionTooltip(obj) {
obj.setTooltip(() => tooltipText);
}
function setNestedFunctionTooltip(obj) {
function nestFunction(fn, count) {
if (!count) {
return fn;
}
return () => nestFunction(fn, --count);
}
obj.setTooltip(nestFunction(() => tooltipText, 5));
}
function setFunctionReturningObjectTooltip(obj) {
obj.setTooltip(() => {
return {
tooltip: tooltipText
};
});
}
function setObjectTooltip(obj) {
obj.setTooltip({tooltip: tooltipText});
}
suite('Headless Blocks', function() {
setup(function() {
this.block = this.workspace.newBlock('test_block');
});
test('String', function() {
setStringTooltip(this.block);
assertTooltip(this.block);
});
test('Function', function() {
setFunctionTooltip(this.block);
assertTooltip(this.block);
});
test('Nested Function', function() {
setNestedFunctionTooltip(this.block);
assertTooltip(this.block);
});
test('Function returning object', function() {
setFunctionReturningObjectTooltip(this.block);
chai.assert.throws(this.block.getTooltip.bind(this.block),
'Tooltip function must return a string.');
});
test('Object', function() {
setObjectTooltip(this.block);
assertTooltip(this.block);
});
});
suite('Rendered Blocks', function() {
setup(function() {
this.renderedWorkspace = Blockly.inject('blocklyDiv');
this.block = this.renderedWorkspace.newBlock('test_block');
this.block.initSvg();
this.block.render();
});
teardown(function() {
workspaceTeardown.call(this, this.renderedWorkspace);
});
test('String', function() {
setStringTooltip(this.block);
assertTooltip(this.block);
});
test('Function', function() {
setFunctionTooltip(this.block);
assertTooltip(this.block);
});
test('Nested Function', function() {
setNestedFunctionTooltip(this.block);
assertTooltip(this.block);
});
test('Function returning object', function() {
setFunctionReturningObjectTooltip(this.block);
chai.assert.throws(this.block.getTooltip.bind(this.block),
'Tooltip function must return a string.');
});
test('Object', function() {
setObjectTooltip(this.block);
assertTooltip(this.block);
});
});
suite('Headless Fields', function() {
setup(function() {
this.block = this.workspace.newBlock('test_block');
this.field = this.block.getField('FIELD');
});
test('String', function() {
setStringTooltip(this.field);
assertTooltip(this.field);
});
test('Function', function() {
setFunctionTooltip(this.field);
assertTooltip(this.field);
});
test('Nested Function', function() {
setNestedFunctionTooltip(this.field);
assertTooltip(this.field);
});
test('Function returning object', function() {
setFunctionReturningObjectTooltip(this.field);
chai.assert.throws(this.field.getTooltip.bind(this.field),
'Tooltip function must return a string.');
});
test('Object', function() {
setObjectTooltip(this.field);
assertTooltip(this.field);
});
test('Null', function() {
setStringTooltip(this.block);
this.field.setTooltip(null);
assertTooltip(this.field);
});
});
suite('Rendered Fields', function() {
setup(function() {
this.renderedWorkspace = Blockly.inject('blocklyDiv');
this.block = this.renderedWorkspace.newBlock('test_block');
this.block.initSvg();
this.block.render();
this.field = this.block.getField('FIELD');
});
teardown(function() {
workspaceTeardown.call(this, this.renderedWorkspace);
});
test('String', function() {
setStringTooltip(this.field);
assertTooltip(this.field);
});
test('Function', function() {
setFunctionTooltip(this.field);
assertTooltip(this.field);
});
test('Nested Function', function() {
setNestedFunctionTooltip(this.field);
assertTooltip(this.field);
});
test('Function returning object', function() {
setFunctionReturningObjectTooltip(this.field);
chai.assert.throws(this.field.getTooltip.bind(this.field),
'Tooltip function must return a string.');
});
test('Object', function() {
setObjectTooltip(this.field);
assertTooltip(this.field);
});
test('Null', function() {
setStringTooltip(this.block);
this.field.setTooltip(null);
assertTooltip(this.field);
});
});
});
});