diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerReviewServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerReviewServiceImpl.java
index d90c1f3c1f..80f2a03b16 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerReviewServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerReviewServiceImpl.java
@@ -137,7 +137,7 @@ public class PeerReviewServiceImpl extends AbstractQueryService<PeerReview, Long
 	private BooleanBuilder statusFilter(boolean includeCompleted,boolean includeAborted,boolean includeInProgress) {
 		BooleanBuilder e = new BooleanBuilder();
 		if(includeCompleted)
-			e.and(isAborted(false).and(isSubmitted(true)).and(isDeleted(false)));
+			e.or(isAborted(false).and(isSubmitted(true)).and(isDeleted(false)));
 		if(includeAborted)
 			e.or(isAborted(true).and(isSubmitted(false)).and(isDeleted(false)));
 		if(includeInProgress)
diff --git a/src/test/java/se/su/dsv/scipro/springdata/TestPeerReview.java b/src/test/java/se/su/dsv/scipro/springdata/TestPeerReview.java
index cc307070c2..180a5713ba 100644
--- a/src/test/java/se/su/dsv/scipro/springdata/TestPeerReview.java
+++ b/src/test/java/se/su/dsv/scipro/springdata/TestPeerReview.java
@@ -1,15 +1,21 @@
 package se.su.dsv.scipro.springdata;
 
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 
 import junit.framework.Assert;
 
+import org.joda.time.DateTime;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.test.annotation.Rollback;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -18,18 +24,15 @@ import org.springframework.transaction.annotation.Transactional;
 import se.su.dsv.scipro.data.dataobjects.Employee;
 import se.su.dsv.scipro.data.dataobjects.Project;
 import se.su.dsv.scipro.data.dataobjects.ProjectClass;
-import se.su.dsv.scipro.data.dataobjects.ProjectFollower;
 import se.su.dsv.scipro.data.dataobjects.Student;
 import se.su.dsv.scipro.data.dataobjects.User;
 import se.su.dsv.scipro.data.enums.ProjectStatus;
-import se.su.dsv.scipro.data.enums.ProjectTeamMemberRoles;
 import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
 import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
 import se.su.dsv.scipro.peer.enums.RequestStatus;
 import se.su.dsv.scipro.springdata.services.PeerRequestService;
 import se.su.dsv.scipro.springdata.services.PeerReviewService;
 import se.su.dsv.scipro.springdata.services.ProjectClassService;
-import se.su.dsv.scipro.springdata.services.ProjectFollowerService;
 import se.su.dsv.scipro.springdata.services.ProjectService;
 import se.su.dsv.scipro.springdata.services.RoleService;
 import se.su.dsv.scipro.springdata.services.UserService;
@@ -60,107 +63,41 @@ public class TestPeerReview {
     private ProjectClass bachelor;
     private ProjectClass master;
     private PeerReview review1, review2, review3;
-    private PeerRequest request1, request2, request3, awaitingRequest;
+    private PeerRequest request1, request2, request3, request4;
 
     @Before
     public void startTransaction() throws Exception {
 
         bachelor = new ProjectClass(ProjectClass.BACHELOR, "Bachelor", "Bachelor degree thesis project");
         bachelor = projectClassService.save(bachelor);
-
         master = new ProjectClass(ProjectClass.MASTER, "Master", "Master degree thesis project");
         master = projectClassService.save(master);
        
         employeeUser = new User();
         employeeUser = userService.save(employeeUser);
-
         reviewer = new User();
         reviewer = userService.save(reviewer);
         requester = new User();
         requester = userService.save(requester);
         
-        reviewerRole = new Student();
-        reviewerRole.setUser(reviewer);
-        reviewerRole = (Student) roleService.save(reviewerRole);
-        requesterRole = new Student();
-        requesterRole.setUser(requester);
-        requesterRole = (Student) roleService.save(requesterRole);
-        
+        reviewerRole = newStudent(reviewer);
+        requesterRole = newStudent(requester);
+
         headSupervisor = new Employee();
         headSupervisor.setUser(employeeUser);
         headSupervisor = (Employee) roleService.save(headSupervisor);
 
-        reviewerProject = new Project();
-        reviewerProject.setProjectClass(bachelor);
-        reviewerProject.setTitle("Project 1");
-        reviewerProject.setHeadSupervisor(headSupervisor);
-        reviewerProject.addProjectParticipant(reviewerRole);
-        reviewerProject.setProjectStatus(ProjectStatus.ACTIVE);
-        reviewerProject = projectService.save(reviewerProject);
-        
-        requesterProject = new Project();
-        requesterProject.setProjectClass(master);
-        requesterProject.setTitle("Project 2");
-        requesterProject.setHeadSupervisor(headSupervisor);
-        requesterProject.addProjectParticipant(requesterRole);
-        requesterProject.setProjectStatus(ProjectStatus.ACTIVE);
-        requesterProject = projectService.save(requesterProject);    
+        reviewerProject = newProject(bachelor, reviewerRole, headSupervisor, ProjectStatus.ACTIVE);
+        requesterProject = newProject(master, requesterRole, headSupervisor, ProjectStatus.ACTIVE);
 
-        request1 = new PeerRequest();
-		request1.setComment("Request 1");
-		request1.setRequester(requesterRole);
-		request1.setProject(requesterProject);
-		request1 = peerRequestService.save(request1);
-		
-		review1 = new PeerReview();
-		review1.setReviewer(reviewerRole);
-		review1.setProject(reviewerProject);
-		review1.setComment("Overall ok!");
-		review1.setPeerRequest(request1);
-		request1.setStatus(RequestStatus.FINISHED);
-		request1 = peerRequestService.save(request1);
-		review1.setSubmitted(true);
-		review1 = peerReviewService.save(review1);
-		
-		request2 = new PeerRequest();
-		request2.setComment("Request 2");
-		request2.setRequester(requesterRole);
-		request2.setProject(requesterProject);
-		request2 = peerRequestService.save(request2);
-		
-		review2 = new PeerReview();
-		review2.setReviewer(reviewerRole);
-		review2.setProject(reviewerProject);
-		review2.setComment("Overall ok!");
-		review2.setPeerRequest(request2);
-		request2.setStatus(RequestStatus.FINISHED);
-		request2 = peerRequestService.save(request2);
-		review2.setSubmitted(true);
-		review2 = peerReviewService.save(review2);
-		
-		request3 = new PeerRequest();
-		request3.setComment("Request 3");
-		request3.setRequester(requesterRole);
-		request3.setProject(requesterProject);
-		request3 = peerRequestService.save(request3);
-		
-		review3 = new PeerReview();
-		review3.setReviewer(reviewerRole);
-		review3.setProject(reviewerProject);
-		review3.setComment("Overall ok!");
-		review3.setPeerRequest(request2);
-		request3.setStatus(RequestStatus.TAKEN);
-		request3 = peerRequestService.save(request3);
-		review3.setSubmitted(false);
-		review3 = peerReviewService.save(review3);
-		
-		awaitingRequest = new PeerRequest();
-		awaitingRequest.setComment("Awaiting request");
-		awaitingRequest.setRequester(requesterRole);
-		awaitingRequest.setProject(requesterProject);
-		awaitingRequest.setStatus(RequestStatus.WAITING);
-		awaitingRequest = peerRequestService.save(awaitingRequest);
+        request1 = newRequest(requesterRole, requesterProject, "Request 1", null);
+		request2 = newRequest(requesterRole, requesterProject, "Request 2", null);
+		request3 = newRequest(requesterRole, requesterProject, "Request 3", null);
+		request4 = newRequest(requesterRole, requesterProject, "Request 4", RequestStatus.WAITING);
 		
+		review1 = newReview(reviewerRole, reviewerProject, request1, RequestStatus.FINISHED, false, true);
+		review2 = newReview(reviewerRole, reviewerProject, request2, RequestStatus.FINISHED, false, true);
+		review3 = newReview(reviewerRole, reviewerProject, request3, RequestStatus.TAKEN, false, false);
     }
 
     @Test
@@ -220,7 +157,162 @@ public class TestPeerReview {
     public void testFindAwaitingRequestsByProject(){
     	List<PeerRequest> awaitingRequests = peerRequestService.findAwaitingRequests(requesterProject);
     	Assert.assertEquals(1, awaitingRequests.size());
-    	Assert.assertEquals(Arrays.asList(new PeerRequest[]{awaitingRequest}), awaitingRequests);
+    	Assert.assertEquals(Arrays.asList(new PeerRequest[]{request4}), awaitingRequests);
     }
     
+    @Test
+    @Transactional
+    @Rollback
+    public void testCountAllAbortedReviews(){
+    	Long allAborted = peerReviewService.countAllAborted();
+    	Long expected = new Long(0);
+    	Assert.assertEquals(expected, allAborted);
+    	
+    	review2.setAborted(true);
+    	review2.setSubmitted(false);
+    	review3.setAborted(true);
+    	
+    	allAborted = peerReviewService.countAllAborted();
+    	expected = new Long(2);
+    	Assert.assertEquals(expected, allAborted);
+    }
+    
+    @Test
+    @Transactional
+    @Rollback
+    public void testCountAllInProgressReviews(){
+    	Long allInProgress = peerReviewService.countAllInProgress();
+    	Long expected = new Long(1);
+    	Assert.assertEquals(expected, allInProgress);
+    	
+    	review3.setSubmitted(true);
+    	
+    	allInProgress = peerReviewService.countAllInProgress();
+    	expected = new Long(0);
+    	Assert.assertEquals(expected, allInProgress);
+    }
+    
+    @Test
+    @Transactional
+    @Rollback
+    public void testCountAllCompletedReviews(){
+    	Long allCompleted = peerReviewService.countAllCompleted();
+    	Long expected = new Long(2);
+    	Assert.assertEquals(expected, allCompleted);
+    	
+    	review3.setSubmitted(true);
+    	
+    	allCompleted = peerReviewService.countAllCompleted();
+    	expected = new Long(3);
+    	Assert.assertEquals(expected, allCompleted);
+    }
+    
+    @Test
+    @Transactional
+    @Rollback
+    public void testCountAllReviewsByStudent(){
+    	Long allReviewsByStudent = peerReviewService.countAllReviewsByStudent(reviewerRole);
+    	Long expected = new Long(3);
+    	Assert.assertEquals(expected, allReviewsByStudent);
+    }
+    
+    @Test
+    @Transactional
+    @Rollback
+    public void testFindAllWithParams(){
+    	PeerReviewService.FilterParams params = new PeerReviewService.FilterParams();
+    	params.setAuthor(reviewerRole);
+    	List<PeerReview> reviewList = peerReviewService.findAll(params, new PageRequest(0, 10)).getContent();
+    	Assert.assertEquals(Arrays.asList(new PeerReview[]{review1,review2,review3}), reviewList);
+    	
+    	review3.setReviewer(requesterRole);
+    	reviewList = peerReviewService.findAll(params, new PageRequest(0, 10)).getContent();
+    	Assert.assertEquals(Arrays.asList(new PeerReview[]{review1,review2}), reviewList);
+
+    	params.setAuthor(null);
+    	reviewList = peerReviewService.findAll(params, new PageRequest(0, 10)).getContent();
+    	Assert.assertEquals(Arrays.asList(new PeerReview[]{review1,review2,review3}), reviewList);
+    	
+    	params.setIncludeAborted(false);
+    	params.setIncludeCompleted(false);
+    	params.setIncludeInProgress(true);
+    	reviewList = peerReviewService.findAll(params, new PageRequest(0, 10)).getContent();
+    	Assert.assertEquals(Arrays.asList(new PeerReview[]{review3}), reviewList);
+    	
+    	review3.setAborted(true);
+    	params.setIncludeAborted(true);
+    	reviewList = peerReviewService.findAll(params, new PageRequest(0, 10)).getContent();
+    	Assert.assertEquals(Arrays.asList(new PeerReview[]{review3}), reviewList);
+    }
+    
+    @Test
+    @Transactional
+    @Rollback
+    public void testReviewParamsDateFiltering() throws ParseException {
+    	PeerReviewService.FilterParams params = new PeerReviewService.FilterParams();
+        SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
+        
+        Date january12 = date.parse("2012-01-12");
+        Date february15 = date.parse("2012-02-15");
+        Date march21 = date.parse("2012-03-21");
+        Date april05 = date.parse("2012-04-05");
+        Date may02 = date.parse("2012-05-02");
+        Date march27 = date.parse("2012-03-27");
+        
+        review1.setDateCreated(february15);
+        review2.setDateCreated(march21);
+        review3.setDateCreated(may02);
+        
+        params.setCreatedAfter(january12);
+        params.setCreatedBefore(april05);
+        
+        List<PeerReview> reviewList = peerReviewService.findAll(params, new PageRequest(0,10)).getContent();
+        Assert.assertEquals(2, reviewList.size());
+        Assert.assertEquals(Arrays.asList(new PeerReview[]{review1,review2}), reviewList);
+        
+        review3.setDateCreated(march27);
+        reviewList = peerReviewService.findAll(params, new PageRequest(0,10)).getContent();
+        Assert.assertEquals(Arrays.asList(new PeerReview[]{review1,review2,review3}), reviewList);
+    }
+    
+    //Helper methods for setting up test objects
+    
+    private PeerReview newReview(final Student reviewer, final Project project, PeerRequest request, final RequestStatus status, boolean aborted, boolean submitted) {
+    	PeerReview review = new PeerReview();
+		review.setReviewer(reviewer);
+		review.setProject(project);
+		review.setComment("Hi there!");
+		review.setPeerRequest(request);
+		request.setStatus(status);
+		request = peerRequestService.save(request);
+		review.setSubmitted(submitted);
+		review.setAborted(aborted);
+		return peerReviewService.save(review);
+    }
+    
+    private PeerRequest newRequest(final Student requester, final Project project, final String comment, final RequestStatus status){
+    	PeerRequest request = new PeerRequest();
+    	request.setComment(comment);
+		request.setRequester(requester);
+		request.setProject(project);
+		if(status!=null)
+			request.setStatus(status);
+    	return peerRequestService.save(request);
+    }
+    
+    private Student newStudent(final User user) {
+    	Student student = new Student();
+    	student.setUser(user);
+    	return (Student) roleService.save(student);
+    }
+    
+    private Project newProject(final ProjectClass pc, final Student role, final Employee headSupervisor, final ProjectStatus status){
+    	Project newProject = new Project();
+    	newProject.setProjectClass(pc);
+    	newProject.setTitle("Project title");
+    	newProject.setHeadSupervisor(headSupervisor);
+    	newProject.addProjectParticipant(role);
+    	newProject.setProjectStatus(status);
+    	return projectService.save(newProject);
+    }
 }