Files
blockly/tests/browser/test/mutator_test.mjs
Christopher Allen ce22f42868 chore: Organise imports (#8527)
* chore(deps): Add pretter-plugin-organize-imports

* chore: Remove insignificant blank lines in import sections

  Since prettier-plugin-organize-imports sorts imports within
  sections separated by blank lines, but preserves the section
  divisions, remove any blank lines that are not dividing imports
  into meaningful sections.

  Do not remove blank lines separating side-effect-only imports
  from main imports.

* chore: Remove unneded eslint-disable directives

* chore: Organise imports
2024-08-15 03:16:14 +01:00

89 lines
2.3 KiB
JavaScript

/**
* @license
* Copyright 2023 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import * as chai from 'chai';
import {
PAUSE_TIME,
connect,
dragBlockFromMutatorFlyout,
dragBlockTypeFromFlyout,
getBlockElementById,
openMutatorForBlock,
screenDirection,
testFileLocations,
testSetup,
} from './test_setup.mjs';
suite('Mutating a block', function (done) {
this.timeout(0);
suiteSetup(async function () {
this.browser = await testSetup(testFileLocations.PLAYGROUND);
});
test('Mutating a block creates more inputs', async function () {
await testMutator(this.browser, screenDirection.LTR);
});
});
async function testMutator(browser, delta) {
const mutatorBlock = await dragBlockTypeFromFlyout(
browser,
'Logic',
'controls_if',
delta * 50,
50,
);
await openMutatorForBlock(browser, mutatorBlock);
await browser.pause(PAUSE_TIME);
await dragBlockFromMutatorFlyout(
browser,
mutatorBlock,
'controls_if_elseif',
delta * 50,
50,
);
await browser.pause(PAUSE_TIME);
const {mutatorBlockId, ifQuarkId, elseIfQuarkId} = await browser.execute(
() => {
const mutatorBlock = Blockly.getMainWorkspace().getAllBlocks()[0];
const quarkBlocks = mutatorBlock.mutator.getWorkspace().getAllBlocks();
return {
mutatorBlockId: mutatorBlock.id,
ifQuarkId: quarkBlocks[0].id,
elseIfQuarkId: quarkBlocks[1].id,
};
},
);
// The flyout block and the workspace block have the same id, so to get
// around that I pass in the selector to the connect function.
const dragBlockSelector = await browser.$(
'#blocklyDiv > div > svg.blocklySvg > g > g.blocklyBubbleCanvas > g > ' +
'g:nth-child(2) > svg:nth-child(1) > g > g.blocklyBlockCanvas > ' +
'g.blocklyDraggable',
);
// For some reason this needs a lot more time.
await browser.pause(2000);
await connect(
browser,
await getBlockElementById(browser, elseIfQuarkId),
'PREVIOUS',
await getBlockElementById(browser, ifQuarkId),
'NEXT',
mutatorBlockId,
dragBlockSelector,
);
await browser.pause(PAUSE_TIME);
const finalInputCount = await browser.execute(() => {
return Blockly.getMainWorkspace().getAllBlocks()[0].inputList.length;
});
chai.assert.equal(finalInputCount, 4);
}