package net.sf.gazpachoquest.services;
import static org.fest.assertions.api.Assertions.assertThat;
import java.util.Arrays;
import java.util.List;
import net.sf.gazpachoquest.domain.core.Question;
import net.sf.gazpachoquest.domain.core.QuestionOption;
import net.sf.gazpachoquest.test.dbunit.support.ColumnDetectorXmlDataSetLoader;
import net.sf.gazpachoquest.types.Language;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import com.github.springtestdbunit.DbUnitTestExecutionListener;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import com.github.springtestdbunit.annotation.DatabaseTearDown;
import com.github.springtestdbunit.annotation.DbUnitConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/jpa-test-context.xml", "classpath:/datasource-test-context.xml",
"classpath:/services-context.xml", "classpath:/components-context.xml" })
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class })
@DatabaseSetup("QuestionService-dataset.xml")
@DatabaseTearDown("QuestionService-dataset.xml")
@DbUnitConfiguration(dataSetLoader = ColumnDetectorXmlDataSetLoader.class)
public class QuestionServiceTest {
@Autowired
private QuestionService questionService;
@Test
public void findInListByLanguageTest() {
List<Integer> questionIds = Arrays.asList(12, 39, 29, 30, 50);
Language preferedLanguage = Language.ES;
List<Question> questions = questionService.findInList(questionIds, preferedLanguage);
for (Question question : questions) {
assertThat(question.getLanguage()).isEqualTo(preferedLanguage);
for (QuestionOption questionOption : question.getQuestionOptions()) {
assertThat(questionOption.getLanguage()).isEqualTo(preferedLanguage);
}
for (Question subquestion : question.getSubquestions()) {
assertThat(subquestion.getLanguage()).isEqualTo(preferedLanguage);
}
}
assertThat(questions).hasSameSizeAs(questionIds);
}
}