/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.module.ar.service.impl;
import static org.kuali.kfs.sys.fixture.UserNameFixture.khuntley;
import java.util.Random;
import org.kuali.kfs.module.ar.ArPropertyConstants;
import org.kuali.kfs.module.ar.businessobject.CustomerAddress;
import org.kuali.kfs.module.ar.document.service.CustomerService;
import org.kuali.kfs.sys.ConfigureContext;
import org.kuali.kfs.sys.context.KualiTestBase;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.kns.service.DataDictionaryService;
import org.kuali.rice.kns.service.MaintenanceDocumentDictionaryService;
import org.kuali.rice.krad.service.DocumentService;
import org.kuali.rice.krad.service.KualiModuleService;
import org.kuali.rice.krad.workflow.service.WorkflowDocumentService;
@ConfigureContext(session = khuntley)
public class CustomerDocumentServiceImplTest extends KualiTestBase {
protected CustomerDocumentServiceImpl customerDocumentServiceImpl;
protected DataDictionaryService dataDictionaryService;
protected char[] characters = null;
protected Random rand;
@Override
public void setUp() {
customerDocumentServiceImpl = new CustomerDocumentServiceImpl();
customerDocumentServiceImpl.setCustomerService(SpringContext.getBean(CustomerService.class));
customerDocumentServiceImpl.setDataDictionaryService(SpringContext.getBean(DataDictionaryService.class));
customerDocumentServiceImpl.setDocumentService(SpringContext.getBean(DocumentService.class));
customerDocumentServiceImpl.setMaintenanceDocumentDictionaryService(SpringContext.getBean(MaintenanceDocumentDictionaryService.class));
customerDocumentServiceImpl.setKualiModuleService(SpringContext.getBean(KualiModuleService.class));
customerDocumentServiceImpl.setWorkflowDocumentService(SpringContext.getBean(WorkflowDocumentService.class));
dataDictionaryService = SpringContext.getBean(DataDictionaryService.class);
characters = new char[52];
int count = 0;
for (char i = 'A'; i <= 'Z'; i++) {
characters[count] = i;
count += 1;
}
for (char i = 'a'; i <= 'z'; i++) {
characters[count] = i;
count += 1;
}
rand = new Random();
}
public void testTruncateField() {
final int customerAddressNameLength = dataDictionaryService.getAttributeMaxLength(CustomerAddress.class, ArPropertyConstants.CustomerAddressFields.CUSTOMER_ADDRESS_NAME);
final String customerAddressNameShort = randomString(customerAddressNameLength-3);
final String customerAddressNameLong = randomString(customerAddressNameLength+7);
final String customerAddressNameBabyBear = randomString(customerAddressNameLength);
final String customerAddressNameShortTruncated = customerDocumentServiceImpl.truncateField(CustomerAddress.class, ArPropertyConstants.CustomerAddressFields.CUSTOMER_ADDRESS_NAME, customerAddressNameShort);
final String customerAddressNameLongTruncated = customerDocumentServiceImpl.truncateField(CustomerAddress.class, ArPropertyConstants.CustomerAddressFields.CUSTOMER_ADDRESS_NAME, customerAddressNameLong);
final String customerAddressNameBabyBearTruncated = customerDocumentServiceImpl.truncateField(CustomerAddress.class, ArPropertyConstants.CustomerAddressFields.CUSTOMER_ADDRESS_NAME, customerAddressNameBabyBear);
assertEquals("Customer Address Name Short should have the same length as truncated version", customerAddressNameShort.length(), customerAddressNameShortTruncated.length());
assertEquals("Customer Address Name Short should be the same String as the truncated version", customerAddressNameShort, customerAddressNameShortTruncated);
assertEquals("Customer Address Name Long should have the max length of the customer address name field", customerAddressNameLength, customerAddressNameLongTruncated.length());
assertTrue("Customer Address Name Long should start with the truncated version", customerAddressNameLong.startsWith(customerAddressNameLongTruncated));
assertEquals("Customer Address Name Baby Bear should have the same length as the truncated version", customerAddressNameBabyBear.length(), customerAddressNameBabyBearTruncated.length());
assertEquals("Customer Address Name Baby Bear should have the same length as the customer address name field", customerAddressNameLength, customerAddressNameBabyBearTruncated.length());
assertEquals("Customer Address Name Baby Bear should be the exact same string as the truncated version", customerAddressNameBabyBear, customerAddressNameBabyBearTruncated);
}
protected String randomString(int size) {
StringBuilder s = new StringBuilder();
int count = 0;
while (count < size) {
int idx = rand.nextInt(characters.length);
s.append(characters[idx]);
count += 1;
}
return s.toString();
}
}