This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 4bee9895 authored by Eduard Frankford's avatar Eduard Frankford
Browse files

added unit tests

parent 06cfb6bd
2 merge requests!188Merging Peer Reviewing et. al to Master,!164211 peer reviewing functionality
......@@ -16,6 +16,7 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,6 +24,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
@Service
@Transactional
public class ReviewService {
private static final String REVIEW_UPDATED = "Review Updated";
......@@ -110,6 +112,8 @@ public class ReviewService {
.filter(reviewRating -> !review.getUsers().contains(reviewRating.getUser().getEmail()))
.forEach(reviewRating -> reviewRatingRepository.delete(reviewRating));
reviewEntity.setResource(review.getResource());
reviewEntity.setLink(review.getLink());
Set<ReviewRating> reviewRatings = new HashSet<>();
review
.getUsers()
......@@ -265,6 +269,8 @@ public class ReviewService {
reviewDTO.setUsers(
review.getComments().stream().map(reviewRating -> reviewRating.getUser().getEmail()).collect(Collectors.toList())
);
reviewDTO.setLink(review.getLink());
reviewDTO.setRequestedBy(userService.getUserById(review.getRequestedBy()).get().getEmail());
reviewDTO.setId(review.getId());
reviewDTO.setStatus(review.getComments().stream().map(reviewRating -> reviewRating.getStatus()).collect(Collectors.toList()));
reviewDTO.setComments(review.getComments().stream().map(reviewRating -> reviewRating.getComment()).collect(Collectors.toList()));
......
package at.ac.uibk.gitsearch.service;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import at.ac.uibk.gitsearch.GitsearchApp;
import at.ac.uibk.gitsearch.domain.Review;
import at.ac.uibk.gitsearch.domain.ReviewRating;
import at.ac.uibk.gitsearch.domain.Statistics;
import at.ac.uibk.gitsearch.repository.jpa.ReviewRatingRepository;
import at.ac.uibk.gitsearch.repository.jpa.ReviewRepository;
import at.ac.uibk.gitsearch.repository.jpa.StatisticsRepository;
import at.ac.uibk.gitsearch.security.AuthoritiesConstants;
import at.ac.uibk.gitsearch.service.dto.ReviewDTO;
import at.ac.uibk.gitsearch.service.dto.ReviewRequest;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;
@SpringBootTest(classes = GitsearchApp.class)
@ExtendWith(MockitoExtension.class)
@AutoConfigureMockMvc
public class ReviewServiceTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ReviewRepository reviewRepository;
@Autowired
private ReviewRatingRepository reviewRatingRepository;
@Autowired
private ReviewService reviewService;
@Autowired
private StatisticsRepository statisticsRepository;
@BeforeEach
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void tearDown() {
reviewRatingRepository.deleteAll();
reviewRepository.deleteAll();
List<String> reviewers = new ArrayList<>();
reviewers.add("user@localhost");
reviewService.createReview(new ReviewRequest("resource", "codeability.at", "1", reviewers));
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void createReviewTest() {
List<String> reviewers = new ArrayList<>();
reviewers.add("user@localhost");
int size = reviewRepository.findAll().size();
reviewService.createReview(new ReviewRequest("resource1", "codeability1.at", "2", reviewers));
List<Review> reviewList = reviewRepository.findAll();
assertThat(reviewList).hasSize(size + 1);
Review testReview = reviewList.stream().filter(r -> r.getResource().equals("resource1")).findFirst().get();
assertThat(testReview.getResource()).isEqualTo("resource1");
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.USER, username = "user")
public void updateReviewTest() {
List<Review> reviewList = reviewRepository.findAll();
Review testReview = reviewList.get(0);
testReview.setLink("newLink");
reviewService.updateReview(reviewService.reviewToDTO(testReview));
reviewList = reviewRepository.findAll();
assertThat(reviewList).hasSize(1);
testReview = reviewList.get(0);
assertThat(testReview.getLink()).isEqualTo("newLink");
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.USER, username = "user")
public void updateStatusTest() {
List<Review> reviewList = reviewRepository.findAll();
Review testReview = reviewList.get(0);
reviewService.updateStatus(testReview.getId(), "TEST");
reviewList = reviewRepository.findAll();
testReview = reviewList.get(0);
testReview.getComments().forEach(c -> assertThat(c.getStatus()).isEqualTo("TEST"));
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void getAllReviewsTest() {
List<String> reviewers = new ArrayList<>();
reviewers.add("user@localhost");
reviewService.createReview(new ReviewRequest("resource1", "codeability1.at", "2", reviewers));
List<ReviewDTO> reviewList = reviewService.getAllReviews();
assertThat(reviewList).hasSize(2);
reviewList.forEach(r -> assertThat(r.getResource()).isIn("resource", "resource1"));
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void getAllReviewsWithStatisticsTest() {
List<ReviewDTO> reviewList = reviewService.getAllReviewsWithStatistics();
assertThat(reviewList).hasSize(1);
reviewList.forEach(r -> assertThat(r.getBadgeRewarded()).isFalse());
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.USER, username = "admin")
public void getReviewsByUserTest() {
List<ReviewDTO> reviewList = reviewService.getReviewsByUser();
reviewList.forEach(r -> assertThat(r.getResource()).isEqualTo("resource"));
reviewList.forEach(r -> r.getUsers().stream().forEach(u -> assertEquals("ANNONYMIZED", u)));
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.USER, username = "user")
public void updateReviewDeletionByUserTest() throws IllegalAccessException {
List<ReviewDTO> reviewList = reviewService.getReviewsByUser();
ReviewDTO reviewDTO = reviewList.get(0);
reviewDTO.getStatus().set(0, "DELETION REQUESTED");
reviewService.updateReviewRatingByUser(reviewDTO);
reviewList = reviewService.getReviewsByUser();
assertEquals(reviewList.size(), 0);
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void deleteReviewTest() {
List<Review> reviewList = reviewRepository.findAll();
Review testReview = reviewList.get(0);
reviewService.deleteReview(testReview.getId());
reviewList = reviewRepository.findAll();
assertThat(reviewList).hasSize(0);
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.USER, username = "user")
public void reviewToDTOTest() {
List<String> reviewers = new ArrayList<>();
reviewers.add("user@localhost");
Review testReview = reviewService.createReview(new ReviewRequest("resource2", "codeability2.at", "2", reviewers));
ReviewDTO reviewDTO = reviewService.reviewToDTO(testReview);
assertEquals(reviewDTO.getResource(), testReview.getResource());
assertEquals(reviewDTO.getUsers(), testReview.getComments().stream().map(c -> c.getUser().getEmail()).toList());
assertEquals(reviewDTO.getComments(), testReview.getComments().stream().map(c -> c.getComment()).toList());
assertEquals(reviewDTO.getId(), testReview.getId());
assertEquals(reviewDTO.getStatus(), testReview.getComments().stream().map(reviewRating -> reviewRating.getStatus()).toList());
assertEquals(reviewDTO.getLink(), testReview.getLink());
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void getReviewTest() {
Review reviewTest = reviewRepository.findAll().get(0);
ReviewDTO review = reviewService.getReview(reviewTest.getId());
assertEquals(review.getId(), reviewTest.getId());
assertEquals(review.getResource(), reviewTest.getResource());
assertEquals(review.getLink(), reviewTest.getLink());
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void rewardBadgeTest() {
Review reviewTest = reviewRepository.findAll().get(0);
reviewService.rewardBadge(reviewTest.getId());
Statistics statistics = statisticsRepository.findByExerciseID(reviewTest.getResourceID()).get();
assertEquals(statistics.getBadgeRewarded(), true);
}
@Test
@WithMockUser(authorities = AuthoritiesConstants.ADMIN, username = "admin")
public void requestReviewForExerciseTest() {
List<String> reviewers = new ArrayList<>();
reviewers.add("user@localhost");
reviewService.requestReviewForExercise(new ReviewRequest("resource3", "codeability3.at", "2", reviewers));
List<Review> reviewList = reviewRepository.findAll();
assertThat(reviewList).hasSize(2);
Review testReview = reviewList.stream().filter(r -> r.getResource().equals("resource3")).findFirst().get();
assertThat(testReview.getResource()).isEqualTo("resource3");
testReview.getComments().forEach(c -> assertThat(c.getStatus()).isEqualTo("REQUESTED"));
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment