diff --git a/src/DTO/Requests/PageRevisionRequest.php b/src/DTO/Requests/PageRevisionRequest.php new file mode 100644 index 0000000..3968fbf --- /dev/null +++ b/src/DTO/Requests/PageRevisionRequest.php @@ -0,0 +1,8 @@ +adapter->handle('get', $url, GetPageTitlesList::class); } + + /** + * @param array $params + * @return GetPageTitlesList + * @throws MediaWikiException + * @throws JsonException + */ + public function getTitleRevision(array $params): GetPageTitlesList + { + $this->validateParams(PageRevisionRequest::class, $params); + + $url = "page/title/{$params['title']}/{$params['revision']}"; + return $this->adapter->handle('get', $url, GetPageTitlesList::class); + } } diff --git a/tests/Resources/PageContentResourceTest.php b/tests/Resources/PageContentResourceTest.php index cde26f6..4cb1aba 100644 --- a/tests/Resources/PageContentResourceTest.php +++ b/tests/Resources/PageContentResourceTest.php @@ -67,6 +67,33 @@ public function testGetTitleNotFound(): void $this->wiki->pageContent()->getTitle($params); } + + /** + * @throws JsonException + * @throws MediaWikiException + */ + public function testGetTitleRevisionSuccess(): void + { + $params = ['title' => 'Jupiter']; + $pageTitleResponse = $this->wiki->pageContent()->getTitle($params)->toArray(); + $params['revision'] = $pageTitleResponse['items'][0]['rev']; + + $response = $this->wiki->pageContent()->getTitleRevision($params); + + $this->assertInstanceOf(GetPageTitlesList::class, $response); + } + + /** + * @throws JsonException + * @throws MediaWikiException + */ + public function testGetTitleRevisionNotFound(): void + { + $params = ['title' => 'hflk;aHF', 'revision' => 1]; + $this->expectException(MediaWikiException::class); + + $this->wiki->pageContent()->getTitleRevision($params); + } }