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) {
// Check if user is tutor group
$isTutor = $groupEntity->userIsTutor(api_get_user_entity());
$isTutor = $groupEntity->hasTutor(api_get_user_entity());
if ($isTutor) {
$allowToEdit = true;
}

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

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

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

@ -12,7 +12,6 @@ use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Entity\User;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
@ -415,20 +414,28 @@ class CGroup extends AbstractResource implements ResourceInterface
public function hasMember(User $user): bool
{
$criteria = Criteria::create()->where(
Criteria::expr()->eq('user', $user)
);
if (!$this->hasMembers()) {
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
{
$criteria = Criteria::create()->where(
Criteria::expr()->eq('user', $user)
);
if (!$this->hasTutors()) {
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;
}
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
{
return $this->category;

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

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

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

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

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

@ -65,6 +65,7 @@ class IllustrationRepositoryTest extends WebTestCase
$illustration = (new Illustration())
->setName('test')
->setResourceName('test')
->setCreator($user)
->setParent($user)
;
@ -72,5 +73,7 @@ class IllustrationRepositoryTest extends WebTestCase
$repo->update($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')
->setFirstname('Joe')
->setUsername('admin2')
->setEnabled(true)
->setSalt('')
->setRegistrationDate(new DateTime())
->setExpirationDate(new DateTime())
->setOpenid('')
->setSlug('admin2')
->setConfirmationToken('conf')
->setRoles(['ROLE_TEST'])
->setStatus(1)
->setActive(true)
->setDateOfBirth(new DateTime())
@ -155,7 +163,7 @@ class UserRepositoryTest extends AbstractApiTest
$em->flush();
$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->getFullname());

@ -77,6 +77,9 @@ class ResourceNodeRepositoryTest extends AbstractApiTest
->setName($uploadedFile->getFilename())
->setOriginalName($uploadedFile->getFilename())
->setFile($uploadedFile)
->setDescription('desc')
->setCrop('')
->setMetadata([])
;
$em->persist($resourceFile);
@ -84,6 +87,11 @@ class ResourceNodeRepositoryTest extends AbstractApiTest
$em->persist($node);
$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);
$this->assertNotEmpty($content);
}

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

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

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

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

@ -7,13 +7,16 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CourseBundle\Entity\CForum;
use Chamilo\CourseBundle\Entity\CForumAttachment;
use Chamilo\CourseBundle\Entity\CForumPost;
use Chamilo\CourseBundle\Entity\CForumThread;
use Chamilo\CourseBundle\Repository\CForumAttachmentRepository;
use Chamilo\CourseBundle\Repository\CForumPostRepository;
use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CForumThreadRepository;
use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait;
use DateTime;
class CForumPostRepositoryTest extends AbstractApiTest
{
@ -21,13 +24,13 @@ class CForumPostRepositoryTest extends AbstractApiTest
public function testCreate(): void
{
self::bootKernel();
$course = $this->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')
@ -46,6 +49,12 @@ class CForumPostRepositoryTest extends AbstractApiTest
$post = (new CForumPost())
->setPostTitle('post')
->setPostText('text')
->setPostDate(new DateTime())
->setPostNotification(true)
->setVisible(true)
->setStatus(1)
->setPostParent(null)
->setParent($course)
->setCreator($teacher)
->setThread($thread)
@ -53,10 +62,38 @@ class CForumPostRepositoryTest extends AbstractApiTest
->setUser($teacher)
;
$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(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());
@ -67,10 +104,11 @@ class CForumPostRepositoryTest extends AbstractApiTest
$this->assertSame(1, $forum->getThreads()->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, $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\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait;
use DateTime;
class CForumRepositoryTest extends AbstractApiTest
{
@ -19,29 +20,60 @@ class CForumRepositoryTest extends AbstractApiTest
public function testCreate(): void
{
self::bootKernel();
$repo = self::getContainer()->get(CForumRepository::class);
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$item = (new CForum())
$forum = (new CForum())
->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)
->setCreator($teacher)
;
$this->assertHasNoEntityViolations($item);
$repo->create($item);
$this->assertHasNoEntityViolations($forum);
$repo->create($forum);
$this->assertSame('forum', (string) $item);
$this->assertSame('forum', (string) $forum);
$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);
$lpRepo = self::getContainer()->get(CLpRepository::class);

@ -12,6 +12,7 @@ use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CForumThreadRepository;
use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait;
use DateTime;
class CForumThreadRepositoryTest extends AbstractApiTest
{
@ -19,7 +20,6 @@ class CForumThreadRepositoryTest extends AbstractApiTest
public function testCreate(): void
{
self::bootKernel();
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
@ -36,6 +36,16 @@ class CForumThreadRepositoryTest extends AbstractApiTest
$thread = (new CForumThread())
->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)
->setParent($course)
->setCreator($teacher)
@ -50,7 +60,7 @@ class CForumThreadRepositoryTest extends AbstractApiTest
$this->assertSame(1, $threadRepo->count([]));
$this->assertSame(1, $forumRepo->count([]));
$this->assertSame(1, $forum->getThreads()->count());
$this->assertTrue($forum->hasThread($thread));
$this->assertNull($threadRepo->getForumThread('title', $course));
$this->assertSame(0, $thread->getThreadViews());

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
use Chamilo\CourseBundle\Entity\CGroupCategory;
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
use Chamilo\Tests\AbstractApiTest;
@ -17,24 +18,40 @@ class CGroupCategoryRepositoryTest extends AbstractApiTest
public function testCreate(): void
{
self::bootKernel();
$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');
$teacher = $this->createUser('teacher');
$item = (new CGroupCategory())
$category = (new CGroupCategory())
->setTitle('category')
->setParent($course)
->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)
;
$this->assertHasNoEntityViolations($item);
$em->persist($item);
$this->assertHasNoEntityViolations($category);
$em->persist($category);
$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;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
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\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait;
@ -17,8 +22,6 @@ class CGroupRepositoryTest extends AbstractApiTest
public function testCreate(): void
{
self::bootKernel();
$em = $this->getEntityManager();
$repo = self::getContainer()->get(CGroupRepository::class);
@ -29,6 +32,17 @@ class CGroupRepositoryTest extends AbstractApiTest
->setName('Group')
->setParent($course)
->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)
;
@ -43,6 +57,109 @@ class CGroupRepositoryTest extends AbstractApiTest
$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
{
$repo = self::getContainer()->get(CGroupRepository::class);

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

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace Chamilo\Tests\CourseBundle\Repository;
use Chamilo\CourseBundle\Entity\CLpCategory;
use Chamilo\CourseBundle\Entity\CLpCategoryUser;
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
use Chamilo\Tests\AbstractApiTest;
use Chamilo\Tests\ChamiloTestTrait;
@ -23,19 +24,56 @@ class CLpCategoryRepositoryTest extends AbstractApiTest
$course = $this->createCourse('new');
$teacher = $this->createUser('teacher');
$item = (new CLpCategory())
$category = (new CLpCategory())
->setName('cat')
->setPosition(1)
->setParent($course)
->setCreator($teacher)
;
$this->assertHasNoEntityViolations($item);
$em->persist($item);
$this->assertHasNoEntityViolations($category);
$em->persist($category);
$em->flush();
$this->assertSame('cat', (string) $item);
$this->assertSame('cat', (string) $category);
$this->assertSame(1, $repo->count([]));
$link = $repo->getLink($item, $this->getContainer()->get('router'));
$this->assertSame('/main/lp/lp_controller.php?id='.$item->getIid().'&action=view_category', $link);
$link = $repo->getLink($category, $this->getContainer()->get('router'));
$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\CLp;
use Chamilo\CourseBundle\Entity\CLpCategory;
use Chamilo\CourseBundle\Repository\CForumRepository;
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
use Chamilo\CourseBundle\Repository\CLpRepository;
use Chamilo\Tests\AbstractApiTest;
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);
}
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
{
$lpRepo = self::getContainer()->get(CLpRepository::class);
@ -121,6 +160,6 @@ class CLpRepositoryTest extends AbstractApiTest
$repo->createLp($lp);
$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())
->setTitle('exercise')
->setDescription('desc')
->setPreventBackwards(1)
->setHideQuestionNumber(1)
->setNotifications('')
->setActive(1)
->setType(1)
->setAutoLaunch(false)

Loading…
Cancel
Save