package no.niths.application.rest.location; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import no.niths.application.rest.exception.ObjectInCollectionException; import no.niths.application.rest.exception.ObjectNotFoundException; import no.niths.application.rest.location.interfaces.RoomController; import no.niths.application.rest.signaling.interfaces.AccessFieldController; import no.niths.common.config.HibernateConfig; import no.niths.common.config.TestAppConfig; import no.niths.domain.location.Room; import no.niths.domain.signaling.AccessField; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TestAppConfig.class, HibernateConfig.class }) public class RoomControllerImplTest { private MockHttpServletResponse res; @Autowired private RoomController controller; @Autowired private AccessFieldController afController; private AccessField testAF; private Room testRoom01; private Room testRoom02; private Room testRoom03; private Room testRoom04; @Before public void setUp() throws Exception { res = new MockHttpServletResponse(); testRoom01 = new Room("81"); testRoom02 = new Room("40"); testRoom03 = new Room("Kantina"); testRoom04 = new Room("41"); testAF = new AccessField(22, 50); controller.create(testRoom01, res); controller.create(testRoom02, res); controller.create(testRoom03, res); controller.create(testRoom04, res); afController.create(testAF, res); } @After public void tearDown() throws Exception { controller.delete(testRoom01.getId()); controller.delete(testRoom02.getId()); controller.delete(testRoom03.getId()); controller.delete(testRoom04.getId()); afController.delete(testAF.getId()); } @Test public void testGetById() { Room room = controller.getById(testRoom02.getId()); assertEquals(testRoom02, room); } @Test(expected = ObjectNotFoundException.class) public void testGetByInvalidId_shouldThrowException() { controller.getById(new Long(-1)); } @Test public void testGetAllT() { ArrayList<Room> rooms = controller.getAll(new Room()); assertEquals(4, rooms.size()); } @Test public void testGetAllWithSearch() { ArrayList<Room> rooms = controller.getAll(new Room("Kantina")); assertEquals(1, rooms.size()); } @Test public void testGetAllTIntInt() { ArrayList<Room> rooms = controller.getAll(null, 1, 3); assertEquals(3, rooms.size()); } @Test public void testUpdate() { Room room = new Room(); room.setId(testRoom03.getId()); room.setRoomName("new room name"); controller.update(room); assertEquals(room.getRoomName(), controller.getById(testRoom03.getId()) .getRoomName()); } @Test public void testAddAndRemoveAccessField(){ Room room = controller.getById(testRoom04.getId()); assertEquals(0, room.getAccessFields().size()); // add access point to access field controller.addAccessField(testRoom04.getId(), testAF.getId()); room = controller.getById(testRoom04.getId()); assertEquals(testAF, room.getAccessFields().get(0)); // remove access point from access field controller.removeAccessField(testRoom04.getId(), testAF.getId()); // access field should not have access point room = controller.getById(testRoom04.getId()); assertEquals(0, room.getAccessFields().size()); } @Test(expected=ObjectInCollectionException.class) public void testAddTheSameAccessFieldTwice(){ controller.addAccessField(testRoom04.getId(), testAF.getId()); controller.addAccessField(testRoom04.getId(), testAF.getId()); } @Test(expected=ObjectNotFoundException.class) public void testRemoveANonExistingAccessFieldRelationship(){ controller.removeAccessField(testRoom04.getId(), testAF.getId()); } }