registerVersion(); } $security = $this->prophesize(Security::class); $security->isGranted(StoredObjectRoleEnum::SEE->value, $storedObject) ->willReturn(true) ->shouldBeCalledOnce(); $controller = $this->buildController($security->reveal()); $response = $controller->listVersions($storedObject); $body = json_decode($response->getContent(), true, 512, JSON_THROW_ON_ERROR); self::assertEquals($response->getStatusCode(), 200); self::assertIsArray($body); self::assertArrayHasKey('results', $body); self::assertCount(10, $body['results']); } private function buildController(Security $security): StoredObjectVersionApiController { $paginator = $this->prophesize(Paginator::class); $paginator->getCurrentPageFirstItemNumber()->willReturn(0); $paginator->getItemsPerPage()->willReturn(10); $paginator->getTotalItems()->willReturn(15); $paginator->hasNextPage()->willReturn(false); $paginator->hasPreviousPage()->willReturn(false); $paginatorFactory = $this->prophesize(PaginatorFactoryInterface::class); $paginatorFactory->create(Argument::type('int'))->willReturn($paginator); $serializer = new Serializer([ new StoredObjectVersionNormalizer(), new CollectionNormalizer(), ], [new JsonEncoder()]); return new StoredObjectVersionApiController($paginatorFactory->reveal(), $serializer, $security); } }