package com.kostbot.zoodirector.ui; import org.junit.Assert; import org.junit.Test; import java.awt.*; import java.awt.event.KeyEvent; import java.lang.reflect.Field; import java.util.Date; import static org.mockito.Mockito.*; public class ZooDirectorAddressPanelTest { public void simulateKey(Component c, KeyEvent e) throws Exception { Field f = AWTEvent.class.getDeclaredField("focusManagerIsDispatching"); f.setAccessible(true); f.set(e, Boolean.TRUE); c.dispatchEvent(e); } @Test public void testSetPath() throws Exception { ZooDirectorAddressPanel addressPanel = new ZooDirectorAddressPanel(null); String validPath = "/valid"; addressPanel.setPath(validPath); Assert.assertEquals("path should be exactly as set", validPath, addressPanel.addressField.getText()); Assert.assertEquals(Color.BLACK, addressPanel.addressField.getForeground()); String inValidPath = "/valid/"; addressPanel.setPath(inValidPath); Assert.assertEquals("path should be exactly as set", inValidPath, addressPanel.addressField.getText()); Assert.assertEquals(Color.RED, addressPanel.addressField.getForeground()); } @Test public void testGoToOnEnterKey() throws Exception { ZooDirectorPanel zooDirectorPanel = mock(ZooDirectorPanel.class); ZooDirectorAddressPanel addressPanel = new ZooDirectorAddressPanel(zooDirectorPanel); String validPath = "/valid"; addressPanel.setPath(validPath); simulateKey(addressPanel.addressField, new KeyEvent(addressPanel, KeyEvent.KEY_RELEASED, new Date().getTime(), 0, KeyEvent.VK_ENTER, ' ')); verify(zooDirectorPanel, times(1)).viewEditTreeNode(validPath); String invalidPath = "/valid/"; addressPanel.setPath(invalidPath); simulateKey(addressPanel.addressField, new KeyEvent(addressPanel, KeyEvent.KEY_RELEASED, new Date().getTime(), 0, KeyEvent.VK_ENTER, ' ')); verify(zooDirectorPanel, times(1)).viewEditTreeNode(validPath); verifyNoMoreInteractions(zooDirectorPanel); } }