Skip to content

Commit

Permalink
add unittest to test that the problems page does not show page, state…
Browse files Browse the repository at this point in the history
…ment, sample data before contest start.
  • Loading branch information
as6325400 committed Oct 24, 2024
1 parent 68438a6 commit 0e12edd
Showing 1 changed file with 38 additions and 1 deletion.
39 changes: 38 additions & 1 deletion webapp/tests/Unit/Controller/Team/ProblemControllerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Entity\Problem;
use App\Entity\Testcase;
use App\Entity\Contest;
use App\Tests\Unit\BaseTestCase;
use Doctrine\ORM\EntityManagerInterface;
use Generator;
Expand Down Expand Up @@ -183,4 +184,40 @@ public function testInteractiveSamples(): void
$response = $this->client->getResponse();
self::assertEquals(404, $response->getStatusCode());
}
}

/**
* Test that the problems page does not show page, statement, sample data before contest start.
*/
public function testAccessProblemBeforeContestStarts(): void
{
/** @var EntityManagerInterface $em */
$em = self::getContainer()->get(EntityManagerInterface::class);

$contest = $em->getRepository(Contest::class)->findOneBy(['shortname' => 'demo']);
$originalStartTime = $contest->getStarttimeString();

$lastSpacePosition = strrpos($originalStartTime, ' ');
$datetime = substr($originalStartTime, 0, $lastSpacePosition);
$timezone = substr($originalStartTime, $lastSpacePosition + 1);

$date = new \DateTime($datetime, new \DateTimeZone($timezone));
$date->modify('+1 hour');
$newTimeString = $date->format('Y-m-d H:i:s') . ' ' . $timezone;
$contest->setStarttimeString($newTimeString)->updateTimes();

$this->withChangedConfiguration('public_access_before_contest', true, function () {
$this->client->request('GET', '/public/problems');
static::assertSelectorTextContains('.nav-item .nav-link.disabled', 'Problems');
static::assertSelectorTextContains('.alert.alert-secondary', 'No problem texts available at this point.');

$this->client->request('GET', '/team/problems/2/statement');
$statusCode = $this->client->getResponse()->getStatusCode();
static::assertSame(404, $statusCode, 'Expected status code 404, got ' . $statusCode);

$this->client->request('GET', '/team/problems/2/samples.zip');
$statusCode = $this->client->getResponse()->getStatusCode();
static::assertSame(404, $statusCode, 'Expected status code 404, got ' . $statusCode);
});
$contest->setStarttimeString($originalStartTime)->updateTimes();
}
}

Check failure on line 223 in webapp/tests/Unit/Controller/Team/ProblemControllerTest.php

View workflow job for this annotation

GitHub Actions / phpcs

Expected 1 newline at end of file; 0 found

0 comments on commit 0e12edd

Please sign in to comment.