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); }
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); }