import * as Ordenators from '../ordenators' import { BusinessExceptionError } from '../../../errors/business_exception.error' import { CompetitionCategories } from '../../../models/ranking/competition/enums/categories.enum' import { OrdenatorFactory } from './ordenator.factory' describe('OrdenatorFactory', () => { describe('#sort', () => { describe.each` category | ordenator ${CompetitionCategories.DECREASE_BODY_FAT} | ${Ordenators.DecreaseOrdenator} ${CompetitionCategories.DECREASE_VISCERAL_FAT} | ${Ordenators.DecreaseOrdenator} ${CompetitionCategories.INCREASE_LEAN_MASS} | ${Ordenators.IncreaseOrdenator} ${CompetitionCategories.DECREASE_ACTUAL_WEIGHT} | ${Ordenators.DecreaseOrdenator} `('when category is "$category"', ({ category, ordenator }) => { it(`returns ${ordenator.name} class`, () => { expect(OrdenatorFactory.build(category)).toEqual(ordenator) }) }) describe('when the category is unknown', () => { it('throws an error', () => { expect(() => OrdenatorFactory.build('asd' as CompetitionCategories)).toThrowError(BusinessExceptionError) }) }) describe('when the category is empty', () => { it('throws an error', () => { expect(() => OrdenatorFactory.build('' as CompetitionCategories)).toThrowError(BusinessExceptionError) }) }) }) })