PHPUnit / phpunit (push) Canceled after 0s
* fix: upgrade goteo/benzina to 0.6 * feat: increase Nominatim cache TTL * fix: allow long addresses for territory data * fix: build project addresses from goteo 3 territory fields * fix: handle empty strings for video sources * fix: update project drafts deadline to 2026 * feat: split project description into 4 fields * feat: bump doctrine related dependencies * feat: bump symfony related dependencies * feat: make categories work on idOrSlug * fix: allow filtering on project descBrief property * fix: update constraints on project update to allow optional updates of properties * fix: update Projects test suite to new project shape * fix: order of DROP operations in migration Version20260813171902 * fix: move accounting balance and checkout to supports listeners to onFlush events * fix: bad order of filter safeguards * chore: code style by php-cs-fixer * fix: prevent uninitialized fields on api resource from breaking AccountingVoter * fix: small bug preventing code improvements on Accounting api resource * feat: add cover property on ProjectReward resource * feat: add cover property to Project resources * feat: use video cover for project cover * feat: add migration for property cover on project and rewards * fix: small improvements on UserOwned helpers * feat: add territory to project creation * feat: mark creation fields as required * feat: add CollaborationCandidacy resource * fix: update old validations access of new types * feat: add validation for charges targetting projects not in campaign * feat: validate new collaboration candicacies are to open collaborations * feat: prevent future object access issues in SameProjectRewardChargeValidator * fix: return void on succesfull delete operations * fix: force set of isFinite property * feat: allow to filter ProjectBudgetItem by type and deadline * feat: remove example values from .env * feat: add testing encryption keys * feat: make project in BudgetItem body required * feat: add testing encryption keys to actions * feat: add collaborations property to ProjectApiResource
76 lines
2.0 KiB
PHP
76 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Tests\Entity\ProjectApi;
|
|
|
|
use App\Factory\User\UserFactory;
|
|
use App\Tests\Fixtures\TestUser;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class UpdateTest extends ProjectTestCase
|
|
{
|
|
// Auxiliary functions
|
|
|
|
protected function getMethod(): string
|
|
{
|
|
return 'PATCH';
|
|
}
|
|
|
|
// Runable Tests
|
|
|
|
public function testUpdateSuccessful(): void
|
|
{
|
|
$this->createTestProjectOptimized();
|
|
|
|
$this->request($this->getMethod(), $this->getUri(1), [
|
|
'headers' => $this->withAuthHeader(TestUser::get()),
|
|
'json' => [
|
|
'title' => 'New project title',
|
|
'descBrief' => 'Updated Project\'s brief description',
|
|
],
|
|
]);
|
|
|
|
$this->assertResponseIsSuccessful();
|
|
}
|
|
|
|
public function testUpdateUnauthorized(): void
|
|
{
|
|
$this->createTestProjectOptimized();
|
|
|
|
static::createClient()->request($this->getMethod(), $this->getUri(1));
|
|
|
|
$this->assertResponseStatusCodeSame(Response::HTTP_UNAUTHORIZED);
|
|
}
|
|
|
|
public function testUpdateNotFound(): void
|
|
{
|
|
$this->testOneNotFound();
|
|
}
|
|
|
|
public function testUpdateInvalidInput(): void
|
|
{
|
|
$this->createTestProjectOptimized();
|
|
|
|
$this->request($this->getMethod(), $this->getUri(1), [
|
|
'headers' => $this->withAuthHeader(TestUser::get()),
|
|
'json' => [
|
|
'title' => 'New project title',
|
|
'categories' => ['invalid-category'],
|
|
],
|
|
]);
|
|
|
|
$this->assertResponseStatusCodeSame(Response::HTTP_BAD_REQUEST);
|
|
}
|
|
|
|
public function testUpdateForbidden(): void
|
|
{
|
|
$this->createTestProjectOptimized();
|
|
|
|
$otherUser = UserFactory::new(['handle' => 'other_user', 'email' => 'otheruser@example.com'])->create();
|
|
$this->request($this->getMethod(), $this->getUri(1), [
|
|
'headers' => $this->withAuthHeader($otherUser),
|
|
]);
|
|
|
|
$this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN);
|
|
}
|
|
}
|