package org.egov.collection.util;
public class CollectionsNumberGeneratorTest { /*extends AbstractPersistenceServiceTest<ReceiptPayeeDetails,Long>{
private CollectionObjectFactory objectFactory;
private CollectionsNumberGenerator collNumberGenerator;
private SequenceNumberGenerator sequenceGenerator;
private ScriptService scriptExecutionService;
private CollectionsUtil collectionsUtil;
private Department department;
public CollectionsNumberGeneratorTest() {
this.type = ReceiptHeader.class;
}
@Before
public void setupService(){
service = new ReceiptService();
objectFactory = new CollectionObjectFactory(session);
collectionsUtil=new CollectionsUtil(){
public Department getDepartmentOfUser(User user) {
department= objectFactory.createDeptForCode("testDeptCode");
return department;
}
};
scriptExecutionService = new ScriptService(2, 5, 10, 30);
collectionsUtil.setPersistenceService(genericService);
collNumberGenerator = new CollectionsNumberGenerator();
collNumberGenerator.setScriptExecutionService(scriptExecutionService);
collNumberGenerator.setSequenceGenerator(sequenceGenerator);
collNumberGenerator.setCollectionsUtil(collectionsUtil);
}
private String formatDate(Date date,String format){
SimpleDateFormat formatter = new SimpleDateFormat(format);
String formattedDate = formatter.format(date);
return formattedDate;
}
@Test
public void testReceiptNoGenerationStrategy() {
CFinancialYear financialYear = collectionsUtil.getFinancialYearforDate(new Date());
ReceiptHeader receiptHeader = objectFactory.createUnsavedReceiptHeader();
String receiptSequence = "SQ_RECEIPTHEADER_"+financialYear.getFinYearRange().substring(0, 4);
List numbers = session.createSQLQuery("SELECT "+receiptSequence+".NEXTVAL FROM DUAL").list();
BigDecimal result;
if(numbers!=null && !numbers.isEmpty())
result=(BigDecimal)numbers.get(0);
else
result=new BigDecimal(0);
String receiptNo = collNumberGenerator.generateReceiptNumber(receiptHeader);
String resultStr = String.valueOf(result.longValue() + 1);
String sequence = "";
if(resultStr.length()==1)
{
sequence = "000000"+resultStr;
}
else if(resultStr.length()==2)
{
sequence = "00000"+resultStr;
}
else if(resultStr.length()==3)
{
sequence = "0000"+resultStr;
}
else if(resultStr.length()==4)
{
sequence = "000"+resultStr;
}
else if(resultStr.length()==5)
{
sequence = "00"+resultStr;
}
else if(resultStr.length()==6)
{
sequence = "0"+resultStr;
}
else
{
sequence = resultStr;
}
assertEquals(formatDate(receiptHeader.getCreatedDate(),"MM")+"/"+financialYear.getFinYearRange()+"/"+sequence,
receiptNo);
}
@Test
public void testInternalRefNoForChequeGenerationStrategy() {
ReceiptHeader receiptHeader = objectFactory.createUnsavedReceiptHeader();
receiptHeader.setReceiptnumber("ReceiptNumber");
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(
objectFactory.createRegularInstrumentType(CollectionConstants.INSTRUMENTTYPE_CHEQUE),
objectFactory.createEgwStatus("testStatus", CollectionConstants.MODULE_NAME_RECEIPTHEADER)));
CFinancialYear financialYear = objectFactory.getFinancialYearForDate(
receiptHeader.getCreatedDate());
CFinancialYear currentFinancialYear = objectFactory.getFinancialYearForDate(
receiptHeader.getCreatedDate());
String chequeReferenceSequence = "SQ_RECEIPTREF"+financialYear.getFinYearRange();
List numbers = session.createSQLQuery("SELECT "+chequeReferenceSequence+".NEXTVAL FROM DUAL").list();
List actualInternalRefNos = collNumberGenerator.generateInternalReferenceNumber(
receiptHeader, financialYear,currentFinancialYear);
BigDecimal result;
if(numbers!=null && !numbers.isEmpty())
result=(BigDecimal)numbers.get(0);
else
result=new BigDecimal(0);
String chequesequence= "000000"+(result.longValue()+1);
chequesequence=chequesequence.substring(chequesequence.length()-6,chequesequence.length());
String expectedResult = chequesequence+"/"+financialYear.getFinYearRange();
assertEquals(2,actualInternalRefNos.size());
assertEquals(" ",actualInternalRefNos.get(0));
assertEquals(expectedResult,actualInternalRefNos.get(1));
}
@Test
public void testInternalRefNoForMultipleChequesGenerationStrategy() {
ReceiptHeader receiptHeader = objectFactory.createUnsavedReceiptHeader();
receiptHeader.setReceiptnumber("ReceiptNumber");
InstrumentType instrumentTypeCheque=objectFactory.createRegularInstrumentType(CollectionConstants.INSTRUMENTTYPE_CHEQUE);
EgwStatus status = objectFactory.createEgwStatus("testStatus", CollectionConstants.MODULE_NAME_RECEIPTHEADER);
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(instrumentTypeCheque,status));
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(instrumentTypeCheque,status));
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(instrumentTypeCheque,status));
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(instrumentTypeCheque,status));
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(instrumentTypeCheque,status));
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(instrumentTypeCheque,status));
CFinancialYear financialYear = objectFactory.getFinancialYearForDate(receiptHeader.getCreatedDate());
CFinancialYear currentFinancialYear = objectFactory.getFinancialYearForDate(new Date());
String chequeReferenceSequence = "SQ_RECEIPTREF"+financialYear.getFinYearRange();
List numbers = session.createSQLQuery("SELECT "+chequeReferenceSequence+".NEXTVAL FROM DUAL").list();
List<String> actualInternalRefNos = collNumberGenerator.generateInternalReferenceNumber(
receiptHeader, financialYear,currentFinancialYear);
BigDecimal result;
if(numbers!=null && !numbers.isEmpty())
result=(BigDecimal)numbers.get(0);
else
result=new BigDecimal(0);
String chequesequence= "000000"+(result.longValue()+1);
chequesequence=chequesequence.substring(chequesequence.length()-6,chequesequence.length());
String expectedResult = chequesequence+"/"+financialYear.getFinYearRange();
assertEquals(2,actualInternalRefNos.size());
assertEquals(" ",actualInternalRefNos.get(0));
assertEquals(expectedResult,actualInternalRefNos.get(1));
}
@Test
public void testInternalRefNoForCashGenerationStrategy() {
ReceiptHeader receiptHeader = objectFactory.createUnsavedReceiptHeader();
receiptHeader.setReceiptnumber("ReceiptNumber");
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(
objectFactory.createRegularInstrumentType(CollectionConstants.INSTRUMENTTYPE_CASH),
objectFactory.createEgwStatus("testStatus", CollectionConstants.MODULE_NAME_RECEIPTHEADER)));
CFinancialYear financialYear = objectFactory.getFinancialYearForDate(
receiptHeader.getCreatedDate());
CFinancialYear currentFinancialYear = objectFactory.getFinancialYearForDate(
receiptHeader.getCreatedDate());
String cashReferenceSequence = "SQ_RECEIPTREF"+financialYear.getFinYearRange();
List numbers = session.createSQLQuery("SELECT "+cashReferenceSequence+".NEXTVAL FROM DUAL").list();
List actualInternalRefNos = collNumberGenerator.generateInternalReferenceNumber(
receiptHeader, financialYear,currentFinancialYear);
BigDecimal result;
if(numbers!=null && !numbers.isEmpty())
result=(BigDecimal)numbers.get(0);
else
result=new BigDecimal(0);
String cashsequence= "0000"+(result.longValue()+1);
cashsequence=cashsequence.substring(cashsequence.length()-4,cashsequence.length());
String expectedResult = cashsequence+"/"+financialYear.getFinYearRange();
assertEquals(2,actualInternalRefNos.size());
assertEquals(expectedResult,actualInternalRefNos.get(0));
assertEquals(" ",actualInternalRefNos.get(1));
}
@Test
public void testResetInternalRefNoForCashGenerationStrategy() {
ReceiptHeader receiptHeader = objectFactory.createUnsavedReceiptHeader();
receiptHeader.setReceiptnumber("ReceiptNumber");
receiptHeader.addInstrument(objectFactory.createInstrumentHeader(
objectFactory.createRegularInstrumentType(CollectionConstants.INSTRUMENTTYPE_CASH),
objectFactory.createEgwStatus("testStatus", CollectionConstants.MODULE_NAME_RECEIPTHEADER)));
CFinancialYear financialYear = objectFactory.getFinancialYearForDate(
receiptHeader.getCreatedDate());
CFinancialYear currentFinancialYear = objectFactory.getFinancialYearForDate(
receiptHeader.getCreatedDate());
String cashReferenceSequence = "SQ_RECEIPTREF"+financialYear.getFinYearRange();
List numbers = session.createSQLQuery("SELECT "+cashReferenceSequence+".NEXTVAL FROM DUAL").list();
List actualInternalRefNos = collNumberGenerator.generateInternalReferenceNumber(
receiptHeader, financialYear,currentFinancialYear);
BigDecimal result;
if(numbers!=null && !numbers.isEmpty())
result=(BigDecimal)numbers.get(0);
else
result=new BigDecimal(0);
String cashsequence= "0000"+(result.longValue()+1);
cashsequence=cashsequence.substring(cashsequence.length()-4,cashsequence.length());
String expectedResult = cashsequence+"/"+financialYear.getFinYearRange();
assertEquals(2,actualInternalRefNos.size());
assertEquals(expectedResult,actualInternalRefNos.get(0));
assertEquals(" ",actualInternalRefNos.get(1));
}
@Test
public void testChallanNoGenerationStrategy() {
Challan challan = objectFactory.createUnsavedChallan();
CFinancialYear financialYear = objectFactory.getFinancialYearForDate(
challan.getCreatedDate());
UserImpl user = objectFactory.createUser("egovernments",department);
challan.setCreatedBy(user);
String challanSequence = "SQ_CHALLAN_"+financialYear.getFinYearRange().substring(0, 4);
List numbers = session.createSQLQuery("SELECT "+challanSequence+".NEXTVAL FROM DUAL").list();
BigDecimal result;
if(numbers!=null && !numbers.isEmpty())
result=(BigDecimal)numbers.get(0);
else
result=new BigDecimal(0);
String challanNo = collNumberGenerator.generateChallanNumber(challan,financialYear);
String resultStr = String.valueOf(result.longValue() + 1);
String sequence = "";
if(resultStr.length()==1)
{
sequence = "000000"+resultStr;
}
else if(resultStr.length()==2)
{
sequence = "00000"+resultStr;
}
else if(resultStr.length()==3)
{
sequence = "0000"+resultStr;
}
else if(resultStr.length()==4)
{
sequence = "000"+resultStr;
}
else if(resultStr.length()==5)
{
sequence = "00"+resultStr;
}
else if(resultStr.length()==6)
{
sequence = "0"+resultStr;
}
else
{
sequence = resultStr;
}
assertEquals(challanNo,department.getDeptCode()+"/"+financialYear.getFinYearRange()+"/"+sequence);
}*/
}