예제 #1
0
 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);
 }
예제 #2
0
 function it_creates_an_organization_without_slug(CreateOrganizationCommand $command, OrganizationRepository $repository, UserRepository $userRepository, User $user)
 {
     $userId = UserId::generate('user-id');
     $command->id()->shouldBeCalled()->willReturn('organization-id');
     $repository->organizationOfId(Argument::type(OrganizationId::class))->shouldBeCalled()->willReturn(null);
     $command->creatorId()->shouldBeCalled()->willReturn('user-id');
     $userRepository->userOfId($userId)->shouldBeCalled()->willReturn($user);
     $user->id()->shouldBeCalled()->willReturn($userId);
     $repository->organizationOfId(Argument::type(OrganizationId::class))->shouldBeCalled()->willReturn(null);
     $command->creatorId()->shouldBeCalled()->willReturn('user-id');
     $command->name()->shouldBeCalled()->willReturn('Organization name');
     $command->slug()->shouldBeCalled()->willReturn(null);
     $repository->persist(Argument::type(Organization::class))->shouldBeCalled();
     $this->__invoke($command);
 }