public Iterable<JsContent> getJsContent(JsUri jsUri, FeatureBundle bundle) { jsUri = new JsUri(jsUri) { @Override public boolean isDebug() { // Force debug JS in the raw JS content retrieved. return true; } }; List<JsContent> builder = Lists.newLinkedList(defaultCompiler.getJsContent(jsUri, bundle)); CompilerOptions options = getCompilerOptions(jsUri); if (options.isExternExportsEnabled()) { List<String> exports = Lists.newArrayList(bundle.getApis(ApiDirective.Type.JS, true)); Collections.sort(exports); String prevExport = null; for (String export : exports) { if (!export.equals(prevExport)) { builder.add(JsContent.fromText( "goog.exportSymbol('" + StringEscapeUtils.escapeEcmaScript(export) + "', " + export + ");\n", "[export-symbol]")); prevExport = export; } } } return builder; }
@SuppressWarnings("unchecked") private DefaultJsCompiler mockDefaultJsCompiler(JsResponse res, Iterable<JsContent> content) { DefaultJsCompiler result = createMock(DefaultJsCompiler.class); expect(result.getJsContent(isA(JsUri.class), isA(FeatureBundle.class))) .andReturn(content).anyTimes(); expect(result.compile(isA(JsUri.class), isA(Iterable.class), isA(String.class))) .andReturn(res).anyTimes(); replay(result); return result; }
@SuppressWarnings("unchecked") private DefaultJsCompiler mockDefaultJsCompiler(JsResponse res, Iterable<JsContent> content) { DefaultJsCompiler result = createMock(DefaultJsCompiler.class); expect(result.getJsContent(isA(JsUri.class), isA(FeatureBundle.class))) .andReturn(content).anyTimes(); expect(result.compile(isA(JsUri.class), isA(Iterable.class), isA(String.class))) .andReturn(res).anyTimes(); replay(result); return result; }
@Test public void testGetJsContentWithDeb() throws Exception { JsUri jsUri = mockJsUri(true); // debug FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_DEB + "\"></script>');\n" + RESOURCE_CONTENT_DEB + ";\n", getContent(actual)); }
@Test public void testGetJsContentWithOpt() throws Exception { JsUri jsUri = mockJsUri(false); // optimized FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_OPT + "\"></script>');\n" + RESOURCE_CONTENT_OPT + ";\n", getContent(actual)); }
@Test public void testGetJsContentWithDeb() throws Exception { JsUri jsUri = mockJsUri(true); // debug FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_DEB + "\"></script>');\n" + RESOURCE_CONTENT_DEB + ";\n", getContent(actual)); }
@Test public void testGetJsContentWithOpt() throws Exception { JsUri jsUri = mockJsUri(false); // optimized FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_OPT + "\"></script>');\n" + RESOURCE_CONTENT_OPT + ";\n", getContent(actual)); }