package org.ovirt.engine.ui.uicommonweb.validation; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; import java.util.Collections; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.UIConstants; import org.ovirt.engine.ui.uicompat.UIMessages; @RunWith(MockitoJUnitRunner.class) public class KeyValueFormatValidationTest { @Mock private ConstantsManager mockConstantsManager; @Mock private UIConstants mockUiConstants; @Mock private UIMessages mockUiMessages; private static final String NOT_VALID = "a"; //$NON-NLS-1$ private static final String ERROR_MESSAGE_EMPTY_NOT_ALLOWED = "ERROR_MESSAGE_EMPTY_NOT_ALLOWED";//$NON-NLS-1$ private static final String ERROR_MESSAGE_EMPTY_ALLOWED = "ERROR_MESSAGE_EMPTY_ALLOWED";//$NON-NLS-1$ private static final String FORMAT = "FORMAT";//$NON-NLS-1$ private static final ValidationResult failureValidationResultEmptyNotAllowed = new ValidationResult(false, Collections.singletonList(ERROR_MESSAGE_EMPTY_NOT_ALLOWED)); private static final ValidationResult failureValidationResultEmptyAllowed = new ValidationResult(false, Collections.singletonList(ERROR_MESSAGE_EMPTY_ALLOWED)); private static final ValidationResult successfulValidationResult = new ValidationResult(); private KeyValueFormatValidation underTest; @Before public void initialize() { when(mockConstantsManager.getMessages()).thenReturn(mockUiMessages); when(mockUiMessages.keyValueFormat()).thenReturn(FORMAT); when(mockUiMessages.customPropertiesValuesShouldBeInFormatReason(FORMAT)).thenReturn( ERROR_MESSAGE_EMPTY_NOT_ALLOWED); when(mockUiMessages.emptyOrValidKeyValueFormatMessage(FORMAT)).thenReturn(ERROR_MESSAGE_EMPTY_ALLOWED); underTest = new KeyValueFormatValidation(mockConstantsManager); } @Test public void nullTest() { ValidationResult validationResult = underTest.validate(null); assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkEmptyString() { ValidationResult validationResult = underTest.validate("");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkKeyOnly() { ValidationResult validationResult = underTest.validate(NOT_VALID); assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkKeyValuePairBadSeparator() { ValidationResult validationResult = underTest.validate("a-a");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkKeyValuePairExtraEqualSign() { ValidationResult validationResult = underTest.validate("a=a=");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkKeyValueKey() { ValidationResult validationResult = underTest.validate("a=a=a");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkValidKeyValuePair() { ValidationResult validationResult = underTest.validate("a=a");//$NON-NLS-1$ assertEquals(successfulValidationResult, validationResult); } @Test public void checkValidKeyValueTwoPairs() { ValidationResult validationResult = underTest.validate("a=a a=a");//$NON-NLS-1$ assertEquals(successfulValidationResult, validationResult); } @Test public void checkKeyValueTwoPairsFollowingWithKey() { ValidationResult validationResult = underTest.validate("a=a a=a a");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkKeyValueTwoPairsFollowingWithMissingValue() { ValidationResult validationResult = underTest.validate("a=a a=a a=");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } @Test public void checkEmptyStringAllowed() { underTest = new KeyValueFormatValidation(mockConstantsManager, true); ValidationResult validationResult = underTest.validate("");//$NON-NLS-1$ assertEquals(successfulValidationResult, validationResult); } @Test public void checkNotValidEmptyStringAllowed() { underTest = new KeyValueFormatValidation(mockConstantsManager, true); ValidationResult validationResult = underTest.validate(NOT_VALID);//$NON-NLS-1$ assertEquals(failureValidationResultEmptyAllowed, validationResult); } @Test public void checkEmptyStringNotAllowedFromConstructor() { underTest = new KeyValueFormatValidation(mockConstantsManager, false); ValidationResult validationResult = underTest.validate("");//$NON-NLS-1$ assertEquals(failureValidationResultEmptyNotAllowed, validationResult); } }