package de.flower.common.validation.unique; import de.flower.common.model.db.entity.IEntity; import de.flower.common.validation.unique.impl.IColumnResolver; import de.flower.common.validation.unique.impl.IRowCountChecker; import de.flower.common.validation.unique.impl.UniqueDef; import org.springframework.test.util.ReflectionTestUtils; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import javax.validation.ConstraintValidatorContext; import java.util.List; import static org.mockito.Mockito.*; import static org.testng.Assert.*; public class UniqueValidatorTest { private IRowCountChecker rowCountChecker; private UniqueValidator validator; private IEntity entity; private ConstraintValidatorContext context; @BeforeMethod public void init() { final IColumnResolver columnResolver = mock(IColumnResolver.class); rowCountChecker = mock(IRowCountChecker.class); entity = mock(IEntity.class); when(entity.getId()).thenReturn(1L); context = mock(ConstraintValidatorContext.class); final UniqueDef constraintDef = new UniqueDef("foo", new String[]{"id"}); validator = new UniqueValidator(columnResolver, rowCountChecker); ReflectionTestUtils.setField(validator, "constraintDef", constraintDef); } @Test public final void testIsValidTrue() { when(rowCountChecker.rowCount(any(IEntity.class), (List<String>)any())).thenReturn(0L); final boolean valid = validator.isValid(entity, context); assertTrue(valid); } @Test public final void testIsValidFalse() { // some mockup needed when(rowCountChecker.rowCount(any(IEntity.class), (List<String>)any())).thenReturn(10L); // now finally we can call the method under test final boolean valid = validator.isValid(entity, context); assertFalse(valid); } /** * Test for null values. */ @Test public final void testValidateNull() { when(entity.getId()).thenReturn(null); final boolean valid = validator.isValid(entity, context); assertTrue(valid); verify(rowCountChecker, never()).rowCount(any(IEntity.class), anyList()); } }