package br.usp.ime.academicdevoir.dao;
import java.util.Arrays;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import static org.mockito.Mockito.*;
import org.mockito.MockitoAnnotations;
import br.usp.ime.academicdevoir.entidade.Disciplina;
public class DisciplinaDaoTest {
private @Mock Session session;
private @Mock Disciplina disciplina;
private @Mock Transaction transaction;
private @Mock Criteria criteria;
@Before
public void iniciaMocks(){
MockitoAnnotations.initMocks(this);
when(session.beginTransaction()).thenReturn(transaction);
}
@Test
public void salvaDisciplinaRetornaErroQuandoJahExisteUmaComOMesmoNome(){
when(disciplina.getNome()).thenReturn("Lab XP");
when(session.createCriteria(Disciplina.class)).thenReturn(criteria);
when(criteria.list()).thenReturn(Arrays.asList(disciplina));
when(criteria.add(any(Criterion.class))).thenReturn(criteria);
DisciplinaDao dao = new DisciplinaDao(session);
dao.salvaDisciplina(disciplina);
verify(session,never()).save(anyObject());
}
}