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.ken.services.impl;
017    
018    import org.junit.Test;
019    import org.kuali.rice.ken.bo.NotificationChannelBo;
020    import org.kuali.rice.ken.bo.UserChannelSubscriptionBo;
021    import org.kuali.rice.ken.service.UserPreferenceService;
022    import org.kuali.rice.ken.test.KENTestCase;
023    import org.kuali.rice.ken.test.TestConstants;
024    import org.kuali.rice.ken.util.NotificationConstants;
025    import org.kuali.rice.test.BaselineTestCase.BaselineMode;
026    import org.kuali.rice.test.BaselineTestCase.Mode;
027    
028    import java.util.Collection;
029    import java.util.HashMap;
030    
031    import static org.junit.Assert.*;
032    
033    /**
034     * This class tests the user preferences service impl.
035     * @author Kuali Rice Team (rice.collab@kuali.org)
036     */
037    @BaselineMode(Mode.CLEAR_DB)
038    public class UserPreferenceServiceImplTest extends KENTestCase {
039        public static final String VALID_USER_ID = TestConstants.TEST_USER_ONE;
040        public static final String VALID_CHANNEL_ID = TestConstants.VALID_CHANNEL_ONE_ID.toString();
041        public static final Long VALID_CHANNEL_ID_LONG = TestConstants.VALID_CHANNEL_ONE_ID;
042        //public static final String VALID_DELIVERER_NAME = EmailMessageDeliverer.NAME;
043        public static final String[] CHANNEL_SELECTED = { TestConstants.VALID_CHANNEL_ONE_ID.toString() };
044        //public static final String VALID_PROPERTY = EmailMessageDeliverer.NAME + "." + EmailMessageDeliverer.EMAIL_ADDR_PREF_KEY;
045        public static final String VALID_VALUE = TestConstants.EMAIL_DELIVERER_PROPERTY_VALUE;
046    
047        public UserPreferenceServiceImplTest() {
048        }
049    
050        @Test
051        public void testSubscribeToChannel() {
052            UserPreferenceService impl = services.getUserPreferenceService();
053            HashMap primaryKeys = new HashMap();
054            primaryKeys.put(NotificationConstants.BO_PROPERTY_NAMES.ID, VALID_CHANNEL_ID_LONG);
055            NotificationChannelBo
056                    channel = (NotificationChannelBo) services.getGenericDao().findByPrimaryKey(NotificationChannelBo.class, primaryKeys);
057    
058            UserChannelSubscriptionBo newSub = new UserChannelSubscriptionBo();
059            newSub.setUserId(VALID_USER_ID);
060            newSub.setChannel(channel);
061            impl.subscribeToChannel(newSub);
062            UserChannelSubscriptionBo sub = impl.getSubscription(VALID_CHANNEL_ID, VALID_USER_ID);
063            assertNotNull(sub);
064            assertEquals(VALID_USER_ID, sub.getUserId());
065            assertEquals(VALID_CHANNEL_ID_LONG, sub.getChannel().getId());
066    
067        }
068        @Test
069        public void testGetCurrentSubscriptions() {
070            UserPreferenceService impl = services.getUserPreferenceService();
071            HashMap primaryKeys = new HashMap();
072            primaryKeys.put(NotificationConstants.BO_PROPERTY_NAMES.ID, VALID_CHANNEL_ID_LONG);
073            NotificationChannelBo
074                    channel = (NotificationChannelBo) services.getGenericDao().findByPrimaryKey(NotificationChannelBo.class, primaryKeys);
075    
076            UserChannelSubscriptionBo newSub = new UserChannelSubscriptionBo();
077            newSub.setUserId(VALID_USER_ID);
078            newSub.setChannel(channel);
079            impl.subscribeToChannel(newSub);
080            Collection<UserChannelSubscriptionBo> subs = impl.getCurrentSubscriptions(VALID_USER_ID);
081            assertEquals(1, subs.size());
082        }
083    
084        @Test
085        public void testUnsubscribeFromChannel() {
086            UserPreferenceService impl = services.getUserPreferenceService();
087            HashMap primaryKeys = new HashMap();
088            primaryKeys.put(NotificationConstants.BO_PROPERTY_NAMES.ID, VALID_CHANNEL_ID_LONG);
089            NotificationChannelBo
090                    channel = (NotificationChannelBo) services.getGenericDao().findByPrimaryKey(NotificationChannelBo.class, primaryKeys);
091    
092    
093            UserChannelSubscriptionBo newSub = new UserChannelSubscriptionBo();
094            newSub.setUserId(VALID_USER_ID);
095            newSub.setChannel(channel);
096            impl.subscribeToChannel(newSub);
097    
098            UserChannelSubscriptionBo userChannelSubscription = impl.getSubscription(VALID_CHANNEL_ID, VALID_USER_ID);
099            impl.unsubscribeFromChannel(userChannelSubscription);
100    
101            UserChannelSubscriptionBo sub = impl.getSubscription(VALID_CHANNEL_ID, VALID_USER_ID);
102            assertNull(sub);
103    
104        }
105    
106    }