Make gr-selection-action-box_test cross-platform

Change-Id: Ie60fb4d7cffaca76ac40eebbd35b0196cd63e8e9
This commit is contained in:
Viktar Donich
2016-05-31 16:06:32 -07:00
parent 9876a91e77
commit 914ce118f8
2 changed files with 24 additions and 9 deletions

View File

@@ -42,6 +42,16 @@
],
placeAbove: function(el) {
var rect = this._getTargetBoundingRect(el);
var boxRect = this.getBoundingClientRect();
var parentRect = this.parentElement.getBoundingClientRect();
this.style.top =
rect.top - parentRect.top - boxRect.height - 4 + 'px';
this.style.left =
rect.left - parentRect.left + (rect.width - boxRect.width)/2 + 'px';
},
_getTargetBoundingRect: function(el) {
var rect;
if (!(el instanceof Element)) {
var range = document.createRange();
@@ -51,12 +61,7 @@
} else {
rect = el.getBoundingClientRect();
}
var boxRect = this.getBoundingClientRect();
var parentRect = this.parentElement.getBoundingClientRect();
this.style.top =
rect.top - parentRect.top - boxRect.height - 4 + 'px';
this.style.left =
rect.left - parentRect.left + (rect.width - boxRect.width)/2 + 'px';
return rect;
},
_handleKey: function(e) {

View File

@@ -84,7 +84,7 @@ limitations under the License.
target = container.querySelector('.target');
sinon.stub(container, 'getBoundingClientRect').returns(
{top:1, bottom: 2, left: 3, right: 4, width: 50, height: 6});
sinon.stub(target, 'getBoundingClientRect').returns(
sinon.stub(element, '_getTargetBoundingRect').returns(
{top:42, bottom: 20, left: 30, right: 40, width: 100, height: 60});
sinon.stub(element, 'getBoundingClientRect').returns(
{width: 10, height: 10});
@@ -93,7 +93,7 @@ limitations under the License.
teardown(function() {
element.getBoundingClientRect.restore();
container.getBoundingClientRect.restore();
target.getBoundingClientRect.restore();
element._getTargetBoundingRect.restore();
});
test('placeAbove for Element argument', function() {
@@ -104,7 +104,17 @@ limitations under the License.
test('placeAbove for Text Node argument', function() {
element.placeAbove(target.firstChild);
assert.equal(element.style.top, '-7px');
assert.equal(element.style.top, '27px');
assert.equal(element.style.left, '72px');
});
test('uses document.createRange', function() {
sinon.spy(document, 'createRange');
element._getTargetBoundingRect.restore();
sinon.spy(element, '_getTargetBoundingRect');
element.placeAbove(target.firstChild);
assert.isTrue(document.createRange.called);
document.createRange.restore();
});
});
});