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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +45 -0
- data/README.markdown +31 -0
- data/Rakefile +9 -0
- data/bin/springmvc +7 -0
- data/lib/springmvc-scaffold.rb +14 -0
- data/lib/springmvc-scaffold/configuration.rb +50 -0
- data/lib/springmvc-scaffold/execution.rb +20 -0
- data/lib/springmvc-scaffold/generators/app/app_generator.rb +123 -0
- data/lib/springmvc-scaffold/generators/app/dependencies.rb +26 -0
- data/lib/springmvc-scaffold/generators/app/dependency.rb +15 -0
- data/lib/springmvc-scaffold/generators/app/templates/build.gradle.erb +56 -0
- data/lib/springmvc-scaffold/generators/app/templates/models/Entity.erb +46 -0
- data/lib/springmvc-scaffold/generators/app/templates/orm/Repository-hibernate.java.tt +51 -0
- data/lib/springmvc-scaffold/generators/app/templates/orm/Repository-jpa.java.tt +49 -0
- data/lib/springmvc-scaffold/generators/app/templates/pom.erb +95 -0
- data/lib/springmvc-scaffold/generators/app/templates/resources/hibernate.properties +16 -0
- data/lib/springmvc-scaffold/generators/app/templates/resources/log4j.properties +4 -0
- data/lib/springmvc-scaffold/generators/app/templates/resources/messages.properties +0 -0
- data/lib/springmvc-scaffold/generators/app/templates/springmvc-scaffold.erb +6 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/.bowerrc +3 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/jsp/decorators/main.jsp +15 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/jsp/prelude.jspf +4 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/sitemesh3.xml +3 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/spring-servlet.xml.tt +42 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/web.xml.tt +52 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/bower.json.tt +7 -0
- data/lib/springmvc-scaffold/generators/app/templates/webapp/stylesheets/application.css +38 -0
- data/lib/springmvc-scaffold/generators/base.rb +17 -0
- data/lib/springmvc-scaffold/generators/scaffold/attribute.rb +68 -0
- data/lib/springmvc-scaffold/generators/scaffold/base_scaffold.rb +54 -0
- data/lib/springmvc-scaffold/generators/scaffold/controller/controller_generator.rb +20 -0
- data/lib/springmvc-scaffold/generators/scaffold/controller/templates/controller.erb +126 -0
- data/lib/springmvc-scaffold/generators/scaffold/controller/templates/controller_test.erb +13 -0
- data/lib/springmvc-scaffold/generators/scaffold/imports.rb +18 -0
- data/lib/springmvc-scaffold/generators/scaffold/jsp/jsp_generator.rb +40 -0
- data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/edit.erb +15 -0
- data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/form.erb +14 -0
- data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/index.erb +38 -0
- data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/new.erb +14 -0
- data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/show.erb +16 -0
- data/lib/springmvc-scaffold/generators/scaffold/model/model_generator.rb +16 -0
- data/lib/springmvc-scaffold/generators/scaffold/model/templates/model.erb +22 -0
- data/lib/springmvc-scaffold/generators/scaffold/model/templates/model_test.erb +13 -0
- data/lib/springmvc-scaffold/generators/scaffold/repository/repository_generator.rb +30 -0
- data/lib/springmvc-scaffold/generators/scaffold/repository/templates/repository.erb +18 -0
- data/lib/springmvc-scaffold/generators/scaffold/repository/templates/repository_test.erb +13 -0
- data/lib/springmvc-scaffold/generators/scaffold/scaffold_generator.rb +31 -0
- data/lib/springmvc-scaffold/runner.rb +7 -0
- data/lib/springmvc-scaffold/runner/commands_help.rb +11 -0
- data/lib/springmvc-scaffold/runner/generator.rb +14 -0
- data/lib/springmvc-scaffold/runner/help.rb +10 -0
- data/lib/springmvc-scaffold/runner/scaffold.rb +15 -0
- data/lib/springmvc-scaffold/version.rb +3 -0
- data/spec/spec_helper.rb +23 -0
- data/spec/springmvc-scaffold/configuration_spec.rb +124 -0
- data/spec/springmvc-scaffold/execution_spec.rb +40 -0
- data/spec/springmvc-scaffold/generators/app/app_generator_spec.rb +226 -0
- data/spec/springmvc-scaffold/generators/app/dependency_spec.rb +14 -0
- data/spec/springmvc-scaffold/generators/app/templates/Entity.java +46 -0
- data/spec/springmvc-scaffold/generators/app/templates/RepositoryJPA.java +49 -0
- data/spec/springmvc-scaffold/generators/app/templates/build.gradle +59 -0
- data/spec/springmvc-scaffold/generators/app/templates/pom.xml +146 -0
- data/spec/springmvc-scaffold/generators/app/templates/springmvc-scaffold.properties +6 -0
- data/spec/springmvc-scaffold/generators/scaffold/attribute_spec.rb +215 -0
- data/spec/springmvc-scaffold/generators/scaffold/base_scaffold_spec.rb +70 -0
- data/spec/springmvc-scaffold/generators/scaffold/controller/controller_generator_spec.rb +53 -0
- data/spec/springmvc-scaffold/generators/scaffold/controller/templates/ProductsController.java +97 -0
- data/spec/springmvc-scaffold/generators/scaffold/imports_spec.rb +9 -0
- data/spec/springmvc-scaffold/generators/scaffold/jsp/jsp_generator_spec.rb +46 -0
- data/spec/springmvc-scaffold/generators/scaffold/jsp/templates/form.jsp +25 -0
- data/spec/springmvc-scaffold/generators/scaffold/model/model_generator_spec.rb +28 -0
- data/spec/springmvc-scaffold/generators/scaffold/model/templates/Product.java +43 -0
- data/spec/springmvc-scaffold/generators/scaffold/repository/repository_generator_spec.rb +49 -0
- data/spec/springmvc-scaffold/generators/scaffold/repository/templates/Clients.java +16 -0
- data/spec/springmvc-scaffold/generators/scaffold/repository/templates/Products.java +10 -0
- data/spec/springmvc-scaffold/generators/scaffold/scaffold_generator_spec.rb +60 -0
- data/spec/springmvc-scaffold/runner/commands_help_spec.rb +13 -0
- data/spec/springmvc-scaffold/runner/generator_spec.rb +21 -0
- data/spec/springmvc-scaffold/runner/help_spec.rb +22 -0
- data/spec/springmvc-scaffold/runner/scaffold_spec.rb +36 -0
- data/spec/springmvc-scaffold_spec.rb +4 -0
- data/springmvc-scaffold.gemspec +27 -0
- metadata +185 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package <%= Configuration.package %>.<%= Configuration.repositories_package %>;
|
|
2
|
+
|
|
3
|
+
<% if Configuration.hibernate? -%>
|
|
4
|
+
import <%= orm_import %>;
|
|
5
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
|
6
|
+
<% end -%>
|
|
7
|
+
import org.springframework.stereotype.Repository;
|
|
8
|
+
|
|
9
|
+
import <%= Configuration.full_models_package %>.<%= class_name %>;
|
|
10
|
+
|
|
11
|
+
@Repository
|
|
12
|
+
public class <%= repository_class_name %> extends GenericRepository<<%= class_name %>> {
|
|
13
|
+
<%- if Configuration.hibernate? %>
|
|
14
|
+
@Autowired
|
|
15
|
+
public <%= repository_class_name %>(<%= orm_class %> <%= orm_parameter_name %>) {
|
|
16
|
+
super(<%= orm_parameter_name %>);
|
|
17
|
+
}<% end %>
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
package <%= Configuration.package %>.<%= Configuration.repositories_package %>;
|
|
2
|
+
|
|
3
|
+
import static org.junit.Assert.assertNotNull;
|
|
4
|
+
|
|
5
|
+
import org.junit.Test;
|
|
6
|
+
|
|
7
|
+
public class <%= repository_test_class_name %> {
|
|
8
|
+
|
|
9
|
+
@Test
|
|
10
|
+
public void fakeTest() {
|
|
11
|
+
assertNotNull("test something real");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class ScaffoldGenerator < SpringMvcScaffold::Base
|
|
2
|
+
|
|
3
|
+
attr_accessor :generated_attributes
|
|
4
|
+
argument :model
|
|
5
|
+
argument :attributes, type: :hash, default: {}, banner: "field:type field:type"
|
|
6
|
+
|
|
7
|
+
def self.banner
|
|
8
|
+
"springmvc scaffold #{self.arguments.map(&:usage).join(' ')}"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def initialize(args)
|
|
12
|
+
super(args)
|
|
13
|
+
@generated_attributes = attributes.map {|field, type| Attribute.new(field, type) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def controller_generator
|
|
17
|
+
ControllerGenerator.new(model, generated_attributes).build
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def model_generator
|
|
21
|
+
ModelGenerator.new(model, generated_attributes).build
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def template_generator
|
|
25
|
+
JspGenerator.new(model, generated_attributes).build
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def repository_generator
|
|
29
|
+
RepositoryGenerator.new(model, generated_attributes).build
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module SpringMvcScaffold::Runner
|
|
2
|
+
|
|
3
|
+
class Generator
|
|
4
|
+
def run(args)
|
|
5
|
+
project_path = args.shift
|
|
6
|
+
if SpringMvcScaffold::Runner::Help.help?(project_path)
|
|
7
|
+
AppGenerator.start(["-h"])
|
|
8
|
+
else
|
|
9
|
+
AppGenerator.new(project_path, args).invoke_all
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module SpringMvcScaffold::Runner
|
|
2
|
+
|
|
3
|
+
class Scaffold
|
|
4
|
+
def run(args)
|
|
5
|
+
if SpringMvcScaffold::Runner::Help.help?(args.first)
|
|
6
|
+
ScaffoldGenerator.start(["-h"])
|
|
7
|
+
elsif File.exists?("src")
|
|
8
|
+
ScaffoldGenerator.new(args).invoke_all
|
|
9
|
+
else
|
|
10
|
+
Kernel.puts "To run springmvc scaffold please go to the project root folder."
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../lib/springmvc-scaffold'
|
|
2
|
+
|
|
3
|
+
def exists_and_identical?(source, created)
|
|
4
|
+
c = File.open(created).read.gsub( /\r/m, "" )
|
|
5
|
+
c2 = File.open(source).read.gsub( /\r/m, "" )
|
|
6
|
+
expect(c).to eq c2
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def build_attributes
|
|
10
|
+
[Attribute.new("name", "string"), Attribute.new("active", "boolean"),
|
|
11
|
+
Attribute.new("price", "double"), Attribute.new("category", "references")]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def mock_config_file
|
|
15
|
+
file = YAML.load_file(File.join(File.dirname(__FILE__), "springmvc-scaffold/generators/app/templates/springmvc-scaffold.properties"))
|
|
16
|
+
allow(Configuration).to receive(:config).and_return(file)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def double_generator(generator_class)
|
|
20
|
+
generator = double(generator_class)
|
|
21
|
+
allow(generator_class).to receive(:new).with(model, attributes).and_return(generator)
|
|
22
|
+
generator
|
|
23
|
+
end
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Configuration do
|
|
4
|
+
|
|
5
|
+
it "configures main source" do
|
|
6
|
+
expect(Configuration::MAIN_SRC).to eq "src/main/java"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "configures main resources" do
|
|
10
|
+
expect(Configuration::MAIN_RESOURCES).to eq "src/main/resources"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "configures webapp" do
|
|
14
|
+
expect(Configuration::WEB_APP).to eq "src/main/webapp"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "configures web-inf" do
|
|
18
|
+
expect(Configuration::WEB_INF).to eq "#{Configuration::WEB_APP}/WEB-INF"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "configures meta-inf" do
|
|
22
|
+
expect(Configuration::META_INF).to eq "#{Configuration::WEB_APP}/META-INF"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "configures test source" do
|
|
26
|
+
expect(Configuration::TEST_SRC).to eq "src/test/java"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "configures test resources" do
|
|
30
|
+
expect(Configuration::TEST_RESOURCES).to eq "src/test/resources"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "configures scaffold properties" do
|
|
34
|
+
expect(Configuration::FILENAME).to eq "#{Configuration::META_INF}/springmvc-scaffold.properties"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "load config file" do
|
|
38
|
+
let(:config) { {"template_engine" => "jsp", "package" => "br.com.juliano", "orm" => "jpa", "models_package" => "models", "controllers_package" => "controllers", "repositories_package" => "repositories"} }
|
|
39
|
+
before do
|
|
40
|
+
allow(YAML).to receive(:load_file).with(Configuration::FILENAME).and_return(config)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "knows models package" do
|
|
44
|
+
expect(Configuration.models_package).to eq "models"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "knows full models package" do
|
|
48
|
+
expect(Configuration.full_models_package).to eq "br.com.juliano.models"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "builds main class path with base package" do
|
|
52
|
+
expect(Configuration.main_class_path("models", "Product.java")).to eq "src/main/java/br/com/juliano/models/Product.java"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "builds test class path with base package" do
|
|
56
|
+
expect(Configuration.test_class_path("models", "Product.java")).to eq "src/test/java/br/com/juliano/models/Product.java"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "knows orm" do
|
|
60
|
+
expect(Configuration.orm).to eq "jpa"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "orm is not hibernate" do
|
|
64
|
+
expect(Configuration.hibernate?).to be false
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "hibernate" do
|
|
69
|
+
let(:config) { {"package" => "br.com.juliano", "orm" => "hibernate"} }
|
|
70
|
+
before do
|
|
71
|
+
allow(YAML).to receive(:load_file).with(Configuration::FILENAME).and_return(config)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "knows orm" do
|
|
75
|
+
expect(Configuration.orm).to eq "hibernate"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "orm is hibernate" do
|
|
79
|
+
expect(Configuration.hibernate?).to be true
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
context "properties without default configs" do
|
|
84
|
+
before do
|
|
85
|
+
allow(YAML).to receive(:load_file).with(Configuration::FILENAME).and_return({})
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "knows models package" do
|
|
89
|
+
expect(Configuration.models_package).to eq "models"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "knows controllers package" do
|
|
93
|
+
expect(Configuration.controllers_package).to eq "controllers"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "knows repositories package" do
|
|
97
|
+
expect(Configuration.repositories_package).to eq "repositories"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "knows full models package" do
|
|
101
|
+
expect(Configuration.full_models_package).to eq "app.models"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "knows base package" do
|
|
105
|
+
expect(Configuration.package).to eq "app"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "knows orm" do
|
|
109
|
+
expect(Configuration.orm).to eq "jpa"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "orm is not hibernate" do
|
|
113
|
+
expect(Configuration.hibernate?).to be false
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "builds main class path with base package" do
|
|
117
|
+
expect(Configuration.main_class_path("models", "Product.java")).to eq "src/main/java/app/models/Product.java"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "builds test class path with base package" do
|
|
121
|
+
expect(Configuration.test_class_path("models", "Product.java")).to eq "src/test/java/app/models/Product.java"
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe SpringMvcScaffold::Execution do
|
|
4
|
+
|
|
5
|
+
context "discover runner for action" do
|
|
6
|
+
it "should be commands help when no action" do
|
|
7
|
+
expect(subject.runner_for(nil)).to be SpringMvcScaffold::Runner::CommandsHelp
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should be app generator when -h action" do
|
|
11
|
+
expect(subject.runner_for("-h")).to be SpringMvcScaffold::Runner::Generator
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should be app generator when --help action" do
|
|
15
|
+
expect(subject.runner_for("--help")).to be SpringMvcScaffold::Runner::Generator
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should be app generator when new action" do
|
|
19
|
+
expect(subject.runner_for("new")).to be SpringMvcScaffold::Runner::Generator
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should be app generator when scaffold action" do
|
|
23
|
+
expect(subject.runner_for("scaffold")).to be SpringMvcScaffold::Runner::Scaffold
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should be commands help when scaffold when unknown action" do
|
|
27
|
+
expect(subject.runner_for("xpto")).to be SpringMvcScaffold::Runner::CommandsHelp
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should discover runner and run" do
|
|
32
|
+
runner = double(SpringMvcScaffold::Runner::Generator)
|
|
33
|
+
allow(runner).to receive(:new).and_return(runner)
|
|
34
|
+
expect(runner).to receive(:run).with(['app'])
|
|
35
|
+
|
|
36
|
+
allow(subject).to receive(:runner_for).with('new').and_return(runner)
|
|
37
|
+
subject.run(['new', 'app'])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe AppGenerator do
|
|
4
|
+
|
|
5
|
+
context "build new application" do
|
|
6
|
+
let(:project_path) { "src/springmvc-scaffold" }
|
|
7
|
+
|
|
8
|
+
before { described_class.new(project_path).invoke_all }
|
|
9
|
+
|
|
10
|
+
after { FileUtils.remove_dir("src") }
|
|
11
|
+
|
|
12
|
+
it "creates directory with project name" do
|
|
13
|
+
expect(File.exist?(project_path)).to be true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "is invalid when project name already exist" do
|
|
17
|
+
expect(Kernel).to receive(:exit)
|
|
18
|
+
described_class.new(project_path)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "creates pom.xml" do
|
|
22
|
+
source = File.join(File.dirname(__FILE__), "templates", "pom.xml")
|
|
23
|
+
destination = "#{project_path}/pom.xml"
|
|
24
|
+
exists_and_identical?(source, destination)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "cannot create build.gradle" do
|
|
28
|
+
expect(File.exist?("#{project_path}/build.gradle")).to be false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "configures springmvc-scaffold.properties" do
|
|
32
|
+
source = File.join(File.dirname(__FILE__), "templates", "springmvc-scaffold.properties")
|
|
33
|
+
destination = "#{project_path}/#{Configuration::FILENAME}"
|
|
34
|
+
exists_and_identical?(source, destination)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "creating main java" do
|
|
38
|
+
let(:main_java) { "#{project_path}/#{Configuration::MAIN_SRC}" }
|
|
39
|
+
let(:app) { "#{main_java}/app" }
|
|
40
|
+
|
|
41
|
+
it "creates source folder" do
|
|
42
|
+
expect(File.exist?(main_java)).to be true
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "creates app folder" do
|
|
46
|
+
expect(File.exist?(app)).to be true
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "creates controllers folder" do
|
|
50
|
+
expect(File.exist?("#{app}/controllers")).to be true
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "creates models folder" do
|
|
54
|
+
expect(File.exist?("#{app}/models")).to be true
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "creates generic entity" do
|
|
58
|
+
source = File.join(File.dirname(__FILE__), "templates", "Entity.java")
|
|
59
|
+
destination = "#{app}/models/Entity.java"
|
|
60
|
+
exists_and_identical?(source, destination)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "creates repositories folder" do
|
|
64
|
+
expect(File.exist?("#{app}/repositories")).to be true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "creates generic repository" do
|
|
68
|
+
source = File.join(File.dirname(__FILE__), "templates", "RepositoryJPA.java")
|
|
69
|
+
destination = "#{app}/repositories/GenericRepository.java"
|
|
70
|
+
exists_and_identical?(source, destination)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context "creating main resources" do
|
|
75
|
+
let(:main_resources) { "#{project_path}/#{Configuration::MAIN_RESOURCES}" }
|
|
76
|
+
|
|
77
|
+
it "creates resources folder" do
|
|
78
|
+
expect(File.exist?(main_resources)).to be true
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "creates hibernate.properties" do
|
|
82
|
+
source = "#{AppGenerator.source_root}/resources/hibernate.properties"
|
|
83
|
+
destination = "#{main_resources}/hibernate.properties"
|
|
84
|
+
exists_and_identical?(source, destination)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "creates log4j" do
|
|
88
|
+
source = "#{AppGenerator.source_root}/resources/log4j.properties"
|
|
89
|
+
destination = "#{main_resources}/log4j.properties"
|
|
90
|
+
exists_and_identical?(source, destination)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "creates messages.properties" do
|
|
94
|
+
source = "#{AppGenerator.source_root}/resources/messages.properties"
|
|
95
|
+
destination = "#{main_resources}/messages.properties"
|
|
96
|
+
exists_and_identical?(source, destination)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context "creating main webapp" do
|
|
101
|
+
let(:webapp) { "#{project_path}/#{Configuration::WEB_APP}" }
|
|
102
|
+
let(:web_inf) { "#{project_path}/#{Configuration::WEB_INF}" }
|
|
103
|
+
|
|
104
|
+
it "creates webapp folder" do
|
|
105
|
+
expect(File.exist?(webapp)).to be true
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "creates WEB-INF folder" do
|
|
109
|
+
expect(File.exist?(web_inf)).to be true
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "creates application.js" do
|
|
113
|
+
appjs = "#{webapp}/javascripts/application.js"
|
|
114
|
+
expect(File.exist?(appjs)).to be true
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "creates application.css" do
|
|
118
|
+
source = "#{AppGenerator.source_root}/webapp/stylesheets/application.css"
|
|
119
|
+
destination = "#{webapp}/stylesheets/application.css"
|
|
120
|
+
exists_and_identical?(source, destination)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context "creating test" do
|
|
125
|
+
let(:test_java) { "#{project_path}/#{Configuration::TEST_SRC}" }
|
|
126
|
+
let(:test_resources) { "#{project_path}/#{Configuration::TEST_RESOURCES}" }
|
|
127
|
+
let(:app) { "#{test_java}/app" }
|
|
128
|
+
|
|
129
|
+
it "creates test source folder" do
|
|
130
|
+
expect(File.exist?(test_java)).to be true
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "creates test resources folder" do
|
|
134
|
+
expect(File.exist?(test_resources)).to be true
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "creates controllers folder" do
|
|
138
|
+
expect(File.exist?("#{app}/controllers")).to be true
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "creates models folder" do
|
|
142
|
+
expect(File.exist?("#{app}/models")).to be true
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "creates repositories folder" do
|
|
146
|
+
expect(File.exist?("#{app}/repositories")).to be true
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
context "build app with complex package" do
|
|
152
|
+
let(:project_path) { "src/springmvc-scaffold" }
|
|
153
|
+
let(:main_java) { "#{project_path}/#{Configuration::MAIN_SRC}/br/com/juliano" }
|
|
154
|
+
let(:test_java) { "#{project_path}/#{Configuration::TEST_SRC}/br/com/juliano" }
|
|
155
|
+
|
|
156
|
+
before do
|
|
157
|
+
described_class.new(project_path, ["-p=br.com.juliano"]).invoke_all
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
after { FileUtils.remove_dir("src") }
|
|
161
|
+
|
|
162
|
+
it "creates main path" do
|
|
163
|
+
expect(File.exist?(main_java)).to be true
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it "creates test path" do
|
|
167
|
+
expect(File.exist?(test_java)).to be true
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
context "creating gradle application" do
|
|
172
|
+
let(:project_path) { "springmvc-scaffold" }
|
|
173
|
+
|
|
174
|
+
before { described_class.new(project_path, ["-b=gradle"]).invoke_all }
|
|
175
|
+
|
|
176
|
+
after { FileUtils.remove_dir(project_path) }
|
|
177
|
+
|
|
178
|
+
it "creates build.gradle" do
|
|
179
|
+
source = File.join(File.dirname(__FILE__), "templates", "build.gradle")
|
|
180
|
+
destination = "#{project_path}/build.gradle"
|
|
181
|
+
exists_and_identical?(source, destination)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "cannot create pom.xml" do
|
|
185
|
+
expect(File.exist?("#{project_path}/pom.xml")).to be false
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
context "valid build tools" do
|
|
190
|
+
it "maven is valid" do
|
|
191
|
+
expect(AppGenerator::BUILD_TOOLS.include?("mvn")).to be true
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it "gradle is valid" do
|
|
195
|
+
expect(AppGenerator::BUILD_TOOLS.include?("gradle")).to be true
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
context "valid orm" do
|
|
200
|
+
it "jpa is valid" do
|
|
201
|
+
expect(AppGenerator::ORMS.include?("jpa")).to be true
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it "hibernate is valid" do
|
|
205
|
+
expect(AppGenerator::ORMS.include?("hibernate")).to be true
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
context "validate options" do
|
|
210
|
+
let(:project_path) { "springmvc-scaffold" }
|
|
211
|
+
|
|
212
|
+
it "is invalid when build tool is not supported" do
|
|
213
|
+
expect(Kernel).to receive(:exit)
|
|
214
|
+
AppGenerator.new(project_path, ["-b=maven"])
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "is invalid when orm is not supported" do
|
|
218
|
+
expect(Kernel).to receive(:exit)
|
|
219
|
+
AppGenerator.new(project_path, ["-o=toplink"])
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it "configures banner" do
|
|
224
|
+
expect(AppGenerator.banner).to eq "springmvc new PROJECT_PATH [options]"
|
|
225
|
+
end
|
|
226
|
+
end
|