/**
* eGov suite of products aim to improve the internal efficiency,transparency,
accountability and the service delivery of the government organizations.
Copyright (C) <2015> eGovernments Foundation
The updated version of eGov suite of products as by eGovernments Foundation
is available at http://www.egovernments.org
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/ or
http://www.gnu.org/licenses/gpl.html .
In addition to the terms of the GPL license to be adhered to in using this
program, the following additional terms are to be complied with:
1) All versions of this program, verbatim or modified must carry this
Legal Notice.
2) Any misrepresentation of the origin of the material is prohibited. It
is required that all modified versions of this material be marked in
reasonable ways as different from the original version.
3) This license does not grant any rights to any user of the program
with regards to rights under trademark law for use of the trade names
or trademarks of eGovernments Foundation.
In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org.
*/
package org.egov.collection.web.actions.receipts;
public class ChallanActionTest {/* extends AbstractPersistenceServiceTest<Challan,Long>{
private ChallanAction action;
private CollectionObjectFactory objectFactory;
private @Autowired AppConfigValuesDAO appConfigValuesDAO;
private CommonsManager commonsManager;
private BoundaryDAO boundaryDAO;
private ReceiptService receiptService;
private ChallanService challanService;
private WorkflowService<Challan> challanWorkflowService;
private CollectionsUtil collectionsUtil;
private FinancialsUtil financialsUtil;
private CollectionsNumberGenerator collectionsNumberGenerator;
private SequenceNumberGenerator sequenceGenerator;
private UserManager userManager;
private EisManager eisManager;
private InstrumentService instrumentService;
private EgovCommon egovCommon;
private Position position;
private CollectionCommon collectionCommon;
private ReceiptHeaderService receiptHeaderService;
private EisUtilService eisUtilService;
private EisCommonsManager eisCommonsManagerMock;
private AuditEventService auditEventService;
//WorkflowService<ReceiptHeader> receiptWorkflowServiceMock;
@Before
public void setupAction(){
action = new ChallanAction(){
@Override
protected void setValue(String relationshipName, Object relation) {
try {
Ognl.setValue(relationshipName, action.getModel(), relation);
} catch (OgnlException e) {
throw new RuntimeException(e);
}
}
@Override
public String getText(String textName)
{
return textName;
}
@Override
public String getText(String textName,String[] args)
{
return textName;
}
@Override
public String getText(String textName,String args)
{
return args;
}
};
genericDao = new GenericHibernateDaoFactory(){
protected Session getCurrentSession(){
return session;
}
public AppConfigValuesDAO getAppConfigValuesDAO()
{
return new AppConfigValuesHibernateDAO(AppConfigValues.class,session);
}
};
objectFactory = new CollectionObjectFactory(session);
commonsManager = createMock(CommonsManager.class);
userManager = createMock(UserManager.class);
boundaryDAO = createMock(BoundaryDAO.class);
eisManager = createMock(EisManager.class);
egovCommon = createMock(EgovCommon.class);
eisCommonsManagerMock = createMock(EisCommonsManager.class);
auditEventService = new AuditEventService();
ApplicationThreadLocals.setUserId("1");
genericService.setType(AuditEvent.class);
auditEventService.setAuditEventPersistenceService(genericService);
ScriptService scriptExecutionService = new ScriptService(2, 5, 10, 30);
position = objectFactory.createPosition();
collectionsUtil=new CollectionsUtil(){
public Position getPositionOfUser(User user) {
return position;
}
public Position getPositionByName(String positionName) {
return position;
}
public List<Department> getDepartmentsAllowedForChallaApproval(
User loggedInUser,ReceiptHeader receiptHeaderObj){
return new ArrayList<Department>();
}
};
collectionsUtil.setGenericDao(genericDao);
collectionsUtil.setScriptService(genericService);
collectionsUtil.setPersistenceService(genericService);
collectionsUtil.setUserManager(userManager);
collectionsUtil.setEisManager(eisManager);
collectionsUtil.setPersistenceService(genericService);
collectionsUtil.setEisCommonsManager(eisCommonsManagerMock);
collectionsUtil.setAuditEventService(auditEventService);
collectionsNumberGenerator=new CollectionsNumberGenerator();
collectionsNumberGenerator.setScriptExecutionService(scriptExecutionService);
collectionsNumberGenerator.setSequenceGenerator(sequenceGenerator);
collectionsNumberGenerator.setCollectionsUtil(collectionsUtil);
instrumentService = createMock(InstrumentService.class);
financialsUtil = new FinancialsUtil(){
public CVoucherHeader getReversalVoucher(
List<HashMap<String, Object>> paramList){
return new CVoucherHeader();
}
public InstrumentType getInstrumentTypeByType(String type){
return (InstrumentType) genericService.find("from InstrumentType where type=? and isActive=true",type);
}
public CVoucherHeader createVoucher(
Map<String, Object> headerdetails,
List<HashMap<String, Object>> accountcodedetails,
List<HashMap<String, Object>> subledgerdetails,Boolean receiptBulkUpload){
return objectFactory.createVoucher("testVoucher");
}
public List<InstrumentVoucher> updateInstrument(List<Map<String, Object>> paramList) {
return new ArrayList<InstrumentVoucher>();
}
};
financialsUtil.setInstrumentService(instrumentService);
receiptService = new ReceiptService();
receiptService.setType(ReceiptPayeeDetails.class);
receiptService.setCollectionsUtil(collectionsUtil);
receiptService.setFinancialsUtil(financialsUtil);
receiptService.setCollectionsNumberGenerator(collectionsNumberGenerator);
eisUtilService=new EisUtilService();
eisUtilService.setPersistenceService(genericService);
receiptService.setEisService(eisUtilService);
challanService = new ChallanService();
challanService.setType(Challan.class);
challanService.setCollectionsUtil(collectionsUtil);
challanWorkflowService = new SimpleWorkflowService<Challan>(
challanService, Challan.class);
challanService.setChallanWorkflowService(challanWorkflowService);
receiptHeaderService = new ReceiptHeaderService();
receiptHeaderService.setType(ReceiptHeader.class);
receiptHeaderService.setPersistenceService(genericService);
receiptHeaderService.setCollectionsUtil(collectionsUtil);
receiptHeaderService.setCollectionsNumberGenerator(collectionsNumberGenerator);
receiptWorkflowServiceMock = new SimpleWorkflowService<ReceiptHeader>(
receiptHeaderService, ReceiptHeader.class);
receiptHeaderService.setReceiptWorkflowService(receiptWorkflowServiceMock);
receiptHeaderService.setFinancialsUtil(financialsUtil);
collectionCommon = new CollectionCommon();
collectionCommon.setPersistenceService(genericService);
collectionCommon.setEgovCommon(egovCommon);
collectionCommon.setCommonsManager(commonsManager);
collectionCommon.setCollectionsUtil(collectionsUtil);
collectionCommon.setReceiptHeaderService(receiptHeaderService);
collectionCommon.setReceiptPayeeDetailsService(receiptService);
action.setPersistenceService(genericService);
action.setCommonsManager(commonsManager);
action.setBoundaryDAO(boundaryDAO);
action.setCollectionsUtil(collectionsUtil);
action.setFinancialsUtil(financialsUtil);
action.setReceiptPayeeDetailsService(receiptService);
action.setChallanService(challanService);
action.setCollectionCommon(collectionCommon);
action.setReceiptHeaderService(receiptHeaderService);
action.setChallanWorkflowService(challanWorkflowService);
}
private void initialiseActionForSaveNew(){
Department dept = objectFactory.createDept("testDept");
BoundaryImpl boundary = objectFactory.createBoundary();
action.setDeptId(String.valueOf(dept.getId()));
action.setBoundaryId(boundary.getId());
ReceiptHeader header = objectFactory.createUnsavedReceiptHeader();
header.setReceiptnumber(null);
header.setCreatedBy(objectFactory.createUser("testUser"));
ReceiptPayeeDetails payee = objectFactory.createReceiptPayeeWithoutHeader();
header.setReceiptPayeeDetails(payee);
Challan challan = objectFactory.createUnsavedChallan();
challan.setCreatedBy(null);
header.setChallan(challan);
//CChartOfAccounts account=objectFactory.createCOA("1201001");
CFunction functionObj = objectFactory.createFunction("testfunction");
CFinancialYear financialYear=objectFactory.getFinancialYearForDate(new Date());
ReceiptMisc receiptMisc = header.getReceiptMisc();
commonsManager.fundById(receiptMisc.getFund().getId());
expectLastCall().andReturn(receiptMisc.getFund());
commonsManager.getCChartOfAccountsByGlCode(EasyMock.isA(String.class));
expectLastCall().andReturn(account).anyTimes();
commonsManager.getFunctionByCode(EasyMock.isA(String.class));
expectLastCall().andReturn(functionObj).anyTimes();
commonsManager.getFinancialYearById(EasyMock.isA(Long.class));
expectLastCall().andReturn(financialYear).anyTimes();
boundaryDAO.getBoundary(boundary.getId());
expectLastCall().andReturn(boundary);
replay(boundaryDAO);
action.setReceiptHeader(header);
}
private void createEmployeeForLoggedInUser(){
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
action.setSession(sessionMap);
Department dept = objectFactory.createDeptForCode("testDeptCode");
UserImpl user = objectFactory.createUser("egovernments",dept);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user).anyTimes();
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,dept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(dept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,dept);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
replay(eisManager);
}
//@Test
public void testCreate() {
ReceiptHeader header=new ReceiptHeader();
Challan challan=new Challan();
header.setChallan(challan);
Map<String, String[]> parameters = new HashMap<String, String[]>();
action.setParameters(parameters);
Department loggedinUserDept = objectFactory.createDept("testUserDeptName");
UserImpl user = objectFactory.createUser("egovernments",loggedinUserDept);
userManager.getUserByUserName(EasyMock.isA(String.class));
expectLastCall().andReturn(user);
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,loggedinUserDept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(loggedinUserDept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,loggedinUserDept);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
replay(eisManager);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_NAME, user.getUserName());
action.setSession(sessionMap);
action.setReceiptHeader(header);
assertEquals(action.newform(),"new");
}
@Test
public void testPrepare() {
Map<String, String[]> parameters = new HashMap<String, String[]>();
action.setParameters(parameters);
Department loggedinUserDept = objectFactory.createDept("testUserDeptName");
UserImpl user = objectFactory.createUser("egovernments",loggedinUserDept);
userManager.getUserByUserName(EasyMock.isA(String.class));
expectLastCall().andReturn(user);
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,loggedinUserDept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(loggedinUserDept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,loggedinUserDept);
eisManager.getEmpForUserId(EasyMock.isA(Integer.class));
expectLastCall().andReturn(emp);
eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class));
expectLastCall().andReturn(assignment);
replay(eisManager);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_NAME, user.getUserName());
action.setSession(sessionMap);
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderForChallan();
action.setReceiptId(receiptHeader.getId());
List<Location> actualFundList = genericService.findAllByNamedQuery(CollectionConstants.QUERY_ALL_FUND);
List<InstrumentType> actualDeptList = genericService.findAllByNamedQuery(CollectionConstants.QUERY_ALL_DEPARTMENTS);
List<InstrumentType> actualFieldList = genericService.findAllByNamedQuery(CollectionConstants.QUERY_ALL_FIELD);
List<InstrumentType> actualServiceList = genericService.findAllByNamedQuery(CollectionConstants.QUERY_CHALLAN_SERVICES,CollectionConstants.CHALLAN_SERVICE_TYPE);
List<InstrumentType> actualFinYrList = genericService.findAllByNamedQuery(CollectionConstants.QUERY_ALL_ACTIVE_FINANCIAL_YEAR);
//action.setSourcePage("dummyPage");
action.setActionName("dummyAction");
action.prepare();
//assertEquals("dummyPage",action.getSourcePage());
assertEquals("dummyAction",action.getActionName());
assertEquals(actualFundList,action.getDropdownData().get("fundList"));
assertEquals(actualDeptList,action.getDropdownData().get("departmentList"));
assertEquals(actualFieldList,action.getDropdownData().get("fieldList"));
assertEquals(actualServiceList,action.getDropdownData().get("serviceList"));
assertEquals(actualFinYrList,action.getDropdownData().get("financialYearList"));
List<String> mandatoryFields = action.getMandatoryFields();
List<String> headerFields = action.getHeaderFields();
for(String mandatory : mandatoryFields){
assertTrue(action.isFieldMandatory(mandatory));
}
for(String header : headerFields){
assertTrue(action.shouldShowHeaderField(header));
}
ReceiptHeader model = action.getReceiptHeader();
assertEquals(receiptHeader, model);
}
@Test
public void testModel(){
ReceiptHeader receiptHeader = objectFactory.createReceiptHeader("testReceiptNumber");
receiptHeader.setReceiptMisc(null);
action.setReceiptHeader(receiptHeader);
assertEquals(action.getReceiptHeader(), action.getModel());
}
//@Test
public void testSaveNewWithInvalidVoucherNumber(){
initialiseActionForSaveNew();
action.setBillDetailslist(objectFactory.createCreditDetailslist());
action.setSubLedgerlist(objectFactory.createEmptySubLedgerlist());
action.setPositionUser(-1);
Department loggedinUserDept = objectFactory.createDept("testUserDeptName");
UserImpl user = objectFactory.createUser("egovernments",loggedinUserDept);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,loggedinUserDept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(loggedinUserDept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,loggedinUserDept);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
replay(eisManager);
objectFactory.createEmployeePositionDetails("testDesignation", emp, loggedinUserDept);
action.setVoucherNumber("dummyVoucherNumber");
action.setActionName(CollectionConstants.WF_ACTION_NAME_NEW_CHALLAN);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
action.setSession(sessionMap);
ReceiptHeader receiptHeaderObj=action.getReceiptHeader();
receiptHeaderObj.getChallan().setState(objectFactory.createState(user));
action.setReceiptHeader(receiptHeaderObj);
try{
assertEquals(action.save(),"view");
}
catch(Exception e){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals(errors.get(0).getKey(),"challan.invalid.vouchernumber");
assertEquals(errors.get(0).getMessage(),"Voucher not found. Please check the voucher number.");
}
}
//@Test
public void testSaveNew(){
initialiseActionForSaveNew();
List<ReceiptDetailInfo> billCreditDetailslist = objectFactory.createCreditDetailslist();
action.setBillDetailslist(billCreditDetailslist);
action.setSubLedgerlist(objectFactory.createEmptySubLedgerlist());
String glcodeDetail = billCreditDetailslist.get(0).getGlcodeDetail();
CChartOfAccounts account=objectFactory.createCOA(glcodeDetail);
CFunction function=objectFactory.createFunction("testFunction");
commonsManager.getCChartOfAccountsByGlCode(glcodeDetail);
expectLastCall().andReturn(account);
commonsManager.getFunctionById(billCreditDetailslist.get(0).getFunctionIdDetail());
expectLastCall().andReturn(function);
replay(commonsManager);
action.setPositionUser(-1);
Department loggedinUserDept = objectFactory.createDept("testUserDeptName");
UserImpl user = objectFactory.createUser("egovernments",loggedinUserDept);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,loggedinUserDept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(loggedinUserDept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,loggedinUserDept);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
replay(eisManager);
objectFactory.createEmployeePositionDetails("testDesignation", emp, loggedinUserDept);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
action.setSession(sessionMap);
CVoucherHeader voucher = objectFactory.createVoucher("testVoucher");
action.setVoucherNumber(voucher.getVoucherNumber());
action.setActionName(CollectionConstants.WF_ACTION_NAME_NEW_CHALLAN);
ReceiptHeader receiptHeaderObj=action.getReceiptHeader();
receiptHeaderObj.getChallan().setState(objectFactory.createState(user));
action.setReceiptHeader(receiptHeaderObj);
assertEquals(action.save(),"view");
ReceiptHeader receiptHeader = action.getReceiptHeader();
assertEquals(receiptHeader.getReceiptMisc().getDepartment().getId().toString(),
action.getDeptId());
assertEquals(receiptHeader.getReceiptMisc().getBoundary().getId(),
action.getBoundaryId());
assertEquals(receiptHeader.getStatus().getCode(),
CollectionConstants.RECEIPT_STATUS_CODE_PENDING);
assertEquals(receiptHeader.getReceiptnumber(),
null);
assertTrue(receiptHeader.getIsReconciled());
assertEquals(receiptHeader.getReceipttype(),
CollectionConstants.RECEIPT_TYPE_CHALLAN);
assertEquals(receiptHeader.getService().getCode(),
CollectionConstants.SERVICE_CODE_COLLECTIONS);
assertEquals(receiptHeader.getChallan().getStatus().getCode(),
CollectionConstants.CHALLAN_STATUS_CODE_CREATED);
assertEquals(receiptHeader.getId(), action.getReceiptId());
assertEquals(receiptHeader.getChallan().getVoucherHeader().getVoucherNumber(), action.getVoucherNumber());
assertEquals(action.errors.size(),0);
}
//@Test
public void testChallanWorkflow(){
initialiseActionForSaveNew();
List<ReceiptDetailInfo> billCreditDetailslist = objectFactory.createCreditDetailslist();
action.setBillDetailslist(billCreditDetailslist);
action.setSubLedgerlist(objectFactory.createEmptySubLedgerlist());
String glcodeDetail = billCreditDetailslist.get(0).getGlcodeDetail();
CChartOfAccounts account=objectFactory.createCOA(glcodeDetail);
CFunction function=objectFactory.createFunction("testFunction");
commonsManager.getCChartOfAccountsByGlCode(glcodeDetail);
expectLastCall().andReturn(account);
commonsManager.getFunctionById(billCreditDetailslist.get(0).getFunctionIdDetail());
expectLastCall().andReturn(function);
replay(commonsManager);
action.setPositionUser(-1);
createEmployeeForLoggedInUser();
action.setSubLedgerlist(objectFactory.createEmptySubLedgerlist());
action.setActionName(CollectionConstants.WF_ACTION_NAME_VALIDATE_CHALLAN);
action.setApprovalRemarks("Test Comment - Challan Validated.");
assertEquals(action.save(),BaseFormAction.SUCCESS);
State challanState = action.getReceiptHeader().getChallan().getState();
assertEquals(State.END, challanState.getValue());
assertEquals(CollectionConstants.WF_STATE_VALIDATE_CHALLAN, challanState.getPrevious().getValue());
assertEquals("End of challan worklow", challanState.getText1());
assertEquals(action.getApprovalRemarks(), challanState.getPrevious().getText1());
assertEquals(CollectionConstants.CHALLAN_STATUS_CODE_VALIDATED, action.getReceiptHeader().getChallan().getStatus().getCode());
}
@Test
public void testInvalidBillDetails(){
List<ReceiptDetailInfo> billDetailsList = new ArrayList<ReceiptDetailInfo>();
List<ReceiptDetailInfo> subledgerList = objectFactory.createEmptySubLedgerlist();
// test if no data is entered
billDetailsList.add(objectFactory.createReceiptDetailInfo(BigDecimal.ZERO, BigDecimal.ZERO, ""));
try{
action.setBillDetailslist(billDetailsList);
action.setSubLedgerlist(subledgerList);
action.validateAccountDetails();//(billDetailsList, subledgerList);
}
catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals(errors.get(0).getKey(),"challan.accdetail.emptyaccrow");
assertEquals(errors.get(0).getMessage(),"No data entered in Account Details grid row : {0}");
}
// test if neither credit and amount data are entered
action.errors.clear();
billDetailsList.clear();
billDetailsList.add(objectFactory.createReceiptDetailInfo(BigDecimal.ZERO, BigDecimal.ZERO, "testGLCode"));
try{
action.setBillDetailslist(billDetailsList);
action.setSubLedgerlist(subledgerList);
action.validateAccountDetails();//(billDetailsList, subledgerList);
}
catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals("challan.accdetail.amountZero",errors.get(0).getKey());
assertEquals("Enter debit/credit amount for the account code : {0}",errors.get(0).getMessage());
}
// test if both credit and amount data are entered
action.errors.clear();
billDetailsList.clear();
billDetailsList.add(objectFactory.createReceiptDetailInfo(BigDecimal.TEN, BigDecimal.TEN, "testGLCode"));
try{
action.setBillDetailslist(billDetailsList);
action.setSubLedgerlist(subledgerList);
action.validateAccountDetails();//(billDetailsList, subledgerList);
}
catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals(errors.get(0).getKey(),"challan.accdetail.amount");
assertEquals(errors.get(0).getMessage(),"Please enter either debit/credit amount for the account code : {0}");
}
// test if credit/amount data are valid, but glcode is missing
action.errors.clear();
billDetailsList.clear();
billDetailsList.add(objectFactory.createReceiptDetailInfo(BigDecimal.TEN, BigDecimal.ZERO, ""));
try{
action.setBillDetailslist(billDetailsList);
action.setSubLedgerlist(subledgerList);
action.validateAccountDetails();//(billDetailsList, subledgerList);
}
catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals(errors.get(0).getKey(),"challan.accdetail.accmissing");
assertEquals(errors.get(0).getMessage(),"Account code is missing for credit/debit supplied field in account grid row :{0}");
}
}
@Test
public void testInvalidSubledgerDetails(){
CChartOfAccounts account = objectFactory.createCOAForGLCode("testGLCODE");
Accountdetailtype accountDetailType = objectFactory.createAccountdetailtype("testAccDetailTypesghsdgh");
CChartOfAccountDetail chartOfAccDetail = objectFactory.createCOADetail(
account, accountDetailType);
List<ReceiptDetailInfo> billDetailsList = objectFactory.createCreditDetailslist(account);
List<ReceiptDetailInfo> subLedgerList = objectFactory.createSubLedgerlist(account,accountDetailType);
// test 1 - no errors
action.setBillDetailslist(billDetailsList);
action.setSubLedgerlist(subLedgerList);
action.validateAccountDetails();
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),0);
//test 2
errors.clear();
//set same combination of "glcode id + detail type id + detail key id" for both subledger records.
subLedgerList.get(0).getGlcode().setId(subLedgerList.get(1).getGlcode().getId());// = "";//subLedgerList.get(1).getGlcode().getId();
subLedgerList.get(0).getDetailType().setId(subLedgerList.get(1).getDetailType().getId());
subLedgerList.get(0).setDetailKeyId(subLedgerList.get(1).getDetailKeyId());
//set different amount values for account details and subledger details
billDetailsList.get(0).setCreditAmountDetail(new BigDecimal(1000));
action.setBillDetailslist(billDetailsList);
action.setSubLedgerlist(subLedgerList);
try{
action.validateAccountDetails();
}
catch(Exception ex){
errors = action.errors;
assertEquals(errors.size(),2);
assertEquals(errors.get(0).getKey(),"miscreciept.samesubledger.repeated");
assertEquals(errors.get(0).getMessage(),"Same subledger should not allow for same account code");
assertEquals(errors.get(1).getKey(),"miscreciept.samesubledger.entrymissing");
assertEquals(errors.get(1).getMessage(),"Total subledger amount is not matching for account code : {0}");
}
//test 3
errors.clear();
//reset credit amount value back to initial value
billDetailsList.get(0).setCreditAmountDetail(new BigDecimal(100));
subLedgerList.get(0).setAmount(null);
subLedgerList.get(1).setAmount(null);
action.setSubLedgerlist(subLedgerList);
try{
action.validateAccountDetails();
}
catch(Exception ex){
errors = action.errors;
//assertEquals(errors.size(),2);
assertEquals(errors.get(0).getKey(),"miscreciept.samesubledger.repeated");
assertEquals(errors.get(0).getMessage(),"Same subledger should not allow for same account code");
assertEquals(errors.get(1).getKey(),"miscreciept.samesubledger.entrymissing");
assertEquals(errors.get(1).getMessage(),"Subledger detail entry is missing for account code: {0}");
}
}
@Test
public void testCreateReceipt(){
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderWithChallan();
EgwStatus status = (EgwStatus) genericService.find("from EgwStatus S where S.moduletype =? and S.code =?",
CollectionConstants.MODULE_NAME_RECEIPTHEADER,
CollectionConstants.RECEIPT_STATUS_CODE_PENDING);
receiptHeader.setStatus(status);
State prevstate = objectFactory.createState("Type-Challan","VALIDATED");
State endstate = objectFactory.createState("Type-Challan","END");
receiptHeader.getChallan().changeState(prevstate);
receiptHeader.getChallan().changeState(endstate);
session.saveOrUpdate(receiptHeader);
action.setChallanNumber(receiptHeader.getChallan().getChallanNumber());
createEmployeeForLoggedInUser();
assertEquals("createReceipt", action.createReceipt());
assertFalse(action.getCashAllowed());
assertFalse(action.getCardAllowed());
assertTrue(action.getChequeDDAllowed());
assertEquals(action.getChallanNumber(),action.getReceiptHeader().getChallan().getChallanNumber());
}
@Test
public void testCreateReceiptFailure(){
action.setChallanNumber("testChallanNo");
try{
assertEquals("createReceipt", action.createReceipt());
}catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals(errors.get(0).getKey(),"challan.notfound.message");
assertEquals(errors.get(0).getMessage(),"No Valid Challan Found. Please check the challan number.");
}
}
@Test
public void testCreateExistingReceipt(){
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderWithChallan();
State prevstate = objectFactory.createState("Type-Challan","VALIDATED");
State endstate = objectFactory.createState("Type-Challan","END");
receiptHeader.getChallan().changeState(prevstate);
receiptHeader.getChallan().changeState(endstate);
session.saveOrUpdate(receiptHeader);
action.setChallanNumber(receiptHeader.getChallan().getChallanNumber());
try{
assertEquals("createReceipt", action.createReceipt());
}catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),1);
assertEquals(errors.get(0).getKey(),"challanreceipt.created.message");
assertEquals(errors.get(0).getMessage(),"Receipt Already Created For this Challan. Receipt Number is " + receiptHeader.getReceiptnumber());
}
}
//@Test
public void testSaveNewWithsubledger(){
initialiseActionForSaveNew();
// should pass cchartofaccount to this method. then glcodedetail = account.getGlcode() and glcodeiddetail=account.getid
List<ReceiptDetailInfo> billDetailslist = objectFactory.createCreditDetailslist();
String glcodeDetail = billDetailslist.get(0).getGlcodeDetail();
CChartOfAccounts account=objectFactory.createCOAForGLCode(glcodeDetail);
Accountdetailtype accountDetailType = objectFactory.createAccountdetailtype("testAccDetailTypesghsdgh");
objectFactory.createCOADetail(account, accountDetailType);
billDetailslist.get(0).setGlcodeIdDetail(account.getId());
CFunction function=objectFactory.createFunction("testFunction");
commonsManager.getFunctionById(billDetailslist.get(0).getFunctionIdDetail());
expectLastCall().andReturn(function);
commonsManager.getCChartOfAccountsByGlCode(glcodeDetail);
expectLastCall().andReturn(account);
replay(commonsManager);
action.setBillDetailslist(billDetailslist);
List<ReceiptDetailInfo> subLedgerlist = objectFactory.createSubLedgerlist();
subLedgerlist.get(0).setGlcode(account);
subLedgerlist.get(1).setGlcode(account);
action.setSubLedgerlist(subLedgerlist);
action.setPositionUser(-1);
Department loggedinUserDept = objectFactory.createDept("testUserDeptName");
UserImpl user = objectFactory.createUser("egovernments",loggedinUserDept);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user).anyTimes();
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,loggedinUserDept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(loggedinUserDept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,loggedinUserDept);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
replay(eisManager);
//eisManager.getEmpForUserId(user.getId());
//expectLastCall().andReturn(emp);
//replay(eisManager);
ReceiptHeader receiptHeaderObj=action.getReceiptHeader();
receiptHeaderObj.getChallan().setState(objectFactory.createState(user));
action.setReceiptHeader(receiptHeaderObj);
objectFactory.createEmployeePositionDetails("testDesignation", emp, loggedinUserDept);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
action.setSession(sessionMap);
try {
expect(egovCommon.getEntityType(EasyMock.isA(Accountdetailtype.class),EasyMock.isA(Integer.class))).andReturn(null).anyTimes();
} catch (ApplicationException e) {
}
//aDetail.getAccountDetailType(),aDetail.getAccountDetailKey().getDetailkey());
//try{
action.setActionName(CollectionConstants.WF_ACTION_NAME_NEW_CHALLAN);
assertEquals(action.save(),"view");
//}
catch(Exception ex){
List<ValidationError> errors = action.errors;
assertEquals(errors.size(),0);
assertEquals("challan.accdetail.accmissing",errors.get(0).getKey());
assertEquals(errors.get(0).getMessage(),
"Account code is missing for credit/debit supplied field in account grid row :{0}");
}
}
//@Test
public void testViewChallan(){
Map<String, String[]> parameters = new HashMap<String, String[]>();
action.setParameters(parameters);
Department loggedinUserDept = objectFactory.createDept("testUserDeptName");
UserImpl user = objectFactory.createUser("egovernments",loggedinUserDept);
userManager.getUserByUserName(EasyMock.isA(String.class));
expectLastCall().andReturn(user);
replay(userManager);
PersonalInformation emp = objectFactory.createPersonalInformation(user,loggedinUserDept);
AssignmentPrd ap = objectFactory.createEmpAsgnmtPrd(emp);
DesignationMaster desig = objectFactory.createDesignation(loggedinUserDept.getId(), "testDesignation"+objectFactory.getRandomNumber());
Position position = objectFactory.createPosition(desig);
Assignment assignment=objectFactory.createAssignment(ap, desig, position,loggedinUserDept);
expect(eisManager.getEmpForUserId(isA(Integer.class))).andReturn(emp);
expect(eisManager.getAssignmentByEmpAndDate(EasyMock.isA(Date.class),EasyMock.isA(Integer.class))).andReturn(assignment);
replay(eisManager);
ReceiptHeader receiptHeader=objectFactory.createReceiptHeaderWithChallan();
receiptHeader.getChallan().setState(objectFactory.createState(user));
ReceiptDetail receiptDetail = objectFactory.createReceiptDetailWithoutHeader();
receiptHeader.addReceiptDetail(receiptDetail);
session.saveOrUpdate(receiptHeader);
action.setChallanId(receiptHeader.getChallan().getId().toString());
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_NAME, user.getUserName());
action.setSession(sessionMap);
assertEquals(action.viewChallan(),"view");
assertEquals(receiptHeader.getReceiptMisc().getDepartment(), action.getDept());
assertEquals(receiptHeader.getReceiptMisc().getBoundary(), action.getBoundary());
assertEquals(receiptHeader.getReceiptDetails().iterator().next().getFunction(),
action.getFunction());
assertEquals(action.getChallanId(), action.getReceiptHeader().getChallan().getId().toString());
}
@Test
public void testCancel(){
ReceiptHeader receipt = objectFactory.createReceiptHeaderWithChallan();
action.setReceiptId(receipt.getId());
action.setReceiptHeader(receipt);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
action.setSession(sessionMap);
UserImpl user = objectFactory.createUser("egovernments");
userManager.getUserByUserName("egovernments");
expectLastCall().andReturn(user);
replay(userManager);
action.setActionName(CollectionConstants.WF_ACTION_NAME_CANCEL_CHALLAN);
assertEquals(action.save(),"success");
}
@Test
public void testSaveReceiptAfterIntraDayCancellation(){
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
Location location = objectFactory.createCounter("test");
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_COUNTERID, location.getId().toString());
action.setSession(sessionMap);
ReceiptHeader receiptToBeCancelled = objectFactory.createReceiptHeader("testReceiptNumber");
ReceiptPayeeDetails payee = objectFactory.createPayeeForChallan();
ReceiptHeader receiptHeader = payee.getReceiptHeaders().iterator().next();
receiptHeader.setReceiptHeader(receiptToBeCancelled);
session.saveOrUpdate(receiptHeader);
action.setReceiptHeader(receiptHeader);
action.setInstrumentTypeCashOrCard(CollectionConstants.INSTRUMENTTYPE_CASH);
CChartOfAccounts cashOnHand = objectFactory.createCOA("TestcashInHand");
Map<String, Object> cashChequeInfoMap = new HashMap();
cashChequeInfoMap.put(CollectionConstants.MAP_KEY_EGOVCOMMON_CASHINHAND, cashOnHand.getGlcode());
egovCommon.getCashChequeInfoForBoundary();
expectLastCall().andReturn(cashChequeInfoMap);
// replay(egovCommon);
try {
EasyMock.expect(egovCommon.getEntityType(EasyMock.isA(Accountdetailtype.class), EasyMock.isA(Integer.class))).andReturn(null);
} catch (ApplicationException e) {
//
}
replay(egovCommon);
commonsManager.getCChartOfAccountsByGlCode(cashOnHand.getGlcode());
expectLastCall().andReturn(cashOnHand);
replay(commonsManager);
EgwStatus instrumentStatus = (EgwStatus) genericService.find(
"from EgwStatus S where S.moduletype =? and S.description =?",
CollectionConstants.MODULE_NAME_INSTRUMENTHEADER,
CollectionConstants.INSTRUMENT_NEW_STATUS);
InstrumentHeader instrHeaderCash = new InstrumentHeader();
List<InstrumentHeader> actualInstrList = new ArrayList<InstrumentHeader>();
instrHeaderCash.setInstrumentAmount(new BigDecimal(1000.0));
instrHeaderCash.setIsPayCheque(CollectionConstants.ZERO_INT);
instrHeaderCash.setStatusId(instrumentStatus);
instrHeaderCash.setInstrumentType(financialsUtil.getInstrumentTypeByType(CollectionConstants.INSTRUMENTTYPE_CASH));
session.saveOrUpdate(instrHeaderCash);
actualInstrList.add(instrHeaderCash);
action.setInstrHeaderCash(instrHeaderCash);
List<InstrumentHeader> instrList = new ArrayList<InstrumentHeader>();
instrList.add(instrHeaderCash);
List<Map<String, Object>> instrMapList = objectFactory.createMapForInstrumentHeader(instrList);
List<Map<String, Object>> instrVoucherMapList = new ArrayList<Map<String, Object>>();
instrumentService.addToInstrument(instrMapList);
expectLastCall().andReturn(actualInstrList);
instrumentService.updateInstrumentVoucherReference(instrVoucherMapList);
expectLastCall().andReturn(new ArrayList<InstrumentVoucher>());
replay(instrumentService);
EasyMock.expect(instrumentService.addToInstrument(EasyMock.isA(List.class))).andReturn(actualInstrList);
EasyMock.expect(instrumentService.updateInstrumentVoucherReference(EasyMock.isA(List.class))).andReturn(new ArrayList<InstrumentVoucher>());
replay(instrumentService);
String[] instrumentType = {};
action.setInstrumentType(instrumentType);
ReportService reportService = EasyMock.createMock(ReportService.class);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(false);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(true);
EasyMock.expect(reportService.createReport(EasyMock.isA(ReportRequest.class))).andReturn(new ReportOutput());
EasyMock.replay(reportService);
collectionCommon.setReportService(reportService);
assertEquals(action.saveOrupdate(), CollectionConstants.REPORT);
ReceiptHeader cancelledReceipt = (ReceiptHeader) genericService.find(
"from org.egov.collection.entity.ReceiptHeader where id=?",
action.getReceiptHeader().getReceiptHeader().getId());
assertEquals(CollectionConstants.RECEIPT_STATUS_CODE_CANCELLED, cancelledReceipt.getStatus().getCode());
}
@Test
public void testSaveReceiptForCash(){
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
Location location = objectFactory.createCounter("test");
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_COUNTERID, location.getId().toString());
action.setSession(sessionMap);
ReceiptPayeeDetails payee = objectFactory.createPayeeForChallan();
ReceiptHeader receiptHeader = payee.getReceiptHeaders().iterator().next();
action.setReceiptHeader(receiptHeader);
action.setInstrumentTypeCashOrCard(CollectionConstants.INSTRUMENTTYPE_CASH);
CChartOfAccounts cashOnHand = objectFactory.createCOA("TestcashInHand");
Map<String, Object> cashChequeInfoMap = new HashMap();
cashChequeInfoMap.put(CollectionConstants.MAP_KEY_EGOVCOMMON_CASHINHAND, cashOnHand.getGlcode());
egovCommon.getCashChequeInfoForBoundary();
expectLastCall().andReturn(cashChequeInfoMap);
// replay(egovCommon);
try {
EasyMock.expect(egovCommon.getEntityType(EasyMock.isA(Accountdetailtype.class), EasyMock.isA(Integer.class))).andReturn(null);
} catch (ApplicationException e) {
//
}
replay(egovCommon);
commonsManager.getCChartOfAccountsByGlCode(cashOnHand.getGlcode());
expectLastCall().andReturn(cashOnHand);
replay(commonsManager);
EgwStatus instrumentStatus = (EgwStatus) genericService.find(
"from EgwStatus S where S.moduletype =? and S.description =?",
CollectionConstants.MODULE_NAME_INSTRUMENTHEADER,
CollectionConstants.INSTRUMENT_NEW_STATUS);
InstrumentHeader instrHeaderCash = new InstrumentHeader();
List<InstrumentHeader> actualInstrList = new ArrayList<InstrumentHeader>();
instrHeaderCash.setInstrumentAmount(new BigDecimal(1000.0));
instrHeaderCash.setIsPayCheque(CollectionConstants.ZERO_INT);
instrHeaderCash.setStatusId(instrumentStatus);
instrHeaderCash.setInstrumentType(financialsUtil.getInstrumentTypeByType(CollectionConstants.INSTRUMENTTYPE_CASH));
session.saveOrUpdate(instrHeaderCash);
actualInstrList.add(instrHeaderCash);
action.setInstrHeaderCash(instrHeaderCash);
List<InstrumentHeader> instrList = new ArrayList<InstrumentHeader>();
instrList.add(instrHeaderCash);
List<Map<String, Object>> instrMapList = objectFactory.createMapForInstrumentHeader(instrList);
List<Map<String, Object>> instrVoucherMapList = new ArrayList<Map<String, Object>>();
instrumentService.addToInstrument(instrMapList);
expectLastCall().andReturn(actualInstrList);
instrumentService.updateInstrumentVoucherReference(instrVoucherMapList);
expectLastCall().andReturn(new ArrayList<InstrumentVoucher>());
replay(instrumentService);
String[] instrumentType = {};
action.setInstrumentType(instrumentType);
//expect(egovCommon.getEntityType(EasyMock.isA(Accountdetailtype.class),EasyMock.isA(Integer.class))).andReturn(null).anyTimes();
//expect(receiptWorkflowServiceMock.transition(EasyMock.isA(String.class), EasyMock.isA(StateAware.class), EasyMock.isA(String.class)));
//EasyMock.replay(receiptWorkflowServiceMock);
ReportService reportService = EasyMock.createMock(ReportService.class);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(false);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(true);
EasyMock.expect(reportService.createReport(EasyMock.isA(ReportRequest.class))).andReturn(new ReportOutput());
EasyMock.replay(reportService);
collectionCommon.setReportService(reportService);
assertEquals(action.saveOrupdate(), CollectionConstants.REPORT);
assertFalse(action.getReceiptHeader().getIsReconciled());
assertTrue(action.getReceiptHeader().getIsModifiable());
assertEquals(action.getReceiptHeader().getCollectiontype(),CollectionConstants.COLLECTION_TYPE_COUNTER);
assertEquals(action.getReceiptHeader().getStatus().getCode(),CollectionConstants.RECEIPT_STATUS_CODE_APPROVED);
}
@Test
public void testSaveReceiptForCard(){
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
Location location = objectFactory.createCounter("test");
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_COUNTERID, location.getId().toString());
action.setSession(sessionMap);
ReceiptPayeeDetails payee = objectFactory.createPayeeForChallan();
ReceiptHeader receiptHeader = payee.getReceiptHeaders().iterator().next();
action.setReceiptHeader(receiptHeader);
action.setInstrumentTypeCashOrCard(CollectionConstants.INSTRUMENTTYPE_CARD);
CChartOfAccounts cashOnHand = objectFactory.createCOA("TestcashInHand");
Map<String, Object> cashChequeInfoMap = new HashMap();
cashChequeInfoMap.put(CollectionConstants.MAP_KEY_EGOVCOMMON_CASHINHAND, cashOnHand.getGlcode());
egovCommon.getCashChequeInfoForBoundary();
expectLastCall().andReturn(cashChequeInfoMap);
// replay(egovCommon);
try {
EasyMock.expect(egovCommon.getEntityType(EasyMock.isA(Accountdetailtype.class), EasyMock.isA(Integer.class))).andReturn(null);
} catch (ApplicationException e) {
//
}
replay(egovCommon);
commonsManager.getCChartOfAccountsByGlCode(cashOnHand.getGlcode());
expectLastCall().andReturn(cashOnHand);
replay(commonsManager);
EgwStatus instrumentStatus = (EgwStatus) genericService.find(
"from EgwStatus S where S.moduletype =? and S.description =?",
CollectionConstants.MODULE_NAME_INSTRUMENTHEADER,
CollectionConstants.INSTRUMENT_NEW_STATUS);
InstrumentHeader instrHeaderCard = new InstrumentHeader();
List<InstrumentHeader> actualInstrList = new ArrayList<InstrumentHeader>();
instrHeaderCard.setInstrumentAmount(new BigDecimal(1000));
instrHeaderCard.setStatusId(instrumentStatus);
instrHeaderCard.setTransactionNumber("12345");
instrHeaderCard.setTransactionDate(new Date());
instrHeaderCard.setIsPayCheque(CollectionConstants.ZERO_INT);
instrHeaderCard.setInstrumentType(financialsUtil.getInstrumentTypeByType(CollectionConstants.INSTRUMENTTYPE_CARD));
session.saveOrUpdate(instrHeaderCard);
actualInstrList.add(instrHeaderCard);
action.setInstrHeaderCard(instrHeaderCard);
List<InstrumentHeader> instrList = new ArrayList<InstrumentHeader>();
instrList.add(instrHeaderCard);
List<Map<String, Object>> instrMapList = objectFactory.createMapForInstrumentHeader(instrList);
List<Map<String, Object>> instrVoucherMapList = new ArrayList<Map<String, Object>>();
instrumentService.addToInstrument(instrMapList);
expectLastCall().andReturn(actualInstrList);
instrumentService.updateInstrumentVoucherReference(instrVoucherMapList);
expectLastCall().andReturn(new ArrayList<InstrumentVoucher>());
replay(instrumentService);
String[] instrumentType = {};
action.setInstrumentType(instrumentType);
ReportService reportService = EasyMock.createMock(ReportService.class);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(false);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(true);
EasyMock.expect(reportService.createReport(EasyMock.isA(ReportRequest.class))).andReturn(new ReportOutput());
EasyMock.replay(reportService);
collectionCommon.setReportService(reportService);
assertEquals(action.saveOrupdate(), CollectionConstants.REPORT);
assertFalse(action.getReceiptHeader().getIsReconciled());
assertTrue(action.getReceiptHeader().getIsModifiable());
assertEquals(action.getReceiptHeader().getCollectiontype(),CollectionConstants.COLLECTION_TYPE_COUNTER);
assertEquals(action.getReceiptHeader().getStatus().getCode(),CollectionConstants.RECEIPT_STATUS_CODE_APPROVED);
}
@Test
public void testSaveReceiptForCheque() throws Exception{
ReceiptPayeeDetails payee = objectFactory.createPayeeForChallan();
ReceiptHeader receiptHeader = payee.getReceiptHeaders().iterator().next();
action.setReceiptHeader(receiptHeader);
Bank bank = objectFactory.createBank();
commonsManager.getBankById(Integer.valueOf(bank.getId()));
expectLastCall().andReturn(bank).anyTimes();
CChartOfAccounts chequeInHand = objectFactory.createCOA("TestcchequeInHand");
Map<String, Object> cashChequeInfoMap = new HashMap();
cashChequeInfoMap.put(CollectionConstants.MAP_KEY_EGOVCOMMON_CHEQUEINHAND, chequeInHand.getGlcode());
egovCommon.getCashChequeInfoForBoundary();
expectLastCall().andReturn(cashChequeInfoMap);
// replay(egovCommon);
try {
EasyMock.expect(egovCommon.getEntityType(EasyMock.isA(Accountdetailtype.class), EasyMock.isA(Integer.class))).andReturn(null);
} catch (ApplicationException e) {
//
}
replay(egovCommon);;
commonsManager.getCChartOfAccountsByGlCode(chequeInHand.getGlcode());
expectLastCall().andReturn(chequeInHand);
CVoucherHeader voucherHeader = new CVoucherHeader();
commonsManager.findVoucherHeaderById(null);
expectLastCall().andReturn(voucherHeader);
replay(commonsManager);
HashMap<String, Object> sessionMap = new HashMap<String, Object>();
Location location = objectFactory.createCounter("test");
sessionMap.put("com.egov.user.LoginUserName", "egovernments");
sessionMap.put(CollectionConstants.SESSION_VAR_LOGIN_USER_COUNTERID, location.getId().toString());
action.setSession(sessionMap);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String vdt = sdf.format(date);
date = sdf.parse(vdt);
String[] instrumentType = new String[2];
String[] instrAmt = new String[2];
String[] branchName = new String[2];
String[] instrNum = new String[2];
String[] bankId = new String[2];
String[] instrDate = new String[2];
instrumentType[0]=CollectionConstants.INSTRUMENTTYPE_CHEQUE;
instrAmt[0]="1000.0";
branchName[0]="1001";
instrNum[0]="1001";
bankId[0]=bank.getId().toString();
instrDate[0]=vdt;
instrumentType[1]=CollectionConstants.INSTRUMENTTYPE_DD;
instrAmt[1]="1000.0";
branchName[1]="1001";
instrNum[1]="1001";
bankId[1]=bank.getId().toString();
instrDate[1]=vdt;
EgwStatus instrumentStatus = (EgwStatus) genericService.find(
"from EgwStatus S where S.moduletype =? and S.description =?",
CollectionConstants.MODULE_NAME_INSTRUMENTHEADER,
CollectionConstants.INSTRUMENT_NEW_STATUS);
InstrumentHeader chqInstrumentHeader=objectFactory.createInstrumentHeaderWithBankDetails(
financialsUtil.getInstrumentTypeByType(CollectionConstants.INSTRUMENTTYPE_CHEQUE),
instrNum[0],Double.valueOf(instrAmt[0]),date,
instrumentStatus,bank,branchName[0],"0");
InstrumentHeader ddInstrumentHeader=objectFactory.createInstrumentHeaderWithBankDetails(
financialsUtil.getInstrumentTypeByType(CollectionConstants.INSTRUMENTTYPE_DD),
instrNum[1],Double.valueOf(instrAmt[1]),date,
instrumentStatus,bank,branchName[1],"0");
List<InstrumentHeader> actualInstrList = new ArrayList<InstrumentHeader>();
actualInstrList.add(chqInstrumentHeader);
actualInstrList.add(ddInstrumentHeader);
List<InstrumentHeader> instrList = new ArrayList<InstrumentHeader>();
instrList.add(chqInstrumentHeader);
instrList.add(ddInstrumentHeader);
List<Map<String, Object>> instrMapList = objectFactory.createMapForInstrumentHeader(instrList);
instrumentService.addToInstrument(instrMapList);
expectLastCall().andReturn(actualInstrList);
instrumentService.updateInstrumentVoucherReference(new ArrayList());
expectLastCall().andReturn(new ArrayList<InstrumentVoucher>());
replay(instrumentService);
action.setInstrumentProxyList(actualInstrList);
action.setInstrumentAmount(instrAmt);
action.setInstrumentType(instrumentType);
action.setInstrumentBranchName(branchName);
action.setInstrumentNumber(instrNum);
action.setInstrumentBankId(bankId);
action.setInstrumentDate(instrDate);
ReportService reportService = EasyMock.createMock(ReportService.class);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(false);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(true);
EasyMock.expect(reportService.createReport(EasyMock.isA(ReportRequest.class))).andReturn(new ReportOutput());
EasyMock.replay(reportService);
collectionCommon.setReportService(reportService);
assertEquals(action.saveOrupdate(), CollectionConstants.REPORT);
}
@Test
public void testPrintChallan(){
ReportService reportService = EasyMock.createMock(ReportService.class);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(false);
EasyMock.expect(reportService.isValidTemplate(EasyMock.isA(String.class))).andReturn(true);
EasyMock.expect(reportService.createReport(EasyMock.isA(ReportRequest.class))).andReturn(new ReportOutput());
EasyMock.replay(reportService);
collectionCommon.setReportService(reportService);
action.setSession(new HashMap());
ReceiptHeader receiptHeader=objectFactory.createReceiptHeaderForChallan();
action.setReceiptHeader(receiptHeader);
String result =action.printChallan();
assertEquals("report",result);
assertEquals(0,action.getReportId());
assertEquals("viewChallan",action.getSourcePage());
}
@Test
public void testValidActions(){
action.setChallanWorkflowService(challanWorkflowService);
// TEST VALID ACTIONS WHEN CHALLAN IS TO BE CREATED - ie.,
// not associated with any state
action.setReceiptHeader(new ReceiptHeader());
List<String> actionNames = new ArrayList<String>();
for(Action wflowAction : action.getValidActions())
{
actionNames.add(wflowAction.getName());
}
assertEquals(actionNames.size(), 1);
assertTrue(actionNames.contains("CHALLAN_NEW"));
//TEST VALID ACTIONS WHEN CHALLAN IS CREATED
actionNames.clear();
State state = objectFactory.createState("Challan", "CREATED");
Challan challan = new Challan();
challan.changeState(state);
action.getReceiptHeader().setChallan(challan);
//action.getReceiptHeader().getChallan().changeState(state);
for(Action wflowAction : action.getValidActions())
{
actionNames.add(wflowAction.getName());
}
assertEquals(actionNames.size(), 2);
assertTrue(actionNames.contains("CHALLAN_CHECK"));
assertTrue(actionNames.contains("CHALLAN_REJECT"));
//TEST VALID ACTIONS WHEN CHALLAN IS CHECKED
actionNames.clear();
state = objectFactory.createState("Challan", "CHECKED");
action.getReceiptHeader().getChallan().changeState(state);
for(Action wflowAction : action.getValidActions())
{
actionNames.add(wflowAction.getName());
}
assertEquals(actionNames.size(), 2);
assertTrue(actionNames.contains("CHALLAN_APPROVE"));
assertTrue(actionNames.contains("CHALLAN_REJECT"));
//TEST VALID ACTIONS WHEN CHALLAN IS APPROVED
actionNames.clear();
state = objectFactory.createState("Challan", "APPROVED");
action.getReceiptHeader().getChallan().changeState(state);
for(Action wflowAction : action.getValidActions())
{
actionNames.add(wflowAction.getName());
}
assertEquals(actionNames.size(), 1);
assertTrue(actionNames.contains("CHALLAN_VALIDATE"));
//TEST VALID ACTIONS WHEN CHALLAN IS REJECTED
actionNames.clear();
state = objectFactory.createState("Challan", "REJECTED");
action.getReceiptHeader().getChallan().changeState(state);
for(Action wflowAction : action.getValidActions())
{
actionNames.add(wflowAction.getName());
}
assertEquals(actionNames.size(), 2);
assertTrue(actionNames.contains("CHALLAN_MODIFY"));
assertTrue(actionNames.contains("CHALLAN_CANCEL"));
//TEST VALID ACTIONS WHEN CHALLAN IS VALIDATED
actionNames.clear();
state = objectFactory.createState("Challan", "VALIDATED");
action.getReceiptHeader().getChallan().changeState(state);
for(Action wflowAction : action.getValidActions())
{
actionNames.add(wflowAction.getName());
}
assertEquals(actionNames.size(), 1);
assertTrue(actionNames.contains(""));
}
@Test
public void testCancelReceipt(){
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderWithChallan();
action.setSelectedReceipts(new Long[1]);
action.getSelectedReceipts()[0]=receiptHeader.getId();
assertEquals(CollectionConstants.CANCELRECEIPT, action.cancelReceipt());
assertEquals(action.getReceiptHeader(),receiptHeader);
}
@Test
public void testCancelInvalidChallanReceipt(){
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderWithInstrument(
"testReceiptNo", CollectionConstants.RECEIPT_TYPE_CHALLAN,
CollectionConstants.RECEIPT_STATUS_DESC_CREATED, "testReferenceNo",
objectFactory.createInstrumentType(CollectionConstants.INSTRUMENTTYPE_CHEQUE),
"testInstrNo", Double.valueOf(1000), new Date(),
CollectionConstants.INSTRUMENT_DEPOSITED_STATUS, "testGLCode",
"testFunctionName", "testUserName");
Challan challan = objectFactory.createChallan();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,-3);
challan.setValidUpto(cal.getTime());
cal.add(Calendar.DATE,-3);
challan.setChallanDate(cal.getTime());
challan.setReceiptHeader(receiptHeader);
receiptHeader.setChallan(challan);
ReceiptPayeeDetails payee = objectFactory.createReceiptPayeeWithoutHeader();
receiptHeader.setReceiptPayeeDetails(payee);
payee.addReceiptHeader(receiptHeader);
receiptService.persist(payee);
ReceiptHeader saved = receiptHeaderService.findById(
payee.getReceiptHeaders().iterator().next().getId(), false);
action.setReceiptHeader(receiptHeader);
assertEquals(BaseFormAction.SUCCESS, action.saveOnCancel());
assertEquals(action.getReceiptHeader(),saved);
}
@Test
public void testSaveOnPostRemittanceCancellation(){
createEmployeeForLoggedInUser();
InstrumentType type = (InstrumentType) genericService.find(
"from InstrumentType where type=?",CollectionConstants.INSTRUMENTTYPE_CASH);
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderWithInstrument(
"testReceiptNo", CollectionConstants.RECEIPT_TYPE_CHALLAN,
CollectionConstants.RECEIPT_STATUS_DESC_CREATED, "testReferenceNo",
type,
"testInstrNo", Double.valueOf(1000), new Date(),
CollectionConstants.INSTRUMENT_RECONCILED_STATUS, "testGLCode",
"testFunctionName", "testUserName");
Challan challan = objectFactory.createChallan();
challan.setReceiptHeader(receiptHeader);
receiptHeader.setChallan(challan);
ReceiptPayeeDetails payee = objectFactory.createReceiptPayeeWithoutHeader();
receiptHeader.setReceiptPayeeDetails(payee);
payee.addReceiptHeader(receiptHeader);
receiptService.persist(payee);
ReceiptHeader saved = receiptHeaderService.findById(
payee.getReceiptHeaders().iterator().next().getId(), false);
action.setReceiptHeader(receiptHeader);
assertEquals(action.saveOnCancel(),CollectionConstants.CREATERECEIPT);
}
*//**
* Instrument has not been deposited
*//*
@Test
public void testSaveOnIntraDayCancel(){
ReceiptHeader receiptHeader = objectFactory.createReceiptHeaderWithInstrument(
"testReceiptNo", CollectionConstants.RECEIPT_TYPE_CHALLAN,
CollectionConstants.RECEIPT_STATUS_DESC_CREATED, "testReferenceNo",
objectFactory.createInstrumentType(CollectionConstants.INSTRUMENTTYPE_CASH),
"testInstrNo", Double.valueOf(1000), new Date(),
CollectionConstants.INSTRUMENT_NEW_STATUS, "testGLCode",
"testFunctionName", "testUserName");
Challan challan = objectFactory.createChallan();
challan.setReceiptHeader(receiptHeader);
receiptHeader.setChallan(challan);
ReceiptPayeeDetails payee = objectFactory.createReceiptPayeeWithoutHeader();
receiptHeader.setReceiptPayeeDetails(payee);
payee.addReceiptHeader(receiptHeader);
receiptService.persist(payee);
ReceiptHeader saved = receiptHeaderService.findById(
payee.getReceiptHeaders().iterator().next().getId(), false);
EgwStatus instrumentStatus = (EgwStatus) genericService.find("from EgwStatus S where S.moduletype =? and S.code =?",
CollectionConstants.MODULE_NAME_INSTRUMENTHEADER,
CollectionConstants.INSTRUMENTHEADER_STATUS_CANCELLED);
commonsManager.getStatusByModuleAndCode(CollectionConstants.MODULE_NAME_INSTRUMENTHEADER,
CollectionConstants.INSTRUMENTHEADER_STATUS_CANCELLED);
expectLastCall().andReturn(instrumentStatus);
replay(commonsManager);
action.setReceiptHeader(receiptHeader);
assertEquals(action.saveOnCancel(),BaseFormAction.SUCCESS);
assertEquals(action.getReceiptHeader().getStatus().getCode(),CollectionConstants.RECEIPT_STATUS_CODE_CANCELLED);
ReceiptHeader newreceiptHeader = (ReceiptHeader) genericService.find(
"from org.egov.collection.entity.ReceiptHeader receipt where receipt.receiptHeader.id=?",
action.getReceiptHeader().getId());
assertEquals(newreceiptHeader.getReceiptnumber(), null);
assertEquals(newreceiptHeader.getStatus().getCode(), CollectionConstants.RECEIPT_STATUS_CODE_PENDING);
}
*/}