/*
* Copyright (c) 2005-2011 Grameen Foundation USA
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* See also http://www.apache.org/licenses/LICENSE-2.0.html for an
* explanation of the license and how it is applied.
*/
package org.mifos.accounts.business;
import java.sql.Connection;
import junit.framework.Assert;
import org.hibernate.Session;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mifos.framework.MifosIntegrationTestCase;
import org.mifos.framework.hibernate.helper.StaticHibernateUtil;
import org.mifos.framework.persistence.Upgrade;
public class AddAccountActionIntegrationTest extends MifosIntegrationTestCase {
private Session session;
private Connection connection;
private static final short SEND_TO_ORPHANS = 43;
@Before
public void setUp() throws Exception {
session = StaticHibernateUtil.getSessionTL();
connection = session.connection();
// connection.setAutoCommit(true);
}
@After
public void tearDown() throws Exception {
StaticHibernateUtil.flushSession();
connection = null;
session = null;
}
public void startFromStandardStore() throws Exception {
Upgrade upgrade = new AddAccountAction(SEND_TO_ORPHANS, "Send money to orphans");
upgradeAndCheck(upgrade);
}
private void upgradeAndCheck(Upgrade upgrade) throws Exception {
upgrade.upgrade(connection);
AccountActionEntity action = (AccountActionEntity) session.get(AccountActionEntity.class, SEND_TO_ORPHANS);
Assert.assertEquals(SEND_TO_ORPHANS, (short) action.getId());
Assert.assertEquals(" ", action.getLookUpValue().getLookUpName());
}
@Test
public void testValidateLookupValueKey() throws Exception {
String validKey = "AccountAction-LoanRepayment";
String format = "AccountAction-";
Assert.assertTrue(AddAccountAction.validateLookupValueKey(format, validKey));
String invalidKey = "Action-LoanRepayment";
Assert.assertFalse(AddAccountAction.validateLookupValueKey(format, invalidKey));
}
@Test
public void testConstructor() throws Exception {
short newId = 31000;
AddAccountAction upgrade = null;
String invalidKey = "NewAccountAction";
try {
// use invalid lookup key format
upgrade = new AddAccountAction(newId, invalidKey);
} catch (Exception e) {
Assert.assertEquals(e.getMessage(), AddAccountAction.WRONG_KEY_FORMAT);
}
String goodKey = "AccountAction-NewAccountAction";
// use valid constructor and valid key
upgrade = new AddAccountAction(newId, goodKey);
upgrade.upgrade(connection);
AccountActionEntity action = (AccountActionEntity) session.get(AccountActionEntity.class, newId);
Assert.assertEquals(goodKey, action.getLookUpValue().getLookUpName());
}
}