springmvc-scaffold 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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