pull/4037/head
Julio 4 years ago
parent 885dad1f31
commit f57a216dcd
  1. 2
      public/main/announcements/announcements.php
  2. 2
      src/CourseBundle/Entity/CForumAttachment.php
  3. 2
      src/CourseBundle/Entity/CForumCategory.php
  4. 2
      src/CourseBundle/Entity/CForumMailcue.php
  5. 46
      src/CourseBundle/Entity/CGroup.php
  6. 10
      src/CourseBundle/Entity/CLpCategory.php
  7. 2
      src/CourseBundle/Repository/CForumPostRepository.php
  8. 33
      tests/CoreBundle/Repository/GradeBookCategoryRepositoryTest.php
  9. 26
      tests/CoreBundle/Repository/GroupRepositoryTest.php
  10. 11
      tests/CoreBundle/Repository/Node/CourseRepositoryTest.php
  11. 3
      tests/CoreBundle/Repository/Node/IllustrationRepositoryTest.php
  12. 10
      tests/CoreBundle/Repository/Node/UserRepositoryTest.php
  13. 8
      tests/CoreBundle/Repository/ResourceNodeRepositoryTest.php
  14. 5
      tests/CoreBundle/Repository/SettingsCurrentRepositoryTest.php
  15. 3
      tests/CoreBundle/Repository/TrackExerciseRepositoryTest.php
  16. 1
      tests/CourseBundle/Repository/CDocumentRepositoryTest.php
  17. 3
      tests/CourseBundle/Repository/CForumCategoryRepositoryTest.php
  18. 44
      tests/CourseBundle/Repository/CForumPostRepositoryTest.php
  19. 48
      tests/CourseBundle/Repository/CForumRepositoryTest.php
  20. 14
      tests/CourseBundle/Repository/CForumThreadRepositoryTest.php
  21. 31
      tests/CourseBundle/Repository/CGroupCategoryRepositoryTest.php
  22. 121
      tests/CourseBundle/Repository/CGroupRepositoryTest.php
  23. 4
      tests/CourseBundle/Repository/CLinkRepositoryTest.php
  24. 50
      tests/CourseBundle/Repository/CLpCategoryRepositoryTest.php
  25. 41
      tests/CourseBundle/Repository/CLpRepositoryTest.php
  26. 3
      tests/CourseBundle/Repository/CQuizRepositoryTest.php

@ -62,7 +62,7 @@ if (!empty($group_id)) {
if (false === $allowToEdit) { if (false === $allowToEdit) {
// Check if user is tutor group // Check if user is tutor group
$isTutor = $groupEntity->userIsTutor(api_get_user_entity()); $isTutor = $groupEntity->hasTutor(api_get_user_entity());
if ($isTutor) { if ($isTutor) {
$allowToEdit = true; $allowToEdit = true;
} }

@ -11,8 +11,6 @@ use Chamilo\CoreBundle\Entity\ResourceInterface;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
/** /**
* CForumAttachment.
*
* @ORM\Table( * @ORM\Table(
* name="c_forum_attachment", * name="c_forum_attachment",
* indexes={ * indexes={

@ -14,8 +14,6 @@ use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
* CForumCategory.
*
* @ORM\Table( * @ORM\Table(
* name="c_forum_category", * name="c_forum_category",
* indexes={ * indexes={

@ -9,8 +9,6 @@ namespace Chamilo\CourseBundle\Entity;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
/** /**
* CForumMailcue.
*
* @ORM\Table( * @ORM\Table(
* name="c_forum_mailcue", * name="c_forum_mailcue",
* indexes={ * indexes={

@ -12,7 +12,6 @@ use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Entity\User;
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
@ -415,20 +414,28 @@ class CGroup extends AbstractResource implements ResourceInterface
public function hasMember(User $user): bool public function hasMember(User $user): bool
{ {
$criteria = Criteria::create()->where( if (!$this->hasMembers()) {
Criteria::expr()->eq('user', $user) return false;
); }
$list = $this->members->filter(function (CGroupRelUser $member) use ($user) {
return $member->getUser()->getId() === $user->getId();
});
return $this->members->matching($criteria)->count() > 0; return $list->count() > 0;
} }
public function hasTutor(User $user): bool public function hasTutor(User $user): bool
{ {
$criteria = Criteria::create()->where( if (!$this->hasTutors()) {
Criteria::expr()->eq('user', $user) return false;
); }
return $this->tutors->matching($criteria)->count() > 0; $list = $this->tutors->filter(function (CGroupRelTutor $tutor) use ($user) {
return $tutor->getUser()->getId() === $user->getId();
});
return $list->count() > 0;
} }
/** /**
@ -454,27 +461,6 @@ class CGroup extends AbstractResource implements ResourceInterface
return $this->tutors->count() > 0; return $this->tutors->count() > 0;
} }
public function userIsTutor(User $user = null): bool
{
if (null === $user) {
return false;
}
if (0 === $this->tutors->count()) {
return false;
}
$criteria = Criteria::create()
->andWhere(
Criteria::expr()->eq('user', $user)
)
;
$relation = $this->tutors->matching($criteria);
return $relation->count() > 0;
}
public function getCategory(): ?CGroupCategory public function getCategory(): ?CGroupCategory
{ {
return $this->category; return $this->category;

@ -143,10 +143,7 @@ class CLpCategory extends AbstractResource implements ResourceInterface
} }
} }
/** public function hasUser(CLpCategoryUser $categoryUser): bool
* @return bool
*/
public function hasUser(CLpCategoryUser $categoryUser)
{ {
if (0 !== $this->getUsers()->count()) { if (0 !== $this->getUsers()->count()) {
$criteria = Criteria::create()->where( $criteria = Criteria::create()->where(
@ -163,10 +160,7 @@ class CLpCategory extends AbstractResource implements ResourceInterface
return false; return false;
} }
/** public function hasUserAdded(User $user): bool
* @return bool
*/
public function hasUserAdded(User $user)
{ {
if (0 !== $this->getUsers()->count()) { if (0 !== $this->getUsers()->count()) {
$categoryUser = new CLpCategoryUser(); $categoryUser = new CLpCategoryUser();

@ -53,7 +53,7 @@ class CForumPostRepository extends ResourceRepository
if ( if (
(empty($group) && $isAllowedToEdit) || (empty($group) && $isAllowedToEdit) ||
( (
(null !== $group ? $group->userIsTutor($currentUser) : false) || (null !== $group ? $group->hasTutor($currentUser) : false) ||
!$onlyVisible !$onlyVisible
) )
) { ) {

@ -26,12 +26,23 @@ class GradeBookCategoryRepositoryTest extends AbstractApiTest
{ {
$em = $this->getEntityManager(); $em = $this->getEntityManager();
$courseRepo = self::getContainer()->get(CourseRepository::class); $courseRepo = self::getContainer()->get(CourseRepository::class);
$repo = self::getContainer()->get(GradeBookCategoryRepository::class); $categoryRepo = self::getContainer()->get(GradeBookCategoryRepository::class);
$evaluationRepo = $em->getRepository(GradebookEvaluation::class);
$linkRepo = $em->getRepository(GradebookLink::class);
$course = $this->createCourse('new'); $course = $this->createCourse('new');
$category = (new GradebookCategory()) $category = (new GradebookCategory())
->setName('cat1') ->setName('cat1')
->setDescription('desc')
->setCertifMinScore(100)
->setDocumentId(0)
->setDefaultLowestEvalExclude(false)
->setIsRequirement(false)
->setMinimumToValidate(50)
->setDepends('depends')
->setLocked(1)
->setGradeBooksToValidateInDependence(1)
->setCourse($course) ->setCourse($course)
->setWeight(100.00) ->setWeight(100.00)
->setVisible(true) ->setVisible(true)
@ -41,24 +52,30 @@ class GradeBookCategoryRepositoryTest extends AbstractApiTest
$evaluation = (new GradebookEvaluation()) $evaluation = (new GradebookEvaluation())
->setName('eva') ->setName('eva')
->setDescription('desc')
->setCategory($category) ->setCategory($category)
->setCourse($course)
->setWeight(100.00)
->setVisible(1) ->setVisible(1)
->setWeight(50.00) ->setWeight(50.00)
->setLocked(1)
->setAverageScore(100)
->setBestScore(100)
->setType('evaluation') ->setType('evaluation')
->setMax(100.00) ->setMax(100.00)
->setScoreWeight(100)
->setCourse($course)
; ;
$this->assertHasNoEntityViolations($evaluation); $this->assertHasNoEntityViolations($evaluation);
$link = (new GradebookLink()) $link = (new GradebookLink())
->setRefId(1) ->setRefId(1)
->setScoreWeight(100)
->setCategory($category) ->setCategory($category)
->setCourse($course)
->setWeight(100.00) ->setWeight(100.00)
->setVisible(1) ->setVisible(1)
->setWeight(50.00) ->setWeight(50.00)
->setType(1) ->setType(1)
->setLocked(0)
->setCourse($course)
; ;
$this->assertHasNoEntityViolations($link); $this->assertHasNoEntityViolations($link);
@ -75,7 +92,9 @@ class GradeBookCategoryRepositoryTest extends AbstractApiTest
$em->flush(); $em->flush();
$this->assertSame(0, $courseRepo->count([])); $this->assertSame(0, $courseRepo->count([]));
$this->assertSame(0, $repo->count([])); $this->assertSame(0, $categoryRepo->count([]));
$this->assertSame(0, $evaluationRepo->count([]));
$this->assertSame(0, $linkRepo->count([]));
} }
public function testCreateWithEvaluationAndLinks(): void public function testCreateWithEvaluationAndLinks(): void
@ -165,9 +184,9 @@ class GradeBookCategoryRepositoryTest extends AbstractApiTest
$this->assertSame(1, $courseRepo->count([])); $this->assertSame(1, $courseRepo->count([]));
$em->remove($category); $courseRepo->delete($course);
$em->flush();
$this->assertSame(0, $repo->count([])); $this->assertSame(0, $repo->count([]));
$this->assertSame(0, $courseRepo->count([]));
} }
} }

@ -20,14 +20,34 @@ class GroupRepositoryTest extends AbstractApiTest
$em = $this->getEntityManager(); $em = $this->getEntityManager();
$repo = self::getContainer()->get(GroupRepository::class); $repo = self::getContainer()->get(GroupRepository::class);
$defaultGroups = $repo->count([]); $defaultGroups = $repo->count([]);
$item = (new Group('new_group'))
$roles = [
'ROLE_TEST',
'ROLE_TEST2',
];
$group = (new Group('new_group'))
->setCode('new_group') ->setCode('new_group')
->setRoles($roles)
->addRole('ROLE_TEST3')
; ;
$this->assertHasNoEntityViolations($item); $this->assertHasNoEntityViolations($group);
$em->persist($item); $em->persist($group);
$em->flush(); $em->flush();
$this->assertSame('new_group', (string) $group);
$this->assertSame('new_group', $group->getCode());
$this->assertNotNull($group->getId());
$this->assertCount(3, $group->getRoles());
$this->assertSame($defaultGroups + 1, $repo->count([])); $this->assertSame($defaultGroups + 1, $repo->count([]));
$group->removeRole('role');
$this->assertCount(3, $group->getRoles());
$group->removeRole('ROLE_TEST3');
$this->assertCount(2, $group->getRoles());
} }
public function testGetAdmins(): void public function testGetAdmins(): void

@ -32,9 +32,13 @@ class CourseRepositoryTest extends AbstractApiTest
->setTitle('test') ->setTitle('test')
->setCode('test') ->setCode('test')
->setVisualCode('test') ->setVisualCode('test')
->setDepartmentUrl('https://chamilo.org')
->addAccessUrl($this->getAccessUrl()) ->addAccessUrl($this->getAccessUrl())
; ;
$courseRepo->create($course); $courseRepo->create($course);
$this->assertTrue($course->isActive());
$this->assertIsArray(Course::getStatusList());
} }
public function testCreateEntity(): void public function testCreateEntity(): void
@ -45,11 +49,16 @@ class CourseRepositoryTest extends AbstractApiTest
$category = (new CourseCategory()) $category = (new CourseCategory())
->setCode('Course cat') ->setCode('Course cat')
->setName('Course cat') ->setName('Course cat')
->setDescription('desc')
->setAuthCatChild('cat')
->setAuthCourseChild('cat')
->setChildrenCount(0)
->setTreePos(0)
; ;
$em->persist($category); $em->persist($category);
$em->flush(); $em->flush();
$this->assertIsArray(Course::getStatusList()); $this->assertFalse($category->hasAsset());
$course = (new Course()) $course = (new Course())
->setTitle('test julio') ->setTitle('test julio')

@ -65,6 +65,7 @@ class IllustrationRepositoryTest extends WebTestCase
$illustration = (new Illustration()) $illustration = (new Illustration())
->setName('test') ->setName('test')
->setResourceName('test')
->setCreator($user) ->setCreator($user)
->setParent($user) ->setParent($user)
; ;
@ -72,5 +73,7 @@ class IllustrationRepositoryTest extends WebTestCase
$repo->update($illustration); $repo->update($illustration);
$this->assertSame('test', (string) $illustration); $this->assertSame('test', (string) $illustration);
$this->assertNotNull($illustration->getId());
$this->assertSame($illustration->getId(), $illustration->getResourceIdentifier());
} }
} }

@ -124,6 +124,14 @@ class UserRepositoryTest extends AbstractApiTest
->setLastname('Doe') ->setLastname('Doe')
->setFirstname('Joe') ->setFirstname('Joe')
->setUsername('admin2') ->setUsername('admin2')
->setEnabled(true)
->setSalt('')
->setRegistrationDate(new DateTime())
->setExpirationDate(new DateTime())
->setOpenid('')
->setSlug('admin2')
->setConfirmationToken('conf')
->setRoles(['ROLE_TEST'])
->setStatus(1) ->setStatus(1)
->setActive(true) ->setActive(true)
->setDateOfBirth(new DateTime()) ->setDateOfBirth(new DateTime())
@ -155,7 +163,7 @@ class UserRepositoryTest extends AbstractApiTest
$em->flush(); $em->flush();
$this->assertSame(3, $userRepo->count([])); $this->assertSame(3, $userRepo->count([]));
$this->assertCount(3, $user->getRoles()); $this->assertCount(4, $user->getRoles());
$this->assertSame('Joe Doe', $user->getCompleteNameWithClasses()); $this->assertSame('Joe Doe', $user->getCompleteNameWithClasses());
$this->assertSame('Joe Doe', $user->getFullname()); $this->assertSame('Joe Doe', $user->getFullname());

@ -77,6 +77,9 @@ class ResourceNodeRepositoryTest extends AbstractApiTest
->setName($uploadedFile->getFilename()) ->setName($uploadedFile->getFilename())
->setOriginalName($uploadedFile->getFilename()) ->setOriginalName($uploadedFile->getFilename())
->setFile($uploadedFile) ->setFile($uploadedFile)
->setDescription('desc')
->setCrop('')
->setMetadata([])
; ;
$em->persist($resourceFile); $em->persist($resourceFile);
@ -84,6 +87,11 @@ class ResourceNodeRepositoryTest extends AbstractApiTest
$em->persist($node); $em->persist($node);
$em->flush(); $em->flush();
$this->assertSame($uploadedFile->getFilename(), (string) $resourceFile);
$this->assertSame('desc', $resourceFile->getDescription());
$this->assertNotEmpty($resourceFile->getWidth());
$this->assertNotEmpty($resourceFile->getHeight());
$content = $repo->getResourceNodeFileContent($node); $content = $repo->getResourceNodeFileContent($node);
$this->assertNotEmpty($content); $this->assertNotEmpty($content);
} }

@ -29,6 +29,11 @@ class SettingsCurrentRepositoryTest extends AbstractApiTest
->setUrl($this->getAccessUrl()) ->setUrl($this->getAccessUrl())
->setCategory('cat') ->setCategory('cat')
->setAccessUrlChangeable(1) ->setAccessUrlChangeable(1)
->setSubkey('sub')
->setType('type')
->setComment('comment')
->setSubkeytext('setSubkeytext')
->setAccessUrlLocked(1)
; ;
$this->assertHasNoEntityViolations($item); $this->assertHasNoEntityViolations($item);
$em->persist($item); $em->persist($item);

@ -177,6 +177,9 @@ class TrackExerciseRepositoryTest extends AbstractApiTest
$em->flush(); $em->flush();
$attempt = (new TrackEAttempt()) $attempt = (new TrackEAttempt())
->setTeacherComment('comment')
->setFilename('')
->setSecondsSpent(100)
->setTms(new DateTime()) ->setTms(new DateTime())
->setQuestionId(1) ->setQuestionId(1)
->setPosition(1) ->setPosition(1)

@ -992,6 +992,7 @@ class CDocumentRepositoryTest extends AbstractApiTest
$documentRepo->create($document); $documentRepo->create($document);
$documentRepo->setVisibilityPublished($document); $documentRepo->setVisibilityPublished($document);
/** @var ResourceLink $link */
$link = $document->getFirstResourceLink(); $link = $document->getFirstResourceLink();
$this->expectException(LogicException::class); $this->expectException(LogicException::class);

@ -29,6 +29,9 @@ class CForumCategoryRepositoryTest extends AbstractApiTest
$category = (new CForumCategory()) $category = (new CForumCategory())
->setCatTitle('cat 1') ->setCatTitle('cat 1')
->setCatComment('comment')
->setCatOrder(1)
->setLocked(1)
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
->addCourseLink($course) ->addCourseLink($course)

@ -7,13 +7,16 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository; namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CourseBundle\Entity\CForum; use Chamilo\CourseBundle\Entity\CForum;
use Chamilo\CourseBundle\Entity\CForumAttachment;
use Chamilo\CourseBundle\Entity\CForumPost; use Chamilo\CourseBundle\Entity\CForumPost;
use Chamilo\CourseBundle\Entity\CForumThread; use Chamilo\CourseBundle\Entity\CForumThread;
use Chamilo\CourseBundle\Repository\CForumAttachmentRepository;
use Chamilo\CourseBundle\Repository\CForumPostRepository; use Chamilo\CourseBundle\Repository\CForumPostRepository;
use Chamilo\CourseBundle\Repository\CForumRepository; use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CForumThreadRepository; use Chamilo\CourseBundle\Repository\CForumThreadRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait; use Chamilo\Tests\ChamiloTestTrait;
use DateTime;
class CForumPostRepositoryTest extends AbstractApiTest class CForumPostRepositoryTest extends AbstractApiTest
{ {
@ -21,13 +24,13 @@ class CForumPostRepositoryTest extends AbstractApiTest
public function testCreate(): void public function testCreate(): void
{ {
self::bootKernel();
$course = $this->createCourse('new'); $course = $this->createCourse('new');
$teacher = $this->createUser('teacher'); $teacher = $this->createUser('teacher');
$forumRepo = self::getContainer()->get(CForumRepository::class); $forumRepo = self::getContainer()->get(CForumRepository::class);
$threadRepo = self::getContainer()->get(CForumThreadRepository::class); $threadRepo = self::getContainer()->get(CForumThreadRepository::class);
$postRepo = self::getContainer()->get(CForumPostRepository::class); $postRepo = self::getContainer()->get(CForumPostRepository::class);
$attachmentRepo = self::getContainer()->get(CForumAttachmentRepository::class);
$forum = (new CForum()) $forum = (new CForum())
->setForumTitle('forum') ->setForumTitle('forum')
@ -46,6 +49,12 @@ class CForumPostRepositoryTest extends AbstractApiTest
$post = (new CForumPost()) $post = (new CForumPost())
->setPostTitle('post') ->setPostTitle('post')
->setPostText('text')
->setPostDate(new DateTime())
->setPostNotification(true)
->setVisible(true)
->setStatus(1)
->setPostParent(null)
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
->setThread($thread) ->setThread($thread)
@ -53,10 +62,38 @@ class CForumPostRepositoryTest extends AbstractApiTest
->setUser($teacher) ->setUser($teacher)
; ;
$postRepo->create($post); $postRepo->create($post);
$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->assertNotNull($attachment->getResourceNode());
$this->assertNotNull($attachment->getResourceNode()->getResourceFile());
$this->getEntityManager()->clear();
$post = $postRepo->find($post->getIid());
$this->assertSame('post', (string) $post); $this->assertSame('post', (string) $post);
$this->assertSame(1, $post->getAttachments()->count());
$this->assertSame(1, $postRepo->count([])); $this->assertSame(1, $postRepo->count([]));
$this->assertSame(1, $threadRepo->count([])); $this->assertSame(1, $threadRepo->count([]));
$this->assertSame(1, $forumRepo->count([])); $this->assertSame(1, $forumRepo->count([]));
$this->assertSame(1, $attachmentRepo->count([]));
/** @var CForumThread $thread */ /** @var CForumThread $thread */
$thread = $threadRepo->find($thread->getIid()); $thread = $threadRepo->find($thread->getIid());
@ -67,10 +104,11 @@ class CForumPostRepositoryTest extends AbstractApiTest
$this->assertSame(1, $forum->getThreads()->count()); $this->assertSame(1, $forum->getThreads()->count());
$this->assertSame(1, $forum->getPosts()->count()); $this->assertSame(1, $forum->getPosts()->count());
$forumRepo->delete($forum); /*$forumRepo->delete($forum);
$this->assertSame(0, $attachmentRepo->count([]));
$this->assertSame(0, $postRepo->count([])); $this->assertSame(0, $postRepo->count([]));
$this->assertSame(0, $threadRepo->count([])); $this->assertSame(0, $threadRepo->count([]));
$this->assertSame(0, $forumRepo->count([])); $this->assertSame(0, $forumRepo->count([]));*/
} }
} }

@ -12,6 +12,7 @@ use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CLpRepository; use Chamilo\CourseBundle\Repository\CLpRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait; use Chamilo\Tests\ChamiloTestTrait;
use DateTime;
class CForumRepositoryTest extends AbstractApiTest class CForumRepositoryTest extends AbstractApiTest
{ {
@ -19,29 +20,60 @@ class CForumRepositoryTest extends AbstractApiTest
public function testCreate(): void public function testCreate(): void
{ {
self::bootKernel();
$repo = self::getContainer()->get(CForumRepository::class); $repo = self::getContainer()->get(CForumRepository::class);
$course = $this->createCourse('new'); $course = $this->createCourse('new');
$teacher = $this->createUser('teacher'); $teacher = $this->createUser('teacher');
$item = (new CForum()) $forum = (new CForum())
->setForumTitle('forum') ->setForumTitle('forum')
->setForumComment('comment')
->setForumThreads(0)
->setForumPosts(0)
->setAllowAnonymous(1)
->setAllowEdit(1)
->setApprovalDirectPost('1')
->setAllowAttachments(1)
->setAllowNewThreads(1)
->setDefaultView('default')
->setForumOfGroup('1')
->setForumGroupPublicPrivate('1')
->setLocked(1)
->setForumImage('')
->setStartTime(new DateTime())
->setEndTime(new DateTime())
->setModerated(true)
->setResourceName('forum')
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
; ;
$this->assertHasNoEntityViolations($item); $this->assertHasNoEntityViolations($forum);
$repo->create($item); $repo->create($forum);
$this->assertSame('forum', (string) $item); $this->assertSame('forum', (string) $forum);
$this->assertSame(1, $repo->count([])); $this->assertSame(1, $repo->count([]));
$this->assertSame(0, $forum->getForumPosts());
} }
public function testCreateWithLp(): void public function testCreateWithAttachment(): void
{ {
self::bootKernel(); $repo = self::getContainer()->get(CForumRepository::class);
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$forum = (new CForum())
->setForumTitle('forum')
->setParent($course)
->setCreator($teacher)
;
$this->assertHasNoEntityViolations($forum);
$repo->create($forum);
}
public function testCreateWithLp(): void
{
$repo = self::getContainer()->get(CForumRepository::class); $repo = self::getContainer()->get(CForumRepository::class);
$lpRepo = self::getContainer()->get(CLpRepository::class); $lpRepo = self::getContainer()->get(CLpRepository::class);

@ -12,6 +12,7 @@ use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CForumThreadRepository; use Chamilo\CourseBundle\Repository\CForumThreadRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait; use Chamilo\Tests\ChamiloTestTrait;
use DateTime;
class CForumThreadRepositoryTest extends AbstractApiTest class CForumThreadRepositoryTest extends AbstractApiTest
{ {
@ -19,7 +20,6 @@ class CForumThreadRepositoryTest extends AbstractApiTest
public function testCreate(): void public function testCreate(): void
{ {
self::bootKernel();
$course = $this->createCourse('new'); $course = $this->createCourse('new');
$teacher = $this->createUser('teacher'); $teacher = $this->createUser('teacher');
@ -36,6 +36,16 @@ class CForumThreadRepositoryTest extends AbstractApiTest
$thread = (new CForumThread()) $thread = (new CForumThread())
->setThreadTitle('thread title') ->setThreadTitle('thread title')
->setThreadPeerQualify(true)
->setThreadReplies(0)
->setThreadDate(new DateTime())
->setThreadSticky(false)
->setLocked(1)
->setThreadTitleQualify('title')
->setThreadQualifyMax(100)
->setThreadCloseDate(new DateTime())
->setThreadWeight(100)
->setItem(null)
->setForum($forum) ->setForum($forum)
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
@ -50,7 +60,7 @@ class CForumThreadRepositoryTest extends AbstractApiTest
$this->assertSame(1, $threadRepo->count([])); $this->assertSame(1, $threadRepo->count([]));
$this->assertSame(1, $forumRepo->count([])); $this->assertSame(1, $forumRepo->count([]));
$this->assertSame(1, $forum->getThreads()->count()); $this->assertSame(1, $forum->getThreads()->count());
$this->assertTrue($forum->hasThread($thread));
$this->assertNull($threadRepo->getForumThread('title', $course)); $this->assertNull($threadRepo->getForumThread('title', $course));
$this->assertSame(0, $thread->getThreadViews()); $this->assertSame(0, $thread->getThreadViews());

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository; namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
use Chamilo\CourseBundle\Entity\CGroupCategory; use Chamilo\CourseBundle\Entity\CGroupCategory;
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository; use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
@ -17,24 +18,40 @@ class CGroupCategoryRepositoryTest extends AbstractApiTest
public function testCreate(): void public function testCreate(): void
{ {
self::bootKernel();
$em = $this->getEntityManager(); $em = $this->getEntityManager();
$repo = self::getContainer()->get(CGroupCategoryRepository::class); $categoryRepo = self::getContainer()->get(CGroupCategoryRepository::class);
$courseRepo = self::getContainer()->get(CourseRepository::class);
$course = $this->createCourse('new'); $course = $this->createCourse('new');
$teacher = $this->createUser('teacher'); $teacher = $this->createUser('teacher');
$item = (new CGroupCategory()) $category = (new CGroupCategory())
->setTitle('category') ->setTitle('category')
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
->setDescription('desc')
->setSelfRegAllowed(true)
->setSelfUnregAllowed(true)
->setAnnouncementsState(true)
->setCalendarState(true)
->setChatState(true)
->setDocState(true)
->setDocumentAccess(1)
->setForumState(true)
->setWikiState(true)
->setWorkState(true)
->setGroupsPerUser(10)
->setMaxStudent(100) ->setMaxStudent(100)
; ;
$this->assertHasNoEntityViolations($item); $this->assertHasNoEntityViolations($category);
$em->persist($item); $em->persist($category);
$em->flush(); $em->flush();
$this->assertSame(1, $repo->count([])); $this->assertSame(1, $categoryRepo->count([]));
$categoryRepo->delete($category);
$this->assertSame(0, $categoryRepo->count([]));
$this->assertSame(1, $courseRepo->count([]));
} }
} }

@ -6,7 +6,12 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository; namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
use Chamilo\CourseBundle\Entity\CGroup; use Chamilo\CourseBundle\Entity\CGroup;
use Chamilo\CourseBundle\Entity\CGroupCategory;
use Chamilo\CourseBundle\Entity\CGroupRelTutor;
use Chamilo\CourseBundle\Entity\CGroupRelUser;
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
use Chamilo\CourseBundle\Repository\CGroupRepository; use Chamilo\CourseBundle\Repository\CGroupRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait; use Chamilo\Tests\ChamiloTestTrait;
@ -17,8 +22,6 @@ class CGroupRepositoryTest extends AbstractApiTest
public function testCreate(): void public function testCreate(): void
{ {
self::bootKernel();
$em = $this->getEntityManager(); $em = $this->getEntityManager();
$repo = self::getContainer()->get(CGroupRepository::class); $repo = self::getContainer()->get(CGroupRepository::class);
@ -29,6 +32,17 @@ class CGroupRepositoryTest extends AbstractApiTest
->setName('Group') ->setName('Group')
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
->setStatus(true)
->setDescription('desc')
->setAnnouncementsState(0)
->setChatState(0)
->setDocState(0)
->setDocumentAccess(0)
->setCalendarState(0)
->setWikiState(0)
->setWorkState(0)
->setSelfRegistrationAllowed(true)
->setSelfUnregistrationAllowed(true)
->setMaxStudent(100) ->setMaxStudent(100)
; ;
@ -43,6 +57,109 @@ class CGroupRepositoryTest extends AbstractApiTest
$this->assertSame(0, $repo->count([])); $this->assertSame(0, $repo->count([]));
} }
public function testCreateWithCategory(): void
{
$em = $this->getEntityManager();
$groupRepo = self::getContainer()->get(CGroupRepository::class);
$categoryRepo = self::getContainer()->get(CGroupCategoryRepository::class);
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$category = (new CGroupCategory())
->setTitle('category')
->setParent($course)
->setCreator($teacher)
->setMaxStudent(100)
;
$em->persist($category);
$em->flush();
$group = (new CGroup())
->setName('Group')
->setCategory($category)
->setParent($course)
->setCreator($teacher)
->setMaxStudent(100)
;
$em->persist($group);
$em->flush();
$this->assertSame(1, $groupRepo->count([]));
$this->assertNotNull($groupRepo->findOneByTitle('Group'));
$groupRepo->delete($group);
$this->assertSame(0, $groupRepo->count([]));
$this->assertSame(1, $categoryRepo->count([]));
}
public function testCreateAddUsers(): void
{
$em = $this->getEntityManager();
$groupRepo = self::getContainer()->get(CGroupRepository::class);
$courseRepo = self::getContainer()->get(CourseRepository::class);
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$student = $this->createUser('student');
$tutor = $this->createUser('tutor');
$otherUser = $this->createUser('other');
$courseId = $course->getId();
$group = (new CGroup())
->setName('Group')
->setParent($course)
->setCreator($teacher)
->setMaxStudent(100)
;
$em->persist($group);
$em->flush();
$groupRelUser = (new CGroupRelUser())
->setStatus(1)
->setUser($student)
->setGroup($group)
->setRole('test')
->setCId($courseId)
;
$em->persist($groupRelUser);
$em->flush();
$groupRelTutor = (new CGroupRelTutor())
->setGroup($group)
->setUser($tutor)
->setCId($courseId)
;
$em->persist($groupRelTutor);
$em->flush();
$em->clear();
/** @var CGroup $group */
$group = $groupRepo->find($group->getIid());
$this->assertSame(1, $group->getMembers()->count());
$this->assertSame(1, $group->getTutors()->count());
$this->assertTrue($group->hasTutors());
$this->assertTrue($group->hasMembers());
$this->assertTrue($group->hasTutor($tutor));
$this->assertTrue($group->hasMember($student));
$this->assertFalse($group->hasTutor($otherUser));
$this->assertFalse($group->hasMember($otherUser));
$this->assertSame(1, $groupRepo->count([]));
$this->assertNotNull($groupRepo->findOneByTitle('Group'));
$course = $courseRepo->find($course->getId());
$courseRepo->delete($course);
$this->assertSame(0, $groupRepo->count([]));
$this->assertSame(0, $courseRepo->count([]));
}
public function testFindAllByCourse(): void public function testFindAllByCourse(): void
{ {
$repo = self::getContainer()->get(CGroupRepository::class); $repo = self::getContainer()->get(CGroupRepository::class);

@ -26,6 +26,10 @@ class CLinkRepositoryTest extends AbstractApiTest
$item = (new CLink()) $item = (new CLink())
->setUrl('https://chamilo.org') ->setUrl('https://chamilo.org')
->setTitle('link') ->setTitle('link')
->setDescription('desc')
->setDisplayOrder(1)
->setTarget('blank')
->setCategory(null)
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
; ;

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository; namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CourseBundle\Entity\CLpCategory; use Chamilo\CourseBundle\Entity\CLpCategory;
use Chamilo\CourseBundle\Entity\CLpCategoryUser;
use Chamilo\CourseBundle\Repository\CLpCategoryRepository; use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait; use Chamilo\Tests\ChamiloTestTrait;
@ -23,19 +24,56 @@ class CLpCategoryRepositoryTest extends AbstractApiTest
$course = $this->createCourse('new'); $course = $this->createCourse('new');
$teacher = $this->createUser('teacher'); $teacher = $this->createUser('teacher');
$item = (new CLpCategory()) $category = (new CLpCategory())
->setName('cat') ->setName('cat')
->setPosition(1)
->setParent($course) ->setParent($course)
->setCreator($teacher) ->setCreator($teacher)
; ;
$this->assertHasNoEntityViolations($item); $this->assertHasNoEntityViolations($category);
$em->persist($item); $em->persist($category);
$em->flush(); $em->flush();
$this->assertSame('cat', (string) $item); $this->assertSame('cat', (string) $category);
$this->assertSame(1, $repo->count([])); $this->assertSame(1, $repo->count([]));
$link = $repo->getLink($item, $this->getContainer()->get('router')); $link = $repo->getLink($category, $this->getContainer()->get('router'));
$this->assertSame('/main/lp/lp_controller.php?id='.$item->getIid().'&action=view_category', $link); $this->assertSame('/main/lp/lp_controller.php?id='.$category->getIid().'&action=view_category', $link);
}
public function testCreateWithUser(): void
{
$em = $this->getEntityManager();
$repo = self::getContainer()->get(CLpCategoryRepository::class);
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$student = $this->createUser('student');
$student2 = $this->createUser('student2');
$category = (new CLpCategory())
->setName('cat')
->setPosition(1)
->setParent($course)
->setCreator($teacher)
;
$em->persist($category);
$em->flush();
$categoryRelUser = (new CLpCategoryUser())
->setCategory($category)
->setUser($teacher)
;
$em->persist($categoryRelUser);
$category->addUser($categoryRelUser);
$em->flush();
$this->assertSame(1, $repo->count([]));
/** @var CLpCategory $category */
$category = $repo->find($category->getIid());
$this->assertTrue($category->hasResourceNode());
$this->assertTrue($category->hasUserAdded($teacher));
$this->assertFalse($category->hasUserAdded($student));
} }
} }

@ -8,7 +8,9 @@ namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CourseBundle\Entity\CForum; use Chamilo\CourseBundle\Entity\CForum;
use Chamilo\CourseBundle\Entity\CLp; use Chamilo\CourseBundle\Entity\CLp;
use Chamilo\CourseBundle\Entity\CLpCategory;
use Chamilo\CourseBundle\Repository\CForumRepository; use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
use Chamilo\CourseBundle\Repository\CLpRepository; use Chamilo\CourseBundle\Repository\CLpRepository;
use Chamilo\Tests\AbstractApiTest; use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait; use Chamilo\Tests\ChamiloTestTrait;
@ -59,6 +61,43 @@ class CLpRepositoryTest extends AbstractApiTest
$this->assertSame('/main/lp/lp_controller.php?lp_id='.$lp->getIid().'&action=view', $link); $this->assertSame('/main/lp/lp_controller.php?lp_id='.$lp->getIid().'&action=view', $link);
} }
public function testCreateWithCategory(): void
{
$lpRepo = self::getContainer()->get(CLpRepository::class);
$categoryRepo = self::getContainer()->get(CLpCategoryRepository::class);
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$category = (new CLpCategory())
->setName('cat')
->setParent($course)
->setCreator($teacher)
;
$categoryRepo->create($category);
$lp = (new CLp())
->setName('lp')
->setTheme('chamilo')
->setAuthor('author')
->setParent($course)
->setCreator($teacher)
->setLpType(CLp::LP_TYPE)
->setCategory($category)
;
$this->assertHasNoEntityViolations($lp);
$lpRepo->createLp($lp);
$this->assertSame(1, $lpRepo->count([]));
$this->assertSame(1, $categoryRepo->count([]));
$this->assertInstanceOf(CLpCategory::class, $lp->getCategory());
$lpRepo->delete($lp);
$this->assertSame(0, $lpRepo->count([]));
$this->assertSame(1, $categoryRepo->count([]));
}
public function testCreateWithForum(): void public function testCreateWithForum(): void
{ {
$lpRepo = self::getContainer()->get(CLpRepository::class); $lpRepo = self::getContainer()->get(CLpRepository::class);
@ -121,6 +160,6 @@ class CLpRepositoryTest extends AbstractApiTest
$repo->createLp($lp); $repo->createLp($lp);
$qb = $repo->findAllByCourse($course); $qb = $repo->findAllByCourse($course);
$this->assertSame(1, \count($qb->getQuery()->getResult())); $this->assertCount(1, $qb->getQuery()->getResult());
} }
} }

@ -27,6 +27,9 @@ class CQuizRepositoryTest extends AbstractApiTest
$item = (new CQuiz()) $item = (new CQuiz())
->setTitle('exercise') ->setTitle('exercise')
->setDescription('desc') ->setDescription('desc')
->setPreventBackwards(1)
->setHideQuestionNumber(1)
->setNotifications('')
->setActive(1) ->setActive(1)
->setType(1) ->setType(1)
->setAutoLaunch(false) ->setAutoLaunch(false)

Loading…
Cancel
Save