001/**
002 * Copyright 2005-2016 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.kim.impl.common;
017
018import org.junit.Before;
019import org.junit.Test;
020import org.kuali.rice.kim.api.common.attribute.KimAttribute;
021import org.kuali.rice.kim.api.common.attribute.KimAttributeContract;
022import org.kuali.rice.kim.api.type.KimType;
023import org.kuali.rice.kim.api.type.KimTypeAttributeContract;
024import org.kuali.rice.kim.api.type.KimTypeContract;
025import org.kuali.rice.kim.api.type.KimTypeInfoService;
026import org.kuali.rice.kim.impl.common.attribute.KimAttributeDataBo;
027import org.kuali.rice.kim.impl.group.GroupAttributeBo;
028import org.kuali.rice.kim.impl.type.KimTypeBo;
029
030import java.util.ArrayList;
031import java.util.HashMap;
032import java.util.List;
033import java.util.Map;
034
035import static org.junit.Assert.*;
036import static org.mockito.Mockito.*;
037
038
039public class KimAttributeDataBoTest {
040
041    private static KimTypeContract mockKimTypeContract;
042    private static KimAttributeContract mockKimAttributeContract;
043
044    private KimTypeInfoService mockInfoService;
045
046    private static KimType create() {
047        return KimType.Builder.create(mockKimTypeContract).build();
048    }
049
050    private static KimAttribute createKimAttribute() {
051        return KimAttribute.Builder.create(mockKimAttributeContract).build();
052    }
053
054    @Before
055    public void setup() throws Exception {
056
057        mockKimAttributeContract = mock(KimAttributeContract.class);
058        {
059            Long versionNumber = 1L;
060            String attributeName = "one";
061            String namespaceCode = "namespaceCode";
062            String id = "id_one";
063            when( mockKimAttributeContract.getVersionNumber()).thenReturn(versionNumber);
064            when( mockKimAttributeContract.getAttributeName()).thenReturn(attributeName);
065            when( mockKimAttributeContract.getNamespaceCode()).thenReturn(namespaceCode);
066            when( mockKimAttributeContract.getId() ).thenReturn(id);
067        }
068
069        KimTypeAttributeContract one = mock(KimTypeAttributeContract.class);
070        {
071            String id = "one";
072            Long versionNumber = 1L;
073            KimAttribute attribute = createKimAttribute();
074            when(one.getKimAttribute()).thenReturn(attribute);
075            when(one.getId()).thenReturn(id);
076            when(one.getVersionNumber()).thenReturn(versionNumber);
077        }
078
079
080        mockKimTypeContract = mock(KimTypeContract.class);
081        {
082            String id = new String("27");
083            String serviceName = "barService";
084            String namespaceCode ="NAMESPACE CODE";
085            String name = "mock Kim Type Contract";
086            Long versionNumber = 1L;
087            String objectId = "1";
088            List attributeDefinitions = new ArrayList<KimTypeAttributeContract>();
089            attributeDefinitions.add(one);
090            when(mockKimTypeContract.getId()).thenReturn(id);
091            when(mockKimTypeContract.getServiceName()).thenReturn(serviceName);
092            when(mockKimTypeContract.getNamespaceCode()).thenReturn(namespaceCode);
093            when(mockKimTypeContract.getName()).thenReturn(name);
094            when(mockKimTypeContract.getVersionNumber()).thenReturn(versionNumber);
095            when(mockKimTypeContract.getObjectId()).thenReturn(objectId);
096            when(mockKimTypeContract.getAttributeDefinitions()).thenReturn(attributeDefinitions);
097        }
098
099        KimType kimType = create();
100        mockInfoService = mock(KimTypeInfoService.class);
101        {
102            when( mockInfoService.getKimType(anyString()) ).thenReturn(kimType);
103        }
104
105    }
106
107    @Test
108    public void testKimAttributeDataBo() {
109        KimType kimType = create();
110        Map<String,String> attributes = new HashMap<String,String>(); //{organizationCode=COMP, chartOfAccountsCode=BL}
111        attributes.put("one","one");
112
113        String kimTypeId = "27";
114
115        assertEquals(kimType.getId(), "27");
116
117        KimAttributeDataBo.setKimTypeInfoService(mockInfoService);
118
119        GroupAttributeBo groupQualifier = KimAttributeDataBo.createFrom(GroupAttributeBo.class, attributes, kimTypeId).get(0);
120
121        assertNotNull(groupQualifier.getKimType());
122        assertEquals(groupQualifier.getKimType().getId(), KimTypeBo.from(kimType).getId());
123
124    }
125
126}