QUnit.module( 'Element', { setup: function () { this.fixture = document.createElement( 'div' ); document.body.appendChild( this.fixture ); this.makeFrame = function () { var frame = document.createElement( 'iframe' ); this.fixture.appendChild( frame ); return ( frame.contentWindow && frame.contentWindow.document ) || frame.contentDocument; }; }, teardown: function () { this.fixture.parentNode.removeChild( this.fixture ); this.fixture = null; } } ); QUnit.test( 'static.getDocument', 10, function ( assert ) { var frameDoc, frameEl, frameDiv, el = this.fixture, div = document.createElement( 'div' ), $el = $( this.fixture ), $div = $( '
' ), win = window, doc = document; frameDoc = this.makeFrame(); frameEl = frameDoc.createElement( 'span' ); frameDoc.documentElement.appendChild( frameEl ); frameDiv = frameDoc.createElement( 'div' ); assert.strictEqual( OO.ui.Element.static.getDocument( $el ), doc, 'jQuery' ); assert.strictEqual( OO.ui.Element.static.getDocument( $div ), doc, 'jQuery (detached)' ); assert.strictEqual( OO.ui.Element.static.getDocument( el ), doc, 'HTMLElement' ); assert.strictEqual( OO.ui.Element.static.getDocument( div ), doc, 'HTMLElement (detached)' ); assert.strictEqual( OO.ui.Element.static.getDocument( win ), doc, 'Window' ); assert.strictEqual( OO.ui.Element.static.getDocument( doc ), doc, 'HTMLDocument' ); assert.strictEqual( OO.ui.Element.static.getDocument( frameEl ), frameDoc, 'HTMLElement (framed)' ); assert.strictEqual( OO.ui.Element.static.getDocument( frameDiv ), frameDoc, 'HTMLElement (framed, detached)' ); assert.strictEqual( OO.ui.Element.static.getDocument( frameDoc ), frameDoc, 'HTMLDocument (framed)' ); assert.strictEqual( OO.ui.Element.static.getDocument( {} ), null, 'Invalid' ); } ); QUnit.test( 'getElementDocument', 1, function ( assert ) { var el, doc; doc = document; el = new OO.ui.Element(); assert.strictEqual( el.getElementDocument(), doc ); } );