From 168b71e9648e82197a7af0dc8d9c47c344bbdb9f Mon Sep 17 00:00:00 2001 From: alschmiedt Date: Thu, 19 Aug 2021 16:50:37 -0700 Subject: [PATCH] Updates to the new pattern for testing private --- core/dropdowndiv.js | 20 ++---- scripts/gulpfiles/build_tasks.js | 2 - tests/deps.js | 107 ------------------------------- tests/mocha/dropdowndiv_test.js | 31 ++++----- tests/mocha/index.html | 2 +- 5 files changed, 22 insertions(+), 140 deletions(-) diff --git a/core/dropdowndiv.js b/core/dropdowndiv.js index 86f40853f..488ac5338 100644 --- a/core/dropdowndiv.js +++ b/core/dropdowndiv.js @@ -292,6 +292,8 @@ DropDownDiv.showPositionedByField = function( getScaledBboxOfField(field), field, opt_onHide, opt_secondaryYOffset); }; +const internal = {}; + /** * Get the scaled bounding box of a block. * @param {!BlockSvg} block The block. @@ -408,7 +410,7 @@ DropDownDiv.show = function( * @return {!DropDownDiv.BoundsInfo} An object containing size * information about the bounding element (bounding box and width/height). */ -let getBoundsInfo = function() { +internal.getBoundsInfo = function() { const boundPosition = style.getPageOffset( /** @type {!Element} */ (DropDownDiv.boundsElement_)); const boundSize = style.getSize( @@ -436,9 +438,9 @@ let getBoundsInfo = function() { * @return {!DropDownDiv.PositionMetrics} Various final metrics, * including rendered positions for drop-down and arrow. */ -const getPositionMetrics = function( +internal.getPositionMetrics = function( primaryX, primaryY, secondaryX, secondaryY) { - const boundsInfo = getBoundsInfo(); + const boundsInfo = internal.getBoundsInfo(); const divSize = style.getSize( /** @type {!Element} */ (DropDownDiv.DIV_)); @@ -689,7 +691,7 @@ DropDownDiv.hideWithoutAnimation = function() { */ const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) { const metrics = - getPositionMetrics(primaryX, primaryY, secondaryX, secondaryY); + internal.getPositionMetrics(primaryX, primaryY, secondaryX, secondaryY); // Update arrow CSS. if (metrics.arrowVisible) { @@ -756,12 +758,4 @@ DropDownDiv.repositionForWindowResize = function() { }; exports = DropDownDiv; -exports.testOnly_setGetBoundsInfo = function(getBoundsInfoMock) { - goog.setTestOnly(); - getBoundsInfo = getBoundsInfoMock; -}; - -exports.testOnly_getPositionMetrics = function (...args) { - goog.setTestOnly(); - return getPositionMetrics(...args); -} +exports.TEST_ONLY = internal; diff --git a/scripts/gulpfiles/build_tasks.js b/scripts/gulpfiles/build_tasks.js index 7ce0e9be9..318304189 100644 --- a/scripts/gulpfiles/build_tasks.js +++ b/scripts/gulpfiles/build_tasks.js @@ -341,8 +341,6 @@ function buildDeps(done) { closurePath, 'core', 'blocks', - 'generators', - 'tests/mocha' ]; const args = roots.map(root => `--root '${root}' `).join(''); execSync(`closure-make-deps ${args} > tests/deps.js`, {stdio: 'inherit'}); diff --git a/tests/deps.js b/tests/deps.js index c271c44fd..9504969e7 100644 --- a/tests/deps.js +++ b/tests/deps.js @@ -211,112 +211,5 @@ goog.addDependency('../../core/workspace_dragger.js', ['Blockly.WorkspaceDragger goog.addDependency('../../core/workspace_svg.js', ['Blockly.WorkspaceSvg'], ['Blockly.BlockSvg', 'Blockly.ComponentManager', 'Blockly.ConnectionDB', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.ThemeChange', 'Blockly.Events.ViewportChange', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.IASTNodeLocationSvg', 'Blockly.MarkerManager', 'Blockly.MetricsManager', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ThemeManager', 'Blockly.Themes.Classic', 'Blockly.TouchGesture', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.browserEvents', 'Blockly.internalConstants', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Metrics', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {'lang': 'es5'}); goog.addDependency('../../core/xml.js', ['Blockly.Xml'], ['Blockly.Events', 'Blockly.inputTypes', 'Blockly.utils', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.xml']); goog.addDependency('../../core/zoom_controls.js', ['Blockly.ZoomControls'], ['Blockly.ComponentManager', 'Blockly.Css', 'Blockly.Events', 'Blockly.Events.Click', 'Blockly.IPositionable', 'Blockly.Touch', 'Blockly.browserEvents', 'Blockly.internalConstants', 'Blockly.uiPosition', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es5'}); -goog.addDependency('../../generators/dart.js', ['Blockly.Dart'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.string']); -goog.addDependency('../../generators/dart/colour.js', ['Blockly.Dart.colour'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/lists.js', ['Blockly.Dart.lists'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/logic.js', ['Blockly.Dart.logic'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/loops.js', ['Blockly.Dart.loops'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/math.js', ['Blockly.Dart.math'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/procedures.js', ['Blockly.Dart.procedures'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/text.js', ['Blockly.Dart.texts'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/variables.js', ['Blockly.Dart.variables'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/variables_dynamic.js', ['Blockly.Dart.variablesDynamic'], ['Blockly.Dart', 'Blockly.Dart.variables']); -goog.addDependency('../../generators/javascript.js', ['Blockly.JavaScript'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.global', 'Blockly.utils.object', 'Blockly.utils.string']); -goog.addDependency('../../generators/javascript/colour.js', ['Blockly.JavaScript.colour'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/lists.js', ['Blockly.JavaScript.lists'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/logic.js', ['Blockly.JavaScript.logic'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/loops.js', ['Blockly.JavaScript.loops'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/math.js', ['Blockly.JavaScript.math'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/procedures.js', ['Blockly.JavaScript.procedures'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/text.js', ['Blockly.JavaScript.texts'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/variables.js', ['Blockly.JavaScript.variables'], ['Blockly.JavaScript']); -goog.addDependency('../../generators/javascript/variables_dynamic.js', ['Blockly.JavaScript.variablesDynamic'], ['Blockly.JavaScript', 'Blockly.JavaScript.variables']); -goog.addDependency('../../generators/lua.js', ['Blockly.Lua'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.object', 'Blockly.utils.string']); -goog.addDependency('../../generators/lua/colour.js', ['Blockly.Lua.colour'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/lists.js', ['Blockly.Lua.lists'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/logic.js', ['Blockly.Lua.logic'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/loops.js', ['Blockly.Lua.loops'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/math.js', ['Blockly.Lua.math'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/procedures.js', ['Blockly.Lua.procedures'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/text.js', ['Blockly.Lua.texts'], ['Blockly.Lua'], {'lang': 'es5'}); -goog.addDependency('../../generators/lua/variables.js', ['Blockly.Lua.variables'], ['Blockly.Lua']); -goog.addDependency('../../generators/lua/variables_dynamic.js', ['Blockly.Lua.variablesDynamic'], ['Blockly.Lua', 'Blockly.Lua.variables']); -goog.addDependency('../../generators/php.js', ['Blockly.PHP'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.object', 'Blockly.utils.string']); -goog.addDependency('../../generators/php/colour.js', ['Blockly.PHP.colour'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/lists.js', ['Blockly.PHP.lists'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/logic.js', ['Blockly.PHP.logic'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/loops.js', ['Blockly.PHP.loops'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/math.js', ['Blockly.PHP.math'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/procedures.js', ['Blockly.PHP.procedures'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/text.js', ['Blockly.PHP.texts'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/variables.js', ['Blockly.PHP.variables'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/variables_dynamic.js', ['Blockly.PHP.variablesDynamic'], ['Blockly.PHP', 'Blockly.PHP.variables']); -goog.addDependency('../../generators/python.js', ['Blockly.Python'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.string']); -goog.addDependency('../../generators/python/colour.js', ['Blockly.Python.colour'], ['Blockly.Python']); -goog.addDependency('../../generators/python/lists.js', ['Blockly.Python.lists'], ['Blockly.Python']); -goog.addDependency('../../generators/python/logic.js', ['Blockly.Python.logic'], ['Blockly.Python']); -goog.addDependency('../../generators/python/loops.js', ['Blockly.Python.loops'], ['Blockly.Python']); -goog.addDependency('../../generators/python/math.js', ['Blockly.Python.math'], ['Blockly.Python']); -goog.addDependency('../../generators/python/procedures.js', ['Blockly.Python.procedures'], ['Blockly.Python']); -goog.addDependency('../../generators/python/text.js', ['Blockly.Python.texts'], ['Blockly.Python']); -goog.addDependency('../../generators/python/variables.js', ['Blockly.Python.variables'], ['Blockly.Python']); -goog.addDependency('../../generators/python/variables_dynamic.js', ['Blockly.Python.variablesDynamic'], ['Blockly.Python', 'Blockly.Python.variables']); -goog.addDependency('../../tests/mocha/.mocharc.js', [], []); -goog.addDependency('../../tests/mocha/astnode_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/block_json_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/block_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/comment_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/connection_checker_test.js', [], []); -goog.addDependency('../../tests/mocha/connection_db_test.js', [], []); -goog.addDependency('../../tests/mocha/connection_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/contextmenu_items_test.js', [], []); -goog.addDependency('../../tests/mocha/cursor_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/dropdowndiv_test.js', ['DropDownDivTests'], ['Blockly.DropDownDiv'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../tests/mocha/event_test.js', [], ['Blockly.WorkspaceComment'], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/extensions_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/field_angle_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_checkbox_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_colour_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_dropdown_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/field_image_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_label_serializable_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_label_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_multilineinput_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/field_number_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_registry_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/field_textinput_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/field_variable_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/flyout_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/generator_test.js', [], ['Blockly.Dart', 'Blockly.JavaScript', 'Blockly.Lua', 'Blockly.PHP', 'Blockly.Python']); -goog.addDependency('../../tests/mocha/gesture_test.js', [], []); -goog.addDependency('../../tests/mocha/input_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/insertion_marker_test.js', [], []); -goog.addDependency('../../tests/mocha/json_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/keydown_test.js', [], []); -goog.addDependency('../../tests/mocha/logic_ternary_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/metrics_test.js', [], []); -goog.addDependency('../../tests/mocha/names_test.js', [], []); -goog.addDependency('../../tests/mocha/procedures_test.js', [], ['Blockly.Blocks.procedures', 'Blockly.Msg'], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/procedures_test_helpers.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/registry_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/run_mocha_tests_in_browser.js', [], [], {'lang': 'es8'}); -goog.addDependency('../../tests/mocha/shortcut_registry_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/test_helpers.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/theme_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/toolbox_helper.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/toolbox_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/tooltip_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/trashcan_test.js', [], []); -goog.addDependency('../../tests/mocha/utils_test.js', [], []); -goog.addDependency('../../tests/mocha/variable_map_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/variable_model_test.js', [], []); -goog.addDependency('../../tests/mocha/variables_test.js', [], []); -goog.addDependency('../../tests/mocha/widget_div_test.js', [], []); -goog.addDependency('../../tests/mocha/workspace_comment_test.js', [], ['Blockly.WorkspaceComment']); -goog.addDependency('../../tests/mocha/workspace_svg_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/workspace_test.js', [], [], {'lang': 'es6'}); -goog.addDependency('../../tests/mocha/xml_test.js', [], [], {'lang': 'es5'}); -goog.addDependency('../../tests/mocha/zoom_controls_test.js', [], []); goog.addDependency('base.js', [], []); diff --git a/tests/mocha/dropdowndiv_test.js b/tests/mocha/dropdowndiv_test.js index 332cac467..d54d8ad33 100644 --- a/tests/mocha/dropdowndiv_test.js +++ b/tests/mocha/dropdowndiv_test.js @@ -4,24 +4,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -goog.module('DropDownDivTests'); -goog.setTestOnly(); const DropDownDiv = goog.require('Blockly.DropDownDiv'); suite('DropDownDiv', function() { suite('Positioning', function() { setup(function() { sharedTestSetup.call(this); - DropDownDiv.testOnly_setGetBoundsInfo(function() { - return { - left: 0, - right: 100, - top: 0, - bottom: 100, - width: 100, - height: 100 - }; - }); + this.boundsStub = sinon.stub(Blockly.DropDownDiv.TEST_ONLY, 'getBoundsInfo') + .returns({ + left: 0, + right: 100, + top: 0, + bottom: 100, + width: 100, + height: 100 + }); this.sizeStub = sinon.stub(Blockly.utils.style, 'getSize') .returns({ width: 60, @@ -36,7 +33,7 @@ suite('DropDownDiv', function() { sharedTestTeardown.call(this); }); test('Below, in Bounds', function() { - var metrics = DropDownDiv.testOnly_getPositionMetrics(50, 0, 50, -10); + var metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 0, 50, -10); // "Above" in value actually means below in render. chai.assert.isAtLeast(metrics.initialY, 0); chai.assert.isAbove(metrics.finalY, 0); @@ -44,7 +41,7 @@ suite('DropDownDiv', function() { chai.assert.isTrue(metrics.arrowAtTop); }); test('Above, in Bounds', function() { - var metrics = DropDownDiv.testOnly_getPositionMetrics(50, 100, 50, 90); + var metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 100, 50, 90); // "Below" in value actually means above in render. chai.assert.isAtMost(metrics.initialY, 100); chai.assert.isBelow(metrics.finalY, 100); @@ -52,7 +49,7 @@ suite('DropDownDiv', function() { chai.assert.isFalse(metrics.arrowAtTop); }); test('Below, out of Bounds', function() { - var metrics = DropDownDiv.testOnly_getPositionMetrics(50, 60, 50, 50); + var metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 60, 50, 50); // "Above" in value actually means below in render. chai.assert.isAtLeast(metrics.initialY, 60); chai.assert.isAbove(metrics.finalY, 60); @@ -60,7 +57,7 @@ suite('DropDownDiv', function() { chai.assert.isTrue(metrics.arrowAtTop); }); test('Above, in Bounds', function() { - var metrics = DropDownDiv.testOnly_getPositionMetrics(50, 100, 50, 90); + var metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 100, 50, 90); // "Below" in value actually means above in render. chai.assert.isAtMost(metrics.initialY, 100); chai.assert.isBelow(metrics.finalY, 100); @@ -69,7 +66,7 @@ suite('DropDownDiv', function() { }); test('No Solution, Render At Top', function() { this.clientHeightStub.get(function() { return 100; }); - var metrics = DropDownDiv.testOnly_getPositionMetrics(50, 60, 50, 50); + var metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 60, 50, 50); // "Above" in value actually means below in render. chai.assert.equal(metrics.initialY, 0); chai.assert.equal(metrics.finalY, 0); diff --git a/tests/mocha/index.html b/tests/mocha/index.html index ee7480b92..71b7de6b4 100644 --- a/tests/mocha/index.html +++ b/tests/mocha/index.html @@ -60,7 +60,7 @@ - +