package com.google.gwt.chrome.crx.linker.emiter; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.mockito.MockitoAnnotations; import com.google.gwt.chrome.crx.client.Plugin; import com.google.gwt.chrome.crx.linker.artifact.PluginArtifact; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; /** * @author zinur * */ public class PluginEmiterTest { @Mock private TreeLogger logger; @Mock private GeneratorContext context; @Mock private JClassType userType; private static final String TYPE_NAME = Emiter.PAGEACTION_USER_TYPE; @Before public void setUp() { MockitoAnnotations.initMocks(this); Plugin.ManifestInfo spec = mock(Plugin.ManifestInfo.class); when(spec.path()).thenReturn("google/com/"); when(spec.isPublic()).thenReturn(true); when(userType.getAnnotation(Plugin.ManifestInfo.class)).thenReturn(spec); } @Test public void shouldCommitArtifact() throws UnableToCompleteException { Plugin.ManifestInfo spec = userType.getAnnotation(Plugin.ManifestInfo.class); invokeCodeEmition(); verify(context).commitArtifact(logger, new PluginArtifact(spec.path(), spec.isPublic())); } @Test(expected = UnableToCompleteException.class) public void shouldThrowUnableToCompleteExceptionIfNoPlugin() throws UnableToCompleteException { when(userType.getAnnotation(Plugin.ManifestInfo.class)).thenReturn(null); invokeCodeEmition(); } protected String invokeCodeEmition() throws UnableToCompleteException { Emiter emiter = new PluginEmiter(); return emiter.emit(logger, context, userType, TYPE_NAME); } }