package no.niths.infrastructure;
import static org.junit.Assert.assertEquals;
import no.niths.common.config.HibernateConfig;
import no.niths.common.config.TestAppConfig;
import no.niths.domain.development.Application;
import no.niths.domain.development.Developer;
import no.niths.infrastructure.development.interfaces.ApplicationRepository;
import no.niths.infrastructure.development.interfaces.DeveloperRepository;
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.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes= { TestAppConfig.class, HibernateConfig.class})
@Transactional
public class DeveloperRepositoryTest {
@Autowired
private ApplicationRepository appRepo;
@Autowired
private DeveloperRepository devRepo;
@Test
public void testCRUD(){
int size = devRepo.getAll(null).size();
Developer dev = new Developer("The name", "atemail@nith.com");
devRepo.create(dev);
assertEquals(size + 1, devRepo.getAll(null).size());
dev.setEmail("nith@nith.no");
devRepo.update(dev);
assertEquals("nith@nith.no", devRepo.getById(dev.getId()).getEmail());
assertEquals(true, devRepo.delete(dev.getId()));
}
@Test
public void testApplicationRelation(){
Developer dev = new Developer("mrDEv", "niths@nithsmail.com");
//devRepo.create(dev);
Application app = new Application("hello",null,null,null);
dev.getApps().add(app);
appRepo.create(app);
devRepo.create(dev);
assertEquals(1, devRepo.getById(dev.getId()).getApps().size());
dev.getApps().remove(app);
devRepo.update(dev);
assertEquals(0, devRepo.getById(dev.getId()).getApps().size());
}
}