/** * {@inheritdoc} */ public function addPlaceMarking(PlaceMarkingInterface $marking) { foreach ($this->placeMarkings as $placeMarking) { $place = $placeMarking->getPlace(); if ($place === $marking->getPlace() || null !== $place->getId() && $place->getId() === $marking->getPlace()->getId()) { throw new \InvalidArgumentException('Cannot add two markings for the same place.'); } } $this->placeMarkings->add($marking); }
function it_throws_an_exception_when_adding_a_duplicated_place_marking(PlaceInterface $placeOne, PlaceInterface $placeTwo, PlaceMarkingInterface $markingOne, PlaceMarkingInterface $markingTwo) { $placeOne->getId()->willReturn(5); $placeTwo->getId()->willReturn(5); $markingOne->getPlace()->willReturn($placeOne); $markingTwo->getPlace()->willReturn($placeTwo); $this->addPlaceMarking($markingOne); $this->shouldThrow(new \InvalidArgumentException('Cannot add two markings for the same place.'))->duringAddPlaceMarking($markingTwo); }