package com.gp.solutions.controller;

import com.gp.solutions.entity.dbo.Person;
import com.gp.solutions.repository.PersonRepository;
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.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.status;

import java.util.*;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.hamcrest.Matchers.*;

@RunWith(SpringRunner.class)
@WebMvcTest(value = PersonController.class, secure = false)
public class PersonControllerTest {

	@Autowired
	private MockMvc mvc;

	@MockBean
	private PersonRepository personRepo;
	
	private Person person;
	
	@Before
	public void prepare() {
		person = new Person();
		person.setId(1l);
		person.setName("John");
		person.setAge(25);
	}

	@Test
	public void getPersonTest() throws Exception {
		given(personRepo.findOne(1l)).willReturn(person);
		mvc.perform(get("/people/1").accept(MediaType.APPLICATION_JSON_VALUE)).andExpect(status().isOk())
				.andExpect(jsonPath("$.id", is(1)))
				.andExpect(jsonPath("$.name", is("John")))
				.andExpect(jsonPath("$.age", is(25)));
	}
	
	@Test
	public void personNotFoundTest() throws Exception {
		mvc.perform(get("/people/2").accept(MediaType.APPLICATION_JSON_VALUE)).andExpect(status().isNotFound());
	}
	
	@Test
	public void getPeopleTest() throws Exception {
		List<Person> people = new ArrayList<Person>();
		people.add(person);

		given(personRepo.findAll()).willReturn(people);
		mvc.perform(get("/people").accept(MediaType.APPLICATION_JSON_VALUE)).andExpect(status().isOk())
				.andExpect(jsonPath("$[0].id", is(1)))
				.andExpect(jsonPath("$[0].name", is("John")))
				.andExpect(jsonPath("$[0].age", is(25)));
	}

}

@@ -127,16 +127,63 @@
 sitory;%0A
+import com.gp.solutions.service.PersonService;%0A
 import o
@@ -1192,17 +1192,67 @@
 onRepo;%0A
-%09
+%0A%09@MockBean%0A%09private PersonService personService;%0A%0A
 %0A%09privat

Fix bugs in test