function it_should_edit_project(ProjectRepository $projectRepository, EventDispatcherInterface $eventDispatcher, Project $project, EditProjectAction $action) { $action->getProject()->willReturn($project); $action->getName()->willReturn('Foo Bar'); $action->getDefaultLocale()->willReturn('fr_FR'); $action->getDescription()->willReturn('Description'); $project->setName(Argument::exact(new Name('Foo Bar')))->shouldBeCalled(); $project->setDefaultLocale(Argument::exact(Locale::parse('fr_FR')))->shouldBeCalled(); $project->setDescription(Argument::exact('Description'))->shouldBeCalled(); $projectRepository->save($project)->shouldBeCalled(); $eventDispatcher->dispatch(EditProjectEvent::NAME, Argument::type('Openl10n\\Domain\\Project\\Application\\Event\\EditProjectEvent'))->shouldBeCalled(); $this->execute($action)->shouldReturn($project); }
public function execute(EditProjectAction $action) { $name = new Name($action->getName()); $locale = Locale::parse($action->getDefaultLocale()); $description = $action->getDescription(); $project = $action->getProject(); $oldProject = clone $project; $project->setName($name); $project->setDefaultLocale($locale); $project->setDescription($description); $this->projectRepository->save($project); $this->eventDispatcher->dispatch(EditProjectEvent::NAME, new EditProjectEvent($project, $oldProject)); return $project; }