Skip to content

Commit

Permalink
REST: Add missing tests for language fallback routes
Browse files Browse the repository at this point in the history
Bug: T371605
Change-Id: Ic1d7e4719a862c6241a584fc0d920237e7e3142f
  • Loading branch information
jakobw committed Oct 11, 2024
1 parent 36cf4f2 commit fa43d92
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
4 changes: 4 additions & 0 deletions repo/rest-api/tests/mocha/helpers/happyPathRequestBuilders.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ module.exports.getItemGetRequests = ( requestInputs ) => ( [
() => rbf.newGetItemAliasesInLanguageRequestBuilder( requestInputs.itemId, 'en' ),
() => rbf.newGetItemAliasesRequestBuilder( requestInputs.itemId ),
() => rbf.newGetItemDescriptionRequestBuilder( requestInputs.itemId, 'en' ),
() => rbf.newGetItemDescriptionWithFallbackRequestBuilder( requestInputs.itemId, 'en' ),
() => rbf.newGetItemDescriptionsRequestBuilder( requestInputs.itemId ),
() => rbf.newGetItemLabelRequestBuilder( requestInputs.itemId, 'en' ),
() => rbf.newGetItemLabelWithFallbackRequestBuilder( requestInputs.itemId, 'en' ),
() => rbf.newGetItemLabelsRequestBuilder( requestInputs.itemId ),
() => rbf.newGetStatementRequestBuilder( requestInputs.statementId ),
() => rbf.newGetSitelinksRequestBuilder( requestInputs.itemId ),
Expand All @@ -22,9 +24,11 @@ module.exports.getItemGetRequests = ( requestInputs ) => ( [
module.exports.getPropertyGetRequests = ( requestInputs ) => ( [
() => rbf.newGetPropertyRequestBuilder( requestInputs.propertyId ),
() => rbf.newGetPropertyLabelRequestBuilder( requestInputs.propertyId, 'en' ),
() => rbf.newGetPropertyLabelWithFallbackRequestBuilder( requestInputs.propertyId, 'en' ),
() => rbf.newGetPropertyLabelsRequestBuilder( requestInputs.propertyId ),
() => rbf.newGetPropertyDescriptionsRequestBuilder( requestInputs.propertyId ),
() => rbf.newGetPropertyDescriptionRequestBuilder( requestInputs.propertyId, 'en' ),
() => rbf.newGetPropertyDescriptionWithFallbackRequestBuilder( requestInputs.propertyId, 'en' ),
() => rbf.newGetPropertyAliasesRequestBuilder( requestInputs.propertyId ),
() => rbf.newGetPropertyAliasesInLanguageRequestBuilder( requestInputs.propertyId, 'en' ),
() => rbf.newGetPropertyStatementsRequestBuilder( requestInputs.propertyId ),
Expand Down
62 changes: 62 additions & 0 deletions repo/rest-api/tests/phpunit/RouteHandlers/RouteHandlersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,14 @@
use Wikibase\Repo\RestApi\Application\UseCases\GetItemDescription\GetItemDescriptionResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemDescriptions\GetItemDescriptions;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemDescriptions\GetItemDescriptionsResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemDescriptionWithFallback\GetItemDescriptionWithFallback;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemDescriptionWithFallback\GetItemDescriptionWithFallbackResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemLabel\GetItemLabel;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemLabel\GetItemLabelResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemLabels\GetItemLabels;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemLabels\GetItemLabelsResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemLabelWithFallback\GetItemLabelWithFallback;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemLabelWithFallback\GetItemLabelWithFallbackResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemStatement\GetItemStatement;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemStatements\GetItemStatements;
use Wikibase\Repo\RestApi\Application\UseCases\GetItemStatements\GetItemStatementsResponse;
Expand All @@ -57,10 +61,14 @@
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyDescription\GetPropertyDescriptionResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyDescriptions\GetPropertyDescriptions;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyDescriptions\GetPropertyDescriptionsResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyDescriptionWithFallback\GetPropertyDescriptionWithFallback;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyDescriptionWithFallback\GetPropertyDescriptionWithFallbackResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyLabel\GetPropertyLabel;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyLabel\GetPropertyLabelResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyLabels\GetPropertyLabels;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyLabels\GetPropertyLabelsResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyLabelWithFallback\GetPropertyLabelWithFallback;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyLabelWithFallback\GetPropertyLabelWithFallbackResponse;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyStatement\GetPropertyStatement;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyStatements\GetPropertyStatements;
use Wikibase\Repo\RestApi\Application\UseCases\GetPropertyStatements\GetPropertyStatementsResponse;
Expand Down Expand Up @@ -313,6 +321,22 @@ public function routeHandlersProvider(): Generator {
[ new ItemRedirect( 'Q123' ), $hasHttpStatus( 308 ) ],
],
] ];
yield 'GetItemDescriptionWithFallback' => [ [
'useCase' => GetItemDescriptionWithFallback::class,
'useCaseResponse' => new GetItemDescriptionWithFallbackResponse(
new Description( 'en', 'root vegetable' ),
$lastModified,
123
),
'validRequest' => [ 'pathParams' => [ 'item_id' => 'Q1', 'language_code' => 'en' ] ],
'expectedExceptions' => [
[
new UseCaseError( UseCaseError::INVALID_PATH_PARAMETER, '', [ 'parameter' => 'item_id' ] ),
$hasErrorCode ( UseCaseError::INVALID_PATH_PARAMETER ),
],
[ new ItemRedirect( 'Q123' ), $hasHttpStatus( 308 ) ],
],
] ];
yield 'GetItemDescriptions' => [ [
'useCase' => GetItemDescriptions::class,
'useCaseResponse' => new GetItemDescriptionsResponse( new Descriptions(), $lastModified, 123 ),
Expand Down Expand Up @@ -341,6 +365,22 @@ public function routeHandlersProvider(): Generator {
[ new ItemRedirect( 'Q123' ), $hasHttpStatus( 308 ) ],
],
] ];
yield 'GetItemLabelWithFallback' => [ [
'useCase' => GetItemLabelWithFallback::class,
'useCaseResponse' => new GetItemLabelWithFallbackResponse(
new Label( 'en', 'potato' ),
$lastModified,
123
),
'validRequest' => [ 'pathParams' => [ 'item_id' => 'Q1', 'language_code' => 'en' ] ],
'expectedExceptions' => [
[
new UseCaseError( UseCaseError::INVALID_PATH_PARAMETER, '', [ 'parameter' => 'item_id' ] ),
$hasErrorCode ( UseCaseError::INVALID_PATH_PARAMETER ),
],
[ new ItemRedirect( 'Q123' ), $hasHttpStatus( 308 ) ],
],
] ];
yield 'GetItemLabels' => [ [
'useCase' => GetItemLabels::class,
'useCaseResponse' => new GetItemLabelsResponse( new Labels(), $lastModified, 123 ),
Expand Down Expand Up @@ -454,6 +494,19 @@ public function routeHandlersProvider(): Generator {
$hasErrorCode( UseCaseError::RESOURCE_NOT_FOUND ),
] ],
] ];
yield 'GetPropertyDescriptionWithFallback' => [ [
'useCase' => GetPropertyDescriptionWithFallback::class,
'useCaseResponse' => new GetPropertyDescriptionWithFallbackResponse(
new Description( 'en', 'property description' ),
$lastModified,
123
),
'validRequest' => [ 'pathParams' => [ 'property_id' => 'P1', 'language_code' => 'en' ] ],
'expectedExceptions' => [ [
UseCaseError::newResourceNotFound( 'property' ),
$hasErrorCode( UseCaseError::RESOURCE_NOT_FOUND ),
] ],
] ];
yield 'GetPropertyDescriptions' => [ [
'useCase' => GetPropertyDescriptions::class,
'useCaseResponse' => new GetPropertyDescriptionsResponse( new Descriptions(), $lastModified, 123 ),
Expand All @@ -472,6 +525,15 @@ public function routeHandlersProvider(): Generator {
$hasErrorCode( UseCaseError::RESOURCE_NOT_FOUND ),
] ],
] ];
yield 'GetPropertyLabelWithFallback' => [ [
'useCase' => GetPropertyLabelWithFallback::class,
'useCaseResponse' => new GetPropertyLabelWithFallbackResponse( new Label( 'en', 'instance of' ), $lastModified, 123 ),
'validRequest' => [ 'pathParams' => [ 'property_id' => 'P1', 'language_code' => 'en' ] ],
'expectedExceptions' => [ [
UseCaseError::newResourceNotFound( 'property' ),
$hasErrorCode( UseCaseError::RESOURCE_NOT_FOUND ),
] ],
] ];
yield 'GetPropertyLabels' => [ [
'useCase' => GetPropertyLabels::class,
'useCaseResponse' => new GetPropertyLabelsResponse( new Labels(), $lastModified, 123 ),
Expand Down

0 comments on commit fa43d92

Please sign in to comment.