package fi.arcusys.koku.common.service;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNull;
import java.util.Date;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import fi.arcusys.koku.common.service.datamodel.Authorization;
import fi.arcusys.koku.common.service.datamodel.AuthorizationArea;
import fi.arcusys.koku.common.service.datamodel.AuthorizationReplyStatus;
import fi.arcusys.koku.common.service.datamodel.AuthorizationTemplate;
import fi.arcusys.koku.common.service.datamodel.AuthorizationType;
/**
* @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi)
* Sep 12, 2011
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/test-common-context.xml"})
public class AuthorizationDAOTest {
@Autowired
private AuthorizationTemplateDAO templateService;
@Autowired
private AuthorizationDAO service;
@Autowired
private CommonTestUtil testUtil;
@Test
public void testCreateRetrieveDeleteAuthorizationTemplate() {
final AuthorizationTemplate newTemplate = createNewTemplate(AuthorizationArea.HAK);
final String fromUserUid = "fromUser";
final String toUserUid = "toUser";
final String targetPersonUid = "targetPerson";
final Authorization authorization = new Authorization();
authorization.setFromUser(testUtil.getUserByUid(fromUserUid));
authorization.setToUser(testUtil.getUserByUid(toUserUid));
authorization.setTargetPerson(testUtil.getUserByUid(targetPersonUid));
authorization.setCreationType(AuthorizationType.Electronic);
authorization.setTemplate(newTemplate);
authorization.setValidTill(new Date());
authorization.setReplyComment("some comment");
authorization.setStatus(AuthorizationReplyStatus.Approved);
service.create(authorization);
assertNotNull("New authorization created: ", authorization);
assertEquals("Correct template: ", newTemplate.getId(), authorization.getTemplate().getId());
assertEquals("Correct from user: ", fromUserUid, authorization.getFromUser().getUid());
assertEquals("Correct to user: ", toUserUid, authorization.getToUser().getUid());
assertEquals("Correct target user: ", targetPersonUid, authorization.getTargetPerson().getUid());
assertNotNull("Create date added: ", authorization.getCreatedDate());
assertNotNull("Template have id: ", authorization.getId());
assertNotNull(authorization.getValidTill());
assertNotNull(authorization.getReplyComment());
final Authorization fromService = service.getById(authorization.getId());
assertNotNull("Authorization retreived by ID: ", fromService);
assertEquals(authorization.getTemplate(), fromService.getTemplate());
assertNotNull(fromService.getValidTill());
assertNotNull(fromService.getReplyComment());
assertEquals(authorization.getStatus(), fromService.getStatus());
// fromService.setValidTill(null);
// fromService.setReplyComment(null);
fromService.setStatus(AuthorizationReplyStatus.Declined);
service.update(fromService);
assertEquals(AuthorizationReplyStatus.Declined, service.getById(fromService.getId()).getStatus());
// assertNull(service.getById(fromService.getId()).getReplyComment());
// assertNull(service.getById(fromService.getId()).getValidTill());
service.delete(fromService);
assertNull("Authorization removed: ", service.getById(authorization.getId()));
}
private AuthorizationTemplate createNewTemplate(final AuthorizationArea area) {
return templateService.create(testUtil.createAuthorization(area));
}
}