package nl.tudelft.bw4t.scenariogui.editor.controller;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import java.awt.Component;
import nl.tudelft.bw4t.scenariogui.BW4TClientConfig;
import nl.tudelft.bw4t.scenariogui.ScenarioEditor;
import nl.tudelft.bw4t.scenariogui.editor.gui.ConfigurationPanel;
import nl.tudelft.bw4t.scenariogui.editor.gui.EntityPanel;
import nl.tudelft.bw4t.scenariogui.util.OptionPrompt;
import nl.tudelft.bw4t.scenariogui.util.OptionPromptHelper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Tests the warning when more e-parters than bots are added.
*/
public class UpdateEPartnerCountTest {
private ScenarioEditor scenarioEditor;
private EntityPanel entityPanel;
private OptionPrompt spyOption;
@Before
public void startUp() {
entityPanel = new EntityPanel();
scenarioEditor = new ScenarioEditor(new ConfigurationPanel(), entityPanel, new BW4TClientConfig());
spyOption = OptionPromptHelper.getNoOptionPrompt();
ScenarioEditor.setOptionPrompt(spyOption);
}
@After
public void dispose() {
scenarioEditor.dispose();
}
@Test
public void testNoWarning() {
entityPanel.getNewBotButton().doClick();
entityPanel.getNewEPartnerButton().doClick();
verify(spyOption, never()).showMessageDialog((Component) any(), any());
}
@Test
public void testWarning() {
entityPanel.getNewEPartnerButton().doClick();
verify(spyOption, times(1)).showMessageDialog((Component) any(), anyString());
}
@Test
public void testNoSecondWarning() {
entityPanel.getNewEPartnerButton().doClick();
verify(spyOption, times(1)).showMessageDialog((Component) any(), any());
entityPanel.getNewEPartnerButton().doClick();
verify(spyOption, times(1)).showMessageDialog((Component) any(), any());
}
/**
* Tests if the warning pops up again after the e-partner count
* has dropped below (or equals) the bot count again.
*/
@Test
public void testWarningAfterReset() {
entityPanel.getNewEPartnerButton().doClick();
verify(spyOption, times(1)).showMessageDialog((Component) any(), any());
entityPanel.getDeleteEPartnerButton().doClick();
verify(spyOption, times(2)).showMessageDialog((Component) any(), any());
}
}