/* * * Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved. * * This file is part of Entando software. * Entando is a free software; * You can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved. * */ package com.agiletec.plugins.jpsurvey.apsadmin.survey; import com.agiletec.plugins.jpsurvey.apsadmin.ApsAdminPluginBaseTestCase; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.services.group.Group; import com.agiletec.aps.system.services.group.IGroupManager; import com.agiletec.aps.util.ApsProperties; import com.agiletec.apsadmin.system.ApsAdminSystemConstants; import com.agiletec.apsadmin.system.BaseAction; import com.agiletec.plugins.jacms.aps.system.JacmsSystemConstants; import com.agiletec.plugins.jacms.aps.system.services.resource.IResourceManager; import com.agiletec.plugins.jpsurvey.aps.system.services.SurveySystemConstants; import com.agiletec.plugins.jpsurvey.aps.system.services.collect.IResponseManager; import com.agiletec.plugins.jpsurvey.aps.system.services.collect.IVoterManager; import com.agiletec.plugins.jpsurvey.aps.system.services.survey.ISurveyManager; import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Survey; import com.agiletec.plugins.jpsurvey.apsadmin.survey.SurveyAction; import com.opensymphony.xwork2.Action; public class TestSurveyAction extends ApsAdminPluginBaseTestCase { @Override protected void setUp() throws Exception { super.setUp(); this.init(); } private void init() { this.setSurveyManager((ISurveyManager) this.getService(SurveySystemConstants.SURVEY_MANAGER)); this.setResponseManager((IResponseManager) this.getService(SurveySystemConstants.SURVEY_RESPONSE_MANAGER)); this.setVoterManager((IVoterManager) this.getService(SurveySystemConstants.SURVEY_VOTER_MANAGER)); this.setGroupManager((IGroupManager) this.getService(SystemConstants.GROUP_MANAGER)); this.setResourceManager((IResourceManager) this.getService(JacmsSystemConstants.RESOURCE_MANAGER)); } //TODO FARE CONTROLLO NUMERI ERRORI E CAMPI public void testEditSurvey() throws Throwable { String result = null; try { this.setUserOnSession("admin"); // with no params at all it must NOT crash! this.initAction("/do/jpsurvey/Survey", "editSurvey"); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.FAILURE, result); // invalid questioannaire this.initAction("/do/jpsurvey/Survey", "editSurvey"); this.addParameter("surveyId", "-1"); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals("listSurveys", result); // invalid poll this.initAction("/do/jpsurvey/Survey", "editSurvey"); this.addParameter("surveyId", "-1"); this.addParameter("questionnaire", false); result = this.executeAction(); assertNotNull(result); assertEquals("listSurveys", result); // existing questionnaire this.initAction("/do/jpsurvey/Survey", "editSurvey"); this.addParameter("surveyId", "1"); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals(Action.SUCCESS, result); // existing polls this.initAction("/do/jpsurvey/Survey", "editSurvey"); this.addParameter("surveyId", "2"); this.addParameter("questionnaire", false); result = this.executeAction(); assertNotNull(result); assertEquals(Action.SUCCESS, result); } catch (Throwable t) { throw t; } } //TODO FARE CONTROLLO NUMERI ERRORI E CAMPI public void testSaveSurvey() throws Throwable { String result = null; Survey poll = this.prepareSurveyForTest(false,false); Survey questionnaire = this.prepareSurveyForTest(true,false); SurveyAction action = null; try { this.setUserOnSession("admin"); this.getSurveyManager().saveSurvey(poll); this.getSurveyManager().saveSurvey(questionnaire); // updating wrong ID this.initAction("/do/jpsurvey/Survey", "saveSurvey"); this.addParameter("surveyId", "-1"); this.addParameter("questionnaire", true); this.addParameter("checkCookie", "true"); this.addParameter("description-it", "mucca"); this.addParameter("title-it", "lilla"); this.addParameter("groupName", Group.FREE_GROUP_NAME); this.addParameter("startDate", "02/06/2008"); this.addParameter("strutsAction", ApsAdminSystemConstants.EDIT); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.FAILURE, result); // editing existing id this.initAction("/do/jpsurvey/Survey", "saveSurvey"); this.addParameter("surveyId", poll.getId()); assertEquals(3, poll.getId()); this.addParameter("questionnaire", false); this.addParameter("description-it", "mucca"); this.addParameter("checkCookie", "true"); this.addParameter("title-it", "lilla"); this.addParameter("groupName", Group.FREE_GROUP_NAME); this.addParameter("startDate", "02/06/2008"); this.addParameter("publicPartialResult", "1"); this.addParameter("publicResult", "1"); this.addParameter("profileUser", "0"); this.addParameter("gatherUserInfo", "0"); this.addParameter("strutsAction", ApsAdminSystemConstants.EDIT); this.addParameter("imageDescription-it", "Forza Cagliari"); result = this.executeAction(); assertEquals("listSurveys", result); // modify existing id with missing parameter this.initAction("/do/jpsurvey/Survey", "saveSurvey"); this.addParameter("surveyId", questionnaire.getId()); assertEquals(4, questionnaire.getId()); this.addParameter("questionnaire", true); // this.addParameter("description-it", "mucca"); // oops! this.addParameter("checkCookie", "true"); this.addParameter("title-it", "lilla"); this.addParameter("groupName", Group.FREE_GROUP_NAME); this.addParameter("startDate", "02/06/2008"); this.addParameter("publicPartialResult", "1"); this.addParameter("publicResult", "1"); this.addParameter("profileUser", "0"); this.addParameter("strutsAction", ApsAdminSystemConstants.EDIT); result = this.executeAction(); assertEquals(Action.INPUT, result); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(poll.getId()); this.getSurveyManager().deleteSurvey(questionnaire.getId()); } } //TODO FARE CONTROLLO NUMERI ERRORI E CAMPI public void testDeleteSurvey() throws Throwable { Survey poll = this.prepareSurveyForTest(false,false); Survey questionnaire = this.prepareSurveyForTest(true,false); Survey testPoll = null; String result = null; try { this.setUserOnSession("admin"); this.getSurveyManager().saveSurvey(poll); this.getSurveyManager().saveSurvey(questionnaire); // deleting existing id this.initAction("/do/jpsurvey/Survey", "deleteSurvey"); this.addParameter("surveyId", poll.getId()); this.addParameter("questionnaire", false); assertEquals(3, poll.getId()); result = this.executeAction(); assertNotNull(result); assertEquals(Action.SUCCESS, result); // silly check... testPoll = this.getSurveyManager().loadSurvey(poll.getId()); assertNull(testPoll); // deleting existing id this.initAction("/do/jpsurvey/Survey", "deleteSurvey"); this.addParameter("surveyId", questionnaire.getId()); this.addParameter("questionnaire", true); assertEquals(4, questionnaire.getId()); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); // unknown id this.initAction("/do/jpsurvey/Survey", "deleteSurvey"); this.addParameter("surveyId", "-1"); this.addParameter("questionnaire", true); assertEquals(4, questionnaire.getId()); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); // missing parameters this.initAction("/do/jpsurvey/Survey", "deleteSurvey"); assertEquals(4, questionnaire.getId()); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.INPUT, result); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(poll.getId()); this.getSurveyManager().deleteSurvey(questionnaire.getId()); } } //TODO FARE CONTROLLO NUMERI ERRORI E CAMPI public void testPublishSurvey() throws Throwable { Survey poll = this.prepareSurveyForTest(false, false); Survey questionnaire = this.prepareSurveyForTest(true, false); Survey actual = null; String result = null; try { this.setUserOnSession("admin"); this.getSurveyManager().saveSurvey(poll); this.getSurveyManager().saveSurvey(questionnaire); // publish existing poll assertTrue(poll.isPublishable()); this.initAction("/do/jpsurvey/Survey", "publishSurvey"); assertEquals(3, poll.getId()); assertFalse(poll.isActive()); this.addParameter("surveyId", poll.getId()); this.addParameter("questionnaire", false); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); actual = this.getSurveyManager().loadSurvey(poll.getId()); assertNotNull(actual); assertTrue(actual.isActive()); // publish existing questionnaire assertTrue(questionnaire.isPublishable()); this.initAction("/do/jpsurvey/Survey", "publishSurvey"); assertEquals(4, questionnaire.getId()); assertFalse(questionnaire.isActive()); this.addParameter("surveyId", questionnaire.getId()); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); actual = this.getSurveyManager().loadSurvey(questionnaire.getId()); assertNotNull(actual); assertTrue(actual.isActive()); // publish existing questionnaire this.initAction("/do/jpsurvey/Survey", "publishSurvey"); assertFalse(questionnaire.isActive()); this.addParameter("surveyId", questionnaire.getId()); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); actual = this.getSurveyManager().loadSurvey(questionnaire.getId()); assertNotNull(actual); assertTrue(actual.isActive()); questionnaire.setActive(false); questionnaire.getQuestions().get(1).getChoices().remove(0); questionnaire.getQuestions().get(1).getChoices().get(0).setFreeText(false); getSurveyManager().updateSurvey(questionnaire); // NOT PUBLISHABLE ANYMORE this.initAction("/do/jpsurvey/Survey", "publishSurvey"); assertFalse(questionnaire.isActive()); this.addParameter("surveyId", questionnaire.getId()); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); actual=this.getSurveyManager().loadSurvey(questionnaire.getId()); assertNotNull(actual); assertFalse(actual.isActive()); assertEquals(2, actual.getQuestions().size()); // enable unknown survey this.initAction("/do/jpsurvey/Survey", "publishSurvey"); assertEquals(4, questionnaire.getId()); assertFalse(questionnaire.isActive()); this.addParameter("surveyId", -1); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.INPUT, result); // DO NOTHING } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(poll.getId()); this.getSurveyManager().deleteSurvey(questionnaire.getId()); } } //TODO FARE CONTROLLO NUMERI ERRORI E CAMPI public void testRestireSurvey() throws Throwable { Survey poll = this.prepareSurveyForTest(false, true); Survey questionnaire = this.prepareSurveyForTest(true, true); Survey testSurvey = null; String result = null; try { this.setUserOnSession("admin"); this.getSurveyManager().saveSurvey(poll); this.getSurveyManager().saveSurvey(questionnaire); assertTrue(questionnaire.isActive()); assertTrue(poll.isActive()); // invoke action without parameters this.initAction("/do/jpsurvey/Survey", "retireSurvey"); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.INPUT, result); // retire questionnaire this.initAction("/do/jpsurvey/Survey", "retireSurvey"); this.addParameter("surveyId", questionnaire.getId()); this.addParameter("questionnaire", true); result = this.executeAction(); assertNotNull(result); assertEquals(BaseAction.SUCCESS, result); testSurvey=this.getSurveyManager().loadSurvey(questionnaire.getId()); assertNotNull(testSurvey); assertFalse(testSurvey.isActive()); // retire poll this.initAction("/do/jpsurvey/Survey", "retireSurvey"); this.addParameter("surveyId", poll.getId()); this.addParameter("questionnaire", false); result = this.executeAction(); assertEquals(BaseAction.SUCCESS, result); testSurvey=this.getSurveyManager().loadSurvey(poll.getId()); assertNotNull(testSurvey); assertFalse(testSurvey.isActive()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(poll.getId()); this.getSurveyManager().deleteSurvey(questionnaire.getId()); } } public void testAssociateSurveyImageEntry() throws Throwable { Survey survey = this.prepareSurveyForTest(true, false); Survey actual = null; SurveyAction action = null; String result = null; try { this.setUserOnSession("admin"); this.getSurveyManager().saveSurvey(survey); assertNotNull(survey); // Test with invalid strutsAction this.initAction("/do/jpsurvey/Survey", "associateSurveyImageEntry"); this.addParameter("surveyId", survey.getId()); this.addParameter("questionnaire", true); this.addParameter("checkCookie", true); this.addParameter("description-it", "mucca"); this.addParameter("title-it", "lilla"); this.addParameter("imageDescription-it", "cioccolatosa"); this.addParameter("resourceTypeCode", "Image"); this.addParameter("groupName", Group.FREE_GROUP_NAME); this.addParameter("startDate", "10/06/2009"); this.addParameter("strutsAction", ApsAdminSystemConstants.ADD); this.addParameter("profileUser", 0); this.addParameter("gatherUserInfo", survey.isGatherUserInfo()); this.addParameter("imageId", 22); result = this.executeAction(); action = (SurveyAction) this.getAction(); assertNotNull(result); assertEquals(action.INPUT, result); assertEquals((Integer)survey.getId(), action.getSurveyId()); // test with valid parameters this.initAction("/do/jpsurvey/Survey", "associateSurveyImageEntry"); this.addParameter("surveyId", survey.getId()); // this.addParameter("questionnaire", true); this.addParameter("checkCookie", false); this.addParameter("description-it", "mucca"); this.addParameter("title-it", "lilla"); this.addParameter("imageDescription-it", "cioccolatosa"); this.addParameter("resourceTypeCode", "Image"); this.addParameter("groupName", Group.FREE_GROUP_NAME); this.addParameter("startDate", "10/06/2009"); this.addParameter("strutsAction", ApsAdminSystemConstants.EDIT); this.addParameter("profileUser", 0); this.addParameter("gatherUserInfo", survey.isGatherUserInfo()); this.addParameter("imageId", 22); result = this.executeAction(); action = (SurveyAction) this.getAction(); assertNotNull(result); assertEquals(action.SUCCESS, result); assertNotNull(action.getSurveyId()); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertEquals("cioccolatosa", actual.getImageDescriptions().get("it")); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testRemoveImage() throws Throwable { SurveyAction action = null; String result = null; Survey survey = this.prepareSurveyForTest(true, true); Survey verify = null; ApsProperties prop = null; try { this.setUserOnSession("admin"); this.getSurveyManager().saveSurvey(survey); survey.setImageId("29975"); this.getSurveyManager().updateSurvey(survey); this.initAction("/do/jpsurvey/Survey", "removeSurveyImage"); this.addParameter("surveyId", survey.getId()); this.addParameter("questionnaire", survey.isQuestionnaire()); this.addParameter("checkCookie", survey.isCheckCookie()); this.addParameter("imageId", survey.getImageId()); this.addParameter("title-it", "Questa"); this.addParameter("description-it", "è"); this.addParameter("imageDescription-it", "Spartaaaa"); this.addParameter("resourceTypeCode", "Image"); this.addParameter("groupName", survey.getGroupName()); this.addParameter("startDate", "10/06/2009"); this.addParameter("strutsAction", ApsAdminSystemConstants.EDIT); this.addParameter("gatherUserInfo", survey.isGatherUserInfo()); result = this.executeAction(); assertNotNull(result); action = (SurveyAction) this.getAction(); assertEquals(action.SUCCESS, result); verify = this.getSurveyManager().loadSurvey(survey.getId()); assertNull(verify.getImageId()); assertTrue(verify.getImageDescriptions().isEmpty()); prop = verify.getTitles(); assertEquals("Questa", prop.getProperty("it")); prop = verify.getDescriptions(); assertEquals("è", prop.getProperty("it")); prop = verify.getImageDescriptions(); assertNull(prop.getProperty("it")); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testTrashSurvey() throws Throwable { String result = null; SurveyAction action = null; try { this.setUserOnSession("admin"); // test with no survey ID this.initAction("/do/jpsurvey/Survey", "trashSurvey"); result = this.executeAction(); assertNotNull(result); assertEquals(Action.INPUT, result); // test with unknown survey ID this.initAction("/do/jpsurvey/Survey", "trashSurvey"); this.addParameter("surveyId", -1); result = this.executeAction(); assertNotNull(result); assertEquals(Action.INPUT, result); action = (SurveyAction) this.getAction(); assertNotNull(action.getTitles()); assertTrue(action.getTitles().isEmpty()); // test with known survey ID this.initAction("/do/jpsurvey/Survey", "trashSurvey"); this.addParameter("surveyId", 1); result = this.executeAction(); assertNotNull(result); assertEquals(Action.SUCCESS, result); action = (SurveyAction) this.getAction(); assertNotNull(action.getSurvey().getTitles()); assertEquals(2, action.getSurvey().getTitles().size()); } catch (Throwable t) { throw t; } } private Survey prepareSurveyForTest(Boolean questionnaire, Boolean active) throws Throwable { Survey survey = this.getFakeActiveSurvey(); survey.setActive(active); survey.setQuestionnaire(questionnaire); return survey; } public ISurveyManager getSurveyManager() { return _surveyManager; } public void setSurveyManager(ISurveyManager surveyManager) { this._surveyManager = surveyManager; } public IResponseManager getResponseManager() { return _responseManager; } public void setResponseManager(IResponseManager responseManager) { this._responseManager = responseManager; } public IVoterManager getVoterManager() { return _voterManager; } public void setVoterManager(IVoterManager voterManager) { this._voterManager = voterManager; } public IGroupManager getGroupManager() { return _groupManager; } public void setGroupManager(IGroupManager groupManager) { this._groupManager = groupManager; } public void setResourceManager(IResourceManager resourceManager) { this._resourceManager = resourceManager; } public IResourceManager getResourceManager() { return _resourceManager; } private ISurveyManager _surveyManager; private IResponseManager _responseManager; private IVoterManager _voterManager; private IGroupManager _groupManager; private IResourceManager _resourceManager; }