Beispiel #1
0
 public function __invoke(FilterProjectsQuery $query)
 {
     $organizations = $this->repository->query($this->specificationFactory->buildFilterableSpecification(UserId::generate($query->userId()), null === $query->organizationId() ? null : OrganizationId::generate($query->organizationId()), null === $query->name() ? null : new ProjectName($query->name()), $query->offset(), $query->limit()));
     return array_map(function (Project $organization) {
         $this->dataTransformer->write($organization);
         return $this->dataTransformer->read();
     }, $organizations);
 }
 function it_does_not_serialize_organization_member_because_it_does_not_exist(OrganizationMemberOfIdQuery $query, OrganizationRepository $repository, Organization $organization)
 {
     $query->organizationId()->shouldBeCalled()->willReturn('organization-id');
     $repository->organizationOfId(OrganizationId::generate('organization-id'))->shouldBeCalled()->willReturn($organization);
     $query->userId()->shouldBeCalled()->willReturn('user-id');
     $organization->isOrganizationMember(UserId::generate('user-id'))->shouldBeCalled()->willReturn(false);
     $this->shouldThrow(OrganizationMemberDoesNotExistException::class)->during__invoke($query);
 }
 function it_does_not_edits_an_organization_because_the_owner_does_not_authorized(EditOrganizationCommand $command, OrganizationRepository $repository, Organization $organization)
 {
     $command->id()->shouldBeCalled()->willReturn('organization-id');
     $repository->organizationOfId(OrganizationId::generate('organization-id'))->shouldBeCalled()->willReturn($organization);
     $command->userId()->shouldBeCalled()->willReturn('editor-id');
     $organization->isOwner(UserId::generate('editor-id'))->shouldBeCalled()->willReturn(false);
     $this->shouldThrow(UnauthorizedEditOrganizationException::class)->during__invoke($command);
 }
 function it_does_not_add_organization_member_to_organization_because_it_is_not_allowed(AddOrganizationMemberToOrganizationCommand $command, OrganizationRepository $repository, Organization $organization)
 {
     $organizationId = OrganizationId::generate('organization-id');
     $command->organizationId()->shouldBeCalled()->willReturn('organization-id');
     $repository->organizationOfId($organizationId)->shouldBeCalled()->willReturn($organization);
     $command->adderId()->shouldBeCalled()->willReturn('adder-id');
     $organization->isOwner(UserId::generate('adder-id'))->shouldBeCalled()->willReturn(false);
     $this->shouldThrow(UnauthorizedOrganizationActionException::class)->during__invoke($command);
 }
 public function __invoke(OrganizationOfIdQuery $query)
 {
     $organization = $this->repository->organizationOfId(OrganizationId::generate($query->organizationId()));
     if (!$organization instanceof Organization) {
         throw new OrganizationDoesNotExistException();
     }
     $this->dataTransformer->write($organization);
     return $this->dataTransformer->read();
 }
 function it_transform_organization_to_plain_dto(MemberDataTransformer $memberDataTransformer)
 {
     $userId = UserId::generate('user-id');
     $organization = new Organization(OrganizationId::generate('organization-id'), new OrganizationName('Organization name'), new Slug('Organization name'), $userId);
     $this->write($organization);
     $memberDataTransformer->write($organization->owner($userId))->shouldBeCalled();
     $memberDataTransformer->read()->shouldBeCalled()->willReturn(['id' => 'owner-id', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24', 'user_id' => 'user-id', 'organization' => [['id' => 'organization-id', 'name' => 'Organization name', 'slug' => 'organization-name', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24']]]);
     $this->read()->shouldReturn(['id' => 'organization-id', 'name' => 'Organization name', 'slug' => 'organization-name', 'created_on' => (new \DateTimeImmutable())->format('Y-m-d'), 'updated_on' => (new \DateTimeImmutable())->format('Y-m-d'), 'owners' => [['id' => 'owner-id', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24', 'user_id' => 'user-id', 'organization' => [['id' => 'organization-id', 'name' => 'Organization name', 'slug' => 'organization-name', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24']]]], 'organizationMembers' => []]);
 }
 public function __invoke(AddOrganizationMemberToOrganizationCommand $command)
 {
     $organization = $this->repository->organizationOfId(OrganizationId::generate($command->organizationId()));
     if (!$organization instanceof Organization) {
         throw new OrganizationDoesNotExistException();
     }
     if (!$organization->isOwner(UserId::generate($command->adderId()))) {
         throw new UnauthorizedOrganizationActionException();
     }
     $organization->addOrganizationMember(UserId::generate($command->userId()));
     $this->repository->persist($organization);
 }
 public function __invoke(EditOrganizationCommand $command)
 {
     $organization = $this->repository->organizationOfId(OrganizationId::generate($command->id()));
     if (!$organization instanceof Organization) {
         throw new OrganizationDoesNotExistException();
     }
     if (!$organization->isOwner(UserId::generate($command->userId()))) {
         throw new UnauthorizedEditOrganizationException();
     }
     $organization->edit(new OrganizationName($command->name()), new Slug(null === $command->slug() ? $command->name() : $command->slug()));
     $this->repository->persist($organization);
 }
 public function __invoke(CreateOrganizationCommand $command)
 {
     if (null !== ($id = $command->id())) {
         $organization = $this->repository->organizationOfId(OrganizationId::generate($id));
         if ($organization instanceof Organization) {
             throw new OrganizationAlreadyExistsException();
         }
     }
     $user = $this->userRepository->userOfId(UserId::generate($command->creatorId()));
     if (!$user instanceof User) {
         throw new UserDoesNotExistException();
     }
     $organizationId = OrganizationId::generate($command->id());
     $organization = new Organization($organizationId, new OrganizationName($command->name()), new Slug(null === $command->slug() ? $command->name() : $command->slug()), $user->id());
     $this->repository->persist($organization);
 }
Beispiel #10
0
 public function __invoke(CreateProjectCommand $command)
 {
     $project = $this->projectRepository->projectOfId(ProjectId::generate($command->id()));
     if ($project instanceof Project) {
         throw new ProjectAlreadyExists($project->id());
     }
     $organizationId = OrganizationId::generate($command->organizationId());
     $organization = $this->organizationRepository->organizationOfId($organizationId);
     if (!$organization instanceof Organization) {
         throw new OrganizationDoesNotExistException();
     }
     if (!$organization->isOwner(UserId::generate($command->creatorId()))) {
         throw new UnauthorizedCreateProjectException();
     }
     $project = new Project(ProjectId::generate($command->id()), new ProjectName($command->name()), new Slug(null === $command->slug() ? $command->name() : $command->slug()), $organization->id());
     $this->projectRepository->persist($project);
 }
 public function organizationOfId(OrganizationId $id)
 {
     return $this->find($id->id());
 }
Beispiel #12
0
 public function convertToPHPValue($value, AbstractPlatform $platform) : OrganizationId
 {
     return OrganizationId::generate($value);
 }
 function it_does_not_serialize_organization_because_the_organization_does_not_exist(OrganizationOfIdQuery $query, OrganizationRepository $repository)
 {
     $query->organizationId()->shouldBeCalled()->willReturn('organization-id');
     $repository->organizationOfId(OrganizationId::generate('organization-id'))->shouldBeCalled()->willReturn(null);
     $this->shouldThrow(OrganizationDoesNotExistException::class)->during__invoke($query);
 }
Beispiel #14
0
 public function __invoke(CountProjectsQuery $query)
 {
     return $this->repository->count($this->specificationFactory->buildFilterableSpecification(UserId::generate($query->userId()), null === $query->organizationId() ? null : OrganizationId::generate($query->organizationId()), null === $query->name() ? null : new ProjectName($query->name())));
 }
Beispiel #15
0
 function let(OrganizationId $id, OrganizationName $name, Slug $slug, UserId $userId)
 {
     $id->id()->willReturn('organization-id');
     $this->beConstructedWith($id, $name, $slug, $userId);
     $this->shouldHavePublished(OrganizationCreated::class);
 }