/** * External dependencies */ import TestRenderer from 'react-test-renderer'; /** * Internal dependencies */ import withCategory from '../with-category'; import * as mockUtils from '../../components/utils'; import * as mockBaseUtils from '../../base/utils/errors'; jest.mock( '../../components/utils', () => ( { getCategory: jest.fn(), } ) ); jest.mock( '../../base/utils/errors', () => ( { formatError: jest.fn(), } ) ); const mockCategory = { name: 'Clothing' }; const attributes = { categoryId: 1 }; const TestComponent = withCategory( ( props ) => { return (
); } ); const render = () => { return TestRenderer.create( ); }; describe( 'withCategory Component', () => { let renderer; afterEach( () => { mockUtils.getCategory.mockReset(); } ); describe( 'lifecycle events', () => { beforeEach( () => { mockUtils.getCategory.mockImplementation( () => Promise.resolve() ); renderer = render(); } ); it( 'getCategory is called on mount with passed in category id', () => { const { getCategory } = mockUtils; expect( getCategory ).toHaveBeenCalledWith( attributes.categoryId ); expect( getCategory ).toHaveBeenCalledTimes( 1 ); } ); it( 'getCategory is called on component update', () => { const { getCategory } = mockUtils; const newAttributes = { ...attributes, categoryId: 2 }; renderer.update( ); expect( getCategory ).toHaveBeenNthCalledWith( 2, newAttributes.categoryId ); expect( getCategory ).toHaveBeenCalledTimes( 2 ); } ); it( 'getCategory is hooked to the prop', () => { const { getCategory } = mockUtils; const props = renderer.root.findByType( 'div' ).props; props.getCategory(); expect( getCategory ).toHaveBeenCalledTimes( 2 ); } ); } ); describe( 'when the API returns category data', () => { beforeEach( () => { mockUtils.getCategory.mockImplementation( ( categoryId ) => Promise.resolve( { ...mockCategory, id: categoryId } ) ); renderer = render(); } ); it( 'sets the category props', () => { const props = renderer.root.findByType( 'div' ).props; expect( props.error ).toBeNull(); expect( typeof props.getCategory ).toBe( 'function' ); expect( props.isLoading ).toBe( false ); expect( props.category ).toEqual( { ...mockCategory, id: attributes.categoryId, } ); } ); } ); describe( 'when the API returns an error', () => { const error = { message: 'There was an error.' }; const getCategoryPromise = Promise.reject( error ); const formattedError = { message: 'There was an error.', type: 'api' }; beforeEach( () => { mockUtils.getCategory.mockImplementation( () => getCategoryPromise ); mockBaseUtils.formatError.mockImplementation( () => formattedError ); renderer = render(); } ); it( 'sets the error prop', ( done ) => { const { formatError } = mockBaseUtils; getCategoryPromise.catch( () => { const props = renderer.root.findByType( 'div' ).props; expect( formatError ).toHaveBeenCalledWith( error ); expect( formatError ).toHaveBeenCalledTimes( 1 ); expect( props.error ).toEqual( formattedError ); expect( typeof props.getCategory ).toBe( 'function' ); expect( props.isLoading ).toBe( false ); expect( props.category ).toBeNull(); done(); } ); } ); } ); } ); mostbet apk – HOW TO CRIC

mostbet apk

“официальный Сайт Мостбет Ставки На Спорт Mostbet

“официальный Сайт Мостбет Ставки На Спорт Mostbet” “официальный Сайт Мостбет Ставки На Спорт Mostbet” Content Спортивные Ставки Мобильный Mostbet Преимущества И Недостатки Букмекерской Конторы Казино, Слоты И Другие Игры От Mostbet Приложение Для Компьютера Приложение Для Ios Система Бонусов Букмекера “обзор Букмекерской Компании Mostbet Узбекистан Наше Мнение Об Операторе Ставок” Виртуальная Игра Aviator На Mostbet …

“официальный Сайт Мостбет Ставки На Спорт Mostbet Read More »

“приложения Mostbet Для Google Android, Ios И Window

“приложения Mostbet Для Google Android, Ios И Windows Mostbet Приложение Установить Приложение Mostbet Мостбет Для Ios И Android Content Mostbet Online: Ставки На Спорт Есть Ли Какие-либо Ограничения В Mostbet? Как Вывести Деньги С Mostbet? Mostbet Приложение Для Ios И Android: Инструкция По Скачиванию И Установке Еженедельные Бонусы На Депозит В Mostbet Процесс Регистрации В …

“приложения Mostbet Для Google Android, Ios И Window Read More »

Регистрация И Получение Бонусо Port Of Hastings Corporation

Регистрация И Получение Бонусо Port Of Hastings Corporation” “официальный Сайт Мостбет Ставки На Спорт Mostbet Content Mostbet Mobil Dasturi Ilovasi Android Os Ios Apk Yuklash Yuklab Olish Skachat Преимущества И Недостатки Букмекерской Конторы Обзор Слота Авиатор В Мостбет Казино Приложение Для Компьютера Спортивные Ставки Система Бонусов Букмекера Где Найти Игру Aviator На Mostbet Как Зарегистрироваться …

Регистрация И Получение Бонусо Port Of Hastings Corporation Read More »

Scroll to Top