1   /*
2    * DefaultMessagesTest.java
3    * Created on 5 Март 2006 г., 11:05
4    */
5   
6   package org.weda.message;
7   
8   import java.util.List;
9   import java.util.Locale;
10  import org.apache.hivemind.service.ThreadLocale;
11  import org.weda.test.WedaTestCase;
12  import org.weda.message.impl.MessageCategory;
13  import org.weda.message.impl.MessageElement;
14  import org.weda.message.impl.MessagesSubset;
15  
16  /**
17   *
18   * @author Mikhail Titov
19   */
20  public class MessagesImplTest extends WedaTestCase{
21      
22      public MessagesImplTest(String name) throws Exception {
23          super(name);
24      }
25      
26      public void test_configuration() throws Exception {
27          MessageImplTest test = new MessageImplTest("message-test");
28          //
29          List<MessageCategory> messages = (List<MessageCategory>)
30                  registry.getConfiguration("org.weda.message.Messages");
31          assertNotNull(messages);
32          assertTrue(messages.size()>=2);
33          //
34          Message message = findMessageByKey("tests:test:message1", messages);
35          assertNotNull(message);
36          message.init();
37          test.checkMessage(message);
38          //
39          message = findMessageByKey("tests:test:message2", messages);
40          assertNotNull(message);
41          message.init();
42          test.checkDefaultMessage(message);
43          //
44          message = findMessageByKey("tests:test:message3", messages);
45          assertNotNull(message);
46          message.init();
47          test.checkMissingMessage(message);
48      }
49      
50      public void test_service() throws Exception {
51          Messages messages = (Messages)registry.getService(MessagesRegistry.class);
52          assertNotNull(messages);
53          Locale locale = new Locale("ru", "RU");
54          ThreadLocale threadLocale = 
55                  (ThreadLocale)registry.getService(ThreadLocale.class);
56          threadLocale.setLocale(locale);
57          assertEquals(
58                  "тестовое сообщение"
59                  , messages.getMessage("tests:test:message1"));
60          assertEquals(
61                  "[UNKNOWN_MESSAGE_KEY]"
62                  , messages.getMessage("unknown_message_key"));
63          assertEquals(
64                  "formated message 1"
65                  , messages.format("tests:test:formated-message", 1));
66          assertEquals(
67                  "тестовое сообщение"
68                  , messages.replaceInPlace("message:tests:test:message1"));
69          assertEquals(
70                  "in place test message"
71                  , messages.replaceInPlace("in place test message"));
72      }
73      
74      public void test_messagesSubset() throws Exception {
75          Messages messages = (Messages)registry.getService(MessagesRegistry.class);
76          Locale locale = new Locale("ru", "RU");
77          ThreadLocale threadLocale = 
78                  (ThreadLocale)registry.getService(ThreadLocale.class);
79          threadLocale.setLocale(locale);        
80          MessagesSubset subset = 
81                  new MessagesSubset(messages, "test-actions");
82          MessagesSubset subset2 = new MessagesSubset(subset, "SimpleAction");
83          assertEquals("actions message", subset2.getMessage("message1"));
84          assertEquals(
85                  "actions message", subset2.replaceInPlace("message:message1"));
86          assertEquals("simple action name", subset2.getMessage("name"));
87          assertEquals(
88                  "simple action name", subset2.replaceInPlace("message:name"));
89      }
90      
91      public void test_classElement() throws Exception {
92          Messages messages = (Messages)registry.getService(MessagesRegistry.class);
93          messages = new MessagesSubset(messages, "test-objects");
94          messages = new MessagesSubset(messages, TestObject.class.getName());
95          String message = messages.getMessage("someProperty");
96          assertNotNull(message);
97          assertEquals("test message", message);
98      }
99      
100     public void test_messagesProvider() throws Exception {
101         MessagesRegistry messages = 
102                 (MessagesRegistry)registry.getService(MessagesRegistry.class);
103         Messages classMessages = 
104                 messages.getMessagesForObject(new TestObject());
105         assertNotNull(classMessages);
106         assertEquals("test message", classMessages.getMessage("someProperty"));
107     }
108     
109     private Message findMessageByKey(
110             String messageKey, List<MessageCategory> config)
111     {
112         for (MessageCategory category: config)
113             for (MessageElement element: category.getMessageElements())
114                 for (Message mess: element.getMessages())
115                     if (messageKey.equals(
116                             category.getName()+":"+element.getName()+":"
117                             +mess.getKey()))
118                     {
119                         return mess;
120                     }
121         return null;
122     }
123         
124     
125 }