Current File : /pages/54/47/d0016649/home/htdocs/ob_maxi/wp-content/themes/thrive-theme/tests/js/js/main.js
'use strict';
/**
 * GLOBAL DEFINITIONS
 */

window.$ = jQuery;
window.media = {};

const Element = require( './util/element' ),
	Tests = {
		init: function () {

			require( './functional/_includes' );


			TVE.add_filter( 'tcb.selection.element', ( $element, event ) => {
				if ( event.target.classList.contains( 'theme-section' ) ) {
					$element = TVE.inner_$( event.target );
				}
				/* small trick to select the correct element */
				if ( event.target.classList.contains( 'section-content' ) ) {
					$element = TVE.inner_$( event.target.parentElement );
				}

				return $element;
			} );

			TVE.$document.off( 'heartbeat-tick.wp-auth-check' );

			_.each( TVE.main.responsive, function ( item, m ) {
				window.media[ m ] = item.media;
			} );

			TVE.UndoManager.setCallback( function () {
				window.onbeforeunload = null;
			} );

			if ( ! this.isCliRunner() ) {
				QUnit.start();
			}

		},
		isCliRunner: function () {
			return navigator.userAgent.includes( 'Puppeteer-CLI-Runner' );
		}
	};

QUnit.testAsync = QUnit.asyncTest = function ( name, callback ) {
	const delay = arguments.length > 2 && arguments[ 2 ] !== undefined ? arguments[ 2 ] : 5;

	return QUnit.test( name, function ( assert ) {
		const done = assert.async(),
			promise = callback( assert );

		if ( promise && typeof promise.then === 'function' ) {
			return promise.then( function () {
				return done();
			} );
		}
		/* default case: run after delay */
		setTimeout( function () {
			return done();
		}, delay );
	} );
};

QUnit.testWithSelectedElement = function ( testName, selector, callback ) {
	const openComponent = arguments.length > 3 && arguments[ 3 ] !== undefined ? arguments[ 3 ] : null;

	return QUnit.testAsync( testName, function ( assert ) {
		const $element = Element.getBySelector( selector );

		if ( $element.length === 0 ) {
			throw new Error( `${selector} element was not found!!!` )
		}

		return Element.select( $element, true ).then( function () {
			if ( openComponent && TVE.Components[ openComponent ] ) {
				const elementType = TVE._type( $element );

				TVE.Components[ openComponent ].open( TVE.Elements[ elementType ].components[ openComponent ], elementType, {docked: true} ).then( () => {
					callback( assert, $element );
				} )
			} else {
				callback( assert, $element );
			}
		} );
	} );
};

/** RUN TESTS **/
QUnit.config.autostart = false;

QUnit.done( function () {
	document.body.classList.remove( 'running' );
} );

jQuery( function () {
	TVE.main.on( 'tcb-ready', function () {
		Tests.init()
	} );
} );