Files
blockly/tests/mocha/dropdowndiv_test.js
alschmiedt 5b1586ee1b test: update mocha tests to use goog_module (#5440)
* Use goog.module in mocha tests

* Fix compiler warnings

* Make test helpers a module

* Name test modules Blockly.test.*

This is to be more consistent with how non-test modules are named.

Also remove top-level goog.require of TestHelpers (now
Blockly.test.helpers) since requiring a side-effect-less module does
nothing.

* Convert block_test.js and comment_test.js to goog.module syntax

* Address PR comments

* Goog modulify tests

* Goog modulify toolbox helpers

* Fixes imports and moves common tests from workspace_test.js to a helper file.

* Update test deps after rebase

Co-authored-by: Christopher Allen <cpcallen+git@google.com>
2021-09-16 13:00:38 -07:00

81 lines
3.0 KiB
JavaScript

/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
goog.module('Blockly.test.dropdown');
const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers');
suite('DropDownDiv', function() {
suite('Positioning', function() {
setup(function() {
sharedTestSetup.call(this);
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,
height: 60
});
this.clientHeightStub = sinon.stub(document.documentElement, 'clientHeight')
.get(function() { return 1000; });
this.clientTopStub = sinon.stub(document.documentElement, 'clientTop')
.get(function() { return 0; });
});
teardown(function() {
sharedTestTeardown.call(this);
});
test('Below, in Bounds', function() {
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);
chai.assert.isTrue(metrics.arrowVisible);
chai.assert.isTrue(metrics.arrowAtTop);
});
test('Above, in Bounds', function() {
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);
chai.assert.isTrue(metrics.arrowVisible);
chai.assert.isFalse(metrics.arrowAtTop);
});
test('Below, out of Bounds', function() {
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);
chai.assert.isTrue(metrics.arrowVisible);
chai.assert.isTrue(metrics.arrowAtTop);
});
test('Above, in Bounds', function() {
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);
chai.assert.isTrue(metrics.arrowVisible);
chai.assert.isFalse(metrics.arrowAtTop);
});
test('No Solution, Render At Top', function() {
this.clientHeightStub.get(function() { return 100; });
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);
chai.assert.isFalse(metrics.arrowVisible);
chai.assert.isNotOk(metrics.arrowAtTop);
});
});
});