package de.flower.rmt.ui.page.user.manager;
import de.flower.rmt.model.db.entity.Player_;
import de.flower.rmt.model.db.entity.User;
import de.flower.rmt.service.IPlayerManager;
import de.flower.rmt.test.AbstractRMTWicketMockitoTests;
import org.apache.wicket.Component;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.tester.FormTester;
import org.testng.annotations.Test;
import static org.mockito.Mockito.*;
/**
* @author flowerrrr
*/
public class PlayerTeamsPanelTest extends AbstractRMTWicketMockitoTests {
@SpringBean
private IPlayerManager playerManager;
@Override
protected boolean isMockitoVerboseLogging() {
return true;
}
@Test
public void testRender() {
final User user = testData.newUserWithTeams();
user.setId(1L); // make it act persisted
when(playerManager.findAllByUser(user, Player_.team)).thenReturn(user.getPlayers());
when(playerManager.sortByTeam(user.getPlayers())).thenReturn(user.getPlayers());
wicketTester.startComponentInPage(new PlayerTeamsPanel("panel", Model.of(user)));
wicketTester.dumpComponentWithPage();
verify(playerManager, times(1)).findAllByUser(user, Player_.team);
wicketTester.assertVisible("list");
wicketTester.assertInvisible("noTeam");
// trigger onChange event
FormTester formTester = wicketTester.newFormTester("0:form"); // select first form of list of forms.
Component c = formTester.getForm().get("notification:input");
formTester.setValue(c, new ResourceModel("choice.player.notification.false").getObject());
wicketTester.executeAjaxEvent(c, "onchange");
// verify does complain about springbean injected mocks. must get mock directly from appContext
verify(playerManager, times(1)).save(user.getPlayers().get(0));
wicketTester.dumpAjaxResponse();
}
@Test
public void testNoTeam() {
final User user = testData.newUser();
wicketTester.startComponentInPage(new PlayerTeamsPanel("panel", Model.of(user)));
wicketTester.dumpComponentWithPage();
verify(playerManager, never()).findAllByUser(user);
wicketTester.assertVisible("noTeam");
wicketTester.assertInvisible("list");
}
}