const tables = require( '../../../resources/skins.vector.js/tables.js' ).init;

describe( 'tables', () => {
	test( 'wraps table with div', () => {
		document.body.innerHTML = `
			<section class="mw-parser-output">
				<table class="wikitable">
					<tbody><tr><th>table table table</th></tr></tbody>
				</table>
			</section>
		`;
		tables();

		expect( document.body.innerHTML ).toMatchSnapshot();
	} );

	test( 'wraps multiple table with div', () => {
		document.body.innerHTML = `
			<section class="mw-parser-output">
				<table class="wikitable">
					<tbody><tr><th>table table table</th></tr></tbody>
				</table>
				<table class="wikitable">
				<table class="wikitable">
					<tbody><tr><th>table table table</th></tr></tbody>
				</table>
				<table class="wikitable">
					<tbody><tr><th>table table table</th></tr></tbody>
				</table>
			</section>
		`;
		tables();

		expect( document.body.innerHTML ).toMatchSnapshot();
	} );

	test( 'doesnt wrap nested tables', () => {
		document.body.innerHTML = `
			<section class="mw-parser-output">
				<table class="wikitable">
					<tbody>
						<tr><th>table table table</th></tr>
						<tr><td><table class="wikitable"><tbody><tr><th>table table table</th></tr></tbody></table><td></tr>
					</tbody>
				</table>
			</section>
		`;
		tables();

		expect( document.body.innerHTML ).toMatchSnapshot();
	} );

	test( 'only wraps wikitables', () => {
		document.body.innerHTML = `
			<section class="mw-parser-output">
				<table>
					<tbody>
						<tr><th>table table table</th></tr>
						<tr><td><table><tbody><tr><th>table table table</th></tr></tbody></table><td></tr>
					</tbody>
				</table>
			</section>
		`;
		tables();

		expect( document.body.innerHTML ).toMatchSnapshot();
	} );

	test( 'doesnt wrap tables that are not wikitables', () => {
		document.body.innerHTML = `
			<table>
				<tbody>
					<tr><th>table table table</th></tr>
					<tr><td><table><tbody><tr><th>table table table</th></tr></tbody></table><td></tr>
				</tbody>
			</table>
		`;
		tables();

		expect( document.body.innerHTML ).toMatchSnapshot();
	} );

	test( 'doesnt wrap tables that are already wrapped', () => {
		document.body.innerHTML = `
			<div class="mw-parser-output">
				<div>
					<table>
						<tbody>
							<tr><th>table table table</th></tr>
							<tr><td><table><tbody><tr><th>table table table</th></tr></tbody></table><td></tr>
						</tbody>
					</table>
				</div>
			</div>
		`;
		tables();

		expect( document.body.innerHTML ).toMatchSnapshot();
	} );
} );