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,70 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe BaseScaffold do
|
|
4
|
+
subject { described_class.new("client") }
|
|
5
|
+
|
|
6
|
+
context "simple model name" do
|
|
7
|
+
it "knows model class name" do
|
|
8
|
+
expect(subject.class_name).to eq "Client"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "knows model test class name" do
|
|
12
|
+
expect(subject.test_class_name).to eq "ClientTest"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "knows repository class name" do
|
|
16
|
+
expect(subject.repository_class_name).to eq "Clients"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "knows repository name" do
|
|
20
|
+
expect(subject.repository_name).to eq "clients"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "knows repository test class name" do
|
|
24
|
+
expect(subject.repository_test_class_name).to eq "ClientsTest"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "knows controller class name" do
|
|
28
|
+
expect(subject.controller_class_name).to eq "ClientsController"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "knows controller test class name" do
|
|
32
|
+
expect(subject.controller_test_class_name).to eq "ClientsControllerTest"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "knows path" do
|
|
36
|
+
expect(subject.base_path).to eq "clients"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "compound model name" do
|
|
41
|
+
it "knows class name to 'orderItem'" do
|
|
42
|
+
expect(described_class.new('orderItem').class_name).to eq "OrderItem"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "knows class name to 'OrderItem'" do
|
|
46
|
+
expect(described_class.new('OrderItem').class_name).to eq "OrderItem"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "knows parameter name to 'OrderItem'" do
|
|
50
|
+
expect(described_class.new("OrderItem").model_parameter_name).to eq "orderItem"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "knows parameter name to 'OrderItem'" do
|
|
54
|
+
expect(described_class.new("orderItem").model_parameter_name).to eq "orderItem"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "knows path to 'orderItem'" do
|
|
58
|
+
expect(described_class.new("orderItem").base_path).to eq "orderItems"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "knows path to 'OrderItem'" do
|
|
62
|
+
expect(described_class.new("OrderItem").base_path).to eq "orderItems"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "do not allow duplicate import" do
|
|
67
|
+
base = described_class.new("product", [Attribute.new("created", "date"), Attribute.new("validity", "date")])
|
|
68
|
+
expect(base.imports.one?).to be true
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe ControllerGenerator do
|
|
4
|
+
|
|
5
|
+
it "controller template path" do
|
|
6
|
+
expect(described_class.new("category", build_attributes).template_path).to eq "src/templates/controllers"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "paths" do
|
|
10
|
+
it "to simple model name" do
|
|
11
|
+
expect(described_class.new("product", build_attributes).path).to eq "/products"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "to compound model name" do
|
|
15
|
+
expect(described_class.new("orderItem", build_attributes).path).to eq "/orderItems"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "generating" do
|
|
20
|
+
before { mock_config_file }
|
|
21
|
+
after { FileUtils.remove_dir("src") }
|
|
22
|
+
|
|
23
|
+
context "from a lowercase name" do
|
|
24
|
+
before { described_class.new("product", build_attributes).build }
|
|
25
|
+
|
|
26
|
+
it "creates controller" do
|
|
27
|
+
source = File.join(File.dirname(__FILE__), "templates", "ProductsController.java")
|
|
28
|
+
destination = Configuration.main_class_path("controllers", "ProductsController.java")
|
|
29
|
+
exists_and_identical?(source, destination)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "creates controller test" do
|
|
33
|
+
test_class = Configuration.test_class_path("controllers", "ProductsControllerTest.java")
|
|
34
|
+
expect(File.exist?(test_class)).to be true
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "from a uppercase name" do
|
|
39
|
+
before { described_class.new("Product", build_attributes).build }
|
|
40
|
+
|
|
41
|
+
it "creates controller" do
|
|
42
|
+
source = File.join(File.dirname(__FILE__), "templates", "ProductsController.java")
|
|
43
|
+
destination = Configuration.main_class_path("controllers", "ProductsController.java")
|
|
44
|
+
exists_and_identical?(source, destination)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "creates controller test" do
|
|
48
|
+
test_class = Configuration.test_class_path "controllers", "ProductsControllerTest.java"
|
|
49
|
+
expect(File.exist?(test_class)).to be true
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
package app.controllers;
|
|
2
|
+
|
|
3
|
+
import static org.springframework.web.bind.annotation.RequestMethod.DELETE;
|
|
4
|
+
import static org.springframework.web.bind.annotation.RequestMethod.GET;
|
|
5
|
+
import static org.springframework.web.bind.annotation.RequestMethod.POST;
|
|
6
|
+
|
|
7
|
+
import javax.validation.Valid;
|
|
8
|
+
|
|
9
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
|
10
|
+
import org.springframework.stereotype.Controller;
|
|
11
|
+
import org.springframework.validation.BindingResult;
|
|
12
|
+
import org.springframework.web.bind.annotation.PathVariable;
|
|
13
|
+
import org.springframework.web.bind.annotation.RequestMapping;
|
|
14
|
+
import org.springframework.web.servlet.ModelAndView;
|
|
15
|
+
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
16
|
+
|
|
17
|
+
import app.models.Product;
|
|
18
|
+
import app.repositories.Products;
|
|
19
|
+
import app.repositories.Categories;
|
|
20
|
+
|
|
21
|
+
@Controller
|
|
22
|
+
public class ProductsController {
|
|
23
|
+
|
|
24
|
+
private final Products products;
|
|
25
|
+
private final Categories categories;
|
|
26
|
+
|
|
27
|
+
@Autowired
|
|
28
|
+
public ProductsController(final Products products, final Categories categories) {
|
|
29
|
+
this.products = products;
|
|
30
|
+
this.categories = categories;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@RequestMapping(value = "/products", method = GET)
|
|
34
|
+
public ModelAndView index() {
|
|
35
|
+
return new ModelAndView("products/index", "productList", products.all());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@RequestMapping(value = "/products/{id}", method = GET)
|
|
39
|
+
public ModelAndView show(@PathVariable final Long id) {
|
|
40
|
+
return new ModelAndView("products/show", "product", products.get(id));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@RequestMapping(value = "/products/new", method = GET)
|
|
44
|
+
public ModelAndView newProduct() {
|
|
45
|
+
ModelAndView model = new ModelAndView("products/newProduct", "product", new Product());
|
|
46
|
+
model.addObject("categoryList", categories.all());
|
|
47
|
+
return model;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@RequestMapping(value = "/products", method = POST)
|
|
51
|
+
public ModelAndView create(@Valid final Product product, final BindingResult result,
|
|
52
|
+
final RedirectAttributes attrs) {
|
|
53
|
+
ModelAndView model = new ModelAndView();
|
|
54
|
+
if(result.hasErrors()) {
|
|
55
|
+
model.setViewName("products/newProduct");
|
|
56
|
+
model.addObject("categoryList", categories.all());
|
|
57
|
+
return model;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
products.add(product);
|
|
61
|
+
model.setViewName("redirect:/products/{id}");
|
|
62
|
+
model.addObject("id", product.getId());
|
|
63
|
+
attrs.addFlashAttribute("message", "Product was successfully created.");
|
|
64
|
+
return model;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@RequestMapping(value = "/products/{id}/edit", method = GET)
|
|
68
|
+
public ModelAndView edit(@PathVariable final Long id) {
|
|
69
|
+
ModelAndView model = new ModelAndView("products/edit", "product", products.get(id));
|
|
70
|
+
model.addObject("categoryList", categories.all());
|
|
71
|
+
return model;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@RequestMapping(value = "/products/update", method = POST)
|
|
75
|
+
public ModelAndView update(@Valid final Product product, final BindingResult result,
|
|
76
|
+
final RedirectAttributes attrs) {
|
|
77
|
+
ModelAndView model = new ModelAndView();
|
|
78
|
+
if(result.hasErrors()) {
|
|
79
|
+
model.setViewName("products/edit");
|
|
80
|
+
model.addObject("categoryList", categories.all());
|
|
81
|
+
return model;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
products.update(product);
|
|
85
|
+
model.setViewName("redirect:/products/{id}");
|
|
86
|
+
model.addObject("id", product.getId());
|
|
87
|
+
attrs.addFlashAttribute("message", "Product was successfully updated.");
|
|
88
|
+
return model;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@RequestMapping(value = "/products/{id}", method = DELETE)
|
|
92
|
+
public String destroy(@PathVariable final Long id, final RedirectAttributes attrs) {
|
|
93
|
+
products.remove(id);
|
|
94
|
+
attrs.addFlashAttribute("message", "Product was successfully destroyed.");
|
|
95
|
+
return "redirect:/products";
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe JspGenerator do
|
|
4
|
+
|
|
5
|
+
it "jsp template path" do
|
|
6
|
+
expect(described_class.new("category", build_attributes).template_path).to eq "src/templates/views"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "appends context to path" do
|
|
10
|
+
expect(described_class.new("myModel", build_attributes).path("/edit")).to eq "${pageContext.request.contextPath}/myModels/edit"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "simple model name" do
|
|
14
|
+
let(:model) { "category" }
|
|
15
|
+
let(:views_path) { File.join(Configuration::WEB_INF, "jsp", model.pluralize ) }
|
|
16
|
+
|
|
17
|
+
before do
|
|
18
|
+
generator = described_class.new(model, build_attributes)
|
|
19
|
+
generator.build
|
|
20
|
+
end
|
|
21
|
+
after { FileUtils.remove_dir("src") }
|
|
22
|
+
|
|
23
|
+
it "creates index view" do
|
|
24
|
+
expect(File.exist?("#{views_path}/index.jsp")).to be true
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "creates show view" do
|
|
28
|
+
expect(File.exist?("#{views_path}/show.jsp")).to be true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "creates form view" do
|
|
32
|
+
source = File.join(File.dirname(__FILE__), "templates", "form.jsp")
|
|
33
|
+
destination = "#{Configuration::WEB_INF}/jsp/categories/form.jsp"
|
|
34
|
+
exists_and_identical?(source, destination)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "creates new view" do
|
|
38
|
+
expect(File.exist?("#{views_path}/newCategory.jsp")).to be true
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "creates edit view" do
|
|
42
|
+
expect(File.exist?("#{views_path}/edit.jsp")).to be true
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<div class="field">
|
|
2
|
+
Name:<br />
|
|
3
|
+
<form:input path="name" />
|
|
4
|
+
<form:errors path="name" />
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<div class="field">
|
|
8
|
+
Active:<br />
|
|
9
|
+
<form:checkbox path="active" />
|
|
10
|
+
<form:errors path="active" />
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
Price:<br />
|
|
15
|
+
<form:input path="price" />
|
|
16
|
+
<form:errors path="price" />
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="field">
|
|
20
|
+
Category:<br />
|
|
21
|
+
<form:select path="category.id">
|
|
22
|
+
<form:options items="${categoryList}" itemValue="id" itemLabel="id"/>
|
|
23
|
+
</form:select>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe ModelGenerator do
|
|
4
|
+
|
|
5
|
+
it "model template path" do
|
|
6
|
+
expect(described_class.new("category", build_attributes).template_path).to eq "src/templates/models"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "jpa" do
|
|
10
|
+
before do
|
|
11
|
+
mock_config_file
|
|
12
|
+
described_class.new("product", build_attributes).build
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
after { FileUtils.remove_dir("src") }
|
|
16
|
+
|
|
17
|
+
it "creates model" do
|
|
18
|
+
source = File.join(File.dirname(__FILE__), "templates", "Product.java")
|
|
19
|
+
destination = Configuration.main_class_path("models", "Product.java")
|
|
20
|
+
exists_and_identical?(source, destination)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "creates model test" do
|
|
24
|
+
test_class = Configuration.test_class_path "models", "ProductTest.java"
|
|
25
|
+
expect(File.exist?(test_class)).to be true
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
package app.models;
|
|
2
|
+
|
|
3
|
+
@javax.persistence.Entity
|
|
4
|
+
public class Product extends Entity {
|
|
5
|
+
|
|
6
|
+
private String name;
|
|
7
|
+
private boolean active;
|
|
8
|
+
private Double price;
|
|
9
|
+
private Category category;
|
|
10
|
+
|
|
11
|
+
public void setName(String name) {
|
|
12
|
+
this.name = name;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public String getName() {
|
|
16
|
+
return name;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public void setActive(boolean active) {
|
|
20
|
+
this.active = active;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public boolean isActive() {
|
|
24
|
+
return active;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public void setPrice(Double price) {
|
|
28
|
+
this.price = price;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public Double getPrice() {
|
|
32
|
+
return price;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public void setCategory(Category category) {
|
|
36
|
+
this.category = category;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public Category getCategory() {
|
|
40
|
+
return category;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe RepositoryGenerator do
|
|
4
|
+
|
|
5
|
+
it "repository template path" do
|
|
6
|
+
expect(described_class.new("category", build_attributes).template_path).to eq "src/templates/repositories"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context 'jpa' do
|
|
10
|
+
before do
|
|
11
|
+
mock_config_file
|
|
12
|
+
described_class.new("product", build_attributes).build
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
after { FileUtils.remove_dir("src") }
|
|
16
|
+
|
|
17
|
+
it "creates repository" do
|
|
18
|
+
source = File.join(File.dirname(__FILE__), "templates", "Products.java")
|
|
19
|
+
destination = Configuration.main_class_path("repositories", "Products.java")
|
|
20
|
+
exists_and_identical?(source, destination)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "creates repository test" do
|
|
24
|
+
test_class = Configuration.test_class_path("repositories", "ProductsTest.java")
|
|
25
|
+
expect(File.exist?(test_class)).to be true
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "hibernate" do
|
|
30
|
+
let(:config) { {"package" => "app", "orm" => "hibernate", "repositories_package" => "repositories", "models_package" => "models"} }
|
|
31
|
+
before do
|
|
32
|
+
allow(YAML).to receive(:load_file).with(Configuration::FILENAME).and_return(config)
|
|
33
|
+
described_class.new("client", build_attributes).build
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
after { FileUtils.remove_dir("src") }
|
|
37
|
+
|
|
38
|
+
it "creates repository" do
|
|
39
|
+
source = File.join(File.dirname(__FILE__), "templates", "Clients.java")
|
|
40
|
+
destination = Configuration.main_class_path("repositories", "Clients.java")
|
|
41
|
+
exists_and_identical?(source, destination)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "creates repository test" do
|
|
45
|
+
test_class = Configuration.test_class_path("repositories", "ClientsTest.java")
|
|
46
|
+
expect(File.exist?(test_class)).to be true
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package app.repositories;
|
|
2
|
+
|
|
3
|
+
import org.hibernate.SessionFactory;
|
|
4
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
|
5
|
+
import org.springframework.stereotype.Repository;
|
|
6
|
+
|
|
7
|
+
import app.models.Client;
|
|
8
|
+
|
|
9
|
+
@Repository
|
|
10
|
+
public class Clients extends GenericRepository<Client> {
|
|
11
|
+
|
|
12
|
+
@Autowired
|
|
13
|
+
public Clients(SessionFactory sessionFactory) {
|
|
14
|
+
super(sessionFactory);
|
|
15
|
+
}
|
|
16
|
+
}
|