001 /*
002 * Copyright 2007 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.ken.dao;
017
018 import java.util.HashMap;
019
020 import org.kuali.rice.ken.bo.NotificationChannel;
021 import org.kuali.rice.ken.bo.UserChannelSubscription;
022 import org.kuali.rice.ken.test.util.MockObjectsUtil;
023 import org.kuali.rice.ken.util.NotificationConstants;
024
025
026 /**
027 * This class test basic persistence for the UserChannelSubscription business object.
028 *
029 * @author Kuali Rice Team (rice.collab@kuali.org)
030 */
031 public class UserChannelSubscriptionDaoTest extends BusinessObjectPersistenceTestCaseBase {
032 NotificationChannel channel1 = MockObjectsUtil.getTestChannel1();
033 NotificationChannel channel2 = MockObjectsUtil.getTestChannel2();
034
035 UserChannelSubscription subscription1 = new UserChannelSubscription();
036 UserChannelSubscription subscription2 = new UserChannelSubscription();
037
038 private String[] userIds = {"ag266", "jaf30"};
039 private String[] updatedUserIds = {"bh79", "arh14"};
040
041 /**
042 * @see org.kuali.rice.ken.dao.BusinessObjectPersistenceTestCaseBase#setup()
043 */
044 @Override
045 protected void setup() {
046 businessObjectDao.save(channel1);
047 businessObjectDao.save(channel2);
048 }
049
050 /**
051 * @see org.kuali.rice.ken.dao.BusinessObjectPersistenceTestCaseBase#delete()
052 */
053 @Override
054 protected boolean delete() {
055 try {
056 businessObjectDao.delete(subscription1);
057 businessObjectDao.delete(subscription2);
058 } catch(Exception e) {
059 return false;
060 }
061 return true;
062 }
063
064 /**
065 * @see org.kuali.rice.ken.dao.BusinessObjectPersistenceTestCaseBase#retrieve()
066 */
067 @Override
068 protected boolean retrieve() {
069 subscription1 = null;
070 subscription2 = null;
071
072 HashMap criteria = new HashMap();
073
074 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.CHANNEL_ID, channel1.getId());
075 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.USER_ID, userIds[0]);
076 subscription1 = (UserChannelSubscription) businessObjectDao.findByUniqueKey(UserChannelSubscription.class, criteria);
077
078 criteria.clear();
079
080 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.CHANNEL_ID, channel2.getId());
081 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.USER_ID, userIds[1]);
082 subscription2 = (UserChannelSubscription) businessObjectDao.findByUniqueKey(UserChannelSubscription.class, criteria);
083
084 boolean success = true;
085
086 success &= subscription1 != null;
087 success &= subscription1.getId()>0;
088 success &= subscription1.getChannel().getId().equals(channel1.getId());
089
090 success &= subscription2 != null;
091 success &= subscription2.getId()>0;
092 success &= subscription2.getChannel().getId().equals(channel2.getId());
093
094 return success;
095 }
096
097 /**
098 * @see org.kuali.rice.ken.dao.BusinessObjectPersistenceTestCaseBase#insert()
099 */
100 @Override
101 protected boolean insert() {
102 subscription1.setChannel(channel1);
103 subscription1.setUserId(userIds[0]);
104
105 subscription2.setChannel(channel2);
106 subscription2.setUserId(userIds[1]);
107
108 try {
109 businessObjectDao.save(subscription1);
110 businessObjectDao.save(subscription2);
111 } catch(Exception e) {
112 return false;
113 }
114 return true;
115 }
116
117 /**
118 * @see org.kuali.rice.ken.dao.BusinessObjectPersistenceTestCaseBase#update()
119 */
120 @Override
121 protected boolean update() {
122 subscription1.setUserId(updatedUserIds[0]);
123
124 subscription2.setUserId(updatedUserIds[1]);
125
126 try {
127 businessObjectDao.save(subscription1);
128 businessObjectDao.save(subscription2);
129 } catch(Exception e) {
130 return false;
131 }
132 return true;
133 }
134
135 /**
136 * @see org.kuali.rice.ken.dao.BusinessObjectPersistenceTestCaseBase#validateChanges()
137 */
138 @Override
139 protected boolean validateChanges() {
140 subscription1 = new UserChannelSubscription();
141 subscription2 = new UserChannelSubscription();
142
143 HashMap criteria = new HashMap();
144
145 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.CHANNEL_ID, channel1.getId());
146 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.USER_ID, updatedUserIds[0]);
147 subscription1 = (UserChannelSubscription) businessObjectDao.findByUniqueKey(UserChannelSubscription.class, criteria);
148
149 criteria.clear();
150
151 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.CHANNEL_ID, channel2.getId());
152 criteria.put(NotificationConstants.BO_PROPERTY_NAMES.USER_ID, updatedUserIds[1]);
153 subscription2 = (UserChannelSubscription) businessObjectDao.findByUniqueKey(UserChannelSubscription.class, criteria);
154
155 boolean success = true;
156
157 success &= subscription1 != null;
158 success &= subscription1.getId()>0;
159 success &= subscription1.getChannel().getId().equals(channel1.getId());
160 success &= subscription1.getUserId().equals(updatedUserIds[0]);
161
162 success &= subscription2 != null;
163 success &= subscription2.getId()>0;
164 success &= subscription2.getChannel().getId().equals(channel2.getId());
165 success &= subscription2.getUserId().equals(updatedUserIds[1]);
166
167 return success;
168 }
169 }