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.ken.test.util;
017
018import org.kuali.rice.core.api.membership.MemberType;
019import org.kuali.rice.ken.bo.NotificationBo;
020import org.kuali.rice.ken.bo.NotificationChannelBo;
021import org.kuali.rice.ken.bo.NotificationChannelReviewerBo;
022import org.kuali.rice.ken.bo.NotificationContentTypeBo;
023import org.kuali.rice.ken.bo.NotificationPriorityBo;
024import org.kuali.rice.ken.bo.NotificationProducerBo;
025import org.kuali.rice.ken.bo.NotificationRecipientBo;
026import org.kuali.rice.ken.bo.NotificationSenderBo;
027import org.kuali.rice.kim.api.KimConstants.KimGroupMemberTypes;
028
029import java.sql.Timestamp;
030import java.util.List;
031
032/**
033 * This class helps to provide common mock objects for testing and also helper methods to build instances of objects.
034 * @author Kuali Rice Team (rice.collab@kuali.org)
035 */
036public final class MockObjectsUtil {
037        
038        private MockObjectsUtil() {
039                throw new UnsupportedOperationException("do not call");
040        }
041        
042    /**
043     * This method is a helper to build a NotificationChannel instance.
044     * @param name
045     * @param description
046     * @param subscribable
047     * @return NotificationChannel
048     */
049    public static final NotificationChannelBo buildTestNotificationChannel(String name, String description, boolean subscribable) {
050        NotificationChannelBo channel = new NotificationChannelBo();
051        channel.setName(name);
052        channel.setDescription(description);
053        channel.setSubscribable(subscribable);
054        return channel;
055    }
056
057    /**
058     * This method returns back a specific test mock object.
059     * @return NotificationChannel
060     */
061    public static final NotificationChannelBo getTestChannel1() {
062        return buildTestNotificationChannel("Test Channel 1", "Test Channel 1 - description", true);
063    }
064
065    /**
066     * This method returns back a specific test mock object.
067     * @return NotificationChannel
068     */
069    public static final NotificationChannelBo getTestChannel2() {
070        return buildTestNotificationChannel("Test Channel 2", "Test Channel 2 - description", false);
071    }
072
073    /**
074     * This method is a helper to build a NotificationProducer instance.
075     * @param name
076     * @param description
077     * @param contactInfo
078     * @return
079     */
080    public static final NotificationProducerBo buildTestNotificationProducer(String name, String description, String contactInfo) {
081        NotificationProducerBo producer = new NotificationProducerBo();
082        producer.setName(name);
083        producer.setDescription(description);
084        producer.setContactInfo(contactInfo);
085        return producer;
086    }
087
088    /**
089     * This method is a helper to build a NotificationChannelReviewer instance.
090     * @param reviewerType
091     * @param reviewerId
092     * @return
093     */
094    public static final NotificationChannelReviewerBo buildTestNotificationChannelReviewer(MemberType reviewerType, String reviewerId) {
095        NotificationChannelReviewerBo reviewer = new NotificationChannelReviewerBo();
096        reviewer.setReviewerType(reviewerType.getCode());
097        reviewer.setReviewerId(reviewerId);
098        return reviewer;
099    }
100
101    /**
102     * This method returns back a specific test mock object.
103     * @return NotificationProducer
104     */
105    public static final NotificationProducerBo getTestProducer1() {
106        return buildTestNotificationProducer("Produer 1", "Producer 1 - description", "Producer 1 - contact info");
107    }
108
109    /**
110     * This method is a helper to build a NotificationContentType instance.
111     * @param name
112     * @param description
113     * @param namespace
114     * @param xsd
115     * @return NotificationContentType
116     */
117    public static final NotificationContentTypeBo buildTestNotificationContentType(String name, String description, String namespace, String xsd, String xsl) {
118        NotificationContentTypeBo contentType = new NotificationContentTypeBo();
119        contentType.setName(name);
120        contentType.setDescription(description);
121        contentType.setNamespace(namespace);
122        contentType.setXsd(xsd);
123        contentType.setXsl(xsl);
124        return contentType;
125    }
126
127    /**
128     * This method returns back a specific test mock object.
129     * @return NotificationContentType
130     */
131    public static final NotificationContentTypeBo getTestContentType1() {
132        return buildTestNotificationContentType("Content Type 1", "Content Type 1 - description", "Content Type 1 - namespace", "Simple.xsd", "Simple.xsl");
133    }
134
135    /**
136     * This method is a helper to build a NotificationPriority instance.
137     * @param name
138     * @param description
139     * @param order
140     * @return NotificationPriority
141     */
142    public static final NotificationPriorityBo buildTestNotificationPriority(String name, String description, Integer order) {
143        NotificationPriorityBo priority = new NotificationPriorityBo();
144        priority.setName(name);
145        priority.setDescription(description);
146        priority.setOrder(order);
147        return priority;
148    }
149
150    /**
151     * This method returns back a specific test mock object.
152     * @return NotificationPriority
153     */
154    public static final NotificationPriorityBo getTestPriority1() {
155        return buildTestNotificationPriority("Priority 1", "Priority 1 - description", new Integer(1));
156    }
157
158    /**
159     * This method is a helper to build a NotificationRecipient instance.
160     * @param recipientId
161     * @param recipientType
162     * @return NotificationRecipient
163     */
164    public static final NotificationRecipientBo buildTestNotificationRecipient(String recipientId, MemberType recipientType) {
165        NotificationRecipientBo recipient = new NotificationRecipientBo();
166        recipient.setRecipientId(recipientId);
167        recipient.setRecipientType(recipientType.getCode());
168        return recipient;
169    }
170
171    /**
172     * This method returns back a specific test mock object.
173     * @return NotificationRecipient
174     */
175    public static final NotificationRecipientBo getTestRecipient1() {
176        return buildTestNotificationRecipient("ag266", KimGroupMemberTypes.PRINCIPAL_MEMBER_TYPE);
177    }
178
179    /**
180     * This method returns back a specific test mock object.
181     * @return NotificationRecipient
182     */
183    public static final NotificationRecipientBo getTestRecipient2() {
184         return buildTestNotificationRecipient("Notification Team", KimGroupMemberTypes.GROUP_MEMBER_TYPE);
185    }
186
187    /**
188     * This method is a helper to build a Notification instance.
189     * @param recipientId
190     * @param recipientType
191     * @return Notification
192     */
193    public static final NotificationBo buildTestNotification(String deliveryType, Timestamp sendDateTime, Timestamp autoRemoveDateTime, NotificationContentTypeBo contentType,
194            String content, NotificationPriorityBo priority, NotificationProducerBo producer, NotificationChannelBo channel, List<NotificationRecipientBo> recipients,
195            List<NotificationSenderBo> senders) {
196        NotificationBo notification = new NotificationBo();
197        notification.setCreationDateTimeValue(new Timestamp(System.currentTimeMillis()));
198        notification.setDeliveryType(deliveryType);
199        notification.setSendDateTimeValue(sendDateTime);
200        notification.setAutoRemoveDateTimeValue(autoRemoveDateTime);
201        notification.setContentType(contentType);
202        notification.setContent(content);
203        notification.setPriority(priority);
204        notification.setProducer(producer);
205        notification.setChannel(channel);
206        notification.setRecipients(recipients);
207        notification.setSenders(senders);
208
209        return notification;
210    }
211
212    /**
213     * This method is a helper to build a NotificationSender instance.
214     * @param userId
215     * @return NotificationSender
216     */
217    public static final NotificationSenderBo buildTestNotificationSender(String userId) {
218        NotificationSenderBo sender = new NotificationSenderBo();
219        sender.setSenderName(userId);
220        return sender;
221    }
222
223    /**
224     * This method returns back a specific test mock object.
225     * @return NotificationSender
226     */
227    public static final NotificationSenderBo getTestSender1() {
228        return buildTestNotificationSender("Joe Schmoe");
229    }
230
231    /**
232     * This method returns back a specific test mock object.
233     * @return NotificationSender
234     */
235    public static final NotificationSenderBo getTestSender2() {
236        return buildTestNotificationSender("John Doe");
237    }
238}