/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.platform.questionnaire.service; import org.junit.Test; import java.util.List; import static java.util.Arrays.asList; import static org.hamcrest.CoreMatchers.*; // NOPMD import static org.junit.Assert.assertThat; public class SectionQuestionDetailTest { @Test public void shouldGenerateValuesArrayFromSelections() { SectionQuestionDetail sectionQuestionDetail = new SectionQuestionDetail(); sectionQuestionDetail.setSelections(asList(getSelectionDetail("Ch1", "Tag2"), getSelectionDetail("Ch2", "Tag3"))); String[] valuesAsArray = sectionQuestionDetail.getValues(); assertThat(valuesAsArray, is(notNullValue())); assertThat(valuesAsArray.length, is(2)); assertThat(valuesAsArray[0], is("Ch1:Tag2")); assertThat(valuesAsArray[1], is("Ch2:Tag3")); } @Test public void shouldSetSelectionsFromValuesArray() { SectionQuestionDetail sectionQuestionDetail = new SectionQuestionDetail(); sectionQuestionDetail.setValues(new String[] {"Ch1:Tag2", "Ch2:Tag3", "Ch3"}); List<SelectionDetail> selections = sectionQuestionDetail.getSelections(); assertThat(selections, is(notNullValue())); assertThat(selections.size(), is(3)); assertSelection(selections.get(0), "Ch1", "Tag2"); assertSelection(selections.get(1), "Ch2", "Tag3"); assertSelection(selections.get(2), "Ch3", null); } @Test public void shouldMultiSelectValue() { SectionQuestionDetail sectionQuestionDetail = new SectionQuestionDetail(); sectionQuestionDetail.setSelections(asList(getSelectionDetail("Ch1", "Tag2"), getSelectionDetail("Ch2", "Tag3"))); assertThat(sectionQuestionDetail.getMultiSelectValue(), is("Ch1:Tag2, Ch2:Tag3")); } @Test public void shouldGetAnswerStringForSelections() { SectionQuestionDetail sectionQuestionDetail = new SectionQuestionDetail(); sectionQuestionDetail.setQuestionDetail(new QuestionDetail("Text", QuestionType.SMART_SELECT)); sectionQuestionDetail.setSelections(asList(getSelectionDetail("Ch1", "Tag2"), getSelectionDetail("Ch2", "Tag3"))); assertThat(sectionQuestionDetail.getAnswer(), is("Ch1:Tag2, Ch2:Tag3")); } @Test public void shouldGetAnswerStringForSingleResponse() { SectionQuestionDetail sectionQuestionDetail = new SectionQuestionDetail(); sectionQuestionDetail.setQuestionDetail(new QuestionDetail("Text", QuestionType.FREETEXT)); sectionQuestionDetail.setValue("Response"); assertThat(sectionQuestionDetail.getAnswer(), is("Response")); sectionQuestionDetail.setValue(null); assertThat(sectionQuestionDetail.getAnswer(), is("")); } private void assertSelection(SelectionDetail selectionDetail, String choice, String tag) { assertThat(selectionDetail.getSelectedChoice(), is(choice)); if (tag == null) { assertThat(selectionDetail.getSelectedTag(), is(nullValue())); } else { assertThat(selectionDetail.getSelectedTag(), is(tag)); } } private SelectionDetail getSelectionDetail(String selectedChoice, String selectedTag) { SelectionDetail selectionDetail = new SelectionDetail(); selectionDetail.setSelectedChoice(selectedChoice); selectionDetail.setSelectedTag(selectedTag); return selectionDetail; } }