Search in sources :

Example 1 with VOTE_EMOJI_ID

use of de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID 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);
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) AnswerPost(de.tum.in.www1.artemis.domain.metis.AnswerPost) PostSortCriterion(de.tum.in.www1.artemis.domain.metis.PostSortCriterion) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Course(de.tum.in.www1.artemis.domain.Course) Autowired(org.springframework.beans.factory.annotation.Autowired) PostRepository(de.tum.in.www1.artemis.repository.metis.PostRepository) VOTE_EMOJI_ID(de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID) UserRepository(de.tum.in.www1.artemis.repository.UserRepository) Post(de.tum.in.www1.artemis.domain.metis.Post) ReactionRepository(de.tum.in.www1.artemis.repository.metis.ReactionRepository) Validation(javax.validation.Validation) ConstraintViolation(javax.validation.ConstraintViolation) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest) Reaction(de.tum.in.www1.artemis.domain.metis.Reaction) SortingOrder(de.tum.in.www1.artemis.domain.enumeration.SortingOrder) Collection(java.util.Collection) Set(java.util.Set) Validator(javax.validation.Validator) Test(org.junit.jupiter.api.Test) HttpStatus(org.springframework.http.HttpStatus) User(de.tum.in.www1.artemis.domain.User) List(java.util.List) AfterEach(org.junit.jupiter.api.AfterEach) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Comparator(java.util.Comparator) LinkedMultiValueMap(org.springframework.util.LinkedMultiValueMap) 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 2 with VOTE_EMOJI_ID

use of de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID 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 3 with VOTE_EMOJI_ID

use of de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID in project Artemis by ls1intum.

the class ReactionIntegrationTest method createVoteReactionOnPost.

private Reaction createVoteReactionOnPost(Post postReactedOn, User user) {
    Reaction reaction = new Reaction();
    reaction.setUser(user);
    reaction.setEmojiId(VOTE_EMOJI_ID);
    reaction.setPost(postReactedOn);
    reactionRepository.save(reaction);
    return reaction;
}
Also used : Reaction(de.tum.in.www1.artemis.domain.metis.Reaction)

Example 4 with VOTE_EMOJI_ID

use of de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID 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 5 with VOTE_EMOJI_ID

use of de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID in project ArTEMiS by ls1intum.

the class ReactionIntegrationTest method createVoteReactionOnPost.

private Reaction createVoteReactionOnPost(Post postReactedOn, User user) {
    Reaction reaction = new Reaction();
    reaction.setUser(user);
    reaction.setEmojiId(VOTE_EMOJI_ID);
    reaction.setPost(postReactedOn);
    reactionRepository.save(reaction);
    return reaction;
}
Also used : Reaction(de.tum.in.www1.artemis.domain.metis.Reaction)

Aggregations

AbstractSpringIntegrationBambooBitbucketJiraTest (de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)4 User (de.tum.in.www1.artemis.domain.User)4 SortingOrder (de.tum.in.www1.artemis.domain.enumeration.SortingOrder)4 AnswerPost (de.tum.in.www1.artemis.domain.metis.AnswerPost)4 Post (de.tum.in.www1.artemis.domain.metis.Post)4 PostSortCriterion (de.tum.in.www1.artemis.domain.metis.PostSortCriterion)4 Reaction (de.tum.in.www1.artemis.domain.metis.Reaction)4 Test (org.junit.jupiter.api.Test)4 WithMockUser (org.springframework.security.test.context.support.WithMockUser)4 LinkedMultiValueMap (org.springframework.util.LinkedMultiValueMap)4 VOTE_EMOJI_ID (de.tum.in.www1.artemis.config.Constants.VOTE_EMOJI_ID)2 Course (de.tum.in.www1.artemis.domain.Course)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 Collection (java.util.Collection)2 Comparator (java.util.Comparator)2 List (java.util.List)2 Set (java.util.Set)2 ConstraintViolation (javax.validation.ConstraintViolation)2