public function testReleaseLockOnRepositoryError() { $this->lockManager->expects($this->once())->method('obtain')->with($this->equalTo('foo')); $this->repository->expects($this->once())->method('load')->will($this->throwException(new RuntimeException('Runtime'))); $this->lockManager->expects($this->once())->method('release')->with($this->equalTo('foo')); $this->createRepository()->load('foo'); }
/** * @param DeleteLabel $label */ protected function handleDeleteLabel(DeleteLabel $label) { /** @var Event $event */ $event = $this->eventRepository->load($label->getItemId()); $event->deleteLabel($label->getLabel()); $this->eventRepository->save($event); }
/** * @test * @dataProvider exceptionResponseProvider * * @param \Exception $exception * @param Rsp $expectedResponse */ public function it_can_convert_exceptions_into_responses(\Exception $exception, Rsp $expectedResponse) { // Technically it's not the EventRepository that throws these // exceptions, but it's the easiest to mock and the code doesn't care // where the exception was thrown exactly. $this->eventRepository->expects($this->once())->method('save')->willThrowException($exception); // Mocking any supported request will cause the controller to check // for any exceptions. Deleting a keyword is easiest at the moment. $cdbid = '004aea08-e13d-48c9-b9eb-a18f20e6d44e'; $request = Request::create("/event/{$cdbid}/keywords", Request::METHOD_DELETE); $request->query->set('keyword', 'foo'); $response = $this->controller->deleteKeyword($request, $cdbid); // Make sure we get the expected response for the given exception. $this->assertEquals($expectedResponse->toXml(), $response->getContent()); }
/** * @param StringLiteral $id * @param CdbXmlContainerInterface $cdbXml */ private function create(StringLiteral $id, CdbXmlContainerInterface $cdbXml) { $entity = $this->actorFactory->createFromCdbXml((string) $id, $cdbXml->getCdbXml(), $cdbXml->getCdbXmlNamespaceUri()); $this->repository->save($entity); }
/** * Releases lock after saving if there was one. * * @param AggregateRoot $aggregate * * @return void */ public function save(AggregateRoot $aggregate) { $this->repository->save($aggregate); $this->lockManager->release($aggregate->getAggregateRootId()); }