package no.niths.infrastructure;
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.infrastructure.development.interfaces.ApplicationRepository;
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 ApplicationRepositoryTest {
@Autowired
private ApplicationRepository appRepo;
@Test
public void testCRUD(){
int size = appRepo.getAll(null).size();
Application a = new Application("app");
appRepo.create(a);
assertEquals(size + 1, appRepo.getAll(null).size());
assertEquals(a, appRepo.getById(a.getId()));
a.setTitle("title");
appRepo.update(a);
assertEquals("title", appRepo.getById(a.getId()).getTitle());
assertEquals(true, appRepo.delete(a.getId()));
}
@Test
public void getTopApps(){
Application a1 = new Application("application xzy");
Application a2 = new Application("application xxs");
Application a3 = new Application("application xsy");
a1.setRequests(new Long(10));
a2.setRequests(new Long(20));
a3.setRequests(new Long(5));
appRepo.create(a1);
appRepo.create(a2);
appRepo.create(a3);
List<Application> all = appRepo.getTopApps(5);
assertEquals(all.get(0), a2);
assertEquals(all.get(1), a1);
assertEquals(all.get(2), a3);
}
}