package no.niths.infrastructure.school; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import no.niths.common.config.HibernateConfig; import no.niths.common.config.TestAppConfig; import no.niths.domain.school.Subject; import no.niths.infrastructure.school.interfaces.SubjectRepository; 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.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Transactional; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TestAppConfig.class, HibernateConfig.class }) @Transactional @TransactionConfiguration(transactionManager = "transactionManager",defaultRollback=true) public class SubjectRepositoryTest { @Autowired private SubjectRepository repo; @Test(expected = IllegalArgumentException.class) public void whenInsertNull_persistenceShouldFail() { repo.create(null); } @Test public void whenCreateSubject_subjectShouldBePersisted() { int size = repo.getAll(null).size(); Subject subject = new Subject(); subject.setSubjectCode("PG111"); repo.create(subject); assertEquals(size + 1, repo.getAll(null).size()); } @Test public void whenGetById_SubjectShouldBeReturned() { int size = repo.getAll(null).size(); Subject subject = new Subject(); subject.setName("Java 1"); subject.setSubjectCode("PG111"); repo.create(subject); assertEquals(size + 1, repo.getAll(null).size()); Subject result = repo.getById(subject.getId()); assertEquals(result, subject); result = repo.getById(new Long(999)); assertNull(result); } @Test public void whenUpdateSubject_SubjectShouldBeUpdatet() { int size = repo.getAll(null).size(); Subject subject = new Subject(); subject.setName("Java 1"); subject.setSubjectCode("PG111"); repo.create(subject); assertEquals(size + 1, repo.getAll(null).size()); subject.setSubjectCode("PG211"); repo.update(subject); assertEquals("PG211", repo.getById(subject.getId()).getSubjectCode()); } @Test public void whenGetAll_allShouldBeReturnedt() { int size = repo.getAll(null).size(); Subject subject1 = new Subject(); subject1.setName("Java 1"); repo.create(subject1); Subject subject2 = new Subject(); subject2.setName("Java 2"); repo.create(subject2); Subject subject3 = new Subject(); subject3.setName("Java 3"); repo.create(subject3); assertEquals(size + 3, repo.getAll(null).size()); assertEquals(size + 1, repo.getAll(subject1).size()); } }