From 3d1dbd97bd725207ca3dad3d80fe20fe04a30cd6 Mon Sep 17 00:00:00 2001 From: Rafal Wilinski Date: Wed, 13 Sep 2017 10:32:26 +0200 Subject: [PATCH] Add template tests --- docker-compose.yml | 4 +++ docs/providers/aws/cli-reference/create.md | 1 + docs/providers/aws/guide/services.md | 1 + lib/plugins/create/create.js | 1 + lib/plugins/create/create.test.js | 27 +++++++++++++++++++ .../com/serverless/ApiGatewayResponse.kt | 11 +++----- tests/templates/test_all_templates | 1 + 7 files changed, 39 insertions(+), 7 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d16161c14..fa90008cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,6 +39,10 @@ services: image: maven:3-jdk-8 volumes: - ./tmp/serverless-integration-test-aws-kotlin-jvm-maven:/app + aws-kotlin-node: + image: node:6.10.3 + volumes: + - ./tmp/serverless-integration-test-aws-kotlin-node:/app aws-groovy-gradle: image: java:8 volumes: diff --git a/docs/providers/aws/cli-reference/create.md b/docs/providers/aws/cli-reference/create.md index 268ace7ed..38331142c 100644 --- a/docs/providers/aws/cli-reference/create.md +++ b/docs/providers/aws/cli-reference/create.md @@ -46,6 +46,7 @@ Most commonly used templates: - aws-python - aws-python3 - aws-kotlin-jvm-maven +- aws-kotlin-node - aws-groovy-gradle - aws-java-maven - aws-java-gradle diff --git a/docs/providers/aws/guide/services.md b/docs/providers/aws/guide/services.md index d6e18d93c..8d8575470 100644 --- a/docs/providers/aws/guide/services.md +++ b/docs/providers/aws/guide/services.md @@ -56,6 +56,7 @@ Here are the available runtimes for AWS Lambda: * aws-python * aws-python3 * aws-kotlin-jvm-maven +* aws-kotlin-node * aws-groovy-gradle * aws-java-gradle * aws-java-maven diff --git a/lib/plugins/create/create.js b/lib/plugins/create/create.js index d552a1732..3cf8067f7 100644 --- a/lib/plugins/create/create.js +++ b/lib/plugins/create/create.js @@ -17,6 +17,7 @@ const validTemplates = [ 'aws-java-maven', 'aws-java-gradle', 'aws-kotlin-jvm-maven', + 'aws-kotlin-node', 'aws-scala-sbt', 'aws-csharp', 'aws-fsharp', diff --git a/lib/plugins/create/create.test.js b/lib/plugins/create/create.test.js index cf3591dc1..9d8e9ad2d 100644 --- a/lib/plugins/create/create.test.js +++ b/lib/plugins/create/create.test.js @@ -228,6 +228,33 @@ describe('Create', () => { }); }); + it('should generate scaffolding for "aws-kotlin-node" template', () => { + process.chdir(tmpDir); + create.options.template = 'aws-kotlin-node'; + + return create.create().then(() => { + const dirContent = walkDirSync(tmpDir) + .map(elem => elem.replace(path.join(tmpDir, path.sep), '')); + + expect(dirContent).to.include('serverless.yml'); + expect(dirContent).to.include('build.gradle'); + expect(dirContent).to.include('gradlew'); + expect(dirContent).to.include('gradlew.bat'); + expect(dirContent).to.include(path.join('gradle', 'wrapper', + 'gradle-wrapper.jar')); + expect(dirContent).to.include(path.join('gradle', 'wrapper', + 'gradle-wrapper.properties')); + expect(dirContent).to.include(path.join('src', 'main', 'kotlin', 'com', 'serverless', + 'Handler.kt')); + expect(dirContent).to.include(path.join('src', 'main', 'kotlin', 'com', 'serverless', + 'ApiGatewayResponse.kt')); + expect(dirContent).to.include(path.join('src', 'main', 'kotlin', 'com', 'serverless', + 'Response.kt')); + expect(dirContent).to.include(path.join('src', 'test', 'kotlin', '.gitkeep')); + expect(dirContent).to.include(path.join('.gitignore')); + }); + }); + it('should generate scaffolding for "aws-java-gradle" template', () => { process.chdir(tmpDir); create.options.template = 'aws-java-gradle'; diff --git a/lib/plugins/create/templates/aws-kotlin-node/src/main/kotlin/com/serverless/ApiGatewayResponse.kt b/lib/plugins/create/templates/aws-kotlin-node/src/main/kotlin/com/serverless/ApiGatewayResponse.kt index 01b4146ee..de26017b7 100644 --- a/lib/plugins/create/templates/aws-kotlin-node/src/main/kotlin/com/serverless/ApiGatewayResponse.kt +++ b/lib/plugins/create/templates/aws-kotlin-node/src/main/kotlin/com/serverless/ApiGatewayResponse.kt @@ -28,13 +28,10 @@ class ApiGatewayResponse( fun build(): ApiGatewayResponse { var body: String? = null - if (rawBody != null) { - body = rawBody as String - } - else if (objectBody != null) { - body = objectBody.toString() - } else if (binaryBody != null) { - body = binaryBody.toString() + when { + rawBody != null -> body = rawBody as String + objectBody != null -> body = objectBody.toString() + binaryBody != null -> body = binaryBody.toString() } return ApiGatewayResponse(statusCode, body, headers, base64Encoded) diff --git a/tests/templates/test_all_templates b/tests/templates/test_all_templates index 2a78e6c9f..6ad858980 100755 --- a/tests/templates/test_all_templates +++ b/tests/templates/test_all_templates @@ -18,6 +18,7 @@ integration-test aws-nodejs integration-test aws-python integration-test aws-python3 integration-test aws-kotlin-jvm-maven +integration-test aws-kotlin-node integration-test aws-nodejs-typescript integration-test aws-nodejs-ecma-script integration-test google-nodejs