This is awesome! Thank you very much!

On Mon, Nov 27, 2017 at 10:01 AM, <jkemn...@apache.org> wrote:

> 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
>
>


-- 
Thiago

Reply via email to