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.dao;
017
018import org.junit.Test;
019import org.kuali.rice.core.api.criteria.QueryByCriteria;
020import org.kuali.rice.kcb.bo.RecipientPreference;
021import org.kuali.rice.kcb.test.KCBTestCase;
022import org.kuali.rice.krad.bo.DataObjectBase;
023import org.kuali.rice.krad.data.DataObjectService;
024import org.kuali.rice.krad.data.PersistenceOption;
025import org.kuali.rice.krad.service.KRADServiceLocator;
026
027import java.util.List;
028
029import static org.junit.Assert.assertEquals;
030import static org.junit.Assert.assertNotNull;
031
032import static org.kuali.rice.core.api.criteria.PredicateFactory.equal;
033
034/**
035 * This class test basic persistence for the RecipientPreference business object.
036 * 
037 * @author Kuali Rice Team (rice.collab@kuali.org)
038 */
039public class RecipientPreferenceDaoTest extends KCBTestCase {
040
041    private String[] recipientIds = {"unit_test_recip1", "unit_test_recip2"};
042    private String[] propertys = {"Property A", "Property B"};
043    private String[] values = {"Value A", "Value B"};
044    private String[] updatedValues = {"Value C", "Value D"};
045
046    /**
047     * Tests creating a {@link RecipientPreference}.
048     */
049    @Test
050    public void testCreate() {
051        RecipientPreference pref1 = createRecipientPreference(0);
052        assertNotNull(pref1.getId());
053
054        RecipientPreference pref2 = createRecipientPreference(1);
055        assertNotNull(pref2.getId());
056    }
057    
058    /**
059     * Tests finding a {@link RecipientPreference}.
060     */
061    @Test
062    public void testFind() {
063        RecipientPreference pref1 = createRecipientPreference(0);
064        RecipientPreference pref2 = createRecipientPreference(1);
065
066        QueryByCriteria.Builder criteria1 = QueryByCriteria.Builder.create();
067        criteria1.setPredicates(equal(RecipientPreference.RECIPIENT_FIELD, recipientIds[0]),
068                equal(RecipientPreference.PROPERTY_FIELD, propertys[0]));
069        List<RecipientPreference> prefs1 =
070                getDataObjectService().findMatching(RecipientPreference.class, criteria1.build()).getResults();
071
072        assertNotNull(pref1);
073        assertEquals(prefs1.size(), 1);
074
075        pref1 = prefs1.get(0);
076        assertNotNull(pref1);
077        assertEquals(recipientIds[0], pref1.getRecipientId());
078
079        QueryByCriteria.Builder criteria2 = QueryByCriteria.Builder.create();
080        criteria2.setPredicates(equal(RecipientPreference.RECIPIENT_FIELD, recipientIds[1]),
081                equal(RecipientPreference.PROPERTY_FIELD, propertys[1]));
082        List<RecipientPreference> prefs2 =
083                getDataObjectService().findMatching(RecipientPreference.class, criteria2.build()).getResults();
084
085        assertNotNull(pref2);
086        assertEquals(prefs2.size(), 1);
087        pref2 = prefs2.get(0);
088        assertNotNull(pref2);
089        assertEquals(recipientIds[1], pref2.getRecipientId());
090    }
091    
092    /**
093     * Tests updating a {@link RecipientPreference}.
094     */
095    @Test
096    public void testUpdate() {
097        RecipientPreference pref1 = createRecipientPreference(0);
098        RecipientPreference pref2 = createRecipientPreference(1);
099
100        pref1.setValue(updatedValues[0]);
101        pref2.setValue(updatedValues[1]);
102    
103        pref1 = KRADServiceLocator.getDataObjectService().save(pref1, PersistenceOption.FLUSH);
104        pref2 = KRADServiceLocator.getDataObjectService().save(pref2, PersistenceOption.FLUSH);
105        
106        assertEquals(updatedValues[0], pref1.getValue());
107        assertEquals(updatedValues[1], pref2.getValue());
108    }
109
110    /**
111     * Tests deleting a {@link RecipientPreference}.
112     */
113    @Test
114    public void testDelete() {
115        RecipientPreference pref1 = createRecipientPreference(0);
116        RecipientPreference pref2 = createRecipientPreference(1);
117
118        KRADServiceLocator.getDataObjectService().delete(pref1);
119        KRADServiceLocator.getDataObjectService().delete(pref2);
120
121        assertEquals(0, getDataObjectService().findAll(RecipientPreference.class).getResults().size());
122
123    }
124
125    private RecipientPreference createRecipientPreference(int index) {
126        RecipientPreference recipientPreference = new RecipientPreference();
127        recipientPreference.setRecipientId(recipientIds[index]);
128        recipientPreference.setProperty(propertys[index]);
129        recipientPreference.setValue(values[index]);
130
131        return getDataObjectService().save(recipientPreference, PersistenceOption.FLUSH);
132    }
133
134    private DataObjectService getDataObjectService() {
135        return KRADServiceLocator.getDataObjectService();
136    }
137
138}