createCourse('new'); $teacher = $this->createUser('teacher'); $forumRepo = self::getContainer()->get(CForumRepository::class); $threadRepo = self::getContainer()->get(CForumThreadRepository::class); $postRepo = self::getContainer()->get(CForumPostRepository::class); $attachmentRepo = self::getContainer()->get(CForumAttachmentRepository::class); $forum = (new CForum()) ->setForumTitle('forum') ->setParent($course) ->setCreator($teacher) ; $forumRepo->create($forum); $thread = (new CForumThread()) ->setThreadTitle('thread title') ->setForum($forum) ->setParent($course) ->setCreator($teacher) ; $threadRepo->create($thread); $date = new DateTime(); $post = (new CForumPost()) ->setPostTitle('post') ->setPostText('text') ->setPostDate($date) ->setPostNotification(true) ->setVisible(true) ->setStatus(1) ->setPostParent(null) ->setParent($course) ->setCreator($teacher) ->setThread($thread) ->setForum($forum) ->setUser($teacher) ->addCourseLink($course) ; $postRepo->create($post); $this->assertSame('text', $post->getPostText()); $this->assertSame($date, $post->getPostDate()); $this->assertTrue($post->getVisible()); $this->assertTrue($post->getPostNotification()); $this->assertSame(1, $post->getStatus()); $this->assertSame($post->getIid(), $post->getResourceIdentifier()); $file = $this->getUploadedFile(); $attachment = (new CForumAttachment()) ->setComment('comment') ->setCId($course->getId()) ->setFilename($file->getFilename()) ->setPath('') ->setPost($post) ->setSize($file->getSize()) ->setParent($post) ->setCreator($teacher) ->addCourseLink($course) ; $attachmentRepo->create($attachment); $attachmentRepo->addFile($attachment, $file); $attachmentRepo->update($attachment); $this->assertSame($attachment->getResourceIdentifier(), $attachment->getIid()); $this->assertSame($file->getFilename(), (string) $attachment); $this->assertNotNull($attachment->getResourceNode()); $this->assertNotNull($attachment->getResourceNode()->getResourceFile()); $this->getEntityManager()->clear(); $post = $postRepo->find($post->getIid()); $this->assertSame('post', (string) $post); $this->assertSame(1, $post->getAttachments()->count()); $this->assertSame(1, $postRepo->count([])); $this->assertSame(1, $threadRepo->count([])); $this->assertSame(1, $forumRepo->count([])); $this->assertSame(1, $attachmentRepo->count([])); /** @var CForumThread $thread */ $thread = $threadRepo->find($thread->getIid()); /** @var CForum $forum */ $forum = $forumRepo->find($forum->getIid()); $this->assertSame(1, $thread->getPosts()->count()); $this->assertSame(1, $forum->getThreads()->count()); $this->assertSame(1, $forum->getPosts()->count()); $count = $postRepo->countCourseForumPosts($course); $this->assertSame(1, $count); $count = $postRepo->countUserForumPosts($teacher, $course); $this->assertSame(1, $count); $postRepo->delete($post); $this->assertSame(0, $postRepo->count([])); $this->assertSame(0, $attachmentRepo->count([])); $this->assertSame(1, $threadRepo->count([])); $this->assertSame(1, $forumRepo->count([])); $this->getEntityManager()->clear(); /** @var CForum $forum */ $forum = $forumRepo->find($forum->getIid()); $forumRepo->delete($forum); $this->assertSame(0, $threadRepo->count([])); $this->assertSame(0, $forumRepo->count([])); } }