package no.dusken.barweb.admin;
import no.dusken.barweb.model.BarPerson;
import no.dusken.barweb.model.Gjeng;
import no.dusken.barweb.model.Vare;
import no.dusken.barweb.service.BarPersonService;
import no.dusken.barweb.service.GjengService;
import no.dusken.barweb.service.TransaksjonService;
import no.dusken.barweb.service.VareService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
/**
* @author Marvin B. Lillehaug <lillehau@underdusken.no>
*/
@RunWith(MockitoJUnitRunner.class)
public class RegisterTransactionControllerTest {
private RegisterTransactionController controller;
@Mock private GjengService gjengService;
@Mock private VareService vareService;
@Mock private BarPersonService barPersonService;
@Mock private TransaksjonService transaksjonService;
private MockHttpServletRequest request;
private MockHttpServletResponse response;
@Before
public void setUp() throws Exception {
controller = new RegisterTransactionController();
controller.setGjengService(gjengService);
controller.setBarPersonService(barPersonService);
controller.setVareService(vareService);
controller.setTransaksjonService(transaksjonService);
request = new MockHttpServletRequest("POST", "/");
response = new MockHttpServletResponse();
Vare v1 = new Vare(Vare.VareName.Beer, 10, 10, 1, true){
@Override
public Long getId() {
return 321L;
}
};
Vare v2 = new Vare(Vare.VareName.Soda, 10, 10, 1, true){
@Override
public Long getId() {
return 322L;
}
};
when(vareService.getByActiveTrueOrderByOrderingAsc()).thenReturn(Arrays.asList(v1, v2));
BarPerson barPerson = new BarPerson();
Gjeng gjeng = new Gjeng();
barPerson.setGjeng(gjeng);
when(gjengService.getByDefaultGjengTrue()).thenReturn(gjeng);
when(barPersonService.findOne(123L)).thenReturn(barPerson);
}
@Test
public void testAddToTransaksjon () throws Exception {
request.setParameter("save", "true");
request.setParameter("numberOfPersons", "1");
request.setParameter("IDPerson0", "123");
request.setParameter("p123v321", "2");
request.setParameter("preview", "true");
ModelAndView modelAndView = controller.handleRequestInternal(request, response);
Map<String,Object> model = modelAndView.getModel();
Object transaksjoner = model.get("transaksjoner");
assertNotNull("No transactions", transaksjoner);
assertEquals("Wrong size", 1, ((List) transaksjoner).size());
Object preview = model.get("preview");
assertNotNull("No preview", preview);
assertTrue("No preview", (Boolean) preview);
}
}