Deleting initial post removes entire thread
This commit is contained in:
parent
075c691ba3
commit
e4711971cc
core/src
main/java/se/su/dsv/scipro/forum
test/java/se/su/dsv/scipro/forum
@ -22,6 +22,8 @@ public interface BasicForumService extends Serializable {
|
|||||||
|
|
||||||
ForumThread createThread(String subject);
|
ForumThread createThread(String subject);
|
||||||
|
|
||||||
|
ForumThread findThreadById(Long id);
|
||||||
|
|
||||||
long countUnreadThreads(List<ForumThread> forumThreadList, User user);
|
long countUnreadThreads(List<ForumThread> forumThreadList, User user);
|
||||||
|
|
||||||
ForumPost getLastPost(ForumThread forumThread);
|
ForumPost getLastPost(ForumThread forumThread);
|
||||||
|
@ -91,6 +91,11 @@ public class BasicForumServiceImpl implements BasicForumService {
|
|||||||
return threadRepository.save(forumThread);
|
return threadRepository.save(forumThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ForumThread findThreadById(Long id) {
|
||||||
|
return threadRepository.findOne(id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long countUnreadThreads(List<ForumThread> forumThreadList, User user) {
|
public long countUnreadThreads(List<ForumThread> forumThreadList, User user) {
|
||||||
return postRepository.countUnreadThreads(forumThreadList, user);
|
return postRepository.countUnreadThreads(forumThreadList, user);
|
||||||
@ -184,9 +189,13 @@ public class BasicForumServiceImpl implements BasicForumService {
|
|||||||
if (!canDelete(post)) {
|
if (!canDelete(post)) {
|
||||||
throw new PostCantBeDeletedException();
|
throw new PostCantBeDeletedException();
|
||||||
}
|
}
|
||||||
|
if (isInitialPost(post)) {
|
||||||
|
threadRepository.delete(post.getForumThread());
|
||||||
|
} else {
|
||||||
post.setDeleted(true);
|
post.setDeleted(true);
|
||||||
postRepository.save(post);
|
postRepository.save(post);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static final class PostCantBeDeletedException extends IllegalArgumentException {
|
private static final class PostCantBeDeletedException extends IllegalArgumentException {
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import static org.hamcrest.Matchers.hasItem;
|
|||||||
import static org.hamcrest.Matchers.not;
|
import static org.hamcrest.Matchers.not;
|
||||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
@ -195,4 +196,17 @@ public class BasicForumServiceIntegrationTest extends IntegrationTest {
|
|||||||
|
|
||||||
assertThat(getPublishedEvents(), not(hasItem(new ForumPostReadEvent(post, commenter))));
|
assertThat(getPublishedEvents(), not(hasItem(new ForumPostReadEvent(post, commenter))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void deleting_initial_post_removes_entire_thread() {
|
||||||
|
ForumThread thread = basicForumService.createThread("Test thread");
|
||||||
|
ForumPost post = basicForumService.createReply(thread, op, "Test post 1", Set.of());
|
||||||
|
|
||||||
|
setLoggedInAs(op);
|
||||||
|
|
||||||
|
basicForumService.deletePost(post);
|
||||||
|
|
||||||
|
ForumThread threadById = basicForumService.findThreadById(thread.getId());
|
||||||
|
assertNull(threadById, "Thread was not deleted");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user