Skip to content

Commit

Permalink
Test refactor and improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
rsvalerio committed Sep 4, 2016
1 parent b58490f commit 0242006
Show file tree
Hide file tree
Showing 7 changed files with 97 additions and 47 deletions.
3 changes: 2 additions & 1 deletion generators/app/index.js
Expand Up @@ -2,11 +2,12 @@
var yeoman = require('yeoman-generator');
var chalk = require('chalk');
var yosay = require('yosay');
var prompts = require('./lib/prompts');
var glob = require('glob');
var path = require('path');
var mkdirp = require('mkdirp');

var prompts = require('./lib/prompts');

module.exports = yeoman.Base.extend({
initializing: {
files: function () {
Expand Down
6 changes: 0 additions & 6 deletions generators/app/lib/prompts.js
Expand Up @@ -14,11 +14,5 @@ module.exports = [
name: 'package',
message: 'Package name: ',
default: 'com.' + appName
},
{
type: 'confirm',
name: 'docker',
message: 'Dockerize the app?',
default: true
}
];
28 changes: 25 additions & 3 deletions generators/app/templates/pom.xml
Expand Up @@ -16,12 +16,9 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring.boot.version><%= userProps.options.springBootVersion%></spring.boot.version>
<camel.spring.boot.version><%= userProps.options.camelSpringBootVersion%></camel.spring.boot.version>
<% if (userProps.docker) { %>
<docker.maven.plugin.version><%= userProps.options.dockerMavenPluginVersion%></docker.maven.plugin.version>
<% } %>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -57,6 +54,8 @@

<build>
<plugins>

<!-- Executable jar -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
Expand All @@ -74,6 +73,29 @@
</executions>
</plugin>

<!-- Dockerize app -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.maven.plugin.version}</version>
<configuration>
<forceTags>true</forceTags>
<imageName>${project.artifactId}</imageName>
<baseImage>anapsix/alpine-java</baseImage>
<runs>sh -c 'touch /${project.build.finalName}.jar'</runs>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

</plugins>

Expand Down
2 changes: 1 addition & 1 deletion generators/app/templates/src/main/java/beans/MyBean.java
@@ -1,4 +1,4 @@
package com.rsvalerio.beans;
package <%= userProps.package %>.beans;

import org.apache.camel.Exchange;
import org.springframework.beans.factory.annotation.Value;
Expand Down
@@ -0,0 +1,8 @@
package <%= userProps.package %>.routes;

import org.apache.camel.spring.boot.FatJarRouter;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class AppBootstrapRouter extends FatJarRouter {
}
34 changes: 19 additions & 15 deletions generators/app/templates/src/main/java/routes/MyRouter.java
@@ -1,23 +1,27 @@
package com.rsvalerio.routes;
package <%= userProps.package %>.routes;

import org.apache.camel.spring.boot.FatJarRouter;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@SpringBootApplication
public class MyRouter extends FatJarRouter {
@Component
public class MyRouter extends RouteBuilder {

@Override
public void configure() {
@Override
public void configure() {

from("timer:trigger")
.transform(method("MyBean", "answer"))
.to("log:out");
}
from("timer:trigger")
.transform().simple("ref:myOtherBean")
.log(LoggingLevel.INFO, "Msg1: ${body}")
.to("bean:myBean")
.log(LoggingLevel.INFO, "Msg2: ${header.msg}")
.end();
}

@Bean
String myOtherBean() {
return "Hello Wolrd !!!";
}
@Bean
String myOtherBean() {
return "Hello Wolrd from myOtherBean!!!";
}

}
63 changes: 42 additions & 21 deletions test/app.js
Expand Up @@ -2,31 +2,52 @@
var path = require('path');
var assert = require('yeoman-assert');
var helpers = require('yeoman-test');
var basicProps = {};
var basicOpts = {};

describe('generator-camel:app', function () {

before(function () {
return helpers.run(path.join(__dirname, '../generators/app'))
.withPrompts({appName: 'MyAppMock'})
.withPrompts({package: 'com.rsvalerio.mock'})
.withOptions({springBootVersion: '1.0.0'})
.withOptions({camelSpringBootVersion: '2.0.0'})
.toPromise();
basicProps.appName = 'MyAppMock';
basicProps.package = 'com.generator.mock';
basicProps.packageFolder = 'com/generator/mock';
basicProps.docker = true;
basicOpts.springBootVersion = '1.0.0';
basicOpts.camelSpringBootVersion = '2.0.0';
basicOpts.dockerMavenPluginVersion = '5.0.0';
});

it('Copy all the files', function () {
assert.file([
'pom.xml',
'README.md',
'src/main/java/com/rsvalerio/mock/beans/MyBean.java',
'src/main/java/com/rsvalerio/mock/routes/MyRouter.java',
'src/main/resources/application.yml'
]);
});
it('Configure pom.xml', function () {
assert.noFileContent('pom.xml', /<%=/);
assert.fileContent('pom.xml', /<groupId>com.rsvalerio.mock<\/groupId>/);
assert.fileContent('pom.xml', /<artifactId>MyAppMock<\/artifactId>/);
assert.fileContent('pom.xml', /<spring.boot.version>1.0.0<\/spring.boot.version>/);
assert.fileContent('pom.xml', /<camel.spring.boot.version>2.0.0<\/camel.spring.boot.version>/);
describe('Should properly scaffold with default config', function () {

before(function () {
return helpers.run(path.join(__dirname, '../generators/app'))
.withPrompts({ appName: basicProps.appName })
.withPrompts({ package: basicProps.package })
.withPrompts({ docker: basicProps.docker })
.withOptions({ springBootVersion: basicOpts.springBootVersion })
.withOptions({ camelSpringBootVersion: basicOpts.camelSpringBootVersion })
.withOptions({ dockerMavenPluginVersion: basicOpts.dockerMavenPluginVersion })
.toPromise();
});

it('Should create the basic structure', function () {
assert.file([
'pom.xml',
'README.md',
'src/main/java/' + basicProps.packageFolder + '/beans/MyBean.java',
'src/main/java/' + basicProps.packageFolder + '/routes/AppBootstrapRouter.java',
'src/main/java/' + basicProps.packageFolder + '/routes/MyRouter.java',
'src/main/resources/application.yml'
]);
});

it('Should create pom.xml with default content', function () {
assert.fileContent('pom.xml', new RegExp('<groupId>' + basicProps.package + '</groupId>') );
assert.fileContent('pom.xml', new RegExp('<artifactId>' + basicProps.appName + '</artifactId>') );
assert.fileContent('pom.xml', new RegExp('<spring.boot.version>' + basicOpts.springBootVersion + '</spring.boot.version>') );
assert.fileContent('pom.xml', new RegExp('<camel.spring.boot.version>' + basicOpts.camelSpringBootVersion + '</camel.spring.boot.version>') );
assert.fileContent('pom.xml', new RegExp('<docker.maven.plugin.version>' + basicOpts.dockerMavenPluginVersion + '</docker.maven.plugin.version>') );
});
});

});

0 comments on commit 0242006

Please sign in to comment.