package no.niths.services;
import static org.junit.Assert.assertEquals;
import java.util.List;
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.services.development.interfaces.ApplicationService;
import no.niths.services.development.interfaces.DeveloperService;
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;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { TestAppConfig.class, HibernateConfig.class })
public class ApplicationServiceTest {
@Autowired
private ApplicationService service;
@Autowired
private DeveloperService devService;
@Test
public void testGetTopApps(){
Application a1 = new Application("application xzy1");
Application a2 = new Application("application xxs2");
Application a3 = new Application("application xsy3");
a1.setRequests(new Long(10));
a2.setRequests(new Long(20));
a3.setRequests(new Long(5));
service.create(a1);
service.create(a2);
service.create(a3);
List<Application> all = service.getTopApps(5);
assertEquals(all.get(0), a2);
assertEquals(all.get(1), a1);
assertEquals(all.get(2), a3);
service.hibernateDelete(a1.getId());
service.hibernateDelete(a2.getId());
service.hibernateDelete(a3.getId());
}
@Test
public void testCRUD(){
int appSize = service.getAll(null).size();
Application a1 = new Application();
a1.setTitle("this a title ok");
Application a2 = new Application();
a2.setTitle("Title is title");
service.create(a1);
service.create(a2);
assertEquals(appSize + 2, service.getAll(null).size());
Application temp = new Application();
temp.setTitle("this a title ok");
assertEquals(1, service.getAll(temp).size());
Application fetched = service.getById(a1.getId());
assertEquals(a1, fetched);
a1.setTitle("this is another title");
service.update(a1);
assertEquals(0, service.getAll(temp).size());
assertEquals(1, service.getAll(a1).size());
service.hibernateDelete(a1.getId());
service.hibernateDelete(a2.getId());
}
@Test
public void testDevRelation(){
int devSize = devService.getAll(null).size();
int appSize = service.getAll(null).size();
Developer d1 = new Developer("Navnet paa");
d1.setEmail("email@mailer.com");
devService.create(d1);
assertEquals(devSize + 1, devService.getAll(null).size());
Application a1 = new Application("Heiland");
Application a2 = new Application("Segkland");
service.create(a1);
service.create(a2);
assertEquals(appSize + 2, service.getAll(null).size());
assertEquals(true, devService.getById(d1.getId()).getApps().isEmpty());
//Set developer from app
a1.setDeveloper(d1);
service.update(a1);
//Dev should now have the app
assertEquals(1, devService.getById(d1.getId()).getApps().size());
service.hibernateDelete(a1.getId());
assertEquals(appSize + 1, service.getAll(null).size());
assertEquals(true, devService.getById(d1.getId()).getApps().isEmpty());
devService.hibernateDelete(d1.getId());
service.hibernateDelete(a2.getId());
}
}