@Test public void testGetIssueLinkRendererModuleDescriptorSurvivesPluginThrowingExceptions() throws Exception { Assert.assertSame( defaultRenderer, RemoteIssueLinkUtils.getIssueLinkRendererModuleDescriptor(pluginAccessor, null)); Assert.assertSame( goodDescriptorRenderer, RemoteIssueLinkUtils.getIssueLinkRendererModuleDescriptor(pluginAccessor, "application")); }
@Test public void testGetHtmlSurvivesPluginThrowingExceptionFromGetFinalHtml() throws Exception { Mockito.when(goodDescriptorRenderer.getFinalHtml(link)).thenReturn("final html"); Assert.assertEquals("final html", RemoteIssueLinkUtils.getFinalHtml(link, pluginAccessor)); Mockito.when(goodDescriptorRenderer.getFinalHtml(Mockito.<RemoteIssueLink>any())) .thenThrow(new LinkageError("Misbehaving plugin exception - non-fatal error")); expectedException.expect(Exception.class); RemoteIssueLinkUtils.getFinalHtml(link, pluginAccessor); }
@Test public void testConvertToIssueLinkContextsSurvivesPluginThrowingExceptionFromGetModule() throws Exception { Mockito.when(goodDescriptorRenderer.getModule()) .thenThrow(new RuntimeException("Misbehaving plugin exception")); final Map<String, List<IssueLinkContext>> contexts = RemoteIssueLinkUtils.convertToIssueLinkContexts( ImmutableList.of(link), 1L, "", new MockI18nHelper(), pluginAccessor); Assert.assertEquals(Collections.<String, List<IssueLinkContext>>emptyMap(), contexts); }
@Test public void testConvertToIssueLinkContextsSurvivesPluginThrowingExceptionFromRequiresAsyncLoading() throws Exception { Mockito.when(renderer.shouldDisplay(Mockito.<RemoteIssueLink>any())).thenReturn(true); Mockito.when(renderer.requiresAsyncLoading(Mockito.<RemoteIssueLink>any())) .thenThrow(new RuntimeException("Misbehaving plugin exception")); final Map<String, List<IssueLinkContext>> contexts = RemoteIssueLinkUtils.convertToIssueLinkContexts( ImmutableList.of(link), 1L, "", new MockI18nHelper(), pluginAccessor); Assert.assertEquals(Collections.<String, List<IssueLinkContext>>emptyMap(), contexts); }
@Test public void testConvertToIssueLinkContexts() throws Exception { Mockito.when(renderer.shouldDisplay(Mockito.<RemoteIssueLink>any())).thenReturn(true); Mockito.when(renderer.requiresAsyncLoading(link)).thenReturn(true); Mockito.when(goodDescriptorRenderer.getInitialHtml(link)).thenReturn("valid html"); final Map<String, List<IssueLinkContext>> contextMap = RemoteIssueLinkUtils.convertToIssueLinkContexts( ImmutableList.of(link), 1L, "", new MockI18nHelper(), pluginAccessor); Assert.assertEquals(1, contextMap.size()); final List<IssueLinkContext> contexts = contextMap.values().iterator().next(); final IssueLinkContext context = Iterables.getOnlyElement(contexts); Assert.assertTrue(context.isRequiresAsyncLoading()); Assert.assertEquals("valid html", context.getHtml()); }