From 8d1efb240b16b5985f1c155a405c8484529ce1a0 Mon Sep 17 00:00:00 2001 From: Dapeng <verydapeng@gmail.com> Date: Tue, 20 Sep 2016 18:11:25 +0800 Subject: [PATCH] optimize static resources --- src/main/resources/application.properties | 8 +- .../web/AbstractWebResourceTests.java | 28 ------ .../petclinic/web/PetResourceTests.java | 85 +++++++++++-------- .../petclinic/web/VetResourceTests.java | 56 ++++++------ 4 files changed, 87 insertions(+), 90 deletions(-) delete mode 100644 src/test/java/org/springframework/samples/petclinic/web/AbstractWebResourceTests.java diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index cc3da5e0..204bcc93 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -17,4 +17,10 @@ spring.messages.basename=messages/messages management.contextPath=/manage # Logging -logging.level.org.springframework=INFO \ No newline at end of file +logging.level.org.springframework=INFO + +spring.resources.chain.enabled=true +spring.resources.chain.gzipped=true +spring.resources.cache-period=600 +spring.resources.chain.strategy.content.enabled=true +spring.resources.chain.strategy.content.paths=/**/*.js, /**/*.css, /**/*.png, /**/*.html \ No newline at end of file diff --git a/src/test/java/org/springframework/samples/petclinic/web/AbstractWebResourceTests.java b/src/test/java/org/springframework/samples/petclinic/web/AbstractWebResourceTests.java deleted file mode 100644 index 9c28da2b..00000000 --- a/src/test/java/org/springframework/samples/petclinic/web/AbstractWebResourceTests.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.springframework.samples.petclinic.web; - -import org.junit.runner.RunWith; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration({"classpath:spring/business-config.xml", "classpath:spring/tools-config.xml", "classpath:spring/mvc-core-config.xml"}) -@WebAppConfiguration -@ActiveProfiles("spring-data-jpa") - -public abstract class AbstractWebResourceTests { - - protected MockMvc mockMvc; - - public void runMockSpringMVC(Object resource) { - this.mockMvc = MockMvcBuilders.standaloneSetup(resource).build(); - } - - public AbstractWebResourceTests() { - super(); - } - -} \ No newline at end of file diff --git a/src/test/java/org/springframework/samples/petclinic/web/PetResourceTests.java b/src/test/java/org/springframework/samples/petclinic/web/PetResourceTests.java index 0bd74cb3..32a2bc7b 100644 --- a/src/test/java/org/springframework/samples/petclinic/web/PetResourceTests.java +++ b/src/test/java/org/springframework/samples/petclinic/web/PetResourceTests.java @@ -1,53 +1,64 @@ package org.springframework.samples.petclinic.web; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.samples.petclinic.model.Owner; +import org.springframework.samples.petclinic.model.Pet; +import org.springframework.samples.petclinic.model.PetType; +import org.springframework.samples.petclinic.service.ClinicService; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import static org.mockito.BDDMockito.given; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import org.junit.Before; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.ResultActions; - -/** - * Test class for the UserResource REST controller. - * - * @see UserResource - */ -public class PetResourceTests extends AbstractWebResourceTests { +@RunWith(SpringRunner.class) +@WebMvcTest(PetResource.class) +public class PetResourceTests { @Autowired - private PetResource petResource; - - @Before - public void setup() { - runMockSpringMVC(petResource); - } + private MockMvc mvc; + + @MockBean + ClinicService clinicService; - /** - * Expected JSon result: - * { - "id":2, - "name":"Basil", - "birthDate":1344211200000, - "type":{ - "id":6, - "name":"hamster", - "new":false - }, - "visits":[], - "new":false - } - */ @Test public void shouldGetAPetInJSonFormat() throws Exception { - ResultActions actions = mockMvc.perform(get("/owner/2/pet/2.json").accept(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); - actions.andExpect(content().contentType("application/json;charset=UTF-8")) + + Pet pet = setupPet(); + + given(clinicService.findPetById(2)).willReturn(pet); + + + mvc.perform(get("/owner/2/pet/2.json").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().contentType("application/json;charset=UTF-8")) .andExpect(jsonPath("$.id").value(2)) .andExpect(jsonPath("$.name").value("Basil")) - .andExpect(jsonPath("$.type.id").value(6)); + .andExpect(jsonPath("$.type.id").value(6)); + } + + private Pet setupPet() {Owner owner = new Owner(); + owner.setFirstName("George"); + owner.setLastName("Bush"); + + Pet pet = new Pet(); + + pet.setName("Basil"); + pet.setId(2); + + PetType petType = new PetType(); + petType.setId(6); + pet.setType(petType); + + owner.addPet(pet); + return pet; } } diff --git a/src/test/java/org/springframework/samples/petclinic/web/VetResourceTests.java b/src/test/java/org/springframework/samples/petclinic/web/VetResourceTests.java index 4e6283e6..16c03574 100644 --- a/src/test/java/org/springframework/samples/petclinic/web/VetResourceTests.java +++ b/src/test/java/org/springframework/samples/petclinic/web/VetResourceTests.java @@ -1,37 +1,45 @@ package org.springframework.samples.petclinic.web; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.ResultActions; +import org.springframework.samples.petclinic.model.Vet; +import org.springframework.samples.petclinic.service.ClinicService; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import java.util.Arrays; + +import static org.mockito.BDDMockito.given; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -/** - * Test class for the UserResource REST controller. - * - * @see UserResource - */ -public class VetResourceTests extends AbstractWebResourceTests { +@RunWith(SpringRunner.class) +@WebMvcTest(VetResource.class) +public class VetResourceTests { @Autowired - private VetResource vetResource; - - @Before - public void setup() { - runMockSpringMVC(vetResource); - } + private MockMvc mvc; + + @MockBean + ClinicService clinicService; @Test public void shouldGetAListOfVetsInJSonFormat() throws Exception { - ResultActions actions = mockMvc.perform(get("/vets.json").accept(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); - actions.andExpect(content().contentType("application/json")) - .andExpect(jsonPath("$[0].id").value(1)); - //before when collection was nested inside parent object 'vetList', we had: $.vetList[0].id + + Vet vet = new Vet(); + vet.setId(1); + + given(clinicService.findVets()).willReturn(Arrays.asList(vet)); + + mvc.perform(get("/vets.json").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$[0].id").value(1)); } + + } -- GitLab