1   /*
2    * Atlassian Source Code Template.
3    * User: owen
4    * Date: Oct 15, 2002
5    * Time: 11:27:19 AM
6    * CVS Revision: $Revision: 1.10 $
7    * Last CVS Commit: $Date: 2005/10/04 02:41:53 $
8    * Author of last CVS Commit: $Author: nfaiz $
9    */
10  package com.atlassian.core.user.preferences;
11  
12  import com.atlassian.core.AtlassianCoreException;
13  import com.opensymphony.user.User;
14  import com.opensymphony.user.UserManager;
15  import junit.framework.TestCase;
16  
17  public class TestUserPreferences extends TestCase
18  {
19      private final long SET_USER_ISSUES_PER_PAGE_VALUE = 1000;
20      private User fred;
21      private User bob;
22  
23      public TestUserPreferences(String s) throws Exception
24      {
25          super(s);
26      }
27  
28      protected void setUp() throws Exception
29      {
30          super.setUp();
31          fred = UserManager.getInstance().createUser("fred");
32          bob = UserManager.getInstance().createUser("bob");
33      }
34  
35      protected void tearDown() throws Exception
36      {
37          fred.remove();
38          bob.remove();
39          super.tearDown();
40      }
41  
42      public void testGettingNonExistentPreference()
43      {
44          Preferences preferences = DefaultPreferences.getPreferences();
45  
46          assertEquals(0, preferences.getLong("this preference does not exist"));
47      }
48  
49      public void testGettingMaxIssuesPreferenceNoUser()
50      {
51          User user = null;
52          Preferences preferences = new UserPreferences(user);
53  
54          assertEquals(DefaultPreferences.getPreferences().getLong("test.needs.fixing"), preferences.getLong("test.needs.fixing"));
55      }
56  
57      public void testSettingMaxIssuesPreferenceNoUser()
58      {
59          User user = null;
60          Preferences preferences = new UserPreferences(user);
61  
62          boolean exceptionThrown = false;
63  
64          try
65          {
66              preferences.setLong("test.needs.fixing", SET_USER_ISSUES_PER_PAGE_VALUE);
67          }
68          catch (AtlassianCoreException e)
69          {
70              exceptionThrown = true;
71          }
72  
73          assertTrue("The exception should have been thrown because you are not allowed to set a property when there is no user", exceptionThrown);
74      }
75  
76      public void testGettingMaxIssuesPreferenceWithUser() throws Exception
77      {
78          Preferences preferences = new UserPreferences(fred);
79  
80          assertEquals(DefaultPreferences.getPreferences().getLong("test.needs.fixing"), preferences.getLong("test.needs.fixing"));
81  
82      }
83  
84      public void testSettingMaxIssuesPreferenceWithUser() throws Exception
85      {
86          Preferences preferences = new UserPreferences(fred);
87  
88          try
89          {
90              preferences.setLong("test.needs.fixing", SET_USER_ISSUES_PER_PAGE_VALUE);
91          }
92          catch (AtlassianCoreException e)
93          {
94              assertTrue("This exception should not have been thrown", false);
95          }
96  
97          assertEquals(preferences.getLong("test.needs.fixing"), SET_USER_ISSUES_PER_PAGE_VALUE);
98  
99          // Ensure the preference was persisted and can be retrieved again
100         preferences = new UserPreferences(fred);
101         assertEquals(preferences.getLong("test.needs.fixing"), SET_USER_ISSUES_PER_PAGE_VALUE);
102     }
103 
104     public void testHashCodeEquals()
105     {
106         Preferences fredPrefs = new UserPreferences(fred);
107         Preferences bobPrefs = new UserPreferences(bob);
108 
109         assertTrue(fredPrefs.equals(fredPrefs));
110         assertTrue(!fredPrefs.equals(fred));
111 
112         Preferences guestPrefs = new UserPreferences();
113         assertTrue(guestPrefs.equals(guestPrefs));
114 
115         assertEquals(fredPrefs.hashCode(), fredPrefs.hashCode());
116     }
117 }