Search in sources :

Example 26 with Reaction

use of de.tum.in.www1.artemis.domain.metis.Reaction in project Artemis by ls1intum.

the class ReactionIntegrationTest method createReactionOnPost.

// HELPER METHODS
private Reaction createReactionOnPost(Post postReactedOn) {
    Reaction reaction = new Reaction();
    reaction.setEmojiId("smiley");
    reaction.setPost(postReactedOn);
    return reaction;
}
Also used : Reaction(de.tum.in.www1.artemis.domain.metis.Reaction)

Example 27 with Reaction

use of de.tum.in.www1.artemis.domain.metis.Reaction in project Artemis by ls1intum.

the class ReactionIntegrationTest method createReactionOnAnswerPost.

private Reaction createReactionOnAnswerPost(AnswerPost answerPostReactedOn) {
    Reaction reaction = new Reaction();
    reaction.setEmojiId("smiley");
    reaction.setAnswerPost(answerPostReactedOn);
    return reaction;
}
Also used : Reaction(de.tum.in.www1.artemis.domain.metis.Reaction)

Example 28 with Reaction

use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.

the class ReactionIntegrationTest method testGetPostsForCourse_OrderByVoteCountDESC.

// GET
@Test
@WithMockUser(username = "student1", roles = "USER")
public void testGetPostsForCourse_OrderByVoteCountDESC() throws Exception {
    PostSortCriterion sortCriterion = PostSortCriterion.VOTES;
    SortingOrder sortingOrder = SortingOrder.DESCENDING;
    User student1 = database.getUserByLogin("student1");
    User student2 = database.getUserByLogin("student2");
    // student 1 is the author of the post and reacts on this post
    Post postReactedOn = existingPostsWithAnswers.get(0);
    createVoteReactionOnPost(postReactedOn, student1);
    Post postReactedOn2 = existingPostsWithAnswers.get(1);
    createVoteReactionOnPost(postReactedOn2, student1);
    createVoteReactionOnPost(postReactedOn2, 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()).reversed());
    assertThat(returnedPosts).isEqualTo(existingPostsWithAnswers);
}
Also used : User(de.tum.in.www1.artemis.domain.User) WithMockUser(org.springframework.security.test.context.support.WithMockUser) LinkedMultiValueMap(org.springframework.util.LinkedMultiValueMap) AnswerPost(de.tum.in.www1.artemis.domain.metis.AnswerPost) Post(de.tum.in.www1.artemis.domain.metis.Post) SortingOrder(de.tum.in.www1.artemis.domain.enumeration.SortingOrder) PostSortCriterion(de.tum.in.www1.artemis.domain.metis.PostSortCriterion) WithMockUser(org.springframework.security.test.context.support.WithMockUser) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest) Test(org.junit.jupiter.api.Test)

Example 29 with Reaction

use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.

the class ReactionIntegrationTest method testCreateOwnPostReaction.

// CREATE
@Test
@WithMockUser(username = "student1", roles = "USER")
public void testCreateOwnPostReaction() throws Exception {
    // student 1 is the author of the post and reacts on this post
    Post postReactedOn = existingPostsWithAnswers.get(0);
    Reaction reactionToSaveOnPost = createReactionOnPost(postReactedOn);
    Reaction createdReaction = request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", reactionToSaveOnPost, Reaction.class, HttpStatus.CREATED);
    checkCreatedReaction(reactionToSaveOnPost, createdReaction);
    assertThat(postReactedOn.getReactions()).hasSize(reactionRepository.findReactionsByPostId(postReactedOn.getId()).size() - 1);
}
Also used : AnswerPost(de.tum.in.www1.artemis.domain.metis.AnswerPost) Post(de.tum.in.www1.artemis.domain.metis.Post) Reaction(de.tum.in.www1.artemis.domain.metis.Reaction) WithMockUser(org.springframework.security.test.context.support.WithMockUser) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest) Test(org.junit.jupiter.api.Test)

Example 30 with Reaction

use of de.tum.in.www1.artemis.domain.metis.Reaction in project ArTEMiS by ls1intum.

the class ReactionIntegrationTest method testCreateMultipleOwnPostReaction_internalServerError.

@Test
@WithMockUser(username = "student1", roles = "USER")
public void testCreateMultipleOwnPostReaction_internalServerError() throws Exception {
    // student 1 is the author of the post and reacts on this post
    Post postReactedOn = existingPostsWithAnswers.get(0);
    Reaction reactionToSaveOnPost = createReactionOnPost(postReactedOn);
    Reaction createdReaction = request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", reactionToSaveOnPost, Reaction.class, HttpStatus.CREATED);
    checkCreatedReaction(reactionToSaveOnPost, createdReaction);
    assertThat(postReactedOn.getReactions()).hasSize(reactionRepository.findReactionsByPostId(postReactedOn.getId()).size() - 1);
    // try again
    request.postWithResponseBody("/api/courses/" + courseId + "/postings/reactions", reactionToSaveOnPost, Reaction.class, HttpStatus.INTERNAL_SERVER_ERROR);
}
Also used : AnswerPost(de.tum.in.www1.artemis.domain.metis.AnswerPost) Post(de.tum.in.www1.artemis.domain.metis.Post) Reaction(de.tum.in.www1.artemis.domain.metis.Reaction) WithMockUser(org.springframework.security.test.context.support.WithMockUser) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest) Test(org.junit.jupiter.api.Test)

Aggregations

Reaction (de.tum.in.www1.artemis.domain.metis.Reaction)42 AnswerPost (de.tum.in.www1.artemis.domain.metis.AnswerPost)34 WithMockUser (org.springframework.security.test.context.support.WithMockUser)32 AbstractSpringIntegrationBambooBitbucketJiraTest (de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)30 Test (org.junit.jupiter.api.Test)30 Post (de.tum.in.www1.artemis.domain.metis.Post)22 Course (de.tum.in.www1.artemis.domain.Course)10 User (de.tum.in.www1.artemis.domain.User)10 SortingOrder (de.tum.in.www1.artemis.domain.enumeration.SortingOrder)4 PostSortCriterion (de.tum.in.www1.artemis.domain.metis.PostSortCriterion)4 MetisPostDTO (de.tum.in.www1.artemis.web.websocket.dto.MetisPostDTO)4 ConstraintViolation (javax.validation.ConstraintViolation)4 LinkedMultiValueMap (org.springframework.util.LinkedMultiValueMap)4 VOTE_EMOJI_ID (de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID)2 Posting (de.tum.in.www1.artemis.domain.metis.Posting)2 UserRepository (de.tum.in.www1.artemis.repository.UserRepository)2 PostRepository (de.tum.in.www1.artemis.repository.metis.PostRepository)2 ReactionRepository (de.tum.in.www1.artemis.repository.metis.ReactionRepository)2 AccessForbiddenException (de.tum.in.www1.artemis.web.rest.errors.AccessForbiddenException)2 BadRequestAlertException (de.tum.in.www1.artemis.web.rest.errors.BadRequestAlertException)2