PersonTest.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Tests\Application\Person;
  3. use App\Entity\Access\Access;
  4. use App\Entity\Organization\Organization;
  5. use App\Entity\Organization\Settings;
  6. use App\Entity\Public\PublicEvent;
  7. use App\Enum\Organization\PrincipalTypeEnum;
  8. use App\Enum\Organization\SettingsProductEnum;
  9. use App\Tests\Application\OtWebTestCase;
  10. use App\Entity\Person;
  11. use App\Tests\Fixture\Factory\Access\AccessFactory;
  12. use App\Tests\Fixture\Factory\Organization\OrganizationFactory;
  13. use App\Tests\Fixture\Factory\Organization\SettingsFactory;
  14. use App\Tests\Fixture\Factory\Person\PersonFactory;
  15. use App\Tests\Fixture\PersonFixtures;
  16. use Zenstruck\Foundry\Factory;
  17. use Zenstruck\Foundry\Proxy;
  18. use App\Enum\Organization\LegalEnum;
  19. class PersonTest extends OtWebTestCase
  20. {
  21. private Proxy | Person $person;
  22. private Proxy | Organization $organization;
  23. private Proxy | Access $access;
  24. private Proxy | Settings $settings;
  25. protected function setFixtures(): void
  26. {
  27. $this->person = PersonFactory::createOne(
  28. [
  29. 'username' => 'username',
  30. 'password' => 'password'
  31. ]
  32. );
  33. $this->organization = OrganizationFactory::createOne([
  34. 'legalStatus' => LegalEnum::ASSOCIATION_LAW_1901()->getValue(),
  35. 'principalType' => PrincipalTypeEnum::ARTISTIC_EDUCATION_ONLY()->getValue(),
  36. 'name' => 'My Organization'
  37. ]);
  38. $this->settings = SettingsFactory::createOne([
  39. 'product' => SettingsProductEnum::ARTIST(),
  40. 'organization' => $this->organization
  41. ]);
  42. $this->access = AccessFactory::createOne([
  43. 'person' => $this->person,
  44. 'organization' => $this->organization,
  45. 'roles' => ['ROLE_USERS_VIEW']
  46. ]);
  47. }
  48. public function testPersonGet(): void
  49. {
  50. $this->loginAs($this->access);
  51. $this->get('/api/people/' . $this->person->getId());
  52. $this->validateCollectionSchema(Person::class);
  53. $this->assertJsonContains([
  54. '@context' => '/api/contexts/Person',
  55. '@id' => '/api/people/' . $this->person->getId(),
  56. '@type' => 'Person',
  57. 'username' => 'username'
  58. ]);
  59. }
  60. public function testPersonGetCollection(): void {
  61. // TODO: get collection is not permitted
  62. }
  63. public function testPersonPut(): void {
  64. // TODO: put is not permitted
  65. }
  66. public function testPersonPost(): void {
  67. // TODO: post is not permitted
  68. }
  69. public function testPersonDelete(): void {
  70. // TODO: delete is not permitted
  71. }
  72. }