diff --git a/src/RequestBuilder/RequestBuilderFactory.php b/src/RequestBuilder/RequestBuilderFactory.php index 0842de5..13afa7e 100644 --- a/src/RequestBuilder/RequestBuilderFactory.php +++ b/src/RequestBuilder/RequestBuilderFactory.php @@ -3,6 +3,7 @@ namespace Lmc\Matej\RequestBuilder; use Lmc\Matej\Http\RequestManager; +use Lmc\Matej\Model\Command\Sorting; /** * Factory to create concrete RequestBuilder which helps you to create request for each Matej API @@ -47,12 +48,11 @@ public function events(): EventsRequestBuilder } /** - * @param string[] $itemIds * @return SortingRequestBuilder */ - public function sorting(string $userId, array $itemIds): SortingRequestBuilder + public function sorting(Sorting $sorting): SortingRequestBuilder { - return $this->createConfiguredBuilder(SortingRequestBuilder::class, $userId, $itemIds); + return $this->createConfiguredBuilder(SortingRequestBuilder::class, $sorting); } // TODO: builders for other endpoints diff --git a/src/RequestBuilder/SortingRequestBuilder.php b/src/RequestBuilder/SortingRequestBuilder.php index fefccaa..e38d0b2 100644 --- a/src/RequestBuilder/SortingRequestBuilder.php +++ b/src/RequestBuilder/SortingRequestBuilder.php @@ -19,9 +19,9 @@ class SortingRequestBuilder extends AbstractRequestBuilder /** @var Sorting */ private $sortingCommand; - public function __construct(string $userId, array $itemIds) + public function __construct(Sorting $sortingCommand) { - $this->sortingCommand = Sorting::create($userId, $itemIds); + $this->sortingCommand = $sortingCommand; } public function addUserMerge(UserMerge $merge): self diff --git a/tests/IntegrationTests/SortingRequestTest.php b/tests/IntegrationTests/SortingRequestTest.php index f9fa628..3819296 100644 --- a/tests/IntegrationTests/SortingRequestTest.php +++ b/tests/IntegrationTests/SortingRequestTest.php @@ -3,6 +3,7 @@ namespace Lmc\Matej\IntegrationTests; use Lmc\Matej\Model\Command\Interaction; +use Lmc\Matej\Model\Command\Sorting; use Lmc\Matej\Model\Command\UserMerge; /** @@ -16,7 +17,7 @@ public function shouldIssueSortingRequestOnly(): void { $response = $this->createMatejInstance() ->request() - ->sorting('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC']) + ->sorting(Sorting::create('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC'])) ->send(); $this->assertResponseCommandStatuses($response, 'SKIPPED', 'SKIPPED', 'OK'); @@ -27,7 +28,7 @@ public function shouldFailOnTooLittleItemIds(): void { $response = $this->createMatejInstance() ->request() - ->sorting('integration-test-php-client-user-id-A', ['itemA']) + ->sorting(Sorting::create('integration-test-php-client-user-id-A', ['itemA'])) ->send(); $this->assertResponseCommandStatuses($response, 'SKIPPED', 'SKIPPED', 'OK'); @@ -38,7 +39,7 @@ public function shouldIssueSortingRequestWithInteraction(): void { $response = $this->createMatejInstance() ->request() - ->sorting('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC']) + ->sorting(Sorting::create('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC'])) ->addInteraction(Interaction::bookmark('integration-test-php-client-user-id-A', 'itemA')) ->send(); @@ -50,7 +51,7 @@ public function shouldIssueSortingRequestWithUserMerge(): void { $response = $this->createMatejInstance() ->request() - ->sorting('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC']) + ->sorting(Sorting::create('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC'])) ->addUserMerge(UserMerge::mergeInto('integration-test-php-client-user-id-A', 'integration-test-php-client-user-id-B')) ->send(); @@ -62,7 +63,7 @@ public function shouldIssueSortingRequestWithUserMergeAndInteraction(): void { $response = $this->createMatejInstance() ->request() - ->sorting('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC']) + ->sorting(Sorting::create('integration-test-php-client-user-id-A', ['itemA', 'itemB', 'itemC'])) ->addUserMerge(UserMerge::mergeInto('integration-test-php-client-user-id-A', 'integration-test-php-client-user-id-B')) ->addInteraction(Interaction::bookmark('integration-test-php-client-user-id-A', 'itemA')) ->send(); diff --git a/tests/RequestBuilder/RequestBuilderFactoryTest.php b/tests/RequestBuilder/RequestBuilderFactoryTest.php index a82a5d2..ee80973 100644 --- a/tests/RequestBuilder/RequestBuilderFactoryTest.php +++ b/tests/RequestBuilder/RequestBuilderFactoryTest.php @@ -6,6 +6,7 @@ use Lmc\Matej\Model\Command\Interaction; use Lmc\Matej\Model\Command\ItemProperty; use Lmc\Matej\Model\Command\ItemPropertySetup; +use Lmc\Matej\Model\Command\Sorting; use Lmc\Matej\Model\Command\UserMerge; use Lmc\Matej\Model\Request; use Lmc\Matej\Model\Response; @@ -69,7 +70,7 @@ public function provideBuilderMethods(): array ['setupItemProperties', ItemPropertiesSetupRequestBuilder::class, $itemPropertiesSetupInit], ['deleteItemProperties', ItemPropertiesSetupRequestBuilder::class, $itemPropertiesSetupInit], ['events', EventsRequestBuilder::class, $eventInit], - ['sorting', SortingRequestBuilder::class, $sortingInit, 'user-a', ['item-a', 'item-b', 'item-c']], + ['sorting', SortingRequestBuilder::class, $sortingInit, Sorting::create('user-a', ['item-a', 'item-b', 'item-c'])], ]; } } diff --git a/tests/RequestBuilder/SortingRequestBuilderTest.php b/tests/RequestBuilder/SortingRequestBuilderTest.php index cbcc30a..d624d0a 100644 --- a/tests/RequestBuilder/SortingRequestBuilderTest.php +++ b/tests/RequestBuilder/SortingRequestBuilderTest.php @@ -21,7 +21,7 @@ class SortingRequestBuilderTest extends TestCase /** @test */ public function shouldBuildRequestWithCommands(): void { - $builder = new SortingRequestBuilder('userId1', ['itemId1', 'itemId2']); + $builder = new SortingRequestBuilder(Sorting::create('userId1', ['itemId1', 'itemId2'])); $interactionCommand = Interaction::detailView('userId1', 'itemId1'); $builder->addInteraction($interactionCommand); @@ -48,7 +48,7 @@ public function shouldBuildRequestWithCommands(): void /** @test */ public function shouldThrowExceptionWhenSendingCommandsWithoutRequestManager(): void { - $builder = new SortingRequestBuilder('userId1', ['itemId1', 'itemId2']); + $builder = new SortingRequestBuilder(Sorting::create('userId1', ['itemId1', 'itemId2'])); $this->expectException(LogicException::class); $this->expectExceptionMessage('Instance of RequestManager must be set to request builder'); @@ -64,7 +64,7 @@ public function shouldSendRequestViaRequestManager(): void ->with($this->isInstanceOf(Request::class)) ->willReturn(new Response(0, 0, 0, 0)); - $builder = new SortingRequestBuilder('userId1', ['itemId1', 'itemId2']); + $builder = new SortingRequestBuilder(Sorting::create('userId1', ['itemId1', 'itemId2'])); $builder->setRequestManager($requestManagerMock); $builder->addInteraction(Interaction::detailView('userId1', 'itemId1'));