From 234e6a81f53079b0cd22818df48f39fd479883a4 Mon Sep 17 00:00:00 2001 From: siddharth0905 Date: Mon, 8 Oct 2018 17:06:27 +0530 Subject: [PATCH] Test coverage : openecomp-nosqldb-api Increase test coverage Change-Id: If8b4b8e961278eb1448e8467cd7ac8e136c16315 Issue-ID: SDC-1673 Signed-off-by: siddharth0905 --- .../openecomp-nosqldb-api/pom.xml | 17 ++ .../main/java/org/openecomp/core/dao/BaseDao.java | 14 +- .../org/openecomp/core/dao/UniqueValueDao.java | 5 +- .../openecomp/core/dao/UniqueValueDaoFactory.java | 11 +- .../core/dao/types/UniqueValueEntity.java | 51 ++--- .../org/openecomp/core/nosqldb/api/NoSqlDb.java | 16 +- .../core/nosqldb/factory/NoSqlDbFactory.java | 10 +- .../org/openecomp/core/util/UniqueValueUtil.java | 206 ++++++++++----------- .../openecomp/core/util/UniqueValueUtilTest.java | 116 ++++++++++++ 9 files changed, 279 insertions(+), 167 deletions(-) create mode 100644 openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/test/java/org/openecomp/core/util/UniqueValueUtilTest.java diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml index a628903085..16cc4ac269 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml @@ -45,6 +45,23 @@ ${project.version} runtime + + org.testng + testng + ${testng.version} + test + + + org.projectlombok + lombok + compile + + + org.mockito + mockito-core + ${mockito.version} + test + diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/BaseDao.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/BaseDao.java index c7623f8181..fa23b51742 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/BaseDao.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/BaseDao.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -24,13 +24,13 @@ import java.util.Collection; public interface BaseDao { - Collection list(T entity); + Collection list(T entity); - void create(T entity); + void create(T entity); - void update(T entity); + void update(T entity); - T get(T entity); + T get(T entity); - void delete(T entity); + void delete(T entity); } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDao.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDao.java index 1fa4bb23fe..36dfefa840 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDao.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDao.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,7 +20,6 @@ package org.openecomp.core.dao; - import org.openecomp.core.dao.types.UniqueValueEntity; public interface UniqueValueDao extends BaseDao { diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDaoFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDaoFactory.java index 9f57e4fadd..022ad8e09d 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDaoFactory.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/UniqueValueDaoFactory.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -24,7 +24,8 @@ import org.openecomp.core.factory.api.AbstractComponentFactory; import org.openecomp.core.factory.api.AbstractFactory; public abstract class UniqueValueDaoFactory extends AbstractComponentFactory { - public static UniqueValueDaoFactory getInstance() { - return AbstractFactory.getInstance(UniqueValueDaoFactory.class); - } + + public static UniqueValueDaoFactory getInstance() { + return AbstractFactory.getInstance(UniqueValueDaoFactory.class); + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/types/UniqueValueEntity.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/types/UniqueValueEntity.java index c53280ed7a..24038b9b0c 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/types/UniqueValueEntity.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/dao/types/UniqueValueEntity.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,42 +23,21 @@ package org.openecomp.core.dao.types; import com.datastax.driver.mapping.annotations.PartitionKey; import com.datastax.driver.mapping.annotations.Table; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter @Table(name = "unique_value") public class UniqueValueEntity { - @PartitionKey - private String type; - - @PartitionKey(value = 1) - private String value; - - /** - * Every entity class must have a default constructor according to - * - * Definition of mapped classes. - */ - public UniqueValueEntity() { - // Don't delete! Default constructor is required by DataStax driver - } - - public UniqueValueEntity(String type, String value) { - this.type = type; - this.value = value; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getValue() { - return value; - } + @PartitionKey + private String type; - public void setValue(String value) { - this.value = value; - } + @PartitionKey(value = 1) + private String value; } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/api/NoSqlDb.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/api/NoSqlDb.java index 56d15a88d4..ff4661c44d 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/api/NoSqlDb.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/api/NoSqlDb.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -25,15 +25,15 @@ import com.datastax.driver.mapping.MappingManager; public interface NoSqlDb { - //TODO: remove cassandra types from here!! (like done in SDC...). + //TODO: remove cassandra types from here!! (like done in SDC...). - void insert(String tableName, String[] colNames, Object[] values); + void insert(String tableName, String[] colNames, Object[] values); - ResultSet execute(String statement); + ResultSet execute(String statement); - ResultSet execute(String statementName, Object... values); + ResultSet execute(String statementName, Object... values); - MappingManager getMappingManager(); + MappingManager getMappingManager(); - String getVersion(); + String getVersion(); } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/factory/NoSqlDbFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/factory/NoSqlDbFactory.java index ede264f288..31b6f6a505 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/factory/NoSqlDbFactory.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/nosqldb/factory/NoSqlDbFactory.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -27,8 +27,8 @@ import org.openecomp.core.nosqldb.api.NoSqlDb; public abstract class NoSqlDbFactory extends AbstractComponentFactory { - public static NoSqlDbFactory getInstance() { + public static NoSqlDbFactory getInstance() { - return AbstractFactory.getInstance(NoSqlDbFactory.class); - } + return AbstractFactory.getInstance(NoSqlDbFactory.class); + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java index 0ba7228cce..aded1fa99f 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java @@ -28,120 +28,120 @@ import org.openecomp.sdc.common.errors.ErrorCode; public class UniqueValueUtil { - private static final String UNIQUE_VALUE_VIOLATION = "UNIQUE_VALUE_VIOLATION"; - private static final String UNIQUE_VALUE_VIOLATION_MSG = "%s with the value '%s' already exists."; - private static final char FORMATTED_UNIQUE_VALUE_SEPARATOR = '_'; - - private final UniqueValueDao uniqueValueDao; - - public UniqueValueUtil(UniqueValueDao uniqueValueDao) { - this.uniqueValueDao = uniqueValueDao; - } - - /** - * Create unique value. - * - * @param type the type - * @param uniqueCombination the unique combination - */ - public void createUniqueValue(String type, String... uniqueCombination) { - String originalEntityName = null; - if (ArrayUtils.isNotEmpty(uniqueCombination)) { - originalEntityName = uniqueCombination[uniqueCombination.length - 1]; + private static final String UNIQUE_VALUE_VIOLATION = "UNIQUE_VALUE_VIOLATION"; + private static final String UNIQUE_VALUE_VIOLATION_MSG = "%s with the value '%s' already exists."; + private static final char FORMATTED_UNIQUE_VALUE_SEPARATOR = '_'; + + private final UniqueValueDao uniqueValueDao; + + public UniqueValueUtil(UniqueValueDao uniqueValueDao) { + this.uniqueValueDao = uniqueValueDao; } - Optional formattedValue = formatValue(uniqueCombination); - if (formattedValue.isPresent()) { - validateUniqueValue(type, formattedValue.get(), originalEntityName); - uniqueValueDao.create(new UniqueValueEntity(type, formattedValue.get())); + /** + * Create unique value. + * + * @param type the type + * @param uniqueCombination the unique combination + */ + public void createUniqueValue(String type, String... uniqueCombination) { + String originalEntityName = null; + if (ArrayUtils.isNotEmpty(uniqueCombination)) { + originalEntityName = uniqueCombination[uniqueCombination.length - 1]; + } + + Optional formattedValue = formatValue(uniqueCombination); + if (formattedValue.isPresent()) { + validateUniqueValue(type, formattedValue.get(), originalEntityName); + uniqueValueDao.create(new UniqueValueEntity(type, formattedValue.get())); + } } - } - - /** - * Delete unique value. - * - * @param type the type - * @param uniqueCombination the unique combination - */ - public void deleteUniqueValue(String type, String... uniqueCombination) { - formatValue(uniqueCombination).ifPresent( - formattedValue -> uniqueValueDao.delete(new UniqueValueEntity(type, formattedValue))); - - } - - /** - * Update unique value. - * - * @param type the type - * @param oldValue the old value - * @param newValue the new value - * @param uniqueContext the unique context - */ - public void updateUniqueValue(String type, String oldValue, String newValue, - String... uniqueContext) { - if (newValue == null || oldValue == null || !newValue.equalsIgnoreCase(oldValue)) { - createUniqueValue(type, CommonMethods.concat(uniqueContext, new String[]{newValue})); - deleteUniqueValue(type, CommonMethods.concat(uniqueContext, new String[]{oldValue})); + + /** + * Delete unique value. + * + * @param type the type + * @param uniqueCombination the unique combination + */ + public void deleteUniqueValue(String type, String... uniqueCombination) { + formatValue(uniqueCombination).ifPresent( + formattedValue -> uniqueValueDao.delete(new UniqueValueEntity(type, formattedValue))); + } - } - - /** - * Validate unique value. - * - * @param type the type - * @param uniqueCombination the unique combination - */ - public void validateUniqueValue(String type, String... uniqueCombination) { - String originalEntityName = null; - if (ArrayUtils.isNotEmpty(uniqueCombination)) { - originalEntityName = uniqueCombination[uniqueCombination.length - 1]; + + /** + * Update unique value. + * + * @param type the type + * @param oldValue the old value + * @param newValue the new value + * @param uniqueContext the unique context + */ + public void updateUniqueValue(String type, String oldValue, String newValue, + String... uniqueContext) { + if (newValue == null || !newValue.equalsIgnoreCase(oldValue)) { + createUniqueValue(type, CommonMethods.concat(uniqueContext, new String[] {newValue})); + deleteUniqueValue(type, CommonMethods.concat(uniqueContext, new String[] {oldValue})); + } } - Optional formattedValue = formatValue(uniqueCombination); - if (formattedValue.isPresent()) { - validateUniqueValue(type, formattedValue.get(), originalEntityName); + /** + * Validate unique value. + * + * @param type the type + * @param uniqueCombination the unique combination + */ + public void validateUniqueValue(String type, String... uniqueCombination) { + String originalEntityName = null; + if (ArrayUtils.isNotEmpty(uniqueCombination)) { + originalEntityName = uniqueCombination[uniqueCombination.length - 1]; + } + + Optional formattedValue = formatValue(uniqueCombination); + if (formattedValue.isPresent()) { + validateUniqueValue(type, formattedValue.get(), originalEntityName); + } } - } - - /** - * Checks if a unique value is taken. - * - * @return true if the unique value is occupied, false otherwise - */ - public boolean isUniqueValueOccupied(String type, String... uniqueCombination) { - return formatValue(uniqueCombination) - .map(formattedValue -> isUniqueValueOccupied(type, formattedValue)) - .orElse(false); - } - - private void validateUniqueValue(String type, String formattedValue, String originalEntityName) { - if (isUniqueValueOccupied(type, formattedValue)) { - throw new CoreException(new ErrorCode.ErrorCodeBuilder() - .withCategory(ErrorCategory.APPLICATION) - .withId(UNIQUE_VALUE_VIOLATION) - .withMessage(String - .format(UNIQUE_VALUE_VIOLATION_MSG, type, originalEntityName)) - .build()); + + private void validateUniqueValue(String type, String formattedValue, String originalEntityName) { + if (isUniqueValueOccupied(type, formattedValue)) { + throw new CoreException(new ErrorCode.ErrorCodeBuilder() + .withCategory(ErrorCategory.APPLICATION) + .withId(UNIQUE_VALUE_VIOLATION) + .withMessage(String + .format(UNIQUE_VALUE_VIOLATION_MSG, type, originalEntityName)) + .build()); + } } - } - private boolean isUniqueValueOccupied(String type, String formattedValue) { - return uniqueValueDao.get(new UniqueValueEntity(type, formattedValue)) != null; - } + /** + * Checks if a unique value is taken. + * + * @return true if the unique value is occupied, false otherwise + */ + public boolean isUniqueValueOccupied(String type, String... uniqueCombination) { + return formatValue(uniqueCombination) + .map(formattedValue -> isUniqueValueOccupied(type, formattedValue)) + .orElse(false); + } - private static Optional formatValue(String[] uniqueCombination) { - if (uniqueCombination == null || uniqueCombination.length == 0 - || getValueWithoutContext(uniqueCombination) == null) { - return Optional.empty(); + private boolean isUniqueValueOccupied(String type, String formattedValue) { + return uniqueValueDao.get(new UniqueValueEntity(type, formattedValue)) != null; } - uniqueCombination[uniqueCombination.length - 1] = - getValueWithoutContext(uniqueCombination).toLowerCase(); - return Optional.of(CommonMethods - .arrayToSeparatedString(uniqueCombination, FORMATTED_UNIQUE_VALUE_SEPARATOR)); - } + private static Optional formatValue(String[] uniqueCombination) { + if (uniqueCombination == null || uniqueCombination.length == 0 + || getValueWithoutContext(uniqueCombination) == null) { + return Optional.empty(); + } - private static String getValueWithoutContext(String... uniqueCombination) { - return uniqueCombination[uniqueCombination.length - 1]; - } + uniqueCombination[uniqueCombination.length - 1] = + getValueWithoutContext(uniqueCombination).toLowerCase(); + return Optional.of(CommonMethods + .arrayToSeparatedString(uniqueCombination, FORMATTED_UNIQUE_VALUE_SEPARATOR)); + } + + private static String getValueWithoutContext(String... uniqueCombination) { + return uniqueCombination[uniqueCombination.length - 1]; + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/test/java/org/openecomp/core/util/UniqueValueUtilTest.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/test/java/org/openecomp/core/util/UniqueValueUtilTest.java new file mode 100644 index 0000000000..eeae2f75b0 --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/test/java/org/openecomp/core/util/UniqueValueUtilTest.java @@ -0,0 +1,116 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * / + * + */ + +package org.openecomp.core.util; + +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.openecomp.core.dao.UniqueValueDao; +import org.openecomp.core.dao.types.UniqueValueEntity; +import org.openecomp.sdc.common.errors.CoreException; +import org.testng.Assert; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +public class UniqueValueUtilTest { + + private static final String ENTITLEMENT_POOL_NAME = "Entitlement Pool name"; + private static final String ORIGINAL_ENTITY_NAME = "originalEntityName"; + + @Mock + private UniqueValueDao uniqueValueDao; + + private UniqueValueUtil uniqueValueUtil; + + @BeforeMethod + public void setUp() { + MockitoAnnotations.initMocks(this); + uniqueValueUtil = new UniqueValueUtil(uniqueValueDao); + } + + @Test + public void testCreateUniqueValue() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(null); + uniqueValueUtil.createUniqueValue(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME); + + Mockito.verify(uniqueValueDao, Mockito.times(1)).create(Mockito.any()); + } + + @Test(expectedExceptions = CoreException.class) + public void testCreateUniqueValueNotUnique() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(new UniqueValueEntity()); + uniqueValueUtil.createUniqueValue(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME); + + Mockito.verify(uniqueValueDao, Mockito.times(1)).create(Mockito.any()); + } + + @Test + public void testDeleteUniqueValue() { + Mockito.doNothing().when(uniqueValueDao).delete(Mockito.any()); + uniqueValueUtil.deleteUniqueValue(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME); + + Mockito.verify(uniqueValueDao, Mockito.times(1)).delete(Mockito.any()); + } + + @Test + public void testDeleteUniqueValueNoValue() { + uniqueValueUtil.deleteUniqueValue(ENTITLEMENT_POOL_NAME); + Mockito.verify(uniqueValueDao, Mockito.times(0)).delete(Mockito.any()); + } + + @Test + public void testUpdateUniqueValue() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(null); + Mockito.doNothing().when(uniqueValueDao).delete(Mockito.any()); + + uniqueValueUtil.updateUniqueValue(ENTITLEMENT_POOL_NAME, "oldName", "newName", "uniqueContext"); + + Mockito.verify(uniqueValueDao, Mockito.times(1)).create(Mockito.any()); + Mockito.verify(uniqueValueDao, Mockito.times(1)).delete(Mockito.any()); + } + + @Test + public void testValidateUniqueValue() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(null); + uniqueValueUtil.validateUniqueValue(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME); + + Mockito.verify(uniqueValueDao, Mockito.times(1)).get(Mockito.any()); + } + + @Test(expectedExceptions = CoreException.class) + public void testValidateUniqueValueNotUnique() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(new UniqueValueEntity()); + uniqueValueUtil.createUniqueValue(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME); + + Mockito.verify(uniqueValueDao, Mockito.times(1)).get(Mockito.any()); + } + + @Test + public void testIsUniqueValueOccupied() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(new UniqueValueEntity()); + Assert.assertTrue(uniqueValueUtil.isUniqueValueOccupied(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME)); + } + + @Test + public void testIsUniqueValueOccupiedFalse() { + Mockito.when(uniqueValueDao.get(Mockito.any())).thenReturn(null); + Assert.assertFalse(uniqueValueUtil.isUniqueValueOccupied(ENTITLEMENT_POOL_NAME, ORIGINAL_ENTITY_NAME)); + } +} -- 2.16.6