Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/tests/ChamiloTestTrait.php

87 lines
2.6 KiB

<?php
namespace Chamilo\Tests;
use Chamilo\CoreBundle\Entity\AccessUrl;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
use Chamilo\CoreBundle\Repository\Node\UserRepository;
use Symfony\Component\Validator\ConstraintViolationList;
use Symfony\Component\Validator\Validator\ValidatorInterface;
trait ChamiloTestTrait
{
public function createUser(string $username, string $password, string $email): ?User
{
/** @var UserRepository $repo */
$repo = static::getContainer()->get(UserRepository::class);
$admin = $this->getUser('admin');
$user = $repo->createUser()
->setLastname($username)
->setFirstname($username)
->setUsername($username)
->setStatus(1)
->setPlainPassword($password)
->setEmail($email)
->setCreator($admin);
$repo->updateUser($user);
return $user;
}
/**
* Finds a user registered in the test DB, added by the DataFixtures classes.
*/
public function getUser(string $username): ?User
{
/** @var UserRepository $repo */
$repo = static::getContainer()->get(UserRepository::class);
// retrieve user
return $repo->findByUsername($username);
}
public function createCourse($title): ?Course
{
$courseRepo = self::getContainer()->get(CourseRepository::class);
$course = (new Course())
->setTitle($title)
->addAccessUrl($this->getAccessUrl())
->setCreator($this->getUser('admin'));
$courseRepo->create($course);
return $course;
}
public function getAccessUrl(string $url = ''): ?AccessUrl
{
if (empty($url)) {
$url = AccessUrl::DEFAULT_ACCESS_URL;
}
/** @var AccessUrlRepository $repo */
$repo = static::getContainer()->get(AccessUrlRepository::class);
return $repo->findOneBy(['url' => $url]);
}
public function assertHasNoEntityViolations($entity)
{
/** @var ValidatorInterface $validator */
$validator = static::$kernel->getContainer()->get('validator');
/** @var ConstraintViolationList $errors */
$errors = $validator->validate($entity);
$message = [];
foreach ($errors as $error) {
$message[] = $error->getPropertyPath().': '.$error->getMessage();
}
$this->assertEquals(0, $errors->count(), implode(', ', $message));
}
}