package com.infonow.crux.dao.orm.hibernate; import com.infonow.crux.*; import com.infonow.crux.dao.DaoException; import com.infonow.crux.dao.InowProfileCustomerDao; import com.infonow.crux.dao.OrchestrationInserts; import com.infonow.crux.dao.jdbc.mapper.InowProfileRowMapper; import com.infonow.crux.impl.ClassificationTypeImpl; import com.infonow.crux.impl.CountryImpl; import com.infonow.crux.impl.CustomerImpl; import com.infonow.crux.impl.InowProfileImpl; import com.infonow.crux.learning.LearnedName; import com.infonow.crux.query.PagedQueryResult; import com.infonow.crux.svcClient.InowProfileCountryCode; import com.infonow.crux.svcClient.InowProfileCustomerType; import com.infonow.framework.util.spring.*; import java.sql.*; import org.junit.Before; import org.junit.Test; import org.junit.jupiter.api.*; import org.mockito.*; import org.springframework.jdbc.core.*; import org.springframework.jdbc.core.namedparam.*; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.transaction.support.DefaultTransactionStatus; import org.springframework.transaction.support.TransactionTemplate; import javax.sql.DataSource; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.*; import static org.junit.Assert.*; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; public class InowProfileDaoTest { @Mock private JdbcTemplateProxy jdbcTemplate; @Mock private NamedParameterJdbcTemplateProxy namedParameterJdbcTemplate; @Mock private CountryDao countryDao; @Mock private DataSource dataSource; @Mock private PlatformTransactionManager platformTransactionManager; @Mock private TransactionTemplate transactionTemplate; @InjectMocks private InowProfileDao inowProfileDao; private InowProfileDao.ComponentSubSegmentationRowMapper rowMapper; @Before public void setUp() { MockitoAnnotations.initMocks(this); when(jdbcTemplate.getDataSource()).thenReturn(dataSource); } @Test public void testNextId() { List<Long> mockIdList = new ArrayList<Long>(); // A valid list of Longs mockIdList.add(1L); mockIdList.add(2L); mockIdList.add(3L); when(jdbcTemplate.queryForList(anyString(), any(), eq(Long.class))) .thenReturn(mockIdList); Long nextId = inowProfileDao.nextId(); assertNotNull(nextId); } @Test public void testCreateIdentifier() { String identifier = inowProfileDao.createIdentifier(1L); assertNotNull(identifier); assertEquals("INOW-00000000000001", identifier); } @Test public void testGetInowProfiles() throws DaoException { List<String> identifiers = Arrays.asList("INOW-12345"); String customerId = "customer1"; InowProfile inowProfile = new InowProfileImpl(); inowProfile.setIdentifier("INOW-12345"); List<InowProfile> inowProfiles = Arrays.asList(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); Map<String, InowProfile> result = inowProfileDao. getInowProfiles(identifiers, customerId); assertNotNull(result); assertEquals(1, result.size()); assertEquals(inowProfile, result.get("INOW-12345")); } @Test public void testGetBySid() { Long sid = 1L; InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(sid); List<InowProfile> inowProfiles = Arrays.asList(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); InowProfile result = inowProfileDao.getBySid(sid); assertNotNull(result); assertEquals(inowProfile, result); sid = null; assertNull(inowProfileDao.getBySid(sid)); sid = -1L; assertNull(inowProfileDao.getBySid(sid)); } @Test public void testFindById() { String id = "INOW-00000000010002"; InowProfile inowProfile = new InowProfileImpl(); inowProfile.setIdentifier(id); List<InowProfile> inowProfiles = Arrays.asList(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); InowProfile result = inowProfileDao.findById(id); assertNotNull(result); assertEquals(inowProfile, result); id = ""; assertNull(inowProfileDao.findById(id)); } @Test public void testFindWhereIndividualIsNull() throws SQLException { com.infonow.crux.dao.InowProfileDao.InowProfileResultHandler resultHandler = mock( com.infonow.crux.dao.InowProfileDao. InowProfileResultHandler.class); // Mock ResultSet and ResultSetMetaData ResultSet rs = mock(ResultSet.class); ResultSetMetaData metaData = mock(ResultSetMetaData.class); // Mock ResultSetMetaData behavior when(metaData.getColumnCount()).thenReturn(3); // Adjust based on actual column count when(metaData.getColumnName(1)).thenReturn("ENTITY_NAME"); when(metaData.getColumnName(2)).thenReturn("SID"); when(metaData.getColumnName(3)).thenReturn("CLASSIFICATION_TYPE_SID"); when(rs.getMetaData()).thenReturn(metaData); // Mock ResultSet behavior when(rs.getString("ENTITY_NAME")).thenReturn("BASE REGISTERAPI"); when(rs.getLong("SID")).thenReturn(10001L); when(rs.getLong("CLASSIFICATION_TYPE_SID")).thenReturn(15L); doAnswer(invocation -> { InowProfileRowMapper mapper = new InowProfileRowMapper(); InowProfile inowProfile = (InowProfile) mapper.mapRow(rs, 1); resultHandler.onResult(inowProfile); return null; }).when(jdbcTemplate).query(anyString(), any(RowCallbackHandler.class)); inowProfileDao.findWhereIndividualIsNull(resultHandler); verify(resultHandler, times(1)).onResult(any(InowProfile.class)); } @Test public void testUpdateIndividualAndClassification() { List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(1L); inowProfiles.add(inowProfile); inowProfileDao.updateIndividualAndClassification(inowProfiles); verify(jdbcTemplate, times(1)).batchUpdate(anyString(), any(BatchPreparedStatementSetter.class)); } @Test public void testGetRandomInowProfile() { InowProfile inowProfile = new InowProfileImpl(); List<InowProfile> inowProfiles = Arrays.asList(inowProfile); when(jdbcTemplate.query(anyString(), any(RowMapper.class))) .thenReturn(inowProfiles); InowProfile result = inowProfileDao.getRandomInowProfile(); assertNotNull(result); assertEquals(inowProfile, result); } @Test public void testGetRecordCountForSearch() throws DaoException { when(jdbcTemplate.queryForObject(anyString(), eq(Integer.class))).thenReturn(1); int count = inowProfileDao.getRecordCountForSearch( "INOW-00000000010002", "BASE REGISTERAPI", "Test Street 1", "TestStreet2", "Test City", "Test State Province", "Test Postal Code", "Test Country", false); assertNotNull(count); assertNull(inowProfileDao.getRecordCountForSearch("", "", "", "", "", "", "", "", false)); int countWithoutId = inowProfileDao.getRecordCountForSearch("", "BASE REGISTERAPI", "", "", "", "", "", "", false); assertNotNull(countWithoutId); int countWithStreet1 = inowProfileDao.getRecordCountForSearch("", "", "street1", "", "", "", "", "", false); assertNotNull(countWithStreet1); int countWithStreet2 = inowProfileDao.getRecordCountForSearch("", "", "", "street2", "", "", "", "", false); assertNotNull(countWithStreet2); int countWithCity = inowProfileDao.getRecordCountForSearch("", "", "", "", "city", "", "", "", false); assertNotNull(countWithCity); int countWithStateProvince = inowProfileDao.getRecordCountForSearch("", "", "", "", "", "stateProvince", "", "", false); assertNotNull(countWithStateProvince); int countWithPostalCode = inowProfileDao.getRecordCountForSearch("", "", "", "", "", "", "postalCode", "", false); assertNotNull(countWithPostalCode); int countWithCountry = inowProfileDao.getRecordCountForSearch("", "", "", "", "", "", "", "country", false); assertNotNull(countWithCountry); } @Test public void testFindByWildcard() throws DaoException { List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); List<InowProfile> result = inowProfileDao.findByWildcard("id", "name", "street1", "street2", "city", "state", "postal", "country", false, 0, 10); assertNotNull(result); assertEquals(1, result.size()); assertEquals(inowProfile, result.get(0)); assertNull(inowProfileDao.findByWildcard("", "", "", "", "", "", "", "", false, 0, 10)); List<InowProfile> resultwithNegativePageStart = inowProfileDao. findByWildcard("id", "name", "street1", "street2", "city", "state", "postal", "country", false, -1, 10); assertNotNull(resultwithNegativePageStart); List<InowProfile> resultwithNameWildCard = inowProfileDao.findByWildcard( "", "name", "", "", "", "", "", "", false, 1, 10); assertNotNull(resultwithNameWildCard); List<InowProfile> resultwithStreet1WildCard = inowProfileDao. findByWildcard("", "", "Street1", "", "", "", "", "", false, 1, 10); assertNotNull(resultwithStreet1WildCard); List<InowProfile> resultwithStreet2WildCard = inowProfileDao. findByWildcard("", "", "", "Street2", "", "", "", "", false, 1, 10); assertNotNull(resultwithStreet2WildCard); List<InowProfile> resultwithCityWildCard = inowProfileDao. findByWildcard("", "", "", "", "city", "", "", "", false, 1, 10); assertNotNull(resultwithCityWildCard); List<InowProfile> resultwithStateProvinceWildCard = inowProfileDao. findByWildcard("", "", "", "", "", "stateProvince", "", "", false, 1, 10); assertNotNull(resultwithStateProvinceWildCard); List<InowProfile> resultwithPostalCodeWildCard = inowProfileDao. findByWildcard("", "", "", "", "", "", "postalCode", "", false, 1, 10); assertNotNull(resultwithPostalCodeWildCard); List<InowProfile> resultwithCountryWildCard = inowProfileDao. findByWildcard("", "", "", "", "", "", "", "Country", false, 1, 10); assertNotNull(resultwithCountryWildCard); } @Test public void testUpdateCountries() throws DaoException { List<InowProfileCountryCode> inowProfileCountryCodes = new ArrayList<>(); InowProfileCountryCode inowProfileCountryCode = new InowProfileCountryCode(10002L, "US"); inowProfileCountryCodes.add(inowProfileCountryCode); DefaultTransactionStatus transactionStatus = mock(DefaultTransactionStatus.class); when(platformTransactionManager.getTransaction (any(DefaultTransactionDefinition.class))).thenReturn (transactionStatus); when(transactionTemplate.getTransactionManager()). thenReturn(platformTransactionManager); inowProfileDao.updateCountries(inowProfileCountryCodes); verify(jdbcTemplate, times(3)). batchUpdate(anyString(), any(BatchPreparedStatementSetter.class)); verify(platformTransactionManager, times(1)). commit(transactionStatus); } @Test public void testUpdateGrade() throws DaoException { when(namedParameterJdbcTemplate.update(anyString(), any(Map.class))).thenReturn(1); inowProfileDao.updateGrade(10002L, 90L); verify(namedParameterJdbcTemplate, times(1)).update(anyString(), any(Map.class)); } @Test public void testUpdateGradeAndIsValidFields() throws DaoException { when(jdbcTemplate.update(anyString(), any(Object[].class))).thenReturn(1); inowProfileDao.updateGradeAndIsValidFields(10002L, 80L, true, true, true); verify(jdbcTemplate, times(1)).update( eq("update inow_profile set grade = ?, update_date = sysdate, " + "valid_postalcode = ?, valid_stateprovince = ?, " + "valid_city = ? where sid = ? "), eq(new Object[] { 80L, 1, 1, 1, 10002L }) ); } @Test public void testUpdateAddressFields() { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(3616L); inowProfile.setName("Test Name"); inowProfile.setStreet1("Street 1"); inowProfile.setStreet2("Street 2"); inowProfile.setCity("City"); inowProfile.setStateProvince("State"); inowProfile.setStateProvinceCode("SPC"); inowProfile.setPostalCode("Postal"); inowProfile.setValidPostalCode(true); inowProfile.setValidStateProvince(true); inowProfile.setValidCity(true); inowProfile.setCountry("Country"); inowProfile.setCountryObject(new CountryImpl()); when(jdbcTemplate.update(anyString(), any(Object[].class))). thenReturn(1); int result = inowProfileDao.updateAddressFields(inowProfile); assertEquals(1, result); } @Test public void testFindUnclassified() throws DaoException { List<Customer> customers = new ArrayList<>(); Customer customer = new CustomerImpl(2L, "QCOM"); customers.add(customer); List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(1L); inowProfile.setName("BASE REGISTERAPI"); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); PagedQueryResult<InowProfile> result = inowProfileDao. findUnclassified(customers, 0, 10, "NAME", true); result.setTotalCount(result.getItems().size()); assertNotNull(result); assertEquals(1, result.getTotalCount()); } @Test public void testFindUnclassifiedNegativePageStart() throws DaoException { List<Customer> customers = new ArrayList<>(); Customer customer = new CustomerImpl(2L, "QCOM"); customers.add(customer); List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(1L); inowProfile.setName("BASE REGISTERAPI"); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); PagedQueryResult<InowProfile> result = inowProfileDao. findUnclassified(customers, -1, 10, "NAME", true); result.setTotalCount(result.getItems().size()); assertNotNull(result); assertEquals(1, result.getTotalCount()); } @Test public void testFindUnclassifiedNegativePageEnd() throws DaoException { List<Customer> customers = new ArrayList<>(); Customer customer = new CustomerImpl(2L, "QCOM"); customers.add(customer); List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(1L); inowProfile.setName("BASE REGISTERAPI"); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); PagedQueryResult<InowProfile> result = inowProfileDao. findUnclassified(customers, 0, -200, "NAME", true); result.setTotalCount(result.getItems().size()); assertNotNull(result); assertEquals(1, result.getTotalCount()); } @Test public void testGetClassifiedEntityCount() throws DaoException { when(jdbcTemplate.queryForObject(anyString(), eq(Integer.class))). thenReturn(1); int count = inowProfileDao.getClassifiedEntityCount(); assertNotNull(count); assertTrue(count >= 0); } @Test public void testGetClassifiedEntityCountByCode() throws DaoException { when(jdbcTemplate.queryForObject(anyString(), eq(Integer.class), any(Object[].class))).thenReturn(1); Integer count = inowProfileDao. getClassifiedEntityCount("DESIGN SERVICES"); assertNotNull(count); } @Test public void testGetClassifications() throws DaoException { List<ClassificationType> classificationTypes = new ArrayList<>(); ClassificationType classificationType = new ClassificationTypeImpl (15L, "DESIGN SERVICESs", "Design Services"); classificationTypes.add(classificationType); when(jdbcTemplate.query(anyString(), any(RowMapper.class))). thenReturn(classificationTypes); List<ClassificationType> result = inowProfileDao.getClassifications(); assertNotNull(result); assertEquals(1, result.size()); assertEquals(classificationType, result.get(0)); } @Test public void testGetClassificationType() throws DaoException { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(1L); ClassificationType classificationType = new ClassificationTypeImpl(); List<ClassificationType> classificationTypes = Arrays. asList(classificationType); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(classificationTypes); ClassificationType result = inowProfileDao. getClassificationType(inowProfile); assertNotNull(result); assertEquals(classificationType, result); } @Test public void testGetClassificationTypeByCode() throws DaoException { ClassificationType classificationType = new ClassificationTypeImpl(); List<ClassificationType> classificationTypes = Arrays. asList(classificationType); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(classificationTypes); ClassificationType result = inowProfileDao. getClassificationTypeByCode("code"); assertNotNull(result); assertEquals(classificationType, result); } @Test public void testFindClassified() throws DaoException { List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); List<InowProfile> result = inowProfileDao.findClassified(0, 10, "CITY", true); assertNotNull(result); assertEquals(1, result.size()); assertEquals(inowProfile, result.get(0)); } @Test public void testClassify() throws DaoException { List<InowProfileCustomerType> customerTypes = new ArrayList<>(); InowProfileCustomerType customerType = new InowProfileCustomerType(); customerType.setInowProfileSid(1L); customerType.setCustomerType("type"); customerTypes.add(customerType); when(jdbcTemplate.queryForObject(anyString(), any(Object[].class), eq(String.class))).thenReturn("type"); List<Long> result = inowProfileDao.classify(customerTypes); assertNotNull(result); assertEquals(1, result.size()); assertEquals((Long) 1L, result.get(0)); } @Test public void testSaveR2rReporter() throws DaoException { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setSid(1L); when(jdbcTemplate.update(anyString(), any(Object[].class))). thenReturn(1); inowProfileDao.saveR2rReporter(inowProfile, "value"); verify(jdbcTemplate, times(1)).update(anyString(), any(Object[].class)); } @Test public void testGetBySalesLineItemAndAddressType() throws DaoException { InowProfile inowProfile = new InowProfileImpl(); List<InowProfile> inowProfiles = Arrays.asList(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); InowProfile result = inowProfileDao.getBySalesLineItemAndAddressType ("CTH", 1L, "SOLD TO"); assertNotNull(result); assertEquals(inowProfile, result); assertThrows(DaoException.class, () -> inowProfileDao. getBySalesLineItemAndAddressType("", 1L, "SOLD TO")); assertThrows(DaoException.class, () -> inowProfileDao. getBySalesLineItemAndAddressType("CTH", -1L, "SOLD TO")); assertThrows(DaoException.class, () -> inowProfileDao. getBySalesLineItemAndAddressType("CTH", 1L, "")); } @Test public void testDeleteDuplicate() throws DaoException { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setIdentifier("10002"); when(namedParameterJdbcTemplate.update(anyString(), any(Map.class))).thenReturn(1); inowProfileDao.deleteDuplicate(inowProfile); verify(namedParameterJdbcTemplate, times(1)).update(anyString(), any(Map.class)); } @Test public void testSaveDuplicate() throws DaoException { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setIdentifier("INOW-12345"); InowProfile duplicateInowProfile = new InowProfileImpl(); duplicateInowProfile.setIdentifier("INOW-54321"); Map<InowProfile, List<InowProfile>> inowProfileDuplicateMap = new HashMap<>(); List<InowProfile> duplicates = new ArrayList<>(); duplicates.add(duplicateInowProfile); inowProfileDuplicateMap.put(inowProfile, duplicates); when(jdbcTemplate.batchUpdate(anyString(), any(BatchPreparedStatementSetter.class))).thenReturn(new int[] { 1 }); inowProfileDao.saveDuplicate(inowProfileDuplicateMap, true); verify(jdbcTemplate, times(1)).batchUpdate(anyString(), any(BatchPreparedStatementSetter.class)); inowProfileDao.saveDuplicate(inowProfileDuplicateMap, false); verify(jdbcTemplate, atLeastOnce()).batchUpdate(anyString(), any(BatchPreparedStatementSetter.class)); } @Test public void testGetCount() throws DaoException { when(jdbcTemplate.queryForObject(anyString(), eq(Integer.class))). thenReturn(1); Integer count = inowProfileDao.getCount(); assertNotNull(count); } @Test public void testGetRecords() throws DaoException { List<InowProfile> inowProfiles = new ArrayList<>(); InowProfile inowProfile = new InowProfileImpl(); inowProfile.setName("D&H CANADAAAAA"); inowProfile.setStreet1("255 COURTNEY PARK DRIVE W"); inowProfile.setStreet2("SUITE 101"); inowProfile.setCity("MISSISSAUGA"); inowProfile.setStateProvince("ONTARIO"); inowProfile.setPostalCode("L5W 0A5"); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); List<InowProfile> result = inowProfileDao.getRecords(0, 10); assertNotNull(result); assertEquals(1, result.size()); assertEquals(inowProfile, result.get(0)); } @Test public void testFindByFields() { InowProfile inowProfile = new InowProfileImpl(); ClassificationType classificationType = new ClassificationTypeImpl(15L, "DESIGN SERVICES", "Design Services"); inowProfile.setName("BASE REGISTERAPI"); inowProfile.setClassificationType(classificationType); when(namedParameterJdbcTemplate.queryForList(anyString(), any(Map.class), eq(String.class))).thenReturn(Arrays.asList("INOW-12345")); String result = inowProfileDao.findByFields(inowProfile, true); assertNotNull(result); assertEquals("INOW-12345", result); } @Test public void testFindExactAddressDupes() { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setName("Test Name"); inowProfile.setStreet1("Street 1"); inowProfile.setStreet2("Street 2"); inowProfile.setCity("City"); inowProfile.setStateProvince("State"); inowProfile.setPostalCode("Postal"); inowProfile.setCountry("Country"); List<InowProfile> inowProfiles = new ArrayList<>(); inowProfiles.add(inowProfile); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(inowProfiles); List<InowProfile> result = inowProfileDao. findExactAddressDupes(inowProfile); assertNotNull(result); assertEquals(1, result.size()); assertEquals(inowProfile, result.get(0)); } @Test public void testFindByFieldsWithNullResults() { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setName("D&H CANADAAAAA"); inowProfile.setStreet1("255 COURTNEY PARK DRIVE W"); inowProfile.setStreet2("SUITE 101"); inowProfile.setCity("MISSISSAUGA"); inowProfile.setStateProvince("ONTARIO"); inowProfile.setPostalCode("L5W 0A5"); when(jdbcTemplate.queryForList(anyString(), any(Map.class), eq(String.class))).thenReturn(Collections.emptyList()); String result = inowProfileDao.findByFields(inowProfile, true); assertNull(result); } @Test public void testFindByFieldsWithException() { InowProfile inowProfile = new InowProfileImpl(); inowProfile.setName("Illegal Argument"); when(namedParameterJdbcTemplate.queryForList(anyString(), any(Map.class), eq(String.class))).thenThrow(new RuntimeException("Database error")); assertThrows(RuntimeException.class, () -> inowProfileDao. findByFields(inowProfile, true)); } @Test public void testFindClassificationType() { String code = "Code"; List<ClassificationType> classificationTypes = new ArrayList<>(); classificationTypes.add(new ClassificationTypeImpl(1L, "CT01", "Test Classification")); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(classificationTypes); assertNotNull(inowProfileDao.findClassificationType(code)); List<ClassificationType> classificationTypesMultiple = new ArrayList<>(); classificationTypesMultiple.add(new ClassificationTypeImpl(1L, "CT01", "Test Classification")); classificationTypesMultiple.add(new ClassificationTypeImpl(2L, "CT02", "Test Classification 2")); when(jdbcTemplate.query(anyString(), any(Object[].class), any(RowMapper.class))).thenReturn(classificationTypesMultiple); ClassificationType classificationType = inowProfileDao.findClassificationType(code); assertEquals(classificationTypesMultiple.get(0), classificationType); } @Test public void testFindComponentSegmentation() { String name = "Name"; assertNull(inowProfileDao.findComponentSegmentation(name)); } @Test public void testFindComponentSubSegmentation() { String name = "Name"; assertNull(inowProfileDao.findComponentSubSegmentation(name)); } @Test public void testFindMatchedProfilesWithLearnedName() { LearnedName learnedName = new LearnedName("fromName", "toName"); assertTrue(inowProfileDao.findMatchedProfilesWithLearnedName(learnedName).isEmpty()); } @Test public void testCreateInfoNowId() { InowProfile inowProfile = new InowProfileImpl(); String id = "12345"; String expectedInfoNowId = "INOW-00000000012345"; inowProfile.setIdentifier(expectedInfoNowId); inowProfile.setSid(1L); assertThrows(DaoException.class, () -> inowProfileDao. createInfoNowId(inowProfile)); assertNotNull(inowProfile.getIdentifier()); assertEquals(expectedInfoNowId, inowProfile.getIdentifier()); } @Test public void testCreateInfoNowIdNull() { InowProfile inowProfile = null; assertThrows(IllegalArgumentException.class, () -> inowProfileDao. createInfoNowId(inowProfile)); } @Test public void testSetInowProfileCustomerDao() { InowProfileCustomerDao inowProfileCustomerDao = mock(InowProfileCustomerDao.class); inowProfileCustomerDao.createInowProfileCustomer(1L, 1L); inowProfileDao.setInowProfileCustomerDao(inowProfileCustomerDao); assertNotNull(inowProfileDao.getInowProfileCustomerDao()); assertEquals(inowProfileCustomerDao, inowProfileDao. getInowProfileCustomerDao()); } @Test public void testSetOrchestrationDao() { OrchestrationInserts inowProfileOrchestrationDao = mock(OrchestrationInserts.class); inowProfileOrchestrationDao.insert(1L); inowProfileDao.setOrchestrationDao(inowProfileOrchestrationDao); assertNotNull(inowProfileDao.getOrchestrationDao()); assertEquals(inowProfileOrchestrationDao, inowProfileDao. getOrchestrationDao()); } @Test public void testBulkInsert() throws SQLException { PreparedStatement preparedStatement = mock(PreparedStatement.class); InowProfile inowProfileNegativeSid = new InowProfileImpl(); inowProfileNegativeSid.setName("D&H CANADAAAAA"); inowProfileNegativeSid.setStreet1("255 COURTNEY PARK DRIVE W"); inowProfileNegativeSid.setStreet2("SUITE 101"); inowProfileNegativeSid.setCity("MISSISSAUGA"); inowProfileNegativeSid.setStateProvince("ONTARIO"); inowProfileNegativeSid.setPostalCode("L5W 0A5"); inowProfileNegativeSid.setSid(-1L); inowProfileNegativeSid.setIdentifier("1"); InowProfile inowProfileEmptyIdentifier = new InowProfileImpl(); inowProfileEmptyIdentifier.setSid(2L); inowProfileEmptyIdentifier.setName("Test Name 2"); inowProfileEmptyIdentifier.setStreet1("Street 3"); inowProfileEmptyIdentifier.setStreet2("Street 4"); inowProfileEmptyIdentifier.setCity("City 2"); inowProfileEmptyIdentifier.setStateProvince("State 2"); inowProfileEmptyIdentifier.setPostalCode("Postal 2"); inowProfileEmptyIdentifier.setCountry("Country 2"); inowProfileNegativeSid.setIdentifier(""); List<InowProfile> values = Arrays.asList(inowProfileNegativeSid, inowProfileEmptyIdentifier); InowProfileDao.BulkInsert bulkInsert = inowProfileDao.new BulkInsert(values); List<Long> mockIdList = new ArrayList<Long>(); // A valid list of Longs mockIdList.add(1L); mockIdList.add(2L); mockIdList.add(3L); when(jdbcTemplate. queryForList(anyString(), any(), eq(Long.class))).thenReturn(mockIdList); for (InowProfile inowProfile : values) { bulkInsert.setValues(preparedStatement, inowProfile); } verify(preparedStatement, atLeastOnce()).setObject(anyInt(), anyDouble()); } @Test public void testInowProfileClassificationRowMapper_MapRow() throws SQLException { ResultSet resultSet = mock(ResultSet.class); when(resultSet.getString("TWO_CHAR_CODE")).thenReturn("US"); when(resultSet.getLong("SID")).thenReturn(1L); when(resultSet.getString("IDENTIFIER")). thenReturn("INOW-00000000000001"); when(resultSet.getString("ENTITY_NAME")).thenReturn("Test Entity"); when(resultSet.getString("STREET_1")).thenReturn("123 Test St"); when(resultSet.getString("STREET_2")).thenReturn("Suite 100"); when(resultSet.getString("CITY")).thenReturn("Test City"); when(resultSet.getString("STATEPROVINCE")).thenReturn("Test State"); when(resultSet.getString("STATE_PROVINCE_ISO_CODE")).thenReturn("TS"); when(resultSet.getString("POSTALCODE")).thenReturn("12345"); when(resultSet.getString("COUNTRY")).thenReturn("Test Country"); when(resultSet.getLong("CT_SID")).thenReturn(1L); when(resultSet.getString("CT_CODE")).thenReturn("CT01"); when(resultSet.getString("CT_DESCRIPTION")). thenReturn("Test Classification"); InowProfileDao.InowProfileClassificationRowMapper rowMapper = new InowProfileDao() .new InowProfileClassificationRowMapper(); InowProfileImpl inowProfile = (InowProfileImpl) rowMapper.mapRow(resultSet, 1); assertEquals("US", inowProfile.getCountryObject().getTwoCharCode()); assertEquals("INOW-00000000000001", inowProfile.getIdentifier()); assertEquals("Test Entity", inowProfile.getName()); assertEquals("123 Test St", inowProfile.getStreet1()); assertEquals("Suite 100", inowProfile.getStreet2()); assertEquals("Test City", inowProfile.getCity()); assertEquals("Test State", inowProfile.getStateProvince()); assertEquals("TS", inowProfile.getStateProvinceCode()); assertEquals("12345", inowProfile.getPostalCode()); assertEquals("Test Country", inowProfile.getCountry()); assertEquals("CT01", inowProfile.getClassificationType().getCode()); assertEquals("Test Classification", inowProfile.getClassificationType() .getDescription()); } @Test public void testBulkUpdate() throws SQLException { PreparedStatement preparedStatement = mock(PreparedStatement.class); InowProfile inowProfileNegativeSid = new InowProfileImpl(); inowProfileNegativeSid.setName("D&H CANADAAAAA"); inowProfileNegativeSid.setStreet1("255 COURTNEY PARK DRIVE W"); inowProfileNegativeSid.setStreet2("SUITE 101"); inowProfileNegativeSid.setCity("MISSISSAUGA"); inowProfileNegativeSid.setStateProvince("ONTARIO"); inowProfileNegativeSid.setPostalCode("L5W 0A5"); inowProfileNegativeSid.setSid(-1L); inowProfileNegativeSid.setIdentifier("1"); InowProfile inowProfileEmptyIdentifier = new InowProfileImpl(); inowProfileEmptyIdentifier.setSid(2L); inowProfileEmptyIdentifier.setName("Test Name 2"); inowProfileEmptyIdentifier.setStreet1("Street 3"); inowProfileEmptyIdentifier.setStreet2("Street 4"); inowProfileEmptyIdentifier.setCity("City 2"); inowProfileEmptyIdentifier.setStateProvince("State 2"); inowProfileEmptyIdentifier.setPostalCode("Postal 2"); inowProfileEmptyIdentifier.setCountry("Country 2"); inowProfileNegativeSid.setIdentifier(""); List<InowProfile> values = Arrays.asList(inowProfileNegativeSid, inowProfileEmptyIdentifier); InowProfileDao.BulkUpdate bulkUpdate = inowProfileDao.new BulkUpdate(values); for (InowProfile inowProfile : values) { bulkUpdate.setValues(preparedStatement, inowProfile); } verify(preparedStatement, atLeastOnce()).setObject(anyInt(), anyLong()); } @Test public void testComponentSegmentationRowMapper_MapRow() throws SQLException { // Mock the ResultSet ResultSet resultSet = mock(ResultSet.class); when(resultSet.getLong("SID")).thenReturn(1L); when(resultSet.getString("NAME")).thenReturn("Test Name"); when(resultSet.getString("DESCRIPTION")).thenReturn("Test Description"); // Instantiate the RowMapper InowProfileDao.ComponentSegmentationRowMapper rowMapper = new InowProfileDao().new ComponentSegmentationRowMapper(); // Call the mapRow method ComponentSegmentation result = (ComponentSegmentation) rowMapper.mapRow(resultSet, 1); // Assert the results assertNotNull(result); assertEquals(0, result.getSid().compareTo(1L)); assertEquals("Test Name", result.getName()); assertEquals("Test Description", result.getDescription()); } }