package net.sf.gazpachoquest.facades;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.fest.assertions.api.Assertions.assertThat;
import net.sf.gazpachoquest.domain.user.User;
import net.sf.gazpachoquest.dto.QuestionDTO;
import net.sf.gazpachoquest.dto.QuestionnaireDefinitionDTO;
import net.sf.gazpachoquest.dto.embeddables.QuestionLanguageSettingsDTO;
import net.sf.gazpachoquest.dto.support.TranslationDTO;
import net.sf.gazpachoquest.test.dbunit.support.ColumnDetectorXmlDataSetLoader;
import net.sf.gazpachoquest.test.shiro.support.AbstractShiroTest;
import net.sf.gazpachoquest.types.Language;
import org.apache.shiro.subject.Subject;
import org.junit.After;
import org.junit.Before;
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", "classpath:/facades-context.xml" })
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class })
@DatabaseSetup("QuestionnaireDefinitionEditorFacadeTest-dataset.xml")
@DatabaseTearDown("QuestionnaireDefinitionEditorFacadeTest-dataset.xml")
@DbUnitConfiguration(dataSetLoader = ColumnDetectorXmlDataSetLoader.class)
public class QuestionnaireDefinitionEditorFacadeTest extends AbstractShiroTest {
@Autowired
private QuestionnaireDefinitionEditorFacade questionnaireDefinitionEditorFacade;
@Test
public void confirmTest() {
QuestionnaireDefinitionDTO questionairDefinition = QuestionnaireDefinitionDTO.with().id(7).build();
questionnaireDefinitionEditorFacade.confirm(questionairDefinition);
}
@Test
public void saveQuestionTranslation() {
QuestionDTO question = QuestionDTO.with().id(12).build();
QuestionLanguageSettingsDTO languageSettings = new QuestionLanguageSettingsDTO();
languageSettings.setTitle("¿Cual es tu nombre?");
languageSettings.setExplanation("");
TranslationDTO<QuestionDTO, QuestionLanguageSettingsDTO> translation = new TranslationDTO<>();
translation.setTranslatedEntity(question);
translation.setLanguageSettings(languageSettings);
translation.setLanguage(Language.ES);
translation = questionnaireDefinitionEditorFacade.saveQuestionTranslation(translation);
assertThat(translation.getId()).isNotNull();
}
@Before
public void setUpSubject() {
Subject subjectUnderTest = createNiceMock(Subject.class);
User support = User.with().id(1).build();
expect(subjectUnderTest.getPrincipal()).andReturn(support).anyTimes();
replay(subjectUnderTest);
// 2. Bind the subject to the current thread:
setSubject(subjectUnderTest);
}
@After
public void tearDownSubject() {
// 3. Unbind the subject from the current thread:
clearSubject();
}
}