use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.
the class ReactionIntegrationTest method testCreateOwnAnswerPostReaction.
@Test
@WithMockUser(username = "student1", roles = "USER")
public void testCreateOwnAnswerPostReaction() throws Exception {
// student 1 is the author of the answer post and reacts on this answer post
AnswerPost answerPostReactedOn = existingAnswerPosts.get(0);
Reaction reactionToSaveOnAnswerPost = createReactionOnAnswerPost(answerPostReactedOn);
Reaction createdReaction = request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", reactionToSaveOnAnswerPost, Reaction.class, HttpStatus.CREATED);
checkCreatedReaction(reactionToSaveOnAnswerPost, createdReaction);
assertThat(answerPostReactedOn.getReactions()).hasSize(reactionRepository.findReactionsByAnswerPostId(answerPostReactedOn.getId()).size() - 1);
}
use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.
the class ReactionIntegrationTest method testValidateReactionConstraintViolation.
@Test
@WithMockUser(username = "student2", roles = "USER")
public void testValidateReactionConstraintViolation() throws Exception {
Reaction invalidReaction = createInvalidReaction();
request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", invalidReaction, Reaction.class, HttpStatus.BAD_REQUEST);
Set<ConstraintViolation<Reaction>> constraintViolations = validator.validate(invalidReaction);
assertThat(constraintViolations).hasSize(1);
}
use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.
the class ReactionIntegrationTest method testGetPostsForCourse_OrderByVoteCountASC.
@Test
@WithMockUser(username = "student1", roles = "USER")
public void testGetPostsForCourse_OrderByVoteCountASC() throws Exception {
PostSortCriterion sortCriterion = PostSortCriterion.VOTES;
SortingOrder sortingOrder = SortingOrder.ASCENDING;
User student1 = database.getUserByLogin("student1");
User student2 = database.getUserByLogin("student2");
Post postReactedOn = existingPostsWithAnswers.get(0);
createVoteReactionOnPost(postReactedOn, student1);
createVoteReactionOnPost(postReactedOn, student2);
Post post2ReactedOn = existingPostsWithAnswers.get(1);
createVoteReactionOnPost(post2ReactedOn, student2);
// refresh posts after reactions are added
existingPostsWithAnswers = postRepository.findPostsForCourse(courseId, null, false, false, false, null);
var params = new LinkedMultiValueMap<String, String>();
// ordering only available in course discussions page, where paging is enabled
params.add("pagingEnabled", "true");
params.add("page", "0");
params.add("size", String.valueOf(MAX_POSTS_PER_PAGE));
params.add("postSortCriterion", sortCriterion.toString());
params.add("sortingOrder", sortingOrder.toString());
List<Post> returnedPosts = request.getList("/api/courses/" + courseId + "/posts", HttpStatus.OK, Post.class, params);
existingPostsWithAnswers.sort(Comparator.comparing((Post post) -> post.getReactions().stream().filter(reaction -> reaction.getEmojiId().equals(VOTE_EMOJI_ID)).count()));
assertThat(returnedPosts).isEqualTo(existingPostsWithAnswers);
}
use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.
the class ReactionIntegrationTest method createInvalidReaction.
private Reaction createInvalidReaction() {
Reaction reaction = new Reaction();
reaction.setEmojiId("smiley");
reaction.setPost(existingPostsWithAnswers.get(0));
reaction.setAnswerPost(existingAnswerPosts.get(0));
return reaction;
}
use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.
the class ReactionIntegrationTest method testCreatePostReactions.
@Test
@WithMockUser(username = "student2", roles = "USER")
public void testCreatePostReactions() throws Exception {
// student 1 is the author of the post and student 2 reacts on this post
AnswerPost answerPostReactedOn = existingAnswerPosts.get(0);
Reaction reactionToSaveOnAnswerPost = createReactionOnAnswerPost(answerPostReactedOn);
Reaction createdFirstReaction = request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", reactionToSaveOnAnswerPost, Reaction.class, HttpStatus.CREATED);
checkCreatedReaction(reactionToSaveOnAnswerPost, createdFirstReaction);
assertThat(answerPostReactedOn.getReactions()).hasSize(reactionRepository.findReactionsByAnswerPostId(answerPostReactedOn.getId()).size() - 1);
// student 2 reacts again on this answer post
reactionToSaveOnAnswerPost = createReactionOnAnswerPost(answerPostReactedOn);
// change the emojiId to react differently
reactionToSaveOnAnswerPost.setEmojiId("cry");
Reaction createdSecondReaction = request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", reactionToSaveOnAnswerPost, Reaction.class, HttpStatus.CREATED);
checkCreatedReaction(reactionToSaveOnAnswerPost, createdSecondReaction);
assertThat(answerPostReactedOn.getReactions()).hasSize(reactionRepository.findReactionsByAnswerPostId(answerPostReactedOn.getId()).size() - 2);
}
Aggregations