Tests: Add phpunit tests

pull/3965/head
Julio 4 years ago
parent bb28d3374c
commit 76fbc05868
  1. 11
      src/CoreBundle/Controller/CourseHomeController.php
  2. 110
      tests/CoreBundle/Controller/CourseHomeControllerTest.php

@ -33,12 +33,9 @@ use Symfony\Component\Validator\Exception\ValidatorException;
use UnserializeApi;
/**
* Class CourseHomeController.
*
* @author Julio Montoya <gugli100@gmail.com>
*
* @Route("/course")
*/
#[Route('/course')]
class CourseHomeController extends ToolBaseController
{
/**
@ -68,7 +65,7 @@ class CourseHomeController extends ToolBaseController
$courseId = $course->getId();
$sessionId = $this->getSessionId();
if ($user && INVITEE === $user->getStatus()) {
if ($user && $user->hasRole('ROLE_INVITEE')) {
$isInASession = $sessionId > 0;
$isSubscribed = CourseManager::is_user_subscribed_in_course(
$userId,
@ -294,8 +291,10 @@ class CourseHomeController extends ToolBaseController
*
* @Entity("course", expr="repository.find(cid)")
*/
public function updateSettingsAction(Request $request, Course $course, string $namespace, SettingsCourseManager $manager, SettingsFormFactory $formFactory): Response
public function updateSettings(Request $request, Course $course, string $namespace, SettingsCourseManager $manager, SettingsFormFactory $formFactory): Response
{
$this->denyAccessUnlessGranted(CourseVoter::VIEW, $course);
$schemaAlias = $manager->convertNameSpaceToService($namespace);
$settings = $manager->load($namespace);

@ -6,35 +6,103 @@ declare(strict_types=1);
namespace Chamilo\Tests\CoreBundle\Controller;
use Chamilo\Tests\AbstractApiTest;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\Tests\ChamiloTestTrait;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpFoundation\Response;
class CourseHomeControllerTest extends AbstractApiTest
class CourseHomeControllerTest extends WebTestCase
{
use ChamiloTestTrait;
public function testIndexJsonAction(): void
{
$client = static::createClient();
$course = $this->createCourse('course 1');
$this->getClientWithGuiCredentials('admin', 'admin')->request(
$admin = $this->getUser('admin');
$client->loginUser($admin);
// Test as admin.
$client->request(
'GET',
'/course/'.$course->getId().'/home.json'
);
$this->assertResponseIsSuccessful();
$this->assertJsonContains(
/*$this->assertJsonContains(
[
'course' => [
'code' => $course->getCode(),
],
]
);*/
// Test as registered user (course is open).
$test = $this->createUser('test');
$client->loginUser($test);
$client->request(
'GET',
'/course/'.$course->getId().'/home.json'
);
$this->assertResponseIsSuccessful();
// Course is REGISTERED.
$course = $this->getCourse($course->getId());
$em = $this->getEntityManager();
$course->setVisibility(Course::REGISTERED);
$em->persist($course);
$em->flush();
$client->request(
'GET',
'/course/'.$course->getId().'/home.json'
);
$this->assertResponseStatusCodeSame(403);
}
public function testIndexJsonInviteeAction(): void
{
$client = static::createClient();
$course = $this->createCourse('course 1');
$test = $this->createUser('test');
$test->addRole('ROLE_INVITEE');
$em = $this->getEntityManager();
$em->persist($test);
$em->flush();
$test = $this->getUser('test');
$course = $this->getCourse($course->getId());
$course->addStudent($test);
$em->persist($course);
$em->flush();
$client->loginUser($test);
$client->request(
'GET',
'/course/'.$course->getId().'/home.json'
);
$this->assertResponseIsSuccessful();
/*$this->assertJsonContains(
[
'course' => [
'code' => $course->getCode(),
],
]
);*/
}
public function testRedirectTool(): void
{
$client = static::createClient();
$course = $this->createCourse('new');
$this->getClientWithGuiCredentials('admin', 'admin')->request(
$admin = $this->getUser('admin');
$client->loginUser($admin);
$client->request(
'GET',
'/course/'.$course->getId().'/tool/document'
);
@ -45,4 +113,34 @@ class CourseHomeControllerTest extends AbstractApiTest
'/resources/document/'.$course->getResourceNode()->getId().'/?cid='.$course->getId().'&sid=0&gid=0'
);
}
public function testUpdateSettings(): void
{
$client = static::createClient();
$course = $this->createCourse('new');
$admin = $this->getUser('admin');
$client->request(
'GET',
'/course/'.$course->getId().'/settings/announcement'
);
$this->assertSame(Response::HTTP_FOUND, $client->getResponse()->getStatusCode());
$client->loginUser($admin);
$client->request(
'GET',
'/course/'.$course->getId().'/settings/announcement'
);
$this->assertResponseIsSuccessful();
$this->assertStringContainsString(
'Allow user edit announcement',
$client->getResponse()->getContent()
);
$client->submitForm('Save settings', [
'form[enabled]' => '0',
]);
}
}

Loading…
Cancel
Save