/**
 * Internal dependencies
 */
import { assertValidContextValue } from '../utils';

describe( 'assertValidContextValue', () => {
	const contextName = 'testContext';
	const validationMap = {
		cheeseburger: {
			required: false,
			type: 'string',
		},
		amountKetchup: {
			required: true,
			type: 'number',
		},
	};
	it.each`
		testValue                                       | expectedMessage   | expectError
		${{}}                                           | ${'expected'}     | ${true}
		${10}                                           | ${'expected'}     | ${true}
		${{ amountKetchup: 20 }}                        | ${'not expected'} | ${false}
		${{ amountKetchup: '10' }}                      | ${'expected'}     | ${true}
		${{ cheeseburger: 'fries', amountKetchup: 20 }} | ${'not expected'} | ${false}
	`(
		'The value of $testValue is $expectedMessage to trigger an Error',
		( { testValue, expectError } ) => {
			const invokeTest = () => {
				assertValidContextValue(
					contextName,
					validationMap,
					testValue
				);
			};
			if ( expectError ) {
				expect( invokeTest ).toThrow();
			} else {
				expect( invokeTest ).not.toThrow();
			}
		}
	);
} );
