public function testGenerate()
 {
     $requestParserChainMock = $this->prophesize('PostmanGeneratorBundle\\RequestParser\\RequestParserChain');
     $resourceMock = $this->prophesize('Dunglas\\ApiBundle\\Api\\ResourceInterface');
     $operationMock = $this->prophesize('Dunglas\\ApiBundle\\Api\\Operation\\OperationInterface');
     $routeMock = $this->prophesize('Symfony\\Component\\Routing\\Route');
     $resourceMock->getCollectionOperations()->willReturn([$operationMock->reveal(), $operationMock->reveal(), $operationMock->reveal()])->shouldBeCalledTimes(1);
     $resourceMock->getItemOperations()->willReturn([$operationMock->reveal(), $operationMock->reveal(), $operationMock->reveal()])->shouldBeCalledTimes(1);
     $operationMock->getRoute()->willReturn($routeMock->reveal())->shouldBeCalledTimes(6);
     $routeMock->getMethods()->willReturn(['GET'], ['POST'], ['GET'], ['GET'], ['PUT', 'PATCH'], ['DELETE'])->shouldBeCalledTimes(6);
     $routeMock->getPath()->willReturn('/users', '/users', '/profile', '/users/{id}', '/users/{id}', '/users/{id}', '/users/{id}')->shouldBeCalledTimes(7);
     $operationMock->getContext()->willReturn([], [], ['hydra:title' => 'Get profile'], ['hydra:title' => 'Get profile'], [], [], [], [])->shouldBeCalledTimes(8);
     $requestParserChainMock->parse(Argument::type('PostmanGeneratorBundle\\Model\\Request'))->shouldBeCalledTimes(7);
     $generator = new RequestGenerator($requestParserChainMock->reveal(), 'http://127.0.0.1');
     $requests = $generator->generate($resourceMock->reveal());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[0]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[0]->getResource());
     $this->assertEquals('http://127.0.0.1/users', $requests[0]->getUrl());
     $this->assertEquals('GET', $requests[0]->getMethod());
     $this->assertNull($requests[0]->getName());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[1]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[1]->getResource());
     $this->assertEquals('http://127.0.0.1/users', $requests[1]->getUrl());
     $this->assertEquals('POST', $requests[1]->getMethod());
     $this->assertNull($requests[1]->getName());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[2]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[2]->getResource());
     $this->assertEquals('http://127.0.0.1/profile', $requests[2]->getUrl());
     $this->assertEquals('GET', $requests[2]->getMethod());
     $this->assertEquals('Get profile', $requests[2]->getName());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[3]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[3]->getResource());
     $this->assertEquals('http://127.0.0.1/users/{id}', $requests[3]->getUrl());
     $this->assertEquals('GET', $requests[3]->getMethod());
     $this->assertNull($requests[3]->getName());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[4]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[4]->getResource());
     $this->assertEquals('http://127.0.0.1/users/{id}', $requests[4]->getUrl());
     $this->assertEquals('PUT', $requests[4]->getMethod());
     $this->assertNull($requests[4]->getName());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[5]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[5]->getResource());
     $this->assertEquals('http://127.0.0.1/users/{id}', $requests[5]->getUrl());
     $this->assertEquals('PATCH', $requests[5]->getMethod());
     $this->assertNull($requests[5]->getName());
     $this->assertRegExp('/([A-z\\d]{8})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{4})-([A-z\\d]{12})/', $requests[6]->getId());
     $this->assertEquals($resourceMock->reveal(), $requests[6]->getResource());
     $this->assertEquals('http://127.0.0.1/users/{id}', $requests[6]->getUrl());
     $this->assertEquals('DELETE', $requests[6]->getMethod());
     $this->assertNull($requests[6]->getName());
 }
 /**
  * {@inheritdoc}
  *
  * @return Collection
  */
 public function generate(ResourceInterface $resource = null)
 {
     $collection = new Collection();
     $collection->setId((string) Uuid::uuid4());
     $collection->setName($this->name);
     $collection->setDescription($this->description);
     $collection->setPublic($this->public);
     foreach ($this->resourceCollection as $resource) {
         $folder = $this->folderGenerator->generate($resource);
         $folder->setRequests($this->requestGenerator->generate($resource));
         $collection->addFolder($folder);
     }
     return $collection;
 }