Repository: tapestry-5
Updated Branches:
  refs/heads/master 80f65eb4b -> 0f2c01c9a


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c01c9/tapestry-webresources/src/test/groovy/t5/webresources/tests/TypeScriptCompilerSpec.groovy
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/TypeScriptCompilerSpec.groovy
 
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/TypeScriptCompilerSpec.groovy
new file mode 100644
index 0000000..aafd30a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/TypeScriptCompilerSpec.groovy
@@ -0,0 +1,58 @@
+package t5.webresources.tests;
+
+import org.apache.tapestry5.SymbolConstants
+import org.apache.tapestry5.internal.InternalSymbols
+import org.apache.tapestry5.internal.test.PageTesterContext
+import org.apache.tapestry5.internal.webresources.TypeScriptCompiler
+import org.apache.tapestry5.ioc.MappedConfiguration
+import org.apache.tapestry5.ioc.annotations.Autobuild
+import org.apache.tapestry5.ioc.annotations.Inject
+import org.apache.tapestry5.ioc.annotations.SubModule
+import org.apache.tapestry5.ioc.internal.util.ClasspathResource
+import org.apache.tapestry5.modules.AssetsModule
+import org.apache.tapestry5.modules.TapestryModule
+import org.apache.tapestry5.services.ApplicationGlobals
+import org.apache.tapestry5.webresources.modules.WebResourcesModule
+
+import spock.lang.Shared
+import spock.lang.Specification
+
+@SubModule([TapestryModule, WebResourcesModule, 
TypeScriptCompilerSpec.TestModule, AssetsModule])
+class TypeScriptCompilerSpec extends Specification {
+
+  @Autobuild
+  private TypeScriptCompiler typeScriptCompiler;
+
+  @Inject
+  @Shared
+  private ApplicationGlobals applicationGlobals
+
+  def setupSpec(){
+    applicationGlobals.storeContext(new PageTesterContext("/test"));
+  }
+
+  def "Compile Hello World example"(){
+    when:
+    def resource = new ClasspathResource("t5/webresources/greeter.ts")
+    def compiled = typeScriptCompiler.transform(resource, null)
+    then:
+    compiled.text == 
TypeScriptCompilerSpec.class.getResourceAsStream('/t5/webresources/greeter-compiled.js').text
+  }
+
+  def "Type information is preserved"(){
+    when:
+    def resource = new ClasspathResource("t5/webresources/park-example.ts")
+    def compiled = typeScriptCompiler.transform(resource, null)
+    then:
+    compiled.text == 
TypeScriptCompilerSpec.class.getResourceAsStream('/t5/webresources/park-example-compiled.js').text
+  }
+  
+  public static class TestModule {
+
+    def contributeApplicationDefaults(MappedConfiguration configuration){
+      configuration.add(InternalSymbols.APP_NAME, "test")
+      configuration.add("tapestry.app-package", "typescript")
+      configuration.add(SymbolConstants.MINIFICATION_ENABLED, false)
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c01c9/tapestry-webresources/src/test/resources/t5/webresources/greeter-compiled.js
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/greeter-compiled.js 
b/tapestry-webresources/src/test/resources/t5/webresources/greeter-compiled.js
new file mode 100644
index 0000000..0794189
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/greeter-compiled.js
@@ -0,0 +1,8 @@
+define(["require", "exports"], function (require, exports) {
+    "use strict";
+    function greeter(person) {
+        return "Hello, " + person;
+    }
+    var user = "Jane User";
+    document.body.innerHTML = greeter(user);
+});

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c01c9/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts 
b/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
new file mode 100644
index 0000000..7fc2d1a
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
@@ -0,0 +1,7 @@
+function greeter(person) {
+    return "Hello, " + person;
+}
+
+var user = "Jane User";
+
+document.body.innerHTML = greeter(user);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c01c9/tapestry-webresources/src/test/resources/t5/webresources/park-example-compiled.js
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/park-example-compiled.js
 
b/tapestry-webresources/src/test/resources/t5/webresources/park-example-compiled.js
new file mode 100644
index 0000000..6d8e725
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/park-example-compiled.js
@@ -0,0 +1,26 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, 
key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = 
Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") 
r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = 
decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) 
|| r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __metadata = (this && this.__metadata) || function (k, v) {
+    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") 
return Reflect.metadata(k, v);
+};
+define(["require", "exports"], function (require, exports) {
+    "use strict";
+    var Pterodactyls = /** @class */ (function () {
+        function Pterodactyls() {
+        }
+        return Pterodactyls;
+    }());
+    var Park = /** @class */ (function () {
+        function Park(x, y) {
+        }
+        Park = __decorate([
+            Aviary,
+            __metadata("design:paramtypes", [Pterodactyls, String])
+        ], Park);
+        return Park;
+    }());
+});

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c01c9/tapestry-webresources/src/test/resources/t5/webresources/park-example.ts
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/park-example.ts 
b/tapestry-webresources/src/test/resources/t5/webresources/park-example.ts
new file mode 100644
index 0000000..ce9b4f2
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/park-example.ts
@@ -0,0 +1,6 @@
+class Pterodactyls {}
+
+@Aviary
+class Park {
+  constructor(x: Pterodactyls, y: string) {}
+}
\ No newline at end of file

Reply via email to