View Javadoc
1   /*
2    * Copyright (c) 2002-2025, City of Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.portal.service.user.menu;
35  
36  import java.util.List;
37  
38  import javax.servlet.http.HttpServletRequest;
39  
40  import org.springframework.mock.web.MockHttpServletRequest;
41  
42  import fr.paris.lutece.portal.business.user.menu.AdminUserMenuItem;
43  import fr.paris.lutece.portal.business.user.menu.IAdminUserMenuItemProvider;
44  import fr.paris.lutece.test.LuteceTestCase;
45  
46  public class AdminUserMenuServiceTest extends LuteceTestCase
47  {
48      private static final int NUM_ITEMS = 5;
49      private AdminUserMenuService _service;
50  
51      @Override
52      protected void setUp( ) throws Exception
53      {
54          super.setUp( );
55          _service = new AdminUserMenuService( );
56          for ( int i = 0; i < NUM_ITEMS; i++ )
57          {
58              IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( Integer.toString( i ) );
59              item.setName( Integer.toString( i ) );
60              _service.addItemProvider( item, null, null );
61          }
62      }
63  
64      public void testAddItemProvider( )
65      {
66          final String strClass = "testAddItemProvider";
67          IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
68          item.setName( strClass );
69          _service.addItemProvider( item, null, null );
70  
71          HttpServletRequest request = new MockHttpServletRequest( );
72          List<AdminUserMenuItem> items = _service.getItems( request );
73  
74          assertNotNull( items );
75          assertEquals( NUM_ITEMS + 1, items.size( ) );
76          assertEquals( strClass, items.get( NUM_ITEMS ).getItemClass( ) );
77      }
78  
79      public void testAddItemProviderAfterFirst( )
80      {
81          final String strClass = "testAddItemProvider";
82          IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
83          item.setName( strClass );
84          _service.addItemProvider( item, "0", null );
85  
86          HttpServletRequest request = new MockHttpServletRequest( );
87          List<AdminUserMenuItem> items = _service.getItems( request );
88  
89          assertNotNull( items );
90          assertEquals( NUM_ITEMS + 1, items.size( ) );
91          assertEquals( strClass, items.get( 1 ).getItemClass( ) );
92      }
93  
94      public void testAddItemProviderAfterLast( )
95      {
96          final String strClass = "testAddItemProvider";
97          IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
98          item.setName( strClass );
99          _service.addItemProvider( item, Integer.toString( NUM_ITEMS - 1 ), null );
100 
101         HttpServletRequest request = new MockHttpServletRequest( );
102         List<AdminUserMenuItem> items = _service.getItems( request );
103 
104         assertNotNull( items );
105         assertEquals( NUM_ITEMS + 1, items.size( ) );
106         assertEquals( strClass, items.get( NUM_ITEMS ).getItemClass( ) );
107     }
108 
109     public void testAddItemProviderAfterUnknown( )
110     {
111         final String strClass = "testAddItemProvider";
112         IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
113         item.setName( strClass );
114         _service.addItemProvider( item, "unknown", null );
115 
116         HttpServletRequest request = new MockHttpServletRequest( );
117         List<AdminUserMenuItem> items = _service.getItems( request );
118 
119         assertNotNull( items );
120         assertEquals( NUM_ITEMS + 1, items.size( ) );
121         assertEquals( strClass, items.get( NUM_ITEMS ).getItemClass( ) );
122     }
123 
124     public void testAddItemProviderBeforeFirst( )
125     {
126         final String strClass = "testAddItemProvider";
127         IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
128         item.setName( strClass );
129         _service.addItemProvider( item, null, "0" );
130 
131         HttpServletRequest request = new MockHttpServletRequest( );
132         List<AdminUserMenuItem> items = _service.getItems( request );
133 
134         assertNotNull( items );
135         assertEquals( NUM_ITEMS + 1, items.size( ) );
136         assertEquals( strClass, items.get( 0 ).getItemClass( ) );
137     }
138 
139     public void testAddItemProviderBeforeLast( )
140     {
141         final String strClass = "testAddItemProvider";
142         IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
143         item.setName( strClass );
144         _service.addItemProvider( item, null, Integer.toString( NUM_ITEMS - 1 ) );
145 
146         HttpServletRequest request = new MockHttpServletRequest( );
147         List<AdminUserMenuItem> items = _service.getItems( request );
148 
149         assertNotNull( items );
150         assertEquals( NUM_ITEMS + 1, items.size( ) );
151         assertEquals( strClass, items.get( NUM_ITEMS - 1 ).getItemClass( ) );
152     }
153 
154     public void testAddItemProviderBeforeUnknown( )
155     {
156         final String strClass = "testAddItemProvider";
157         IAdminUserMenuItemProvider item = new TestAdminUserMenuItemProvider( strClass );
158         item.setName( strClass );
159         _service.addItemProvider( item, null, "unknown" );
160 
161         HttpServletRequest request = new MockHttpServletRequest( );
162         List<AdminUserMenuItem> items = _service.getItems( request );
163 
164         assertNotNull( items );
165         assertEquals( NUM_ITEMS + 1, items.size( ) );
166         assertEquals( strClass, items.get( NUM_ITEMS ).getItemClass( ) );
167     }
168 
169     public void testGetItems( )
170     {
171         HttpServletRequest request = new MockHttpServletRequest( );
172         List<AdminUserMenuItem> items = _service.getItems( request );
173 
174         assertNotNull( items );
175         assertEquals( NUM_ITEMS, items.size( ) );
176         for ( int i = 0; i < NUM_ITEMS; i++ )
177         {
178             assertEquals( Integer.toString( i ), items.get( i ).getItemClass( ) );
179         }
180     }
181 
182     public void testGetItemsInvoked( )
183     {
184         assertTrue( NUM_ITEMS >= 2 );
185         HttpServletRequest request = new MockHttpServletRequest( );
186         request.setAttribute( TestAdminUserMenuItemProvider.INVOKED_NAME, Integer.toString( NUM_ITEMS - 2 ) );
187         List<AdminUserMenuItem> items = _service.getItems( request );
188 
189         assertNotNull( items );
190         assertEquals( 1, items.size( ) );
191         assertEquals( Integer.toString( NUM_ITEMS - 2 ), items.get( 0 ).getItemClass( ) );
192     }
193 }