diff --git a/tests/mocha/gesture_test.js b/tests/mocha/gesture_test.js new file mode 100644 index 000000000..0b01a57e8 --- /dev/null +++ b/tests/mocha/gesture_test.js @@ -0,0 +1,87 @@ +/** + * @license + * Visual Blocks Editor + * + * Copyright 2019 Google Inc. + * https://developers.google.com/blockly/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Tests for gesture. + * @author marisaleung@google.com (Marisa Leung) + */ +'use strict'; + +suite('Gesture', function() { + + setup(function() { + this.workspace = new Blockly.Workspace(); + this.e = {}; + }); + + teardown(function() { + this.e = null; + this.workspace.dispose(); + }); + + test('Constructor', function() { + var gesture = new Blockly.Gesture(this.e, this.workspace); + assertEquals(gesture.mostRecentEvent_, this.e); + assertEquals(gesture.creatorWorkspace_, this.workspace); + }); + + test('Field click - Click in workspace', function() { + var block = new Blockly.Block(this.workspace); + var field = new Blockly.Field(); + field.setSourceBlock(block); + field.showEditor_ = function() {}; + var gesture = new Blockly.Gesture(this.e, this.workspace); + gesture.setStartField(field); + + var isFieldClick = gesture.isFieldClick_(); + assertEquals(isFieldClick, true); + }); + + function gestureIsFieldClick_InFlyoutHelper(flyout, expectedResult){ + // Assign workspace flyout + this.workspace.flyout_ = flyout; + // Create a Field inside of a Block + var block = new Blockly.Block(this.workspace); + var field = new Blockly.Field(); + field.setSourceBlock(block); + field.showEditor_ = function() {}; + // Create gesture from the flyout + var gesture = new Blockly.Gesture(this.e, this.workspace.flyout_); + // Populate gesture with click start information + gesture.setStartField(field); + gesture.setStartFlyout_(this.workspace.flyout_); + + var isFieldClick = gesture.isFieldClick_(); + assertEquals(isFieldClick, expectedResult); + } + + test('Field click - Auto close flyout', function() { + var flyout = new Blockly.VerticalFlyout({}); + flyout.autoClose = false; + gestureIsFieldClick_InFlyoutHelper.call(this, flyout, true); + }); + + test('Field click - Always open flyout', function() { + var flyout = new Blockly.VerticalFlyout({}); + flyout.autoClose = false; + gestureIsFieldClick_InFlyoutHelper.call(this, flyout, true); + }); + +}); diff --git a/tests/mocha/index.html b/tests/mocha/index.html index 7f27db666..dd7b1081e 100644 --- a/tests/mocha/index.html +++ b/tests/mocha/index.html @@ -43,6 +43,7 @@ +