package nl.tudelft.bw4t.scenariogui; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.awt.Component; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import javax.swing.JFileChooser; import javax.xml.bind.JAXBException; import nl.tudelft.bw4t.scenariogui.editor.controller.AbstractMenuOption; import nl.tudelft.bw4t.scenariogui.editor.gui.ConfigurationPanel; import nl.tudelft.bw4t.scenariogui.editor.gui.EntityPanel; import nl.tudelft.bw4t.scenariogui.editor.gui.MainPanel; 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; public class ScenarioEditorTest { private ScenarioEditor editor; private JFileChooser filechooser; private static final String BASE = System.getProperty("user.dir") + "/src/test/resources/"; private static final String FILE_OPEN_PATH = BASE + "nonexistent.xml"; @Before public void setUp() { editor = spy(new ScenarioEditor()); filechooser = mock(JFileChooser.class); /* Retrieve the controllers, should be one for each item. */ ActionListener[] listeners = editor.getTopMenuBar().getMenuItemFileOpen().getActionListeners(); AbstractMenuOption menuOption = (AbstractMenuOption) listeners[0]; menuOption.setCurrentFileChooser(filechooser); } @After public void breakItDown() { editor.dispose(); } @Test public final void checkActivePane() { editor = new ScenarioEditor(); MainPanel panel = new MainPanel(editor, new ConfigurationPanel(), new EntityPanel()); editor.setActivePane(panel); assertEquals(panel, editor.getActivePane()); } @Test public void testJAXBException() throws FileNotFoundException, JAXBException { OptionPrompt yesMockOption = OptionPromptHelper.getYesOptionPrompt(); // Setup the behaviour when(filechooser.showOpenDialog((Component) any())).thenReturn(JFileChooser.APPROVE_OPTION); when(filechooser.getSelectedFile()).thenReturn(new File(FILE_OPEN_PATH)); ScenarioEditor.setOptionPrompt(yesMockOption); editor.getTopMenuBar().getMenuItemFileOpen().doClick(); // Finally make sure the confirmation dialog was called. verify(yesMockOption, times(1)) .showMessageDialog((Component) any(), anyString()); } @Test public void testWindowNameDefault() { assertEquals("Scenario Editor - Untitled", editor.getTitle()); } @Test public void testWindowNameChanged() { String filename = "Caramba.xml"; editor.setWindowTitle(filename); assertEquals("Scenario Editor - " + filename, editor.getTitle()); } }