/**
* External dependencies
*/
import TestRenderer from 'react-test-renderer';
/**
* Internal dependencies
*/
import { usePriceConstraint } from '../use-price-constraints';
import { ROUND_UP, ROUND_DOWN } from '../constants';
describe( 'usePriceConstraints', () => {
const TestComponent = ( { price } ) => {
const maxPriceConstraint = usePriceConstraint( price, 2, ROUND_UP );
const minPriceConstraint = usePriceConstraint( price, 2, ROUND_DOWN );
return (
<div
minPriceConstraint={ minPriceConstraint }
maxPriceConstraint={ maxPriceConstraint }
/>
);
};
it( 'max price constraint should be updated when new price is set', () => {
const renderer = TestRenderer.create(
<TestComponent price={ 1000 } />
);
const container = renderer.root.findByType( 'div' );
expect( container.props.maxPriceConstraint ).toBe( 1000 );
renderer.update( <TestComponent price={ 2000 } /> );
expect( container.props.maxPriceConstraint ).toBe( 2000 );
} );
it( 'min price constraint should be updated when new price is set', () => {
const renderer = TestRenderer.create(
<TestComponent price={ 1000 } />
);
const container = renderer.root.findByType( 'div' );
expect( container.props.minPriceConstraint ).toBe( 1000 );
renderer.update( <TestComponent price={ 2000 } /> );
expect( container.props.minPriceConstraint ).toBe( 2000 );
} );
it( 'previous price constraint should be preserved when new price is not a infinite number', () => {
const renderer = TestRenderer.create(
<TestComponent price={ 1000 } />
);
const container = renderer.root.findByType( 'div' );
expect( container.props.maxPriceConstraint ).toBe( 1000 );
renderer.update( <TestComponent price={ Infinity } /> );
expect( container.props.maxPriceConstraint ).toBe( 1000 );
} );
it( 'max price constraint should be higher if the price is decimal', () => {
const renderer = TestRenderer.create(
<TestComponent price={ 1099 } />
);
const container = renderer.root.findByType( 'div' );
expect( container.props.maxPriceConstraint ).toBe( 2000 );
renderer.update( <TestComponent price={ 1999 } /> );
expect( container.props.maxPriceConstraint ).toBe( 2000 );
} );
it( 'min price constraint should be lower if the price is decimal', () => {
const renderer = TestRenderer.create( <TestComponent price={ 999 } /> );
const container = renderer.root.findByType( 'div' );
expect( container.props.minPriceConstraint ).toBe( 0 );
renderer.update( <TestComponent price={ 1999 } /> );
expect( container.props.minPriceConstraint ).toBe( 1000 );
} );
} );