faker->word(); $parameters = [ FieldParser::param() => [ $type => $this->faker->word(), ], ]; $query = new FakeQuery($parameters); static::assertInstanceOf(FieldCriteria::class, $query->getFieldCriteria($type)); } /** * The Query shall retrieve include criteria by type. * * @return void */ public function testGetIncludeCriteria(): void { $parameters = [ IncludeParser::param() => $this->faker->word(), ]; $query = new FakeQuery($parameters); static::assertInstanceOf(IncludeCriteria::class, $query->getIncludeCriteria($this->faker->word())); } /** * The Query shall retrieve include resource criteria by type. * * @return void */ public function testGetIncludeResourceCriteria(): void { $type = $this->faker->word(); $parameters = [ IncludeParser::param() => [ $type => $this->faker->word(), ], ]; $query = new FakeQuery($parameters); static::assertInstanceOf(ResourceCriteria::class, $query->getIncludeCriteria($type)); } /** * The query shall retrieve all sort criteria. * * @return void */ public function testGetSortCriteria(): void { $fields = collect($this->faker()->words($this->faker->randomDigitNotNull())); $parameters = [ SortParser::param() => $fields->join(','), ]; $query = new FakeQuery($parameters); static::assertCount($fields->count(), $query->getSortCriteria()); } /** * The query shall retrieve all filter criteria. * * @return void */ public function testGetFilterCriteria(): void { $filterCount = $this->faker->randomDigitNotNull(); $parameters = Collection::times($filterCount, fn () => FilterParser::param().'.'.Str::random()) ->combine(Collection::times($filterCount, fn () => Str::random())) ->undot() ->all(); $query = new FakeQuery($parameters); static::assertCount($filterCount, $query->getFilterCriteria()); } /** * By default, the query shall not have a search term. * * @return void */ public function testDoesNotHaveSearch(): void { $parameters = []; $query = new FakeQuery($parameters); static::assertFalse($query->hasSearchCriteria()); } /** * The query shall have a search if a term is provided. * * @return void */ public function testHasSearch(): void { $parameters = [ SearchParser::param() => $this->faker->word(), ]; $query = new FakeQuery($parameters); static::assertTrue($query->hasSearchCriteria()); } /** * By default, the query shall return null search criteria. * * @return void */ public function testNullSearch(): void { $parameters = []; $query = new FakeQuery($parameters); static::assertNull($query->getSearchCriteria()); } /** * The query shall return search criteria if a term is provided. * * @return void */ public function testGetSearch(): void { $parameters = [ SearchParser::param() => $this->faker->word(), ]; $query = new FakeQuery($parameters); static::assertInstanceOf(SearchCriteria::class, $query->getSearchCriteria()); } /** * The query shall return limit criteria. * * @return void */ public function testGetLimitCriteria(): void { $parameters = []; $query = new FakeQuery($parameters); static::assertInstanceOf(LimitCriteria::class, $query->getPagingCriteria(PaginationStrategy::LIMIT)); } /** * The query shall return limit criteria. * * @return void */ public function testGetOffsetCriteria(): void { $parameters = []; $query = new FakeQuery($parameters); static::assertInstanceOf(OffsetCriteria::class, $query->getPagingCriteria(PaginationStrategy::OFFSET)); } }