/* * * 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.aps.system.services.survey; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import com.agiletec.plugins.jpsurvey.aps.ApsPluginBaseTestCase; import com.agiletec.aps.util.ApsProperties; import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Choice; import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Question; import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Survey; import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.SurveyRecord; public class TestSurveyManager extends ApsPluginBaseTestCase { public void testLoadSurvey() throws Throwable { Survey survey = null; ApsProperties prop = null; try { survey = this.getSurveyManager().loadSurvey(0); assertNull(survey); survey = this.getSurveyManager().loadSurvey(1); assertNotNull(survey); assertEquals("ignored", survey.getGroupName()); assertNotNull(survey.getDescriptions()); assertTrue(survey.isActive()); assertTrue(survey.isGatherUserInfo()); assertTrue(survey.isPublicResult()); assertFalse(survey.isPublicPartialResult()); assertTrue(survey.isQuestionnaire()); assertNotNull(survey.getTitles()); assertFalse(survey.isRestricted()); assertNotNull(survey.getQuestions()); assertFalse(survey.getQuestions().isEmpty()); assertEquals(2, survey.getQuestions().size()); assertEquals("IMG001", survey.getImageId()); prop = survey.getImageDescriptions(); assertEquals("Barrali di notte", prop.getProperty("it")); // questions must belong to the same survey assertTrue(survey.getQuestions().get(0).getSurveyId() == survey.getId()); assertTrue(survey.getQuestions().get(0).getSurveyId() == survey.getQuestions().get(1).getSurveyId()); assertNotNull(survey.getQuestions().get(0).getChoices()); // check choices size List<Choice> list = survey.getQuestions().get(0).getChoices(); assertNotNull(list); assertEquals(4, list.size()); assertTrue(list.get(3).isFreeText()); assertEquals(4, list.get(3).getPos()); } catch (Throwable t) { throw t; } } public void testLoadQuestion() throws Throwable { Question question = null; int[] choiceOrder = {5, 4, 7, 6}; try { question = this.getSurveyManager().loadQuestion(2); assertNotNull(question); assertEquals(2, question.getId()); assertNotNull(question.getQuestions()); assertEquals(1, question.getPos()); assertFalse(question.isSingleChoice()); assertEquals(1, question.getMinResponseNumber()); assertEquals(2, question.getMaxResponseNumber()); List<Choice> choices = question.getChoices(); assertNotNull(choices); assertEquals(4, choices.size()); assertEquals(true, question.isQuestionnaire()); assertEquals(true, choices.get(0).isQuestionnaire()); assertEquals("Titolo-1", question.getSurveyTitles().get("it")); for (int i = 0; i < choices.size(); i++) { Choice choice = choices.get(i); assertEquals(choiceOrder[i], choice.getId()); assertEquals(i + 1, choice.getPos()); } // load unknown question question = this.getSurveyManager().loadQuestion(22); assertNull(question); } catch (Throwable t) { throw t; } } public void testSaveQuestion() throws Throwable { Question question = this.getFakeQuestion(); Question question2 = this.getFakeQuestion(); Question actual = null; try { assertEquals(1, question.getSurveyId()); // save a complete question this.getSurveyManager().saveQuestion(question); // save question with no choices question2.setChoices(null); this.getSurveyManager().saveQuestion(question2); // save a standard question actual = this.getSurveyManager().loadQuestion(question.getId()); assertNotNull(actual); assertEquals(question.getSurveyId(), actual.getSurveyId()); assertEquals(question.getPos(), actual.getPos()); assertEquals(question.getMinResponseNumber(), actual.getMinResponseNumber()); assertEquals(question.getMaxResponseNumber(), actual.getMaxResponseNumber()); assertTrue(!actual.getChoices().isEmpty()); assertEquals(question.getChoices().size(), actual.getChoices().size()); // save a question with no choices actual = this.getSurveyManager().loadQuestion(question2.getId()); assertNotNull(actual); assertEquals(question2.getId(), actual.getId()); assertEquals(question2.getSurveyId(), actual.getSurveyId()); assertEquals(question2.getPos(), actual.getPos()); assertEquals(question2.getMinResponseNumber(), actual.getMinResponseNumber()); assertEquals(question2.getMaxResponseNumber(), actual.getMaxResponseNumber()); assertTrue(actual.getChoices().isEmpty()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteQuestion(question.getId()); this.getSurveyManager().deleteQuestion(question2.getId()); } } public void testLoadChoice() throws Throwable { Choice choice=null; try { choice = this.getSurveyManager().loadChoice(669); assertNull(choice); choice = this.getSurveyManager().loadChoice(6); assertNotNull(choice.getChoices()); assertTrue(choice.isFreeText()); assertEquals("Opzione TESTO LIBERO", choice.getChoices().get("it")); assertEquals(2, choice.getQuestionId()); assertEquals(4, choice.getPos()); assertEquals(1, choice.getSurveyId()); assertEquals(true, choice.isQuestionnaire()); assertEquals("Question 1-2", choice.getQuestions().get("en")); assertEquals("Titolo-1", choice.getSurveyTitles().get("it")); } catch (Throwable t) { throw t; } } public void testGetChoiceByQuestionId() throws Throwable { List<Choice> list = null; try { list = this.getSurveyManager().getQuestionChoices(0); assertNotNull(list); assertTrue(list.isEmpty()); list = this.getSurveyManager().getQuestionChoices(1); assertNotNull(list); assertEquals(3, list.size()); } catch (Throwable t) { throw t; } } public void testSaveChoice() throws Throwable { Choice choice = null; List<Choice> list = null; int scan; try { choice = this.getFakeChoice(); this.getSurveyManager().saveChoice(choice); list = this.getSurveyManager().getQuestionChoices(2); assertNotNull(list); for (scan=0; scan < list.size() && list.get(scan).getId() != choice.getId(); scan++); choice = list.get(scan); assertNotNull(choice.getChoices()); assertEquals(96, choice.getPos()); assertTrue(choice.isFreeText()); assertEquals(2, choice.getQuestionId()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteChoice(choice.getId()); } } public void testDeleteQuestion() throws Throwable { Survey survey = this.getFakeActiveSurvey(); Survey actual = null; Question question = null; try { // delete an unknown question, no exceptions! question = this.getSurveyManager().loadQuestion(222); assertNull(question); this.getSurveyManager().deleteQuestion(222); // save a survey with a single question survey.getQuestions().remove(0); assertEquals(1, survey.getQuestions().size()); this.getSurveyManager().saveSurvey(survey); this.getSurveyManager().deleteQuestion(survey.getQuestions().get(0).getId()); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertTrue(actual.getQuestions().isEmpty()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testDeleteSurvey() throws Throwable { Survey survey = null; try { // delete an unknown survey survey = this.getSurveyManager().loadSurvey(555); assertNull(survey); this.getSurveyManager().deleteSurvey(555); // the deletion of existing survey is performed in other tests! } catch (Throwable t) { throw t; } } public void testSaveSurvey() throws Throwable { Survey survey = this.getFakeActiveSurvey(); Survey actual = null; try { DateFormat formatter=null; formatter = new SimpleDateFormat("yyyy-MM-dd"); String startDateString = formatter.format(survey.getStartDate()); Date startDate = (Date)formatter.parse(startDateString); // test a complete survey this.getSurveyManager().saveSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(survey.getId(), actual.getId()); assertEquals(survey.getGroupName(), actual.getGroupName()); assertEquals(survey.getImageId(), actual.getImageId()); assertEquals(survey.getDescriptions(), actual.getDescriptions()); assertEquals(survey.getEndDate(), actual.getEndDate()); assertEquals(survey.getImageDescriptions(), actual.getImageDescriptions()); assertEquals(startDate, actual.getStartDate()); assertEquals(survey.getTitles(), actual.getTitles()); assertEquals(survey.isActive(), actual.isActive()); assertEquals(survey.isCheckCookie(), actual.isCheckCookie()); assertEquals(survey.isCheckIpAddress(), actual.isCheckIpAddress()); assertEquals(survey.getQuestions().size(), actual.getQuestions().size()); for (Question currentQuestion: survey.getQuestions()) { Question actualQuestion = actual.getQuestion(currentQuestion.getId()); assertNotNull(actualQuestion); assertEquals(currentQuestion.getPos(), actualQuestion.getPos()); assertEquals(currentQuestion.isSingleChoice(), actualQuestion.isSingleChoice()); assertEquals(currentQuestion.getMaxResponseNumber(), actualQuestion.getMaxResponseNumber()); assertEquals(currentQuestion.getMinResponseNumber(), actualQuestion.getMinResponseNumber()); assertEquals(currentQuestion.getQuestions(), actualQuestion.getQuestions()); for (Choice currentChoice: currentQuestion.getChoices()) { Choice actualChoice = actual.getQuestion(currentQuestion.getId()).getChoice(currentChoice.getId()); assertNotNull(actualChoice); assertEquals(currentChoice.isFreeText(), actualChoice.isFreeText()); assertEquals(currentChoice.getPos(), actualChoice.getPos()); assertEquals(currentChoice.getChoices(), actualChoice.getChoices()); // System.out.println(" QUID "+currentQuestion.getId()+" CID "+currentChoice.getId()); } } // test a survey with no choices this.getSurveyManager().deleteSurvey(survey.getId()); for (Question i: survey.getQuestions()) { i.setChoices(new ArrayList<Choice>()); } this.getSurveyManager().saveSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(survey.getId(), actual.getId()); assertEquals(survey.getGroupName(), actual.getGroupName()); assertEquals(survey.getImageId(), actual.getImageId()); assertEquals(survey.getDescriptions(), actual.getDescriptions()); assertEquals(survey.getEndDate(), actual.getEndDate()); assertEquals(survey.getImageDescriptions(), actual.getImageDescriptions()); assertEquals(startDate, actual.getStartDate()); assertEquals(survey.getTitles(), actual.getTitles()); assertEquals(survey.isActive(), actual.isActive()); assertEquals(survey.isCheckCookie(), actual.isCheckCookie()); assertEquals(survey.isCheckIpAddress(), actual.isCheckIpAddress()); assertEquals(survey.getQuestions().size(), actual.getQuestions().size()); for (Question currentQuestion: survey.getQuestions()) { Question actualQuestion = actual.getQuestion(currentQuestion.getId()); assertNotNull(actualQuestion); assertEquals(currentQuestion.getPos(), actualQuestion.getPos()); assertEquals(currentQuestion.isSingleChoice(), actualQuestion.isSingleChoice()); assertEquals(currentQuestion.getMaxResponseNumber(), actualQuestion.getMaxResponseNumber()); assertEquals(currentQuestion.getMinResponseNumber(), actualQuestion.getMinResponseNumber()); assertEquals(currentQuestion.getQuestions(), actualQuestion.getQuestions()); assertNotNull(currentQuestion.getChoices()); assertEquals(currentQuestion.getChoices().isEmpty(), actualQuestion.getChoices().isEmpty()); // System.out.println(" QUID "+currentQuestion.getId()); } // test a survey with no questions this.getSurveyManager().deleteSurvey(survey.getId()); survey.getQuestions().clear(); this.getSurveyManager().saveSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(survey.getId(), actual.getId()); assertEquals(survey.getGroupName(), actual.getGroupName()); assertEquals(survey.getImageId(), actual.getImageId()); assertEquals(survey.getDescriptions(), actual.getDescriptions()); assertEquals(survey.getEndDate(), actual.getEndDate()); assertEquals(survey.getImageDescriptions(), actual.getImageDescriptions()); assertEquals(startDate, actual.getStartDate()); assertEquals(survey.getTitles(), actual.getTitles()); assertEquals(survey.isActive(), actual.isActive()); assertEquals(survey.isCheckCookie(), actual.isCheckCookie()); assertEquals(survey.isCheckIpAddress(), actual.isCheckIpAddress()); assertNotNull(actual.getQuestions()); assertEquals(0, actual.getQuestions().size()); assertEquals(survey.getQuestions().size(), actual.getQuestions().size()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testSaveChoiceInSortedPosition() throws Throwable { Survey survey = null; Choice choice = null; try { survey = this.getFakeActiveSurvey(); survey.getQuestions().remove(1); assertEquals(1, survey.getQuestions().size()); this.getSurveyManager().saveSurvey(survey); survey = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(survey.getQuestions()); choice = this.getFakeChoice(); choice.setId(999); assertNotNull(survey.getQuestions()); choice.setQuestionId(survey.getQuestions().get(0).getId()); this.getSurveyManager().saveChoiceInSortedPosition(choice); survey = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(survey); assertNotNull(survey.getQuestions()); assertNotNull(survey.getQuestions().get(0).getChoices()); assertEquals(3, survey.getQuestions().get(0).getChoices().size()); choice = survey.getQuestions().get(0).getChoices().get(2); assertEquals(11, choice.getPos()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testUpdateChoice() throws Throwable { Choice choice = getFakeChoice(); try { this.getSurveyManager().saveChoice(choice); choice = this.getSurveyManager().loadChoice(choice.getId()); assertNotNull(choice); choice.setPos(2677); choice.setFreeText(false); this.getSurveyManager().updateChoice(choice); choice = this.getSurveyManager().loadChoice(choice.getId()); assertNotNull(choice); assertEquals(2677, choice.getPos()); assertFalse(choice.isFreeText()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteChoice(choice.getId()); } } public void testDeleteChoiceByQuestionid() throws Throwable { Survey survey = null; Question actualQuestion = null; Survey actual = null; try { survey = this.getFakeActiveSurvey(); survey.getQuestions().remove(0); assertEquals(1, survey.getQuestions().size()); this.getSurveyManager().saveSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertEquals(1, actual.getQuestions().size()); assertEquals(2, actual.getQuestions().get(0).getChoices().size()); int questionId = survey.getQuestions().get(0).getId(); this.getSurveyManager().deleteChoiceByQuestionId(questionId); actualQuestion = this.getSurveyManager().loadQuestion(questionId); assertNotNull(actualQuestion); assertNotNull(actualQuestion.getChoices()); assertEquals(0, actualQuestion.getChoices().size()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testUpdateQuestion() throws Throwable { Question question = this.getFakeQuestion(); try { // standard question with choices this.getSurveyManager().saveQuestion(question); question = this.getSurveyManager().loadQuestion(question.getId()); assertNotNull(question); assertFalse(question.isSingleChoice()); question.setMinResponseNumber(2677); question.setMaxResponseNumber(1977); question.setPos(38); question.setSingleChoice(true); question.setSurveyId(2); assertNotNull(question.getChoices()); assertTrue(!question.getChoices().isEmpty()); question.getChoices().get(0).setPos(1976); // this choice will be placed in last position!!! this.getSurveyManager().updateQuestion(question); question = this.getSurveyManager().loadQuestion(question.getId()); assertNotNull(question); assertTrue(question.isSingleChoice()); assertNotNull(question.getQuestions()); assertEquals(38, question.getPos()); assertEquals(1977, question.getMaxResponseNumber()); assertEquals(2677, question.getMinResponseNumber()); assertEquals(2, question.getSurveyId()); assertNotNull(question.getChoices()); assertTrue(!question.getChoices().isEmpty()); assertEquals(2, question.getChoices().size()); assertEquals(1976, question.getChoices().get(1).getPos()); // delete one choice question.getChoices().remove(0); question.getChoices().get(0).setPos(123); question.setMinResponseNumber(1); this.getSurveyManager().updateQuestion(question); question = this.getSurveyManager().loadQuestion(question.getId()); assertNotNull(question); assertEquals(1, question.getMinResponseNumber()); assertEquals(1, question.getChoices().size()); assertEquals(123, question.getChoices().get(0).getPos()); // delete the remaining choice question.getChoices().clear(); question.setMinResponseNumber(123); question.setMaxResponseNumber(321); this.getSurveyManager().updateQuestion(question); question = this.getSurveyManager().loadQuestion(question.getId()); assertNotNull(question); assertEquals(123, question.getMinResponseNumber()); assertEquals(321, question.getMaxResponseNumber()); assertNotNull(question.getChoices()); assertTrue(question.getChoices().isEmpty()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteQuestion(question.getId()); } } public void testDeleteQuestionBySurveyId() throws Throwable { Survey survey = getFakeActiveSurvey(); Survey actual = null; try { this.getSurveyManager().saveSurvey(survey); this.getSurveyManager().deleteQuestionBySurveyId(survey.getId()); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertEquals(survey.getId(), actual.getId()); // not really needed :) assertEquals(survey.getImageId(), actual.getImageId()); assertEquals(survey.isActive(), actual.isActive()); assertEquals(survey.getDescriptions(), actual.getDescriptions()); assertTrue(actual.getQuestions().isEmpty()); for (Question question: survey.getQuestions()) { Question actualQuestion = this.getSurveyManager().loadQuestion(question.getId()); assertNull(actualQuestion); for (Choice choice: question.getChoices()) { Choice actualChoice = this.getSurveyManager().loadChoice(choice.getId()); assertNull(actualChoice); } } } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testUpdateSurvey() throws Throwable { Survey survey = this.getFakeActiveSurvey(); Survey actual = null; try { this.getSurveyManager().saveSurvey(survey); assertEquals(false, survey.getQuestions().get(0).isQuestionnaire()); assertEquals(false, survey.getQuestions().get(0).getChoices().get(0).isQuestionnaire()); assertEquals(survey.getId(), survey.getQuestions().get(0).getChoices().get(0).getSurveyId()); // modify a complete survey with its question and choices survey.setActive(false); survey.setPublicPartialResult(true); survey.setPublicResult(false); survey.setQuestionnaire(true); assertEquals(survey.getId(), survey.getQuestions().get(0).getChoices().get(0).getSurveyId()); survey.setGatherUserInfo(false); survey.setRestricted(true); survey.getQuestions().get(0).setPos(2); // this will swap position when loading from database survey.getQuestions().get(0).setSingleChoice(true); survey.getQuestions().get(0).setMinResponseNumber(789); survey.getQuestions().get(0).setMaxResponseNumber(1011); survey.getQuestions().get(0).setSingleChoice(true); survey.getQuestions().get(1).getChoices().get(0).setPos(11); // this will swap position when loading from database survey.getQuestions().get(1).getChoices().get(1).setFreeText(false); this.getSurveyManager().updateSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(false, actual.isActive()); assertEquals(true, actual.isPublicPartialResult()); assertEquals(false, actual.isPublicResult()); assertEquals(true, actual.isQuestionnaire()); assertEquals(false, actual.isGatherUserInfo()); assertEquals(true, actual.isRestricted()); assertNotNull(actual.getQuestions()); assertEquals(2, actual.getQuestions().size()); assertNotNull(actual.getQuestions().get(0).getChoices()); assertNotNull(actual.getQuestions().get(1).getChoices()); assertEquals(2, actual.getQuestions().get(0).getChoices().size()); assertEquals(2, actual.getQuestions().get(1).getChoices().size()); assertEquals(2, actual.getQuestions().get(1).getPos()); assertEquals(true, actual.getQuestions().get(1).isSingleChoice()); assertEquals(789, actual.getQuestions().get(1).getMinResponseNumber()); assertEquals(1011, actual.getQuestions().get(1).getMaxResponseNumber()); assertEquals(true, actual.getQuestions().get(1).isSingleChoice()); assertEquals(1, actual.getQuestions().get(0).getPos()); assertEquals(false, actual.getQuestions().get(0).isSingleChoice()); assertEquals(false, actual.getQuestions().get(0).getChoices().get(0).isFreeText()); assertEquals(11, actual.getQuestions().get(0).getChoices().get(1).getPos()); assertEquals(10, actual.getQuestions().get(0).getChoices().get(0).getPos()); assertTrue(survey.getQuestions().get(0).isQuestionnaire()); assertTrue(survey.getQuestions().get(0).getChoices().get(0).isQuestionnaire()); // check extra info assertTrue(survey.getQuestions().get(0).isQuestionnaire()); assertTrue(survey.getQuestions().get(0).getChoices().get(0).isQuestionnaire()); assertEquals(survey.getId(), survey.getQuestions().get(0).getChoices().get(0).getSurveyId()); survey = this.getSurveyManager().loadSurvey(actual.getId()); // update survey with no choices and one question assertNotNull(survey); survey.getQuestions().remove(1); survey.getQuestions().get(0).getChoices().clear(); // survey.getQuestions().get(0).setChoices(null); // is the same of the line above survey.setActive(true); survey.setPublicPartialResult(false); survey.getQuestions().get(0).setSingleChoice(true); survey.getQuestions().get(0).setPos(11); this.getSurveyManager().updateSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertEquals(1, actual.getQuestions().size()); assertEquals(true, actual.isActive()); assertEquals(false, actual.isPublicPartialResult()); assertEquals(true, actual.getQuestions().get(0).isSingleChoice()); assertEquals(11, actual.getQuestions().get(0).getPos()); // alternate question checks, load directly from the DB Question question = this.getSurveyManager().loadQuestion(actual.getQuestions().get(0).getId()); assertNotNull(question); assertNotNull(question.getChoices()); assertTrue(question.getChoices().isEmpty()); // update a survey with no question survey = this.getSurveyManager().loadSurvey(actual.getId()); survey.getQuestions().clear(); survey.setActive(false); survey.setPublicPartialResult(false); survey.setPublicResult(true); survey.setQuestionnaire(true); survey.setGatherUserInfo(false); survey.setRestricted(true); this.getSurveyManager().updateSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertTrue(actual.getQuestions().isEmpty()); assertEquals(false, actual.isActive()); assertEquals(false, actual.isPublicPartialResult()); assertEquals(true, actual.isPublicResult()); assertEquals(true, actual.isQuestionnaire()); assertEquals(false, actual.isGatherUserInfo()); assertEquals(true, actual.isRestricted()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testChangeQuestionPosition() throws Throwable { Survey survey = this.getFakeActiveSurvey(); Survey actual = null; Survey expected = null; try { // prepare a known survey for swapping questions survey.getQuestions().get(0).setSingleChoice(true); survey.getQuestions().get(0).setMinResponseNumber(1); survey.getQuestions().get(0).setMaxResponseNumber(5); assertEquals(0, survey.getQuestions().get(0).getPos()); survey.getQuestions().get(1).setMinResponseNumber(6); survey.getQuestions().get(1).setMaxResponseNumber(10); survey.getQuestions().get(1).setSingleChoice(false); assertEquals(1, survey.getQuestions().get(1).getPos()); this.getSurveyManager().saveSurvey(survey); actual = this.getSurveyManager().loadSurvey(survey.getId()); // Move the first question down this.getSurveyManager().swapQuestionPosition(actual.getQuestions().get(0).getId(), false); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(survey.getQuestions().get(0).getId(), actual.getQuestions().get(1).getId()); assertEquals(true, actual.getQuestions().get(1).isSingleChoice()); assertEquals(1, actual.getQuestions().get(1).getMinResponseNumber()); assertEquals(5, actual.getQuestions().get(1).getMaxResponseNumber()); assertEquals(survey.getQuestions().get(1).getId(), actual.getQuestions().get(0).getId()); assertEquals(false, actual.getQuestions().get(0).isSingleChoice()); assertEquals(6, actual.getQuestions().get(0).getMinResponseNumber()); assertEquals(10, actual.getQuestions().get(0).getMaxResponseNumber()); // move the last question down does nothing expected = this.getSurveyManager().loadSurvey(survey.getId()); this.getSurveyManager().swapQuestionPosition(actual.getQuestions().get(1).getId(), false); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(expected.getQuestions().get(0).getId(), actual.getQuestions().get(0).getId()); assertEquals(true, actual.getQuestions().get(1).isSingleChoice()); assertEquals(1, actual.getQuestions().get(1).getMinResponseNumber()); assertEquals(5, actual.getQuestions().get(1).getMaxResponseNumber()); assertEquals(expected.getQuestions().get(1).getId(), actual.getQuestions().get(1).getId()); assertEquals(false, actual.getQuestions().get(0).isSingleChoice()); assertEquals(6, actual.getQuestions().get(0).getMinResponseNumber()); assertEquals(10, actual.getQuestions().get(0).getMaxResponseNumber()); // move the first question up does nothing expected = this.getSurveyManager().loadSurvey(survey.getId()); this.getSurveyManager().swapQuestionPosition(actual.getQuestions().get(0).getId(), true); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertEquals(expected.getQuestions().get(0).getId(), actual.getQuestions().get(0).getId()); assertEquals(true, actual.getQuestions().get(1).isSingleChoice()); assertEquals(1, actual.getQuestions().get(1).getMinResponseNumber()); assertEquals(5, actual.getQuestions().get(1).getMaxResponseNumber()); assertEquals(expected.getQuestions().get(1).getId(), actual.getQuestions().get(1).getId()); assertEquals(false, actual.getQuestions().get(0).isSingleChoice()); assertEquals(6, actual.getQuestions().get(0).getMinResponseNumber()); assertEquals(10, actual.getQuestions().get(0).getMaxResponseNumber()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testSwapChoicePosition() throws Throwable { Survey survey = this.getFakeActiveSurvey(); Survey actual = null; Survey expected = null; try { // prepare a known survey for swapping questions survey.getQuestions().remove(1); survey.getQuestions().get(0).getChoices().get(0).setPos(1); survey.getQuestions().get(0).getChoices().get(0).setFreeText(false); survey.getQuestions().get(0).getChoices().get(1).setPos(2); survey.getQuestions().get(0).getChoices().get(1).setFreeText(true); this.getSurveyManager().saveSurvey(survey); expected = this.getSurveyManager().loadSurvey(survey.getId()); // swap the first choice downwards this.getSurveyManager().swapChoicePosition(expected.getQuestions().get(0).getChoices().get(0).getId(), false); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertNotNull(actual.getQuestions().get(0).getChoices()); assertEquals(expected.getQuestions().get(0).getChoices().get(1).getId(), actual.getQuestions().get(0).getChoices().get(0).getId()); assertEquals(true, actual.getQuestions().get(0).getChoices().get(0).isFreeText()); assertEquals(expected.getQuestions().get(0).getChoices().get(0).getId(), actual.getQuestions().get(0).getChoices().get(1).getId()); assertEquals(false, actual.getQuestions().get(0).getChoices().get(1).isFreeText()); // swap the first choice upwards does nothing expected = this.getSurveyManager().loadSurvey(actual.getId()); this.getSurveyManager().swapChoicePosition(actual.getQuestions().get(0).getChoices().get(0).getId(), true); assertEquals(expected.getQuestions().get(0).getChoices().get(0).getId(), actual.getQuestions().get(0).getChoices().get(0).getId()); assertEquals(true, actual.getQuestions().get(0).getChoices().get(0).isFreeText()); assertEquals(expected.getQuestions().get(0).getChoices().get(1).getId(), actual.getQuestions().get(0).getChoices().get(1).getId()); assertEquals(false, actual.getQuestions().get(0).getChoices().get(1).isFreeText()); // swap the first choice downwards does nothing expected = this.getSurveyManager().loadSurvey(actual.getId()); this.getSurveyManager().swapChoicePosition(actual.getQuestions().get(0).getChoices().get(1).getId(), false); assertEquals(expected.getQuestions().get(0).getChoices().get(0).getId(), actual.getQuestions().get(0).getChoices().get(0).getId()); assertEquals(true, actual.getQuestions().get(0).getChoices().get(0).isFreeText()); assertEquals(expected.getQuestions().get(0).getChoices().get(1).getId(), actual.getQuestions().get(0).getChoices().get(1).getId()); assertEquals(false, actual.getQuestions().get(0).getChoices().get(1).isFreeText()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testSaveQuestionInSortedPosition() throws Throwable { Survey survey = this.getFakeActiveSurvey(); Survey actual = null; Question question = getFakeQuestion(); try { // prepare a known survey for swapping questions survey.getQuestions().get(0).setPos(3); survey.getQuestions().get(0).setSingleChoice(true); survey.getQuestions().get(0).setMinResponseNumber(1); survey.getQuestions().get(0).setMaxResponseNumber(5); survey.getQuestions().get(1).setPos(9); survey.getQuestions().get(1).setSingleChoice(false); survey.getQuestions().get(1).setMinResponseNumber(6); survey.getQuestions().get(1).setMaxResponseNumber(10); this.getSurveyManager().saveSurvey(survey); // add the new question question.setSurveyId(survey.getId()); question.setPos(1); // this will be ignored when saving question.setMaxResponseNumber(888); question.setMinResponseNumber(777); this.getSurveyManager().saveQuestionInSortedPosition(question); actual = this.getSurveyManager().loadSurvey(survey.getId()); assertNotNull(actual); assertNotNull(actual.getQuestions()); assertEquals(3, actual.getQuestions().size()); assertEquals(888, actual.getQuestions().get(2).getMaxResponseNumber()); assertEquals(777, actual.getQuestions().get(2).getMinResponseNumber()); assertEquals(10, actual.getQuestions().get(2).getPos()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testSearchSurvey() throws Throwable { List<Integer> result = null; SurveyRecord survey = null; Set<String> col1 = new HashSet<String>(); col1.add("ignoredToo"); Set<String> col2 = new HashSet<String>(); col2.add("ignoREd"); try { // test by ID // searchSurveyByIds(id, description, group, isActive, isQuestionnaire, title, isPublic) result = this.getSurveyManager().searchSurvey(1, null, null, null, null, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals("ignored", survey.getGroupName().trim()); // test by descr result = this.getSurveyManager().searchSurvey(null, "n-1", null, null, null, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals("ignored", survey.getGroupName().trim()); // l=this.getSurveyManager().searchSurveyByIds(null, "<survey>", null, null, null, null, null); // assertNull(l); // test by group result = this.getSurveyManager().searchSurvey(null, null, col1, null, null, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals("ignoredToo", survey.getGroupName().trim()); // test by isActive result = this.getSurveyManager().searchSurvey(null, null, null, false, null, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(2, survey.getId()); // test by isActive (2) result = this.getSurveyManager().searchSurvey(null, null, null, true, null, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(1, survey.getId()); // test by isQuestionnaire result = this.getSurveyManager().searchSurvey(null, null, null, null, false, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(2, survey.getId()); // test by isQuestionnaire (2) result = this.getSurveyManager().searchSurvey(null, null, null, null, true, null, null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(1, survey.getId()); // test by profileUser result = this.getSurveyManager().searchSurvey(null, null, null, null, null, "lo-1", null); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(1, survey.getId()); result = this.getSurveyManager().searchSurvey(null, null, null, null, null, "mucci", null); assertNotNull(result); assertTrue(result.isEmpty()); // test by isRestricted result = this.getSurveyManager().searchSurvey(null, null, null, null, null, null, true); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); // test by isRestricted (2) result = this.getSurveyManager().searchSurvey(null, null, null, null, null, null, false); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(1, survey.getId()); // test all fields result = this.getSurveyManager().searchSurvey(1, "ne-1", col2, true, true, "le-1", false); assertNotNull(result); assertEquals(1, result.size()); survey = this.getSurveyManager().loadSurvey(result.get(0)); assertEquals(1, survey.getId()); // This should match all the surveys! result = this.getSurveyManager().searchSurvey(null, null, null, null, null, null, null); assertNotNull(result); assertEquals(2, result.size()); } catch (Throwable t) { throw t; } } public void testSearchSurveyXMLsafe() throws Throwable { Survey survey = this.getFakeActiveSurvey("key=\"it\"","propertie"); List<Integer> result = null; try { // search for XML statements in the existing surveys result = this.getSurveyManager().searchSurvey(null, "key=\"en\"", null, null, null, null, null); assertNotNull(result); assertEquals(0, result.size()); result = this.getSurveyManager().searchSurvey(null, null, null, null, null, "key=\"en\"", null); assertNotNull(result); assertEquals(0, result.size()); // save a survey with XML statement-like strings survey.getQuestions().clear(); this.getSurveyManager().saveSurvey(survey); result = this.getSurveyManager().searchSurvey(null, "key=", null, null, null, null, null); assertEquals(1, result.size()); result = this.getSurveyManager().searchSurvey(null, null, null, null, null, "prop", null); assertEquals(1, result.size()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey.getId()); } } public void testGetSurveyList() throws Throwable { Survey survey1 = getFakeActiveSurvey(); Survey survey2 = getFakeActiveSurvey(); List<Integer> list = null; try { this.getSurveyManager().saveSurvey(survey1); this.getSurveyManager().saveSurvey(survey2); // get all surveys list = this.getSurveyManager().getSurveyList(); assertNotNull(list); assertEquals(4, list.size()); // get active surveys list list = this.getSurveyManager().getActiveSurveyList(); assertNotNull(list); assertEquals(3, list.size()); // minus one! survey1.setActive(false); this.getSurveyManager().updateSurvey(survey1); list = this.getSurveyManager().getActiveSurveyList(); assertNotNull(list); assertEquals(2, list.size()); // get all surveys again :) list = this.getSurveyManager().getSurveyList(); assertNotNull(list); assertEquals(4, list.size()); } catch (Throwable t) { throw t; } finally { this.getSurveyManager().deleteSurvey(survey1.getId()); this.getSurveyManager().deleteSurvey(survey2.getId()); } } // public void testGetSurveysByUser() throws Throwable { // Survey s1 = this.getFakeActiveSurvey(); // try { // DateFormat formatter=null; // Date date = null; // formatter = new SimpleDateFormat("dd-MM-yyyy"); // date = (Date)formatter.parse("02-06-2077"); // Calendar cal = Calendar.getInstance(); // cal.setTime(date); // s1.setStartDate(cal.getTime()); // date = (Date)formatter.parse("02-06-2077"); // cal.setTime(date); // s1.setEndDate(date); // } catch (Throwable t) { // throw t; // } finally { // getSurveyManager().deleteSurvey(s1.getId()); // } // } }