package no.dusken.barweb.admin; import no.dusken.barweb.model.BalanceTransaksjon; import no.dusken.barweb.model.BarPerson; import no.dusken.barweb.model.TransaksjonVare; import no.dusken.barweb.model.Vare; import no.dusken.barweb.service.BalanceTransaksjonService; import no.dusken.barweb.service.impl.BalanceTransaksjonExtendedService; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.stubbing.Answer; import org.springframework.ui.ExtendedModelMap; import org.springframework.ui.Model; import static junit.framework.Assert.*; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; /** * @author Marvin B. Lillehaug <lillehau@underdusken.no> * @author Magnus Kirø <magnuskiro@underdusken.no> */ @RunWith(MockitoJUnitRunner.class) public class EditBalanceTransaksjonControllerTest { private EditBalanceTransaksjonController controller; @Mock private BalanceTransaksjonService balanceTransaksjonService; @Mock private BalanceTransaksjonExtendedService balanceTransaksjonExtendedService; private Model model; @Before public void setUp() throws Exception { controller = new EditBalanceTransaksjonController(); controller.setBalanceTransaksjonService(balanceTransaksjonService); controller.setBalanceTransaksjonExtendedService(balanceTransaksjonExtendedService); model = new ExtendedModelMap(); createBalanceTransaksjon(); } @Test public void testDeleteTransaksjon() throws Exception { BalanceTransaksjon balanceTransaksjon = balanceTransaksjonService.findOne(123L); assertEquals("Wrong transaksjon sum", (Object) 100, balanceTransaksjon.getSum()); BarPerson barPerson = balanceTransaksjon.getBarPerson(); assertEquals("Wrong barPerson balance", (Object) 100, barPerson.getMoney()); controller.deleteBalanceTransaction(123L, model); assertTrue("editMessage not present", model.containsAttribute("editMessage")); assertEquals("Wrong barPerson balance", (Object) 0, barPerson.getMoney()); } @Test public void testConfirmTransaksjon () throws Exception { BalanceTransaksjon balanceTransaksjon = balanceTransaksjonService.findOne(123L); assertFalse("Confirmed not false", balanceTransaksjon.isConfirmed()); controller.confirmBalanceTransaction(123L, model); assertTrue("editMessage not present", model.containsAttribute("editMessage")); assertTrue("Confirmed not true", balanceTransaksjon.isConfirmed()); } private void createBalanceTransaksjon() { BalanceTransaksjon balanceTransaksjon = new BalanceTransaksjon(){ @Override public Long getId() { return 1L; } }; BarPerson p = new BarPerson(); p.setMoney(100); balanceTransaksjon.setBarPerson(p); Vare v = new Vare(Vare.VareName.NOK, 1, 1, 1, true); TransaksjonVare transaksjonVare = new TransaksjonVare(); transaksjonVare.setVare(v); transaksjonVare.setAmount(100); balanceTransaksjon.getTransaksjoner().add(transaksjonVare); when(balanceTransaksjonService.findOne(123L)).thenReturn(balanceTransaksjon); when(balanceTransaksjonService.save(any(BalanceTransaksjon.class))).thenAnswer(new Answer<BalanceTransaksjon>() { @Override public BalanceTransaksjon answer(InvocationOnMock invocation) throws Throwable { return (BalanceTransaksjon) invocation.getArguments()[0]; } }); } }