// Path: 2.RealWorldExample/business/impl/src/main/java/com/in28minutes/example/layering/business/impl/TodoBusinessServiceImpl.java
// @Component
// public class TodoBusinessServiceImpl implements TodoBusinessService {
// 
// 	@Autowired
// 	TodoDataService todoDs;
// 
// 	@Override
// 	public List<Todo> retrieveTodosRelatedToSpring(String user) {
// 
// 		List<Todo> todos = todoDs.retrieveTodos(user);
// 		List<Todo> filteredTodos = filterTodosRelatedToSpring(todos);
// 
// 		return filteredTodos;
// 
// 	}
// 
// 	// NOTE : We get everything from database and filter
// 	// instead of filtering in the database. Not the most efficient
// 	// implementation.
// 	private List<Todo> filterTodosRelatedToSpring(List<Todo> todos) {
// 
// 		List<Todo> filteredTodos = new ArrayList<Todo>();
// 		for (Todo todo : todos) {
// 			if (todo.getDesc().contains("Spring")) {
// 				filteredTodos.add(todo);
// 			}
// 		}
// 
// 		return filteredTodos;
// 	}
// 
// }
// 
// Path: 2.RealWorldExample/data/api/src/main/java/com/in28minutes/example/layering/data/api/TodoDataService.java
// public interface TodoDataService {
// 	List<Todo> retrieveTodos(String userName);
// }
// 
// Path: 2.RealWorldExample/model/src/main/java/com/in28minutes/example/layering/model/api/client/Todo.java
// public class Todo {
// 
// 	private String desc;
// 	private Date date;
// 	private boolean isDone;
// 
// 	public Todo(String desc, Date date, boolean isDone) {
// 		super();
// 		this.desc = desc;
// 		this.date = date;
// 		this.isDone = isDone;
// 	}
// 
// 	public String getDesc() {
// 		return desc;
// 	}
// 
// 	public void setDesc(String desc) {
// 		this.desc = desc;
// 	}
// 
// 	public Date getDate() {
// 		return date;
// 	}
// 
// 	public void setDate(Date date) {
// 		this.date = date;
// 	}
// 
// 	public boolean isDone() {
// 		return isDone;
// 	}
// 
// 	public void setDone(boolean isDone) {
// 		this.isDone = isDone;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return String.format("Todo [desc=%s, date=%s, isDone=%s]", desc, date,
// 				isDone);
// 	}
// 
// }


import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.stub;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import com.in28minutes.example.layering.business.impl.TodoBusinessServiceImpl;
import com.in28minutes.example.layering.data.api.TodoDataService;
import com.in28minutes.example.layering.model.api.client.Todo;

package com.in28minutes.example.layering.business;





@RunWith(MockitoJUnitRunner.class)
public class TodoBusinessServiceMockitoTest {

	@Mock
	private TodoDataService todoDs;

	@InjectMocks
	private TodoBusinessServiceImpl todoBs;

	@Before
	public void initializeMockito() {
		MockitoAnnotations.initMocks(this);
	}

	@Test
	public void testRetrieveTodosRelatedToSpring() {

		List<Todo> todos = Arrays.asList(new Todo(
				"Mockito - Complete Spring Tutorial", new Date(), false),
				new Todo("Mockito - Complete Spring MVC Tutorial", new Date(),
						false), new Todo("Mockito - Complete All Tutorials",
								new Date(), false));

		stub(todoDs.retrieveTodos(anyString())).toReturn(todos);


// Path: 2.RealWorldExample/business/impl/src/main/java/com/in28minutes/example/layering/business/impl/TodoBusinessServiceImpl.java
// @Component
// public class TodoBusinessServiceImpl implements TodoBusinessService {
// 
// 	@Autowired
// 	TodoDataService todoDs;
// 
// 	@Override
// 	public List<Todo> retrieveTodosRelatedToSpring(String user) {
// 
// 		List<Todo> todos = todoDs.retrieveTodos(user);
// 		List<Todo> filteredTodos = filterTodosRelatedToSpring(todos);
// 
// 		return filteredTodos;
// 
// 	}
// 
// 	// NOTE : We get everything from database and filter
// 	// instead of filtering in the database. Not the most efficient
// 	// implementation.
// 	private List<Todo> filterTodosRelatedToSpring(List<Todo> todos) {
// 
// 		List<Todo> filteredTodos = new ArrayList<Todo>();
// 		for (Todo todo : todos) {
// 			if (todo.getDesc().contains("Spring")) {
// 				filteredTodos.add(todo);
// 			}
// 		}
// 
// 		return filteredTodos;
// 	}
// 
// }
// 
// Path: 2.RealWorldExample/data/api/src/main/java/com/in28minutes/example/layering/data/api/TodoDataService.java
// public interface TodoDataService {
// 	List<Todo> retrieveTodos(String userName);
// }
// 
// Path: 2.RealWorldExample/model/src/main/java/com/in28minutes/example/layering/model/api/client/Todo.java
// public class Todo {
// 
// 	private String desc;
// 	private Date date;
// 	private boolean isDone;
// 
// 	public Todo(String desc, Date date, boolean isDone) {
// 		super();
// 		this.desc = desc;
// 		this.date = date;
// 		this.isDone = isDone;
// 	}
// 
// 	public String getDesc() {
// 		return desc;
// 	}
// 
// 	public void setDesc(String desc) {
// 		this.desc = desc;
// 	}
// 
// 	public Date getDate() {
// 		return date;
// 	}
// 
// 	public void setDate(Date date) {
// 		this.date = date;
// 	}
// 
// 	public boolean isDone() {
// 		return isDone;
// 	}
// 
// 	public void setDone(boolean isDone) {
// 		this.isDone = isDone;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return String.format("Todo [desc=%s, date=%s, isDone=%s]", desc, date,
// 				isDone);
// 	}
// 
// }


// Path: 2.RealWorldExample/business/impl/src/test/java/com/in28minutes/example/layering/business/TodoBusinessServiceMockitoTest.java
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.stub;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import com.in28minutes.example.layering.business.impl.TodoBusinessServiceImpl;
import com.in28minutes.example.layering.data.api.TodoDataService;
import com.in28minutes.example.layering.model.api.client.Todo;

package com.in28minutes.example.layering.business;





@RunWith(MockitoJUnitRunner.class)
public class TodoBusinessServiceMockitoTest {

	@Mock
	private TodoDataService todoDs;

	@InjectMocks
	private TodoBusinessServiceImpl todoBs;

	@Before
	public void initializeMockito() {
		MockitoAnnotations.initMocks(this);
	}

	@Test
	public void testRetrieveTodosRelatedToSpring() {

		List<Todo> todos = Arrays.asList(new Todo(
				"Mockito - Complete Spring Tutorial", new Date(), false),
				new Todo("Mockito - Complete Spring MVC Tutorial", new Date(),
						false), new Todo("Mockito - Complete All Tutorials",
								new Date(), false));

		stub(todoDs.retrieveTodos(anyString())).toReturn(todos);


		List<Todo> filteredTodos = todoBs
