KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openi > web > controller > admin > ManageFilesFormControllerTest


1 /*********************************************************************************
2  * The contents of this file are subject to the OpenI Public License Version 1.0
3  * ("License"); You may not use this file except in compliance with the
4  * License. You may obtain a copy of the License at
5  * http://www.openi.org/docs/LICENSE.txt
6  *
7  * Software distributed under the License is distributed on an "AS IS" basis,
8  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
9  * the specific language governing rights and limitations under the License.
10  *
11  * The Original Code is: OpenI Open Source
12  *
13  * The Initial Developer of the Original Code is Loyalty Matrix, Inc.
14  * Portions created by Loyalty Matrix, Inc. are
15  * Copyright (C) 2005 Loyalty Matrix, Inc.; All Rights Reserved.
16  *
17  * Contributor(s): ______________________________________.
18  *
19  ********************************************************************************/

20 package org.openi.web.controller.admin;
21
22 import org.openi.application.Application;
23 import org.openi.util.*;
24 import org.openi.web.controller.BaseControllerTestCase;
25 import org.springframework.mock.web.*;
26 import org.springframework.web.servlet.ModelAndView;
27 import java.io.File JavaDoc;
28 import java.util.*;
29 import javax.servlet.http.HttpServletResponse JavaDoc;
30
31
32 /**
33  * @author Dipendra Pokhrel <br>
34  * @version $Revision: 1.5 $ $Date: 2006/04/12 00:39:12 $ <br>
35  *
36  * Test case for ManageFilesFormController spring controller.
37  *
38  *
39  */

40 public class ManageFilesFormControllerTest extends BaseControllerTestCase {
41     //dirNameForTest is added under testPath by testPostNew()
42
private static String JavaDoc dirNameForAddTest = "newtest";
43
44     // dirNameForRenameTest is used by testRenamePost() to rename dirNameForAddTest
45
private static String JavaDoc dirNameForRenameTest = "newtest1";
46
47     //determined the testPath by testPostNew() and subsequently used it by
48
// testRenamePost() and testDeletdPost()
49
private static String JavaDoc testPath = "";
50     private ManageFilesFormController ac1;
51     private ManageFilesFormController ac2;
52     private MockHttpServletRequest request;
53     private MockHttpServletRequest postrequest;
54     private HttpServletResponse JavaDoc response;
55     private ModelAndView mv;
56
57     /**
58      * Initialize test objects
59      *
60      * @throws IOException
61      */

62     public void setUp() throws Exception JavaDoc {
63         logger.info("Setting up");
64
65         super.setUp();
66
67         ac1 = (ManageFilesFormController) appContext.getBean(
68                 "manageFilesFormController");
69         ac2 = new ManageFilesFormController();
70
71         ac2.setApplicationContext(webAppContext);
72         request = newGet("/managefiles.htm");
73         postrequest = newPost("/managefiles.htm");
74         request.getSession()
75                .setAttribute("projectContext", getTestProjectContext());
76         postrequest.getSession()
77                    .setAttribute("projectContext", getTestProjectContext());
78         response = new MockHttpServletResponse();
79     }
80
81     /**
82      * Test controller configuration
83      *
84      * @throws Exception
85      */

86     public void testControllerConfig() throws Exception JavaDoc {
87         logger.info("Testing form");
88
89         assertFalse("Session form is not false", ac1.isSessionForm());
90         assertEquals("Command name is not equal", "model", ac1.getCommandName());
91         assertEquals("Command class type is not equal", "java.util.Map",
92             ac1.getCommandClass().getName());
93         assertEquals("Form view name is not equal", "manageFilesFormView",
94             ac1.getFormView());
95         assertEquals("Success view is not equal", "manageFilesRedirect",
96             ac1.getSuccessView());
97         assertEquals("Folder UI xsl template is not equal",
98             "WEB-INF/openi/folderui.xsl", ac1.getXslTemplate());
99     }
100
101     private void initController() {
102         ac2.setSessionForm(ac1.isSessionForm());
103         ac2.setFormView(ac1.getFormView());
104         ac2.setSuccessView(ac1.getSuccessView());
105         ac2.setCommandClass(ac1.getCommandClass());
106         ac2.setCommandName(ac1.getCommandName());
107         //need to add openi since web root is taking as root dir of test returned by getTestDirectory
108
ac2.setXslTemplate("openi/" + ac1.getXslTemplate());
109     }
110
111     /**
112      * Test main view
113      * @throws Exception
114      */

115     public void testGet() throws Exception JavaDoc {
116         initController();
117         mv = ac2.handleRequest(request, response);
118         assertNotNull("Model is null", mv);
119
120         Map command = (Map) mv.getModel().get(ac2.getCommandName());
121         assertNotNull("command is null", command);
122         assertNotNull("Folder Html is null", command.get("FolderXML"));
123         assertTrue("Folder html is empty",
124             command.get("FolderXML").toString().length() > 0);
125         testPath = getFirstSubFolderName(ac2.getFolderRoot());
126         assertNotNull("There is no folder under project root to test for",
127             testPath);
128     }
129
130     /**
131      * helper method
132      *
133      * @param root Folder
134      * @return String
135      */

136     private String JavaDoc getFirstSubFolderName(Folder root) {
137         List folders = (List) root.getChildren();
138
139         //take any folder found in list to test for
140
Iterator iter = folders.iterator();
141         String JavaDoc folderpath = null;
142
143         while (iter.hasNext()) {
144             Object JavaDoc object = iter.next();
145
146             if (object instanceof Folder) {
147                 folderpath = ((Folder) object).getPath();
148
149                 break;
150             }
151         }
152
153         return folderpath;
154     }
155
156     /**
157      * tests test dirs whether they exist or not
158      */

159     public void testCreateFolderAlreadyExists() throws Exception JavaDoc {
160         assertNotNull("There is no folder under project root to test for",
161             testPath);
162
163         String JavaDoc testdir = getTestProjectContext().getProjectDirectory();
164         String JavaDoc fullpath = testdir + "/" + dirNameForAddTest;
165         File JavaDoc adddir = new File JavaDoc(fullpath);
166         assertFalse("the folder '" + dirNameForAddTest
167             + "' you specified is already exists. Please select another name for 'dirNameForAddTest' property ",
168             adddir.exists());
169         fullpath = testdir + "/" + dirNameForRenameTest;
170
171         File JavaDoc renamedir = new File JavaDoc(fullpath);
172         assertFalse("the folder folder '" + dirNameForRenameTest
173             + "' is already exists. Please another name for 'dirNameForRenameTest' property ",
174             renamedir.exists());
175     }
176
177     /**
178      * test new sub folder post request
179      * @throws Exception
180      */

181     public void testNewPost() throws Exception JavaDoc {
182         initController();
183
184         assertNotNull("There is no folder under project root to test for",
185             testPath);
186
187         postrequest.addParameter("newaction::" + testPath + ".x", "0");
188         mv = ac2.handleRequest(postrequest, response);
189         assertNotNull("model is null", mv);
190         assertEquals("Returned view is not valied", ac2.NEW_FOLDER_VIEW,
191             mv.getViewName());
192
193         Map command = (Map) mv.getModel().get(ac2.getCommandName());
194         assertNotNull("command is null", command);
195         assertNotNull("selected path is null", command.get("selectedPath"));
196         assertEquals("selected path is not equals", testPath,
197             command.get("selectedPath").toString());
198         //creating "newtest" folder which is used by 'rename' and 'delete' test case later
199
postrequest.addParameter("folderName", dirNameForAddTest);
200         postrequest.addParameter("action", "Create");
201         postrequest.addParameter("selectedPath", testPath);
202         mv = ac2.handleRequest(postrequest, response);
203         assertNotNull("Model for new folder post request is null", mv);
204         assertEquals("Returned view for new folder post request is not valied",
205             ac2.getSuccessView(), mv.getViewName());
206     }
207
208     /**
209      * test rename file/folder request
210      * @throws Exception
211      */

212     public void testRenamePost() throws Exception JavaDoc {
213         assertNotNull("test path is not initialized! please make testNewPost() method to be called before this",
214             testPath);
215         initController();
216
217         String JavaDoc pathtorename = testPath + "/" + dirNameForAddTest;
218         postrequest.addParameter("renameaction::" + pathtorename + ".x", "0");
219         mv = ac2.handleRequest(postrequest, response);
220
221         assertNotNull("model is null", mv);
222
223         assertEquals("Returned view is not valied",
224             ac2.RENAME_FOLDER_FILE_VIEW, mv.getViewName());
225
226         Map command = (Map) mv.getModel().get(ac2.getCommandName());
227         assertNotNull("command is null", command);
228         assertNotNull("selected path is null", command.get("selectedPath"));
229         assertEquals("selected path is not equals", pathtorename,
230             command.get("selectedPath").toString());
231         //editing 'newname' folder to 'newname1' which is created by testNewPost() test case
232
postrequest.addParameter("folderName", dirNameForRenameTest);
233         postrequest.addParameter("action", "Rename");
234         postrequest.addParameter("selectedPath", pathtorename);
235         mv = ac2.handleRequest(postrequest, response);
236         assertNotNull("Model for rename folder post request is null", mv);
237         assertEquals("Returned view for rename folder post request is not valied",
238             ac2.getSuccessView(), mv.getViewName());
239     }
240
241     /**
242      * test delete file/folder request
243      * @throws Exception
244      */

245     public void testDeletePost() throws Exception JavaDoc {
246         assertNotNull("test path is not initialized! please make testNewPost() method to be called before this",
247             testPath);
248         initController();
249
250         String JavaDoc pathtodelete = testPath + "/" + dirNameForRenameTest;
251         postrequest.addParameter("deleteaction::" + pathtodelete + ".x", "0");
252
253         mv = ac2.handleRequest(postrequest, response);
254         //Folder file=Folder.findChildFolder(pathtodelete, ac2.getFolderRoot());
255
//assertNotNull("found null path="+pathtodelete , file);
256
assertNotNull("model is null", mv);
257
258         /*Iterator iter = mv.getModel().keySet().iterator();
259            while (iter.hasNext()) {
260                String key = iter.next().toString();
261                //System.out.println(key);
262                if (key.indexOf("BindException") != -1) {
263                    System.out.println("Exception" + mv.getModel().get(key));
264                }
265            }*/

266         assertEquals("Returned view is not valied", ac2.DELETE_FOLDERFILE_VIEW,
267             mv.getViewName());
268
269         Map command = (Map) mv.getModel().get(ac2.getCommandName());
270         assertNotNull("command is null", command);
271         assertNotNull("selected path is null", command.get("selectedPath"));
272         assertNotNull("Selected folder is null", command.get("foldersList"));
273         assertEquals("Selected folder is not equal", pathtodelete,
274             ((List) command.get("foldersList")).get(0).toString());
275
276         //deleting folder 'newname1' which is created by testRenamePost() test case
277
postrequest.addParameter("filesList", pathtodelete);
278         postrequest.addParameter("action", "Delete");
279         postrequest.addParameter("selectedPath", pathtodelete);
280         mv = ac2.handleRequest(postrequest, response);
281         assertNotNull("Model for delete folder post request is null", mv);
282         assertEquals("Returned view for delete folder post request is not valied",
283             ac2.getSuccessView(), mv.getViewName());
284     }
285
286     protected void tearDown() {
287         ac1 = null;
288         ac2 = null;
289         mv = null;
290         postrequest = null;
291         response = null;
292         request = null;
293     }
294 }
295
Popular Tags