001/**
002 * Copyright 2005-2015 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.krad.messages;
017
018import org.junit.Test;
019
020import java.util.ArrayList;
021import java.util.Collection;
022
023import static org.junit.Assert.*;
024
025/**
026 * Test cases for {@link MessageServiceImpl}
027 *
028 * @author Kuali Rice Team (rice.collab@kuali.org)
029 */
030public class MessageServiceImplTest {
031
032    /**
033     * Test that list of messages are being correctly merged, messages of same
034     * type should not be overridden
035     */
036    @Test
037    public void testMergeMessages() {
038        Collection<Message> messages1 = new ArrayList<Message>();
039        Collection<Message> messages2 = new ArrayList<Message>();
040
041        MessageBuilder builder = MessageBuilder.create("Default", "All", "Test Message");
042
043        Message message1 = builder.build();
044
045        builder.setKey("Test Message 2");
046        Message message2 = builder.build();
047
048        builder.setComponentCode("TestView");
049        Message message3 = builder.build();
050
051        builder.setNamespaceCode("KR-SAP");
052        Message message4 = builder.build();
053
054        Message message5 = builder.build();
055
056        messages1.add(message1);
057        messages1.add(message2);
058        messages1.add(message4);
059
060        messages2.add(message1);
061        messages2.add(message3);
062        messages2.add(message4);
063        messages2.add(message5);
064
065        MessageServiceImpl messageServiceImpl = new MessageServiceImpl();
066        messageServiceImpl.mergeMessages(messages1, messages2);
067
068        assertEquals("Merged map is not correct size", 5, messages1.size());
069
070    }
071
072    public static class MessageBuilder {
073        private String namespaceCode;
074        private String componentCode;
075        private String key;
076        private String locale;
077        private String description;
078        private String text;
079
080        public MessageBuilder(String namespaceCode, String componentCode, String key) {
081            setNamespaceCode(namespaceCode);
082            setComponentCode(componentCode);
083            setKey(key);
084        }
085
086        public static MessageBuilder create(String namespaceCode, String componentCode, String key) {
087            return new MessageBuilder(namespaceCode, componentCode, key);
088        }
089
090        public Message build() {
091            Message message = new Message();
092
093            message.setNamespaceCode(getNamespaceCode());
094            message.setComponentCode(getComponentCode());
095            message.setKey(getKey());
096            message.setText(getText());
097            message.setDescription(getDescription());
098            message.setLocale(getLocale());
099
100            return message;
101        }
102
103        public String getNamespaceCode() {
104            return namespaceCode;
105        }
106
107        public void setNamespaceCode(String namespaceCode) {
108            this.namespaceCode = namespaceCode;
109        }
110
111        public String getComponentCode() {
112            return componentCode;
113        }
114
115        public void setComponentCode(String componentCode) {
116            this.componentCode = componentCode;
117        }
118
119        public String getKey() {
120            return key;
121        }
122
123        public void setKey(String key) {
124            this.key = key;
125        }
126
127        public String getLocale() {
128            return locale;
129        }
130
131        public void setLocale(String locale) {
132            this.locale = locale;
133        }
134
135        public String getDescription() {
136            return description;
137        }
138
139        public void setDescription(String description) {
140            this.description = description;
141        }
142
143        public String getText() {
144            return text;
145        }
146
147        public void setText(String text) {
148            this.text = text;
149        }
150    }
151}