springmvc-scaffold 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +45 -0
  6. data/README.markdown +31 -0
  7. data/Rakefile +9 -0
  8. data/bin/springmvc +7 -0
  9. data/lib/springmvc-scaffold.rb +14 -0
  10. data/lib/springmvc-scaffold/configuration.rb +50 -0
  11. data/lib/springmvc-scaffold/execution.rb +20 -0
  12. data/lib/springmvc-scaffold/generators/app/app_generator.rb +123 -0
  13. data/lib/springmvc-scaffold/generators/app/dependencies.rb +26 -0
  14. data/lib/springmvc-scaffold/generators/app/dependency.rb +15 -0
  15. data/lib/springmvc-scaffold/generators/app/templates/build.gradle.erb +56 -0
  16. data/lib/springmvc-scaffold/generators/app/templates/models/Entity.erb +46 -0
  17. data/lib/springmvc-scaffold/generators/app/templates/orm/Repository-hibernate.java.tt +51 -0
  18. data/lib/springmvc-scaffold/generators/app/templates/orm/Repository-jpa.java.tt +49 -0
  19. data/lib/springmvc-scaffold/generators/app/templates/pom.erb +95 -0
  20. data/lib/springmvc-scaffold/generators/app/templates/resources/hibernate.properties +16 -0
  21. data/lib/springmvc-scaffold/generators/app/templates/resources/log4j.properties +4 -0
  22. data/lib/springmvc-scaffold/generators/app/templates/resources/messages.properties +0 -0
  23. data/lib/springmvc-scaffold/generators/app/templates/springmvc-scaffold.erb +6 -0
  24. data/lib/springmvc-scaffold/generators/app/templates/webapp/.bowerrc +3 -0
  25. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/jsp/decorators/main.jsp +15 -0
  26. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/jsp/prelude.jspf +4 -0
  27. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/sitemesh3.xml +3 -0
  28. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/spring-servlet.xml.tt +42 -0
  29. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/web.xml.tt +52 -0
  30. data/lib/springmvc-scaffold/generators/app/templates/webapp/bower.json.tt +7 -0
  31. data/lib/springmvc-scaffold/generators/app/templates/webapp/stylesheets/application.css +38 -0
  32. data/lib/springmvc-scaffold/generators/base.rb +17 -0
  33. data/lib/springmvc-scaffold/generators/scaffold/attribute.rb +68 -0
  34. data/lib/springmvc-scaffold/generators/scaffold/base_scaffold.rb +54 -0
  35. data/lib/springmvc-scaffold/generators/scaffold/controller/controller_generator.rb +20 -0
  36. data/lib/springmvc-scaffold/generators/scaffold/controller/templates/controller.erb +126 -0
  37. data/lib/springmvc-scaffold/generators/scaffold/controller/templates/controller_test.erb +13 -0
  38. data/lib/springmvc-scaffold/generators/scaffold/imports.rb +18 -0
  39. data/lib/springmvc-scaffold/generators/scaffold/jsp/jsp_generator.rb +40 -0
  40. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/edit.erb +15 -0
  41. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/form.erb +14 -0
  42. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/index.erb +38 -0
  43. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/new.erb +14 -0
  44. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/show.erb +16 -0
  45. data/lib/springmvc-scaffold/generators/scaffold/model/model_generator.rb +16 -0
  46. data/lib/springmvc-scaffold/generators/scaffold/model/templates/model.erb +22 -0
  47. data/lib/springmvc-scaffold/generators/scaffold/model/templates/model_test.erb +13 -0
  48. data/lib/springmvc-scaffold/generators/scaffold/repository/repository_generator.rb +30 -0
  49. data/lib/springmvc-scaffold/generators/scaffold/repository/templates/repository.erb +18 -0
  50. data/lib/springmvc-scaffold/generators/scaffold/repository/templates/repository_test.erb +13 -0
  51. data/lib/springmvc-scaffold/generators/scaffold/scaffold_generator.rb +31 -0
  52. data/lib/springmvc-scaffold/runner.rb +7 -0
  53. data/lib/springmvc-scaffold/runner/commands_help.rb +11 -0
  54. data/lib/springmvc-scaffold/runner/generator.rb +14 -0
  55. data/lib/springmvc-scaffold/runner/help.rb +10 -0
  56. data/lib/springmvc-scaffold/runner/scaffold.rb +15 -0
  57. data/lib/springmvc-scaffold/version.rb +3 -0
  58. data/spec/spec_helper.rb +23 -0
  59. data/spec/springmvc-scaffold/configuration_spec.rb +124 -0
  60. data/spec/springmvc-scaffold/execution_spec.rb +40 -0
  61. data/spec/springmvc-scaffold/generators/app/app_generator_spec.rb +226 -0
  62. data/spec/springmvc-scaffold/generators/app/dependency_spec.rb +14 -0
  63. data/spec/springmvc-scaffold/generators/app/templates/Entity.java +46 -0
  64. data/spec/springmvc-scaffold/generators/app/templates/RepositoryJPA.java +49 -0
  65. data/spec/springmvc-scaffold/generators/app/templates/build.gradle +59 -0
  66. data/spec/springmvc-scaffold/generators/app/templates/pom.xml +146 -0
  67. data/spec/springmvc-scaffold/generators/app/templates/springmvc-scaffold.properties +6 -0
  68. data/spec/springmvc-scaffold/generators/scaffold/attribute_spec.rb +215 -0
  69. data/spec/springmvc-scaffold/generators/scaffold/base_scaffold_spec.rb +70 -0
  70. data/spec/springmvc-scaffold/generators/scaffold/controller/controller_generator_spec.rb +53 -0
  71. data/spec/springmvc-scaffold/generators/scaffold/controller/templates/ProductsController.java +97 -0
  72. data/spec/springmvc-scaffold/generators/scaffold/imports_spec.rb +9 -0
  73. data/spec/springmvc-scaffold/generators/scaffold/jsp/jsp_generator_spec.rb +46 -0
  74. data/spec/springmvc-scaffold/generators/scaffold/jsp/templates/form.jsp +25 -0
  75. data/spec/springmvc-scaffold/generators/scaffold/model/model_generator_spec.rb +28 -0
  76. data/spec/springmvc-scaffold/generators/scaffold/model/templates/Product.java +43 -0
  77. data/spec/springmvc-scaffold/generators/scaffold/repository/repository_generator_spec.rb +49 -0
  78. data/spec/springmvc-scaffold/generators/scaffold/repository/templates/Clients.java +16 -0
  79. data/spec/springmvc-scaffold/generators/scaffold/repository/templates/Products.java +10 -0
  80. data/spec/springmvc-scaffold/generators/scaffold/scaffold_generator_spec.rb +60 -0
  81. data/spec/springmvc-scaffold/runner/commands_help_spec.rb +13 -0
  82. data/spec/springmvc-scaffold/runner/generator_spec.rb +21 -0
  83. data/spec/springmvc-scaffold/runner/help_spec.rb +22 -0
  84. data/spec/springmvc-scaffold/runner/scaffold_spec.rb +36 -0
  85. data/spec/springmvc-scaffold_spec.rb +4 -0
  86. data/springmvc-scaffold.gemspec +27 -0
  87. metadata +185 -0
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
2
+
3
+ describe Dependency do
4
+
5
+ it "should has exclusions" do
6
+ dependency = described_class.new("org.springframework", "spring-web", "4.0.0", [described_class.new("org.springframework", "spring-orm")])
7
+ expect(dependency.has_exclusions?).to be true
8
+ end
9
+
10
+ it "cannot has exclusions" do
11
+ dependency = described_class.new("org.springframework", "spring-web", "3.0.0")
12
+ expect(dependency.has_exclusions?).to be false
13
+ end
14
+ end
@@ -0,0 +1,46 @@
1
+ package app.models;
2
+
3
+ import javax.persistence.GeneratedValue;
4
+ import javax.persistence.Id;
5
+ import javax.persistence.MappedSuperclass;
6
+
7
+ @MappedSuperclass
8
+ public class Entity {
9
+
10
+ @Id
11
+ @GeneratedValue
12
+ private Long id;
13
+
14
+ public void setId(Long id) {
15
+ this.id = id;
16
+ }
17
+
18
+ public Long getId() {
19
+ return id;
20
+ }
21
+
22
+ @Override
23
+ public boolean equals(Object obj) {
24
+ if (obj == null) {
25
+ return false;
26
+ }
27
+ if (this == obj) {
28
+ return true;
29
+ }
30
+ if (getClass() != obj.getClass()) {
31
+ return false;
32
+ }
33
+ final Entity other = (Entity) obj;
34
+ if (id != other.id && (id == null || !id.equals(other.id))) {
35
+ return false;
36
+ }
37
+ return true;
38
+ }
39
+
40
+ @Override
41
+ public int hashCode() {
42
+ int hash = 7;
43
+ hash = 17 * hash + (this.getId() != null ? this.getId().hashCode() : 0);
44
+ return hash;
45
+ }
46
+ }
@@ -0,0 +1,49 @@
1
+ package app.repositories;
2
+
3
+ import java.lang.reflect.ParameterizedType;
4
+ import java.util.List;
5
+
6
+ import javax.persistence.EntityManager;
7
+ import javax.persistence.PersistenceContext;
8
+
9
+ import org.springframework.transaction.annotation.Transactional;
10
+
11
+ @Transactional
12
+ public abstract class GenericRepository<T> {
13
+
14
+ protected EntityManager em;
15
+ protected final Class<T> clazz;
16
+
17
+ protected GenericRepository() {
18
+ @SuppressWarnings("unchecked")
19
+ Class<T> clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
20
+
21
+ this.clazz = clazz;
22
+ }
23
+
24
+ @PersistenceContext
25
+ public void setEntityManager(EntityManager em) {
26
+ this.em = em;
27
+ }
28
+
29
+ public void add(T entity) {
30
+ em.persist(entity);
31
+ }
32
+
33
+ public T update(T entity) {
34
+ return em.merge(entity);
35
+ }
36
+
37
+ public void remove(Long id) {
38
+ em.remove(get(id));
39
+ }
40
+
41
+ public T get(Long id) {
42
+ return em.find(clazz, id);
43
+ }
44
+
45
+ @SuppressWarnings("unchecked")
46
+ public List<T> all() {
47
+ return em.createQuery("from " + clazz.getName()).getResultList();
48
+ }
49
+ }
@@ -0,0 +1,59 @@
1
+ repositories {
2
+ mavenCentral()
3
+ }
4
+
5
+ apply plugin: 'java'
6
+ apply plugin: 'war'
7
+ apply plugin: 'jetty'
8
+ apply plugin: 'eclipse'
9
+
10
+ sourceCompatibility = 1.6
11
+ targetCompatibility = 1.6
12
+ version = '1.0'
13
+
14
+ sourceSets {
15
+ main {
16
+ java {
17
+ srcDir 'src/main/java'
18
+ }
19
+ resources {
20
+ srcDir 'src/main/resources'
21
+ }
22
+ }
23
+ test {
24
+ java {
25
+ srcDir 'src/test/java'
26
+ }
27
+ resources {
28
+ srcDir 'src/test/resources'
29
+ }
30
+ }
31
+ }
32
+
33
+ sourceSets.main.output.classesDir = new File('src/main/webapp/WEB-INF/classes')
34
+
35
+ jettyRun.scanIntervalSeconds=3
36
+ jettyRun.contextPath = '/'
37
+ [jettyRunWar,jettyStop]*.stopPort = 8081
38
+ [jettyRunWar,jettyStop]*.stopKey = 'stopKey'
39
+
40
+ dependencies {
41
+ compile group: 'org.springframework', name: 'spring-webmvc', version: '4.1.3.RELEASE'
42
+ compile group: 'org.springframework', name: 'spring-orm', version: '4.1.3.RELEASE'
43
+ compile group: 'javax.servlet', name: 'jstl', version: '1.2'
44
+ compile group: 'org.hsqldb', name: 'hsqldb', version: '2.3.2'
45
+ compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.3.7.Final'
46
+ compile group: 'org.hibernate', name: 'hibernate-c3p0', version: '4.3.7.Final'
47
+ compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.1.3.Final'
48
+ compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.7'
49
+ compile group: 'joda-time', name: 'joda-time', version: '2.5'
50
+ compile group: 'org.sitemesh', name: 'sitemesh', version: '3.0.0'
51
+
52
+ //Provided dependencies
53
+ providedCompile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
54
+ providedCompile group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.2'
55
+
56
+ //Test dependencies
57
+ testCompile group: 'junit', name: 'junit', version: '4.11'
58
+ testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.8'
59
+ }
@@ -0,0 +1,146 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>springmvc-scaffold</groupId>
5
+ <artifactId>springmvc-scaffold</artifactId>
6
+ <packaging>war</packaging>
7
+ <version>0.0.1-SNAPSHOT</version>
8
+ <name>springmvc-scaffold</name>
9
+
10
+ <properties>
11
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
12
+ </properties>
13
+
14
+ <build>
15
+ <outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>
16
+ <plugins>
17
+ <plugin>
18
+ <artifactId>maven-compiler-plugin</artifactId>
19
+ <version>3.2</version>
20
+ <configuration>
21
+ <source>1.7</source>
22
+ <target>1.7</target>
23
+ <encoding>UTF-8</encoding>
24
+ </configuration>
25
+ </plugin>
26
+ <plugin>
27
+ <artifactId>maven-eclipse-plugin</artifactId>
28
+ <version>2.9</version>
29
+ <configuration>
30
+ <downloadSources>true</downloadSources>
31
+ <downloadJavadocs>true</downloadJavadocs>
32
+ <wtpversion>2.0</wtpversion>
33
+ </configuration>
34
+ </plugin>
35
+ <plugin>
36
+ <groupId>org.apache.maven.plugins</groupId>
37
+ <artifactId>maven-war-plugin</artifactId>
38
+ <version>2.5</version>
39
+ </plugin>
40
+ <plugin>
41
+ <groupId>org.eclipse.jetty</groupId>
42
+ <artifactId>jetty-maven-plugin</artifactId>
43
+ <version>9.2.5.v20141112</version>
44
+ <configuration>
45
+ <scanIntervalSeconds>3</scanIntervalSeconds>
46
+ <stopKey>foo</stopKey>
47
+ <stopPort>9999</stopPort>
48
+ <webAppConfig>
49
+ <contextPath>/</contextPath>
50
+ </webAppConfig>
51
+ </configuration>
52
+ </plugin>
53
+ </plugins>
54
+ </build>
55
+
56
+ <dependencies>
57
+ <dependency>
58
+ <groupId>org.springframework</groupId>
59
+ <artifactId>spring-webmvc</artifactId>
60
+ <version>4.1.3.RELEASE</version>
61
+ </dependency>
62
+ <dependency>
63
+ <groupId>org.springframework</groupId>
64
+ <artifactId>spring-orm</artifactId>
65
+ <version>4.1.3.RELEASE</version>
66
+ </dependency>
67
+ <dependency>
68
+ <groupId>javax.servlet</groupId>
69
+ <artifactId>jstl</artifactId>
70
+ <version>1.2</version>
71
+ </dependency>
72
+ <dependency>
73
+ <groupId>org.hsqldb</groupId>
74
+ <artifactId>hsqldb</artifactId>
75
+ <version>2.3.2</version>
76
+ </dependency>
77
+ <dependency>
78
+ <groupId>org.hibernate</groupId>
79
+ <artifactId>hibernate-entitymanager</artifactId>
80
+ <version>4.3.7.Final</version>
81
+ </dependency>
82
+ <dependency>
83
+ <groupId>org.hibernate</groupId>
84
+ <artifactId>hibernate-c3p0</artifactId>
85
+ <version>4.3.7.Final</version>
86
+ </dependency>
87
+ <dependency>
88
+ <groupId>org.hibernate</groupId>
89
+ <artifactId>hibernate-validator</artifactId>
90
+ <version>5.1.3.Final</version>
91
+ </dependency>
92
+ <dependency>
93
+ <groupId>org.slf4j</groupId>
94
+ <artifactId>slf4j-log4j12</artifactId>
95
+ <version>1.7.7</version>
96
+ </dependency>
97
+ <dependency>
98
+ <groupId>joda-time</groupId>
99
+ <artifactId>joda-time</artifactId>
100
+ <version>2.5</version>
101
+ </dependency>
102
+ <dependency>
103
+ <groupId>org.sitemesh</groupId>
104
+ <artifactId>sitemesh</artifactId>
105
+ <version>3.0.0</version>
106
+ </dependency>
107
+
108
+ <!-- Test dependencies -->
109
+ <dependency>
110
+ <groupId>junit</groupId>
111
+ <artifactId>junit</artifactId>
112
+ <version>4.11</version>
113
+ <scope>test</scope>
114
+ </dependency>
115
+ <dependency>
116
+ <groupId>org.mockito</groupId>
117
+ <artifactId>mockito-all</artifactId>
118
+ <version>1.10.8</version>
119
+ <scope>test</scope>
120
+ </dependency>
121
+
122
+ <!-- Provided dependencies -->
123
+ <dependency>
124
+ <groupId>javax.servlet</groupId>
125
+ <artifactId>servlet-api</artifactId>
126
+ <version>2.5</version>
127
+ <scope>provided</scope>
128
+ </dependency>
129
+ <dependency>
130
+ <groupId>javax.servlet.jsp</groupId>
131
+ <artifactId>jsp-api</artifactId>
132
+ <version>2.2</version>
133
+ <scope>provided</scope>
134
+ </dependency>
135
+ </dependencies>
136
+
137
+ <reporting>
138
+ <plugins>
139
+ <plugin>
140
+ <groupId>org.codehaus.mojo</groupId>
141
+ <artifactId>cobertura-maven-plugin</artifactId>
142
+ <version>2.6</version>
143
+ </plugin>
144
+ </plugins>
145
+ </reporting>
146
+ </project>
@@ -0,0 +1,6 @@
1
+ build_tool: mvn
2
+ package: app
3
+ orm: jpa
4
+ models_package: models
5
+ controllers_package: controllers
6
+ repositories_package: repositories
@@ -0,0 +1,215 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
2
+
3
+ describe Attribute do
4
+
5
+ context "getter name" do
6
+ it "'is' to boolean attributes" do
7
+ expect(described_class.new("active", "boolean").getter_name).to eq "isActive"
8
+ end
9
+
10
+ it "'get' otherwise" do
11
+ expect(described_class.new("description", "string").getter_name).to eq "getDescription"
12
+ end
13
+ end
14
+
15
+ it "setter name" do
16
+ expect(described_class.new("name", "string").setter_name).to eq "setName"
17
+ end
18
+
19
+ context "declaration" do
20
+ it "includes java type and attribute name" do
21
+ expect(described_class.new("name", "text").declaration). to eq "String name"
22
+ end
23
+ end
24
+
25
+ context "initialize attribute" do
26
+ context "downcase name" do
27
+ it "should downcase all words" do
28
+ expect(described_class.new("VALUE", "double").name).to eq "value"
29
+ end
30
+
31
+ it "should camelize composed name" do
32
+ expect(described_class.new("MyItem", "double").name).to eq "myItem"
33
+ end
34
+
35
+ it "should camelize composed name" do
36
+ expect(described_class.new("myItem", "double").name).to eq "myItem"
37
+ end
38
+
39
+ it "should keep name in downcase" do
40
+ expect(described_class.new("value", "double").name).to eq "value"
41
+ end
42
+ end
43
+
44
+ it "should downcase type" do
45
+ expect(described_class.new("value", "DoublE").type).to eq "double"
46
+ end
47
+ end
48
+
49
+ context "supported types" do
50
+ subject(:valid_types) { described_class::VALID_TYPES }
51
+
52
+ it "supports boolean" do
53
+ expect(valid_types.include?("boolean")).to be true
54
+ end
55
+
56
+ it "supports double" do
57
+ expect(valid_types.include?("double")).to be true
58
+ end
59
+
60
+ it "supports string" do
61
+ expect(valid_types.include?("string")).to be true
62
+ end
63
+
64
+ it "supports float" do
65
+ expect(valid_types.include?("float")).to be true
66
+ end
67
+
68
+ it "supports short" do
69
+ expect(valid_types.include?("short")).to be true
70
+ end
71
+
72
+ it "supports integer" do
73
+ expect(valid_types.include?("integer")).to be true
74
+ end
75
+
76
+ it "supports long" do
77
+ expect(valid_types.include?("long")).to be true
78
+ end
79
+
80
+ it "supports text" do
81
+ expect(valid_types.include?("text")).to be true
82
+ end
83
+
84
+ it "supports date" do
85
+ expect(valid_types.include?("date")).to be true
86
+ end
87
+
88
+ it "do not support other" do
89
+ expect(valid_types.include?("other")).to be false
90
+ end
91
+ end
92
+
93
+ context "html_input" do
94
+ it "knows html input to boolean" do
95
+ expect(described_class.new("flag", "boolean").html_input).to eq "checkbox"
96
+ end
97
+
98
+ it "knows html input to string" do
99
+ expect(described_class.new("name", "string").html_input).to eq "input"
100
+ end
101
+
102
+ it "knows html input to double" do
103
+ expect(described_class.new("name", "double").html_input).to eq "input"
104
+ end
105
+
106
+ it "knows html input to float" do
107
+ expect(described_class.new("name", "float").html_input).to eq "input"
108
+ end
109
+
110
+ it "knows html input to short" do
111
+ expect(described_class.new("name", "short").html_input).to eq "input"
112
+ end
113
+
114
+ it "knows html input to integer" do
115
+ expect(described_class.new("name", "integer").html_input).to eq "input"
116
+ end
117
+
118
+ it "knows html input to long" do
119
+ expect(described_class.new("name", "long").html_input).to eq "input"
120
+ end
121
+
122
+ it "knows html input to text" do
123
+ expect(described_class.new("name", "text").html_input).to eq "textarea"
124
+ end
125
+
126
+ it "knows html input to date" do
127
+ expect(described_class.new("price", "date").html_input).to eq "input"
128
+ end
129
+ end
130
+
131
+ context "java type" do
132
+ it "knows correct java type to boolean" do
133
+ expect(described_class.new("flag", "boolean").java_type).to eq "boolean"
134
+ end
135
+
136
+ it "knows correct java type to text" do
137
+ expect(described_class.new("description", "text").java_type).to eq "String"
138
+ end
139
+
140
+ it "knows correct java type to string" do
141
+ expect(described_class.new("name", "string").java_type).to eq "String"
142
+ end
143
+
144
+ it "knows correct java type to double" do
145
+ expect(described_class.new("name", "double").java_type).to eq "Double"
146
+ end
147
+
148
+ it "knows correct java type to float" do
149
+ expect(described_class.new("name", "float").java_type).to eq "Float"
150
+ end
151
+
152
+ it "knows correct java type to short" do
153
+ expect(described_class.new("name", "short").java_type).to eq "Short"
154
+ end
155
+
156
+ it "knows correct java type to integer" do
157
+ expect(described_class.new("name", "integer").java_type).to eq "Integer"
158
+ end
159
+
160
+ it "knows correct java type to long" do
161
+ expect(described_class.new("name", "long").java_type).to eq "Long"
162
+ end
163
+
164
+ it "knows correct java type to Date" do
165
+ expect(described_class.new("price", "date").java_type).to eq "Date"
166
+ end
167
+
168
+ it "knows correct type to relationship many to one" do
169
+ expect(described_class.new("product", "references").java_type).to eq "Product"
170
+ end
171
+ end
172
+
173
+ context "validate" do
174
+ it "should be valid when attribute is supported" do
175
+ expect(Kernel).to_not receive(:exit)
176
+ described_class::VALID_TYPES.each do |type|
177
+ described_class.new("name", type)
178
+ end
179
+ end
180
+
181
+ it "cannot be valid when attribute is not supported" do
182
+ expect(Kernel).to receive(:exit)
183
+ described_class.new("name", "char")
184
+ end
185
+
186
+ it "should be valid when attribute is upper case" do
187
+ expect(Kernel).to_not receive(:exit)
188
+ described_class.new("name", "String")
189
+ end
190
+ end
191
+
192
+ context "boolean?" do
193
+ it "should be boolean when type is boolean" do
194
+ expect(described_class.new("flag", "boolean").boolean?).to be true
195
+ end
196
+
197
+ it "cannot be boolean otherwise" do
198
+ expect(described_class.new("flag", "short").boolean?).to be false
199
+ end
200
+ end
201
+
202
+ context "html label" do
203
+ it "should humanize composed name" do
204
+ expect(described_class.new("MyItem", "double").html_label).to eq "My item"
205
+ end
206
+
207
+ it "should humanize composed name" do
208
+ expect(described_class.new("myItem", "double").html_label).to eq "My item"
209
+ end
210
+
211
+ it "should humanize single name" do
212
+ expect(described_class.new("item", "double").html_label).to eq "Item"
213
+ end
214
+ end
215
+ end