001 /** 002 * Copyright 2005-2011 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 */ 016 package org.kuali.rice.kcb.service.impl; 017 018 import org.junit.Test; 019 import org.kuali.rice.kcb.bo.Message; 020 import org.kuali.rice.kcb.bo.MessageDelivery; 021 import org.kuali.rice.kcb.bo.MessageDeliveryStatus; 022 import org.kuali.rice.kcb.service.GlobalKCBServiceLocator; 023 import org.kuali.rice.kcb.service.MessageDeliveryService; 024 import org.kuali.rice.kcb.service.MessageService; 025 import org.kuali.rice.kcb.test.BusinessObjectTestCase; 026 import org.kuali.rice.kcb.test.KCBTestData; 027 import org.springframework.dao.DataAccessException; 028 import org.springframework.dao.DataIntegrityViolationException; 029 030 import java.util.Collection; 031 032 import static org.junit.Assert.*; 033 034 035 /** 036 * Tests MessageDeliveryService 037 * 038 * @author Kuali Rice Team (rice.collab@kuali.org) 039 * 040 */ 041 public class MessageDeliveryServiceTest extends BusinessObjectTestCase { 042 private MessageService messageService; 043 private MessageDeliveryService messageDeliveryService; 044 private Message MESSAGE; 045 private MessageDelivery MESSAGE_DELIV; 046 047 @Override 048 public void setUp() throws Exception { 049 super.setUp(); 050 051 messageService = GlobalKCBServiceLocator.getInstance().getMessageService(); 052 messageDeliveryService = GlobalKCBServiceLocator.getInstance().getMessageDeliveryService(); 053 054 MESSAGE = KCBTestData.getMessage1(); 055 messageService.saveMessage(MESSAGE); 056 057 MESSAGE_DELIV = KCBTestData.getMessageDelivery1(); 058 MESSAGE_DELIV.setMessage(MESSAGE); 059 060 messageDeliveryService.saveMessageDelivery(MESSAGE_DELIV); 061 } 062 063 @Test 064 @Override 065 public void testCreate() { 066 MessageDelivery md = new MessageDelivery(); 067 md.setDelivererTypeName("pigeon"); 068 md.setMessage(MESSAGE); 069 070 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 @Override 085 public void testDelete() { 086 messageDeliveryService.deleteMessageDelivery(MESSAGE_DELIV); 087 088 Collection<MessageDelivery> ms = messageDeliveryService.getAllMessageDeliveries(); 089 assertNotNull(ms); 090 assertEquals(0, ms.size()); 091 092 assertNull(messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId())); 093 } 094 095 @Test(expected = DataIntegrityViolationException.class) 096 @Override 097 public void testDuplicateCreate() { 098 // violates messageid-deliverer constraint 099 final MessageDelivery md = new MessageDelivery(); 100 md.setId(KCBTestData.FAKE_ID); 101 md.setDelivererSystemId(MESSAGE_DELIV.getDelivererSystemId()); 102 md.setDelivererTypeName(MESSAGE_DELIV.getDelivererTypeName()); 103 md.setDeliveryStatus(MESSAGE_DELIV.getDeliveryStatus()); 104 md.setLockVerNbr(MESSAGE_DELIV.getLockVerNbr()); 105 md.setMessage(MESSAGE); 106 messageDeliveryService.saveMessageDelivery(md); 107 } 108 109 @Test(expected = DataIntegrityViolationException.class) 110 @Override 111 public void testInvalidCreate() { 112 final MessageDelivery m = new MessageDelivery(); 113 messageDeliveryService.saveMessageDelivery(m); 114 } 115 116 @Test(expected = DataAccessException.class) 117 @Override 118 public void testInvalidDelete() { 119 final MessageDelivery m = new MessageDelivery(); 120 m.setId(new Long(-1)); 121 // OJB yields an org.springmodules.orm.ojb.OjbOperationException/OptimisticLockException and claims the object 122 // may have been deleted by somebody else 123 messageDeliveryService.deleteMessageDelivery(m); 124 } 125 126 @Test 127 @Override 128 public void testInvalidRead() { 129 MessageDelivery m = messageDeliveryService.getMessageDelivery(Long.valueOf(-1)); 130 assertNull(m); 131 } 132 133 @Test(expected = DataAccessException.class) 134 @Override 135 public void testInvalidUpdate() { 136 final MessageDelivery m = messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId()); 137 m.setDelivererTypeName(null); 138 messageDeliveryService.saveMessageDelivery(m); 139 } 140 141 @Test 142 @Override 143 public void testReadById() { 144 MessageDelivery m = messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId()); 145 146 assertEqualsMD(MESSAGE_DELIV, m); 147 } 148 149 @Test 150 @Override 151 public void testUpdate() { 152 MessageDelivery m = messageDeliveryService.getMessageDelivery(MESSAGE_DELIV.getId()); 153 m.setDelivererTypeName("eagle"); 154 m.setDeliveryStatus(MessageDeliveryStatus.UNDELIVERED); 155 m.setDelivererSystemId("1234"); 156 messageDeliveryService.saveMessageDelivery(m); 157 158 MessageDelivery m2 = messageDeliveryService.getMessageDelivery(m.getId()); 159 assertNotNull(m2); 160 161 assertEqualsMD(m, m2); 162 } 163 164 private void assertEqualsMD(MessageDelivery expected, MessageDelivery actual) { 165 assertEquals(expected.getId(), actual.getId()); 166 assertEquals(expected.getDelivererSystemId(), actual.getDelivererSystemId()); 167 assertEquals(expected.getDelivererTypeName(), actual.getDelivererTypeName()); 168 assertEquals(expected.getDeliveryStatus(), actual.getDeliveryStatus()); 169 assertEquals(expected.getMessage().getId(), actual.getMessage().getId()); 170 } 171 }