spring-gen 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +674 -0
- data/README.md +133 -0
- data/Rakefile +1 -0
- data/bin/setup +7 -0
- data/bin/spring-gen +8 -0
- data/lib/command_router.rb +15 -0
- data/lib/commands/resource.rb +129 -0
- data/lib/commands/service.rb +53 -0
- data/lib/spring-gen/version.rb +3 -0
- data/lib/spring-gen.rb +5 -0
- data/lib/templates/layout/.gitignore +36 -0
- data/lib/templates/layout/build.gradle.erb +105 -0
- data/lib/templates/layout/intellij/config/checkstyle/checkstyle.xml +199 -0
- data/lib/templates/layout/intellij/config/codestyle/Codestyle.xml +34 -0
- data/lib/templates/layout/intellij/config/copyright/gnu.xml +6 -0
- data/lib/templates/layout/intellij/config/copyright/profiles_settings.xml +10 -0
- data/lib/templates/layout/src/java/config/AppConfig.java.erb +54 -0
- data/lib/templates/layout/src/java/main/App.java.erb +41 -0
- data/lib/templates/layout/src/resources/application.yml.erb +108 -0
- data/lib/templates/layout/src/resources/bootstrap.yml.erb +3 -0
- data/lib/templates/resource/assembler/Assembler.java.erb +57 -0
- data/lib/templates/resource/assembler/BaseAssembler.java.erb +95 -0
- data/lib/templates/resource/controller/BaseController.java.erb +66 -0
- data/lib/templates/resource/controller/Controller.java.erb +106 -0
- data/lib/templates/resource/exception/NotCreatedException.java.erb +34 -0
- data/lib/templates/resource/model/JpaBaseEntity.java.erb +43 -0
- data/lib/templates/resource/model/Model.java.erb +51 -0
- data/lib/templates/resource/model/MongodbBaseEntity.java.erb +33 -0
- data/lib/templates/resource/model/Neo4jBaseEntity.java.erb +81 -0
- data/lib/templates/resource/repository/Repository.java.erb +30 -0
- data/lib/templates/resource/resource/Resource.java.erb +48 -0
- data/lib/templates/resource/test/TestUtil.java.erb +85 -0
- data/lib/templates/resource/test/integration/jpa/IntegrationTest.java.erb +123 -0
- data/lib/templates/resource/test/integration/jpa/IntegrationTestConfig.java.erb +47 -0
- data/lib/templates/resource/test/integration/jpa/sampleData.xml.erb +20 -0
- data/lib/templates/resource/test/integration/mongodb/IntegrationTest.java.erb +114 -0
- data/lib/templates/resource/test/integration/mongodb/IntegrationTestConfig.java.erb +60 -0
- data/lib/templates/resource/test/integration/mongodb/SampleData.java.erb +43 -0
- data/lib/templates/resource/test/integration/neo4j/IntegrationTest.java.erb +123 -0
- data/lib/templates/resource/test/integration/neo4j/IntegrationTestConfig.java.erb +47 -0
- data/lib/templates/resource/test/integration/neo4j/SampleData.java.erb +23 -0
- data/lib/templates/resource/test/unit/assembler/AssemblerUnitTest.java.erb +52 -0
- data/lib/templates/resource/test/unit/assembler/AssemblerUnitTestConfig.java.erb +43 -0
- data/lib/templates/resource/test/unit/controller/ControllerUnitTest.java.erb +115 -0
- data/lib/templates/resource/test/unit/controller/ControllerUnitTestConfig.java.erb +64 -0
- data/lib/templates/service.yml.erb +4 -0
- data/lib/util.rb +39 -0
- data/spring-gen.gemspec +25 -0
- metadata +153 -0
@@ -0,0 +1,123 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>.routes;
|
2
|
+
/*
|
3
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
4
|
+
* This program is free software; you can redistribute it and/or modify
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
6
|
+
* the Free Software Foundation; either version 3 of the License, or
|
7
|
+
* (at your option) any later version.
|
8
|
+
* This program is distributed in the hope that it will be useful,
|
9
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
* GNU General Public License for more details.
|
12
|
+
* You should have received a copy of the GNU General Public License
|
13
|
+
* along with this program; if not, write to the Free Software Foundation,
|
14
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
15
|
+
*/
|
16
|
+
|
17
|
+
import static org.hamcrest.Matchers.hasSize;
|
18
|
+
import static org.hamcrest.Matchers.is;
|
19
|
+
import static org.hamcrest.Matchers.notNullValue;
|
20
|
+
import static util.TestUtil.toJson;
|
21
|
+
import static org.mockito.Matchers.any;
|
22
|
+
import static org.mockito.Matchers.eq;
|
23
|
+
import static org.mockito.Matchers.isNotNull;
|
24
|
+
import static org.mockito.Mockito.times;
|
25
|
+
import static org.mockito.Mockito.verify;
|
26
|
+
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
27
|
+
import static org.mockito.Mockito.when;
|
28
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
|
29
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
30
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
31
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
32
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
33
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
34
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl;
|
35
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
36
|
+
|
37
|
+
|
38
|
+
import com.github.springtestdbunit.DbUnitTestExecutionListener;
|
39
|
+
import com.github.springtestdbunit.annotation.DatabaseSetup;
|
40
|
+
import <%=@group_id%>.model.<%=@model_name%>;
|
41
|
+
import <%=@group_id%>.integration.<%=@model_name.downcase%>.<%=@model_name%>IntegrationTestConfig;
|
42
|
+
import org.junit.Before;
|
43
|
+
import org.junit.Test;
|
44
|
+
import org.junit.runner.RunWith;
|
45
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
46
|
+
import org.springframework.hateoas.MediaTypes;
|
47
|
+
import org.springframework.test.context.ContextConfiguration;
|
48
|
+
import org.springframework.test.context.TestExecutionListeners;
|
49
|
+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
50
|
+
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
51
|
+
import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
|
52
|
+
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
|
53
|
+
import org.springframework.test.context.web.WebAppConfiguration;
|
54
|
+
import org.springframework.test.web.servlet.MockMvc;
|
55
|
+
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
56
|
+
import org.springframework.web.context.WebApplicationContext;
|
57
|
+
import util.TestUtil;
|
58
|
+
|
59
|
+
import static org.hamcrest.Matchers.is;
|
60
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
61
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
62
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
63
|
+
import static util.TestUtil.toJson;
|
64
|
+
|
65
|
+
|
66
|
+
/**
|
67
|
+
* A integration test for <%=@model_name%>s
|
68
|
+
* @author <%=@user_name%>
|
69
|
+
*/
|
70
|
+
@RunWith(SpringJUnit4ClassRunner.class)
|
71
|
+
@ContextConfiguration(classes = {<%=@model_name%>IntegrationTestConfig.class})
|
72
|
+
@WebAppConfiguration
|
73
|
+
//TODO add custom sample-data in <%=@model_name.downcase%>SampleData.xml
|
74
|
+
@DatabaseSetup("/sampledata/<%=@model_name.downcase%>SampleData.xml")
|
75
|
+
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
|
76
|
+
DirtiesContextTestExecutionListener.class,
|
77
|
+
TransactionalTestExecutionListener.class,
|
78
|
+
DbUnitTestExecutionListener.class })
|
79
|
+
public class <%=@model_name%>IntegrationTest {
|
80
|
+
|
81
|
+
private MockMvc mockMvc;
|
82
|
+
|
83
|
+
|
84
|
+
@Autowired
|
85
|
+
private WebApplicationContext webApplicationContext;
|
86
|
+
|
87
|
+
/**
|
88
|
+
* sets up the test.
|
89
|
+
*/
|
90
|
+
@Before
|
91
|
+
public void setUp() {
|
92
|
+
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
@Test
|
97
|
+
public void testGet<%=@model_name%>s() throws Exception {
|
98
|
+
|
99
|
+
mockMvc.perform(get("/<%=@model_name.downcase%>s"))
|
100
|
+
.andExpect(status().isOk())
|
101
|
+
.andExpect(content().contentType(MediaTypes.HAL_JSON));
|
102
|
+
}
|
103
|
+
|
104
|
+
@Test
|
105
|
+
public void itShouldContainLinksToModulesOfficersAssistantsSelfAndRootModule()
|
106
|
+
throws Exception {
|
107
|
+
mockMvc.perform(get("/<%=@model_name.downcase%>s/1"))
|
108
|
+
.andExpect(status().isOk())
|
109
|
+
.andExpect(content().contentType(MediaTypes.HAL_JSON))
|
110
|
+
.andExpect(
|
111
|
+
jsonPath("$._links.self.href", is("http://localhost/<%=@model_name.downcase%>s/1")));
|
112
|
+
}
|
113
|
+
|
114
|
+
@Test
|
115
|
+
public void testCreate<%=@model_name%>() throws Exception {
|
116
|
+
mockMvc.perform(post("/<%=@model_name.downcase%>s")
|
117
|
+
.contentType(TestUtil.APPLICATION_JSON_UTF8)
|
118
|
+
.content(toJson(new <%=@model_name%>())))
|
119
|
+
.andExpect(status().isCreated())
|
120
|
+
.andExpect(redirectedUrl("http://localhost/<%=@model_name.downcase%>s/11"));
|
121
|
+
|
122
|
+
}
|
123
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
19
|
+
import org.springframework.boot.orm.jpa.EntityScan;
|
20
|
+
import org.springframework.context.annotation.ComponentScan;
|
21
|
+
import org.springframework.context.annotation.Configuration;
|
22
|
+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
23
|
+
import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
24
|
+
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
25
|
+
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
26
|
+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
27
|
+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Configuration class for <%=@group_id%> integration test.
|
31
|
+
* @author <%=@user_name%>
|
32
|
+
*/
|
33
|
+
@Configuration
|
34
|
+
<%if @full%>@ComponentScan(basePackages = {"<%=@group_id%>.repository",
|
35
|
+
"<%=@group_id%>.controller",
|
36
|
+
"<%=@group_id%>.assembler",
|
37
|
+
"<%=@group_id%>.resource"})
|
38
|
+
<%else%>@ComponentScan(basePackages = "<%=@group_id%>.repository")<%end%>
|
39
|
+
@EnableHypermediaSupport(type = {EnableHypermediaSupport.HypermediaType.HAL})
|
40
|
+
@EnableSpringDataWebSupport
|
41
|
+
@EnableWebMvc
|
42
|
+
@EnableAutoConfiguration
|
43
|
+
@EnableJpaRepositories(basePackages = "<%=@group_id%>.repository")
|
44
|
+
@EnableTransactionManagement
|
45
|
+
@EntityScan(basePackages = {"<%=@group_id%>.model"})
|
46
|
+
public class <%=@model_name%>IntegrationTestConfig extends WebMvcConfigurerAdapter {
|
47
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!--
|
2
|
+
~ Copyright (c) 2015 <%=@user_name%>.
|
3
|
+
~ This program is free software; you can redistribute it and/or modify
|
4
|
+
~ it under the terms of the GNU General Public License as published by
|
5
|
+
~ the Free Software Foundation; either version 3 of the License, or
|
6
|
+
~ (at your option) any later version.
|
7
|
+
~ This program is distributed in the hope that it will be useful,
|
8
|
+
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
~ GNU General Public License for more details.
|
11
|
+
~ You should have received a copy of the GNU General Public License
|
12
|
+
~ along with this program; if not, write to the Free Software Foundation,
|
13
|
+
~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
14
|
+
-->
|
15
|
+
|
16
|
+
<dataset>
|
17
|
+
<%10.times do |i|%>
|
18
|
+
<<%=@model_name.downcase%> id="<%=i+1%>" <%@attributes.each do |a|%><%=a.name%>="<%=i+1%>" <%end%>/>
|
19
|
+
<%end%>
|
20
|
+
</dataset>
|
@@ -0,0 +1,114 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
/*
|
3
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
4
|
+
* This program is free software; you can redistribute it and/or modify
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
6
|
+
* the Free Software Foundation; either version 3 of the License, or
|
7
|
+
* (at your option) any later version.
|
8
|
+
* This program is distributed in the hope that it will be useful,
|
9
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
* GNU General Public License for more details.
|
12
|
+
* You should have received a copy of the GNU General Public License
|
13
|
+
* along with this program; if not, write to the Free Software Foundation,
|
14
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
15
|
+
*/
|
16
|
+
|
17
|
+
import static org.hamcrest.Matchers.hasSize;
|
18
|
+
import static org.hamcrest.Matchers.is;
|
19
|
+
import static org.hamcrest.Matchers.notNullValue;
|
20
|
+
import static util.TestUtil.toJson;
|
21
|
+
import static org.mockito.Matchers.any;
|
22
|
+
import static org.mockito.Matchers.eq;
|
23
|
+
import static org.mockito.Matchers.isNotNull;
|
24
|
+
import static org.mockito.Mockito.times;
|
25
|
+
import static org.mockito.Mockito.verify;
|
26
|
+
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
27
|
+
import static org.mockito.Mockito.when;
|
28
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
|
29
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
30
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
31
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
32
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
33
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
34
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl;
|
35
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
36
|
+
|
37
|
+
|
38
|
+
import <%=@group_id%>.model.<%=@model_name%>;
|
39
|
+
import <%=@group_id%>.integration.<%=@model_name.downcase%>.<%=@model_name%>IntegrationTestConfig;
|
40
|
+
import org.junit.Before;
|
41
|
+
import org.junit.Test;
|
42
|
+
import org.junit.runner.RunWith;
|
43
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
44
|
+
import org.springframework.hateoas.MediaTypes;
|
45
|
+
import org.springframework.test.context.ContextConfiguration;
|
46
|
+
import org.springframework.test.context.TestExecutionListeners;
|
47
|
+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
48
|
+
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
49
|
+
import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
|
50
|
+
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
|
51
|
+
import org.springframework.test.context.web.WebAppConfiguration;
|
52
|
+
import org.springframework.test.web.servlet.MockMvc;
|
53
|
+
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
54
|
+
import org.springframework.web.context.WebApplicationContext;
|
55
|
+
import util.TestUtil;
|
56
|
+
|
57
|
+
import static org.hamcrest.Matchers.is;
|
58
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
59
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
60
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
61
|
+
import static util.TestUtil.toJson;
|
62
|
+
|
63
|
+
|
64
|
+
/**
|
65
|
+
* A integration test for <%=@model_name%>s
|
66
|
+
* @author <%=@user_name%>
|
67
|
+
*/
|
68
|
+
@RunWith(SpringJUnit4ClassRunner.class)
|
69
|
+
@ContextConfiguration(classes = {<%=@model_name%>IntegrationTestConfig.class})
|
70
|
+
@WebAppConfiguration
|
71
|
+
//TODO add custom sample-data in <%=@model_name.downcase%>SampleData.java
|
72
|
+
public class <%=@model_name%>IntegrationTest {
|
73
|
+
|
74
|
+
private MockMvc mockMvc;
|
75
|
+
|
76
|
+
|
77
|
+
@Autowired
|
78
|
+
private WebApplicationContext webApplicationContext;
|
79
|
+
|
80
|
+
/**
|
81
|
+
* sets up the test.
|
82
|
+
*/
|
83
|
+
@Before
|
84
|
+
public void setUp() {
|
85
|
+
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
@Test
|
90
|
+
public void testGet<%=@model_name%>s() throws Exception {
|
91
|
+
|
92
|
+
mockMvc.perform(get("/<%=@model_name.downcase%>s"))
|
93
|
+
.andExpect(status().isOk())
|
94
|
+
.andExpect(content().contentType(MediaTypes.HAL_JSON));
|
95
|
+
}
|
96
|
+
|
97
|
+
@Test
|
98
|
+
public void testGetAll()
|
99
|
+
throws Exception {
|
100
|
+
mockMvc.perform(get("/<%=@model_name.downcase%>s/1"))
|
101
|
+
.andExpect(status().isOk())
|
102
|
+
.andExpect(content().contentType(MediaTypes.HAL_JSON))
|
103
|
+
.andExpect(
|
104
|
+
jsonPath("$._links.self.href", is("http://localhost/<%=@model_name.downcase%>s/1")));
|
105
|
+
}
|
106
|
+
|
107
|
+
@Test
|
108
|
+
public void testCreate<%=@model_name%>() throws Exception {
|
109
|
+
mockMvc.perform(post("/<%=@model_name.downcase%>s")
|
110
|
+
.contentType(TestUtil.APPLICATION_JSON_UTF8)
|
111
|
+
.content(toJson(new <%=@model_name%>())))
|
112
|
+
.andExpect(status().isCreated());
|
113
|
+
}
|
114
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import com.github.fakemongo.Fongo;
|
19
|
+
import com.mongodb.Mongo;
|
20
|
+
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
21
|
+
import org.springframework.context.annotation.Bean;
|
22
|
+
import org.springframework.context.annotation.ComponentScan;
|
23
|
+
import org.springframework.context.annotation.Configuration;
|
24
|
+
import org.springframework.data.mongodb.core.MongoTemplate;
|
25
|
+
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
|
26
|
+
import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
27
|
+
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
28
|
+
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
29
|
+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
30
|
+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
31
|
+
/**
|
32
|
+
* Configuration class for <%=@group_id%> integration test.
|
33
|
+
* @author <%=@user_name%>
|
34
|
+
*/
|
35
|
+
@Configuration
|
36
|
+
<%if @full%>@ComponentScan(basePackages = {"<%=@group_id%>.repository",
|
37
|
+
"<%=@group_id%>.controller",
|
38
|
+
"<%=@group_id%>.assembler",
|
39
|
+
"<%=@group_id%>.resource",
|
40
|
+
"<%=@group_id%>.integration"})
|
41
|
+
<%else%>@ComponentScan(basePackages = {"<%=@group_id%>.repository","<%=@group_id%>.integration"})<%end%>
|
42
|
+
@EnableHypermediaSupport(type = {EnableHypermediaSupport.HypermediaType.HAL})
|
43
|
+
@EnableSpringDataWebSupport
|
44
|
+
@EnableWebMvc
|
45
|
+
@EnableAutoConfiguration
|
46
|
+
@EnableMongoRepositories(basePackages = "<%=@group_id%>.repository")
|
47
|
+
@EnableTransactionManagement
|
48
|
+
public class <%=@model_name%>IntegrationTestConfig extends WebMvcConfigurerAdapter {
|
49
|
+
|
50
|
+
@Bean
|
51
|
+
public Mongo mongo() {
|
52
|
+
Fongo fongo = new Fongo("test");
|
53
|
+
return fongo.getMongo();
|
54
|
+
}
|
55
|
+
|
56
|
+
@Bean
|
57
|
+
public MongoTemplate mongoTemplate() {
|
58
|
+
return new MongoTemplate(mongo(),"<%=@model_name%>");
|
59
|
+
}
|
60
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import org.asdf.model.<%=@model_name%>;
|
19
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
20
|
+
import org.springframework.data.mongodb.core.MongoOperations;
|
21
|
+
import org.springframework.stereotype.Component;
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
@Component
|
26
|
+
public class <%=@model_name%>SampleData {
|
27
|
+
|
28
|
+
@Autowired
|
29
|
+
MongoOperations mongoOperations;
|
30
|
+
|
31
|
+
public void seed() {
|
32
|
+
|
33
|
+
for (int i = 0; i < 10; i++) {
|
34
|
+
<%=@model_name%> b = new <%=@model_name%>();
|
35
|
+
b.setId(String.valueOf(i));
|
36
|
+
mongoOperations.save(b);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
public void destroy() {
|
41
|
+
mongoOperations.dropCollection("<%=@model_name%>");
|
42
|
+
}
|
43
|
+
}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
/*
|
3
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
4
|
+
* This program is free software; you can redistribute it and/or modify
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
6
|
+
* the Free Software Foundation; either version 3 of the License, or
|
7
|
+
* (at your option) any later version.
|
8
|
+
* This program is distributed in the hope that it will be useful,
|
9
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
* GNU General Public License for more details.
|
12
|
+
* You should have received a copy of the GNU General Public License
|
13
|
+
* along with this program; if not, write to the Free Software Foundation,
|
14
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
15
|
+
*/
|
16
|
+
|
17
|
+
import static org.hamcrest.Matchers.hasSize;
|
18
|
+
import static org.hamcrest.Matchers.is;
|
19
|
+
import static org.hamcrest.Matchers.notNullValue;
|
20
|
+
import static util.TestUtil.toJson;
|
21
|
+
import static org.mockito.Matchers.any;
|
22
|
+
import static org.mockito.Matchers.eq;
|
23
|
+
import static org.mockito.Matchers.isNotNull;
|
24
|
+
import static org.mockito.Mockito.times;
|
25
|
+
import static org.mockito.Mockito.verify;
|
26
|
+
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
27
|
+
import static org.mockito.Mockito.when;
|
28
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
|
29
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
30
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
31
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
32
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
33
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
34
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl;
|
35
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
36
|
+
|
37
|
+
|
38
|
+
import com.github.springtestdbunit.DbUnitTestExecutionListener;
|
39
|
+
import com.github.springtestdbunit.annotation.DatabaseSetup;
|
40
|
+
import <%=@group_id%>.model.<%=@model_name%>;
|
41
|
+
import <%=@group_id%>.integration.<%=@model_name.downcase%>.<%=@model_name%>IntegrationTestConfig;
|
42
|
+
import org.junit.Before;
|
43
|
+
import org.junit.Test;
|
44
|
+
import org.junit.runner.RunWith;
|
45
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
46
|
+
import org.springframework.hateoas.MediaTypes;
|
47
|
+
import org.springframework.test.context.ContextConfiguration;
|
48
|
+
import org.springframework.test.context.TestExecutionListeners;
|
49
|
+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
50
|
+
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
51
|
+
import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
|
52
|
+
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
|
53
|
+
import org.springframework.test.context.web.WebAppConfiguration;
|
54
|
+
import org.springframework.test.web.servlet.MockMvc;
|
55
|
+
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
56
|
+
import org.springframework.web.context.WebApplicationContext;
|
57
|
+
import util.TestUtil;
|
58
|
+
|
59
|
+
import static org.hamcrest.Matchers.is;
|
60
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
61
|
+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
62
|
+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
63
|
+
import static util.TestUtil.toJson;
|
64
|
+
|
65
|
+
|
66
|
+
/**
|
67
|
+
* A integration test for <%=@model_name%>s
|
68
|
+
* @author <%=@user_name%>
|
69
|
+
*/
|
70
|
+
@RunWith(SpringJUnit4ClassRunner.class)
|
71
|
+
@ContextConfiguration(classes = {<%=@model_name%>IntegrationTestConfig.class})
|
72
|
+
@WebAppConfiguration
|
73
|
+
//TODO add custom sample-data in <%=@model_name.downcase%>SampleData.xml
|
74
|
+
@DatabaseSetup("/sampledata/<%=@model_name.downcase%>SampleData.xml")
|
75
|
+
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
|
76
|
+
DirtiesContextTestExecutionListener.class,
|
77
|
+
TransactionalTestExecutionListener.class,
|
78
|
+
DbUnitTestExecutionListener.class })
|
79
|
+
public class <%=@model_name%>IntegrationTest {
|
80
|
+
|
81
|
+
private MockMvc mockMvc;
|
82
|
+
|
83
|
+
|
84
|
+
@Autowired
|
85
|
+
private WebApplicationContext webApplicationContext;
|
86
|
+
|
87
|
+
/**
|
88
|
+
* sets up the test.
|
89
|
+
*/
|
90
|
+
@Before
|
91
|
+
public void setUp() {
|
92
|
+
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
@Test
|
97
|
+
public void testGet<%=@model_name%>s() throws Exception {
|
98
|
+
|
99
|
+
mockMvc.perform(get("/<%=@model_name.downcase%>s"))
|
100
|
+
.andExpect(status().isOk())
|
101
|
+
.andExpect(content().contentType(MediaTypes.HAL_JSON));
|
102
|
+
}
|
103
|
+
|
104
|
+
@Test
|
105
|
+
public void itShouldContainLinksToModulesOfficersAssistantsSelfAndRootModule()
|
106
|
+
throws Exception {
|
107
|
+
mockMvc.perform(get("/<%=@model_name.downcase%>s/1"))
|
108
|
+
.andExpect(status().isOk())
|
109
|
+
.andExpect(content().contentType(MediaTypes.HAL_JSON))
|
110
|
+
.andExpect(
|
111
|
+
jsonPath("$._links.self.href", is("http://localhost/<%=@model_name.downcase%>s/1")));
|
112
|
+
}
|
113
|
+
|
114
|
+
@Test
|
115
|
+
public void testCreate<%=@model_name%>() throws Exception {
|
116
|
+
mockMvc.perform(post("/<%=@model_name.downcase%>s")
|
117
|
+
.contentType(TestUtil.APPLICATION_JSON_UTF8)
|
118
|
+
.content(toJson(new <%=@model_name%>())))
|
119
|
+
.andExpect(status().isCreated())
|
120
|
+
.andExpect(redirectedUrl("http://localhost/<%=@model_name.downcase%>s/11"));
|
121
|
+
|
122
|
+
}
|
123
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
19
|
+
import org.springframework.boot.orm.jpa.EntityScan;
|
20
|
+
import org.springframework.context.annotation.ComponentScan;
|
21
|
+
import org.springframework.context.annotation.Configuration;
|
22
|
+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
23
|
+
import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
24
|
+
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
25
|
+
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
26
|
+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
27
|
+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Configuration class for <%=@group_id%> integration test.
|
31
|
+
* @author <%=@user_name%>
|
32
|
+
*/
|
33
|
+
@Configuration
|
34
|
+
<%if @full%>@ComponentScan(basePackages = {"<%=@group_id%>.repository",
|
35
|
+
"<%=@group_id%>.controller",
|
36
|
+
"<%=@group_id%>.assembler",
|
37
|
+
"<%=@group_id%>.resource"})
|
38
|
+
<%else%>@ComponentScan(basePackages = "<%=@group_id%>.repository")<%end%>
|
39
|
+
@EnableHypermediaSupport(type = {EnableHypermediaSupport.HypermediaType.HAL})
|
40
|
+
@EnableSpringDataWebSupport
|
41
|
+
@EnableWebMvc
|
42
|
+
@EnableAutoConfiguration
|
43
|
+
@EnableJpaRepositories(basePackages = "<%=@group_id%>.repository")
|
44
|
+
@EnableTransactionManagement
|
45
|
+
@EntityScan(basePackages = {"<%=@group_id%>.model"})
|
46
|
+
public class <%=@model_name%>IntegrationTestConfig extends WebMvcConfigurerAdapter {
|
47
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
package <%=@group_id%>.integration.<%=@model_name.downcase%>;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
public class SampleData {
|
19
|
+
|
20
|
+
public void seed() {
|
21
|
+
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
package <%=@group_id%>.unit.<%=@model_name.downcase%>.assembler;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Copyright (c) 2015 <%=@user_name%>.
|
5
|
+
* This program is free software; you can redistribute it and/or modify
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
7
|
+
* the Free Software Foundation; either version 3 of the License, or
|
8
|
+
* (at your option) any later version.
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU General Public License for more details.
|
13
|
+
* You should have received a copy of the GNU General Public License
|
14
|
+
* along with this program; if not, write to the Free Software Foundation,
|
15
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
*/
|
17
|
+
|
18
|
+
import static org.junit.Assert.assertEquals;
|
19
|
+
|
20
|
+
import <%=@group_id%>.assembler.<%=@model_name%>Assembler;
|
21
|
+
import <%=@group_id%>.model.<%=@model_name%>;
|
22
|
+
import org.junit.Before;
|
23
|
+
import org.junit.Test;
|
24
|
+
import org.junit.runner.RunWith;
|
25
|
+
import org.springframework.beans.factory.annotation.Autowired;
|
26
|
+
import org.springframework.hateoas.ResourceSupport;
|
27
|
+
import org.springframework.test.context.ContextConfiguration;
|
28
|
+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
29
|
+
import org.springframework.test.context.web.WebAppConfiguration;
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Unit test for <%=@model_name%> assemblers.
|
33
|
+
* @author <%=@user_name%>
|
34
|
+
*/
|
35
|
+
@RunWith(SpringJUnit4ClassRunner.class)
|
36
|
+
@ContextConfiguration(classes = {<%=@model_name%>AssemblerUnitTestConfig.class})
|
37
|
+
@WebAppConfiguration
|
38
|
+
public class <%=@model_name%>AssemblerUnitTest {
|
39
|
+
|
40
|
+
|
41
|
+
@Autowired
|
42
|
+
private <%=@model_name%>Assembler testInstance;
|
43
|
+
|
44
|
+
|
45
|
+
@Test
|
46
|
+
public void testToResource() throws Exception {
|
47
|
+
<%=@model_name%> instance = new <%=@model_name%>();
|
48
|
+
instance.setId(1L);
|
49
|
+
ResourceSupport resourceSupport = testInstance.toResource(instance);
|
50
|
+
assertEquals("self",resourceSupport.getId().getRel());
|
51
|
+
}
|
52
|
+
}
|