001/** 002 * Copyright 2005-2014 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.kcb.service.impl; 017 018import org.junit.Test; 019import org.kuali.rice.kcb.bo.Message; 020import org.kuali.rice.kcb.bo.MessageDelivery; 021import org.kuali.rice.kcb.bo.MessageDeliveryStatus; 022import org.kuali.rice.kcb.service.GlobalKCBServiceLocator; 023import org.kuali.rice.kcb.service.MessageDeliveryService; 024import org.kuali.rice.kcb.service.MessageService; 025import org.kuali.rice.kcb.test.KCBTestCase; 026import org.kuali.rice.kcb.test.KCBTestData; 027import org.kuali.rice.krad.data.PersistenceOption; 028import org.kuali.rice.krad.service.KRADServiceLocator; 029import org.springframework.dao.DataAccessException; 030 031import java.util.Collection; 032 033import static org.junit.Assert.*; 034 035 036/** 037 * Tests MessageDeliveryService 038 * 039 * @author Kuali Rice Team (rice.collab@kuali.org) 040 * 041 */ 042public class MessageDeliveryServiceTest extends KCBTestCase { 043 private MessageService messageService; 044 private MessageDeliveryService messageDeliveryService; 045 private Message MESSAGE; 046 private MessageDelivery MESSAGE_DELIV; 047 048 @Override 049 public void setUp() throws Exception { 050 super.setUp(); 051 052 messageService = GlobalKCBServiceLocator.getInstance().getMessageService(); 053 messageDeliveryService = GlobalKCBServiceLocator.getInstance().getMessageDeliveryService(); 054 055 MESSAGE = KCBTestData.getMessage1(); 056 MESSAGE = messageService.saveMessage(MESSAGE); 057 058 MESSAGE_DELIV = KCBTestData.getMessageDelivery1(); 059 MESSAGE_DELIV.setMessage(MESSAGE); 060 061 MESSAGE_DELIV = messageDeliveryService.saveMessageDelivery(MESSAGE_DELIV); 062 } 063 064 @Test 065 public void testCreate() { 066 MessageDelivery md = new MessageDelivery(); 067 md.setDelivererTypeName("pigeon"); 068 md.setMessage(MESSAGE); 069 070 md = messageDeliveryService.saveMessageDelivery(md); 071 072 assertNotNull(md.getId()); 073 Collection<MessageDelivery> ms = messageDeliveryService.getAllMessageDeliveries(); 074 assertNotNull(ms); 075 assertEquals(2, ms.size()); 076 077 MessageDelivery md2 = messageDeliveryService.getMessageDelivery(md.getId()); 078 assertNotNull(md2); 079 080 assertEqualsMD(md, md2); 081 } 082 083 @Test 084 public void testDelete() { 085 messageDeliveryService.deleteMessageDelivery(MESSAGE_DELIV); 086 087 Collection<MessageDelivery> ms = messageDeliveryService.getAllMessageDeliveries(); 088 assertNotNull(ms); 089 assertEquals(0, ms.size()); 090 091 assertNull(messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId())); 092 } 093 094 @Test(expected = DataAccessException.class) 095 public void testDuplicateCreate() { 096 // violates messageid-deliverer constraint 097 final MessageDelivery md = new MessageDelivery(); 098 md.setId(KCBTestData.FAKE_ID); 099 md.setDelivererSystemId(MESSAGE_DELIV.getDelivererSystemId()); 100 md.setDelivererTypeName(MESSAGE_DELIV.getDelivererTypeName()); 101 md.setDeliveryStatus(MESSAGE_DELIV.getDeliveryStatus()); 102 md.setLockVerNbr(MESSAGE_DELIV.getLockVerNbr()); 103 md.setMessage(MESSAGE); 104 KRADServiceLocator.getDataObjectService().save(md, PersistenceOption.FLUSH); 105 } 106 107 @Test(expected = DataAccessException.class) 108 public void testInvalidCreate() { 109 final MessageDelivery m = new MessageDelivery(); 110 messageDeliveryService.saveMessageDelivery(m); 111 KRADServiceLocator.getDataObjectService().save(m, PersistenceOption.FLUSH); 112 } 113 114 @Test 115 public void testInvalidRead() { 116 MessageDelivery m = messageDeliveryService.getMessageDelivery(Long.valueOf(-1)); 117 assertNull(m); 118 } 119 120 121 @Test(expected = DataAccessException.class) 122 public void testInvalidUpdate() { 123 final MessageDelivery m = messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId()); 124 m.setDelivererTypeName(null); 125 m.setDelivererSystemId(null); 126 KRADServiceLocator.getDataObjectService().save(m, PersistenceOption.FLUSH); 127 } 128 129 @Test 130 public void testReadById() { 131 MessageDelivery m = messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId()); 132 133 assertEqualsMD(MESSAGE_DELIV, m); 134 } 135 136 @Test 137 public void testUpdate() { 138 MessageDelivery m = messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId()); 139 m.setDelivererTypeName("eagle"); 140 m.setDeliveryStatus(MessageDeliveryStatus.UNDELIVERED); 141 m.setDelivererSystemId("1234"); 142 messageDeliveryService.saveMessageDelivery(m); 143 144 MessageDelivery m2 = messageDeliveryService.getMessageDelivery(m.getId()); 145 assertNotNull(m2); 146 147 assertEqualsMD(m, m2); 148 } 149 150 private void assertEqualsMD(MessageDelivery expected, MessageDelivery actual) { 151 assertEquals(expected.getId(), actual.getId()); 152 assertEquals(expected.getDelivererSystemId(), actual.getDelivererSystemId()); 153 assertEquals(expected.getDelivererTypeName(), actual.getDelivererTypeName()); 154 assertEquals(expected.getDeliveryStatus(), actual.getDeliveryStatus()); 155 assertEquals(expected.getMessage().getId(), actual.getMessage().getId()); 156 } 157}