From 074b23ec23abed4f281045e1949e3363e009a8e5 Mon Sep 17 00:00:00 2001 From: Marc Morera Date: Sat, 22 Jan 2022 19:59:16 +0100 Subject: [PATCH] Added Item map method --- .gitignore | 3 ++- .phpunit.result.cache | 1 - Model/Item.php | 33 ++++++++++++++++++++++++++------- Tests/Model/ItemTest.php | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 9 deletions(-) delete mode 100644 .phpunit.result.cache diff --git a/.gitignore b/.gitignore index 6d1be1d..c58e3f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ composer.lock vendor -.php_cs.cache \ No newline at end of file +.php_cs.cache +.phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index ee0550f..0000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"Apisearch\\Tests\\Exporter\\IndexExporterTest::testImportAndExport":4,"Apisearch\\Tests\\Query\\QueryTest::testToArray":3,"Apisearch\\Tests\\Result\\ResultTest::testToArray":4,"Apisearch\\Tests\\Result\\ResultTest::testAutocomplete":3,"Apisearch\\Tests\\Query\\QueryTest::testDefaults":3,"Apisearch\\Tests\\Query\\QueryTest::testQueryOperator":3,"Apisearch\\Tests\\Query\\QueryTest::testQueryTextWithTags":3,"Apisearch\\Tests\\Repository\\TransformableRepositoryTest::testResultTransformer":4},"times":{"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testCreateIndex":0.002,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testCreateIndexAlreadyCreated":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testDeleteIndex":0.002,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testDeleteIndexAlreadyDeleted":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testDeleteNotExistingIndex":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testConfigureNotExistingIndex":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testCheckIndex":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testGetIndices":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testAddToken":0.006,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testDeleteToken":0,"Apisearch\\Tests\\App\\DiskAppRepositoryTest::testDeleteTokens":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testCreateIndex":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testCreateIndexAlreadyCreated":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testDeleteIndex":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testDeleteIndexAlreadyDeleted":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testDeleteNotExistingIndex":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testConfigureNotExistingIndex":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testCheckIndex":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testGetIndices":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testAddToken":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testDeleteToken":0,"Apisearch\\Tests\\App\\InMemoryAppRepositoryTest::testDeleteTokens":0,"Apisearch\\Tests\\Config\\ConfigTest::testCreate":0,"Apisearch\\Tests\\Config\\ConfigTest::testCreateNullLanguage":0,"Apisearch\\Tests\\Config\\ConfigTest::testCreateSearchableMetadataStoreDisabled":0,"Apisearch\\Tests\\Config\\ConfigTest::testSynonyms":0,"Apisearch\\Tests\\Config\\ConfigTest::testDefaultValues":0,"Apisearch\\Tests\\Config\\ConfigTest::testHttpTransport":0,"Apisearch\\Tests\\Config\\ConfigTest::testHttpTransportDefaultParameters":0,"Apisearch\\Tests\\Config\\ConfigTest::testShardsAndReplicas":0,"Apisearch\\Tests\\Config\\ConfigTest::testMetadata":0,"Apisearch\\Tests\\Config\\SynonymReaderTest::testNonExistingFile":0,"Apisearch\\Tests\\Config\\SynonymReaderTest::testEmptyFile":0,"Apisearch\\Tests\\Config\\SynonymReaderTest::testSynonymsFile":0,"Apisearch\\Tests\\Config\\SynonymReaderTest::testEmptyArray":0,"Apisearch\\Tests\\Config\\SynonymReaderTest::testCommaSeparatedArray":0,"Apisearch\\Tests\\Config\\SynonymTest::testCreate":0,"Apisearch\\Tests\\Config\\SynonymTest::testSpacesInWords":0,"Apisearch\\Tests\\Config\\SynonymTest::testExpand":0,"Apisearch\\Tests\\Config\\SynonymTest::testCreateFromArray":0,"Apisearch\\Tests\\Config\\SynonymTest::testCreateFromEmptyArray":0,"Apisearch\\Tests\\Exception\\ConnectionExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\ConnectionExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\ForbiddenExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\ForbiddenExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\InvalidFormatExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\InvalidFormatExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\InvalidTokenExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\InvalidTokenExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\PayloadTooLargeExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\PayloadTooLargeExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\ResourceExistsExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\ResourceExistsExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\ResourceNotAvailableExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\ResourceNotAvailableExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exception\\UnsupportedContentTypeExceptionTest::testTransportableErrorCode":0,"Apisearch\\Tests\\Exception\\UnsupportedContentTypeExceptionTest::testExtendsException":0,"Apisearch\\Tests\\Exporter\\CSVExporterTest::testImportExportIsTheSame":0.001,"Apisearch\\Tests\\Exporter\\ExporterCollectionTest::testCollection":0,"Apisearch\\Tests\\Exporter\\ExporterCollectionTest::testCollectionException":0,"Apisearch\\Tests\\Exporter\\IndexExporterTest::testImportAndExport":0,"Apisearch\\Tests\\Exporter\\JSONExporterTest::testImportExportIsTheSame":0,"Apisearch\\Tests\\Exporter\\YamlExporterTest::testImportExportIsTheSame":0.003,"Apisearch\\Tests\\Geo\\CoordinateAndDistanceTest::testToFilterArray":0,"Apisearch\\Tests\\Geo\\CoordinateAndDistanceTest::testFromFilterArray":0,"Apisearch\\Tests\\Geo\\CoordinateAndDistanceTest::testToArray":0,"Apisearch\\Tests\\Geo\\CoordinateAndDistanceTest::testFromArray":0,"Apisearch\\Tests\\Geo\\PolygonTest::testToFilterArray":0,"Apisearch\\Tests\\Geo\\PolygonTest::testFromFilterArray":0,"Apisearch\\Tests\\Geo\\PolygonTest::testToArray":0,"Apisearch\\Tests\\Geo\\PolygonTest::testFromArray":0,"Apisearch\\Tests\\Geo\\SquareTest::testToFilterArray":0,"Apisearch\\Tests\\Geo\\SquareTest::testFromFilterArray":0,"Apisearch\\Tests\\Geo\\SquareTest::testToArray":0,"Apisearch\\Tests\\Geo\\SquareTest::testFromArray":0,"Apisearch\\Tests\\Http\\EndpointsTest::testFilter":0,"Apisearch\\Tests\\Http\\RequestPartsTest::testConstruct":0,"Apisearch\\Tests\\Http\\RetryMapTest::testConstruct":0,"Apisearch\\Tests\\Http\\RetryMapTest::testCreateFromArray":0,"Apisearch\\Tests\\Http\\RetryMapTest::testCreateFromArrayDefaults":0,"Apisearch\\Tests\\Http\\RetryTest::testConstruct":0,"Apisearch\\Tests\\Http\\RetryTest::testCreateFromArray":0,"Apisearch\\Tests\\Http\\RetryTest::testCreateFromArrayDefaults":0,"Apisearch\\Tests\\Http\\TCPClientTest::testRequestTries":0.81,"Apisearch\\Tests\\Model\\AppUUIDTest::testEmptyCreation with data set #0":0,"Apisearch\\Tests\\Model\\AppUUIDTest::testEmptyCreation with data set #1":0,"Apisearch\\Tests\\Model\\AppUUIDTest::testEmptyCreation with data set #2":0,"Apisearch\\Tests\\Model\\AppUUIDTest::testCreateValidAppUUID":0,"Apisearch\\Tests\\Model\\ChangesTest::testEmptyCreation":0.001,"Apisearch\\Tests\\Model\\ChangesTest::testAddChange":0,"Apisearch\\Tests\\Model\\ChangesTest::testAddChangeDefaultType":0,"Apisearch\\Tests\\Model\\ChangesTest::testMultipleAddChange":0,"Apisearch\\Tests\\Model\\ChangesTest::testArrayChanges":0,"Apisearch\\Tests\\Model\\ChangesTest::testToArray":0,"Apisearch\\Tests\\Model\\ChangesTest::testHttpTransport":0,"Apisearch\\Tests\\Model\\CoordinateTest::testGetters":0,"Apisearch\\Tests\\Model\\CoordinateTest::testCreateFromArray":0,"Apisearch\\Tests\\Model\\CoordinateTest::testConstructFromArrayWithEmptyArray":0,"Apisearch\\Tests\\Model\\CoordinateTest::testConstructFromArrayWithoutLatitude":0,"Apisearch\\Tests\\Model\\CoordinateTest::testConstructFromArrayWithoutLongitude":0,"Apisearch\\Tests\\Model\\CoordinateTest::testToArray":0,"Apisearch\\Tests\\Model\\CoordinateTest::testAsString":0,"Apisearch\\Tests\\Model\\IndexTest::testEmptyCreation with data set #0":0,"Apisearch\\Tests\\Model\\IndexTest::testEmptyCreation with data set #1":0,"Apisearch\\Tests\\Model\\IndexTest::testEmptyCreation with data set #2":0,"Apisearch\\Tests\\Model\\IndexTest::testEmptyCreation with data set #3":0,"Apisearch\\Tests\\Model\\IndexTest::testCreateValidIndex":0,"Apisearch\\Tests\\Model\\IndexTest::testWithMetadataValue":0,"Apisearch\\Tests\\Model\\IndexUUIDTest::testEmptyCreation with data set #0":0,"Apisearch\\Tests\\Model\\IndexUUIDTest::testEmptyCreation with data set #1":0,"Apisearch\\Tests\\Model\\IndexUUIDTest::testEmptyCreation with data set #2":0,"Apisearch\\Tests\\Model\\IndexUUIDTest::testCreateValidIndexUUID":0,"Apisearch\\Tests\\Model\\ItemTest::testCreateLocated":0.001,"Apisearch\\Tests\\Model\\ItemTest::testCreateLocatedFromArray":0,"Apisearch\\Tests\\Model\\ItemTest::testCreate":0,"Apisearch\\Tests\\Model\\ItemTest::testCreateFromArrayWithoutCoordinate":0,"Apisearch\\Tests\\Model\\ItemTest::testCreateEmptyValues":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #0":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #1":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #2":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #3":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #4":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #5":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #6":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #7":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #8":0,"Apisearch\\Tests\\Model\\ItemTest::testItemBadFormattedUUID with data set #9":0,"Apisearch\\Tests\\Model\\ItemTest::testCoordinateFormattedUUID with data set #0":0,"Apisearch\\Tests\\Model\\ItemTest::testCoordinateFormattedUUID with data set #1":0,"Apisearch\\Tests\\Model\\ItemTest::testCoordinateFormattedUUID with data set #2":0,"Apisearch\\Tests\\Model\\ItemTest::testCoordinateFormattedUUID with data set #3":0,"Apisearch\\Tests\\Model\\ItemTest::testCoordinateFormattedUUID with data set #4":0,"Apisearch\\Tests\\Model\\ItemTest::testCoordinateFormattedUUID with data set #5":0,"Apisearch\\Tests\\Model\\ItemTest::testDistanceInjection":0,"Apisearch\\Tests\\Model\\ItemTest::testDistanceInjectionWithoutDistance":0,"Apisearch\\Tests\\Model\\ItemTest::testMetadata":0,"Apisearch\\Tests\\Model\\ItemTest::testIndexedMetadata":0,"Apisearch\\Tests\\Model\\ItemTest::testAllMetadataPriorities":0,"Apisearch\\Tests\\Model\\ItemTest::testToArrayDefaultValues":0,"Apisearch\\Tests\\Model\\ItemTest::testToArrayAllValues":0,"Apisearch\\Tests\\Model\\ItemTest::testMagicGetter":0,"Apisearch\\Tests\\Model\\ItemTest::testComposedUUID":0,"Apisearch\\Tests\\Model\\ItemTest::testScore":0,"Apisearch\\Tests\\Model\\ItemTest::testIndexAndAppUUID":0,"Apisearch\\Tests\\Model\\ItemTest::testDeleteMethods":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreate":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testComposeUUID":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateByComposedUUID":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateByComposedUUIDException with data set #0":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateByComposedUUIDException with data set #1":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateByComposedUUIDException with data set #2":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateByComposedUUIDException with data set #3":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateFromArray":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateFromArrayException with data set #0":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateFromArrayException with data set #1":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testCreateFromArrayException with data set #2":0,"Apisearch\\Tests\\Model\\ItemUUIDTest::testToArray":0,"Apisearch\\Tests\\Model\\MetadataTest::testToMetadata":0.001,"Apisearch\\Tests\\Model\\MetadataTest::testFromMetadata":0,"Apisearch\\Tests\\Model\\TokenTest::testToFromArray":0.001,"Apisearch\\Tests\\Model\\TokenUUIDTest::testEmptyCreation with data set #0":0,"Apisearch\\Tests\\Model\\TokenUUIDTest::testEmptyCreation with data set #1":0,"Apisearch\\Tests\\Model\\TokenUUIDTest::testCreateValidTokenUUID":0,"Apisearch\\Tests\\Model\\UserTest::testCreateUser":0,"Apisearch\\Tests\\Model\\UserTest::testHttpTransport":0,"Apisearch\\Tests\\Model\\UserTest::testCreateFromArrayException with data set #0":0,"Apisearch\\Tests\\Model\\UserTest::testCreateFromArrayException with data set #1":0,"Apisearch\\Tests\\Query\\AggregationTest::testCreate":0,"Apisearch\\Tests\\Query\\AggregationTest::testCreateBadName":0,"Apisearch\\Tests\\Query\\AggregationTest::testCreateEmptyName":0,"Apisearch\\Tests\\Query\\AggregationTest::testCreateDefaultValues":0,"Apisearch\\Tests\\Query\\AggregationTest::testToArray":0,"Apisearch\\Tests\\Query\\AggregationTest::testToArrayDefaultFields":0,"Apisearch\\Tests\\Query\\AggregationTest::testCreateFromArrayWithDefaults":0,"Apisearch\\Tests\\Query\\FilterTest::testCreate":0,"Apisearch\\Tests\\Query\\FilterTest::testCreateDefaultValues":0,"Apisearch\\Tests\\Query\\FilterTest::testToArray":0,"Apisearch\\Tests\\Query\\FilterTest::testToArrayDefaultFields":0,"Apisearch\\Tests\\Query\\FilterTest::testCreateFromArrayWithDefaults":0,"Apisearch\\Tests\\Query\\FilterTest::testWrongValuesFormat":0,"Apisearch\\Tests\\Query\\QueryTest::testToArray":0,"Apisearch\\Tests\\Query\\QueryTest::testDefaultsInfinite":0,"Apisearch\\Tests\\Query\\QueryTest::testDefaults":0.001,"Apisearch\\Tests\\Query\\QueryTest::testScoreStrategyObject":0,"Apisearch\\Tests\\Query\\QueryTest::testFuzziness":0.001,"Apisearch\\Tests\\Query\\QueryTest::testMinScore":0,"Apisearch\\Tests\\Query\\QueryTest::testValues":0.001,"Apisearch\\Tests\\Query\\QueryTest::testMetadata":0.001,"Apisearch\\Tests\\Query\\QueryTest::testSubqueries":0,"Apisearch\\Tests\\Query\\QueryTest::testIdentifier":0,"Apisearch\\Tests\\Query\\QueryTest::testIndexUUID":0,"Apisearch\\Tests\\Query\\QueryTest::testSearchableFields":0,"Apisearch\\Tests\\Query\\QueryTest::testAddScoreStrategyWhenEmpty":0.001,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #0":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #1":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #2":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #3":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #4":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #5":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #6":0,"Apisearch\\Tests\\Query\\RangeTest::testStringToArray with data set #7":0,"Apisearch\\Tests\\Query\\RangeTest::testArrayToString with data set #0":0,"Apisearch\\Tests\\Query\\RangeTest::testArrayToString with data set #1":0,"Apisearch\\Tests\\Query\\RangeTest::testArrayToString with data set #2":0,"Apisearch\\Tests\\Query\\RangeTest::testArrayToString with data set #3":0,"Apisearch\\Tests\\Query\\RangeTest::testArrayToString with data set #4":0,"Apisearch\\Tests\\Query\\RangeTest::testArrayToString with data set #5":0,"Apisearch\\Tests\\Query\\RangeTest::testCreateRanges":0,"Apisearch\\Tests\\Query\\ScoreStrategiesTest::testEmpty":0,"Apisearch\\Tests\\Query\\ScoreStrategiesTest::testMultiple":0,"Apisearch\\Tests\\Query\\ScoreStrategiesTest::testArrayTransformation":0,"Apisearch\\Tests\\Query\\ScoreStrategyTest::testCreateDefault":0,"Apisearch\\Tests\\Query\\ScoreStrategyTest::testFieldRelevanceBoosting":0,"Apisearch\\Tests\\Query\\ScoreStrategyTest::testCustomFunction":0,"Apisearch\\Tests\\Query\\ScoreStrategyTest::testDecay":0,"Apisearch\\Tests\\Query\\ScoreStrategyTest::testWeightMultiFilter":0,"Apisearch\\Tests\\Query\\SortByTest::testEmpty":0,"Apisearch\\Tests\\Query\\SortByTest::testSimpleSortBy":0,"Apisearch\\Tests\\Query\\SortByTest::testFromFieldsAndValues":0,"Apisearch\\Tests\\Query\\SortByTest::testEmptySortBy":0,"Apisearch\\Tests\\Query\\SortByTest::testSortByFieldValue":0,"Apisearch\\Tests\\Query\\SortByTest::testSortByFieldValueBasicFields":0,"Apisearch\\Tests\\Query\\SortByTest::testNestedFieldAndFilter":0,"Apisearch\\Tests\\Query\\SortByTest::testCreateFromArray":0,"Apisearch\\Tests\\Query\\SortByTest::testToArray":0,"Apisearch\\Tests\\Query\\SortByTest::testIsSortedByGeoDistance":0,"Apisearch\\Tests\\Query\\SortByTest::testCoordinateInjection":0,"Apisearch\\Tests\\Query\\SortByTest::testHasRandomSort":0,"Apisearch\\Tests\\Query\\SortByTest::testMultiplesSorts":0,"Apisearch\\Tests\\Repository\\DiskRepositoryTest::testBasics":0.005,"Apisearch\\Tests\\Repository\\DiskRepositoryTest::testAddDeleteAtTheSameTime":0,"Apisearch\\Tests\\Repository\\DiskRepositoryTest::testQueryMultiple":0,"Apisearch\\Tests\\Repository\\DiskRepositoryTest::testInvalidQueries with data set #0":0,"Apisearch\\Tests\\Repository\\DiskRepositoryTest::testInvalidQueries with data set #1":0,"Apisearch\\Tests\\Repository\\HttpRepositoryTest::testNullResponse":0.001,"Apisearch\\Tests\\Repository\\HttpRepositoryTest::testConnectionExceptionResponse":0,"Apisearch\\Tests\\Repository\\InMemoryRepositoryTest::testBasics":0,"Apisearch\\Tests\\Repository\\InMemoryRepositoryTest::testAddDeleteAtTheSameTime":0,"Apisearch\\Tests\\Repository\\InMemoryRepositoryTest::testQueryMultiple":0,"Apisearch\\Tests\\Repository\\InMemoryRepositoryTest::testInvalidQueries with data set #0":0,"Apisearch\\Tests\\Repository\\InMemoryRepositoryTest::testInvalidQueries with data set #1":0,"Apisearch\\Tests\\Repository\\RepositoryReferenceTest::testRepositoryReference":0,"Apisearch\\Tests\\Repository\\RepositoryReferenceTest::testRepositoryReferenceNoIndex":0,"Apisearch\\Tests\\Repository\\RepositoryReferenceTest::testRepositoryReferenceNoAppNorIndex":0,"Apisearch\\Tests\\Repository\\RepositoryReferenceTest::testChangeIndex":0,"Apisearch\\Tests\\Repository\\RepositoryReferenceTest::testBadIds":0,"Apisearch\\Tests\\Repository\\RepositoryReferenceTest::testCreateFromComposed":0,"Apisearch\\Tests\\Result\\AggregationTest::testConstruct":0,"Apisearch\\Tests\\Result\\AggregationTest::testAddCounter0Value":0,"Apisearch\\Tests\\Result\\AggregationTest::testAddCounterInvalidName":0,"Apisearch\\Tests\\Result\\AggregationTest::testLevels":0,"Apisearch\\Tests\\Result\\AggregationTest::testEmpty":0,"Apisearch\\Tests\\Result\\AggregationTest::testGetActiveElements":0,"Apisearch\\Tests\\Result\\AggregationTest::testCleanCountersByLevel":0,"Apisearch\\Tests\\Result\\AggregationTest::testToArrayDefaultValues":0,"Apisearch\\Tests\\Result\\AggregationTest::testToArrayAllValues":0,"Apisearch\\Tests\\Result\\AggregationTest::testCreateFromArrayDefaultValues":0,"Apisearch\\Tests\\Result\\AggregationTest::testCreateFromArrayAllValues":0,"Apisearch\\Tests\\Result\\AggregationsTest::testConstruct":0,"Apisearch\\Tests\\Result\\AggregationsTest::testHttpLayerDefaultValues":0,"Apisearch\\Tests\\Result\\AggregationsTest::testHttpLayer":0,"Apisearch\\Tests\\Result\\CounterTest::testCreateUsedByActiveElements":0,"Apisearch\\Tests\\Result\\CounterTest::testCreateNotUsedByActiveElements":0,"Apisearch\\Tests\\Result\\CounterTest::testInvalidName":0,"Apisearch\\Tests\\Result\\CounterTest::testToArrayDefaultValues":0,"Apisearch\\Tests\\Result\\CounterTest::testToArray":0,"Apisearch\\Tests\\Result\\CounterTest::testCreateFromArrayDefaultValues":0,"Apisearch\\Tests\\Result\\CounterTest::testCreateFromArray":0,"Apisearch\\Tests\\Result\\ResultTest::testToArray":0,"Apisearch\\Tests\\Result\\ResultTest::testItems":0,"Apisearch\\Tests\\Result\\ResultTest::testAggregations":0,"Apisearch\\Tests\\Result\\ResultTest::testSuggests":0,"Apisearch\\Tests\\Result\\ResultTest::testGetItemsGroupedByType":0,"Apisearch\\Tests\\Result\\ResultTest::testCreateFromArrayAllValues":0,"Apisearch\\Tests\\Result\\ResultTest::testMultiResult":0,"Apisearch\\Tests\\Result\\ResultTest::testSuggest":0,"Apisearch\\Tests\\Transformer\\TransformerTest::testBasic":0.003,"Apisearch\\Tests\\Transformer\\TransformerTest::testBasicWithoutReadTransformer":0,"Apisearch\\Tests\\User\\InteractionTest::testHttpTransport":0,"Apisearch\\Tests\\User\\InteractionTest::testHttpTransportDefaults":0,"Apisearch\\Tests\\Query\\QueryTest::testSuggestions":0,"Apisearch\\Tests\\Query\\QueryTest::testAutocomplete":0,"Apisearch\\Tests\\Result\\ResultTest::testAutocomplete":0,"Apisearch\\Tests\\Model\\UserTest::testCreateById":0,"Apisearch\\Tests\\Query\\QueryTest::testQueryOperator":0,"Apisearch\\Tests\\Query\\QueryTest::testSetQueryText":0,"Apisearch\\Tests\\Query\\QueryTest::testQueryTextWithTags":0,"Apisearch\\Tests\\Repository\\TransformableRepositoryTest::testResultTransformer":0.006}} \ No newline at end of file diff --git a/Model/Item.php b/Model/Item.php index b1c5661..bc8c5d8 100644 --- a/Model/Item.php +++ b/Model/Item.php @@ -113,13 +113,13 @@ class Item implements HttpTransportable, UUIDReference /** * Item constructor. * - * @param ItemUUID $uuid - * @param Coordinate $coordinate - * @param array $metadata - * @param array $indexedMetadata - * @param array $searchableMetadata - * @param array $exactMatchingMetadata - * @param array $suggest + * @param ItemUUID $uuid + * @param Coordinate|null $coordinate + * @param array $metadata + * @param array $indexedMetadata + * @param array $searchableMetadata + * @param array $exactMatchingMetadata + * @param array $suggest */ private function __construct( ItemUUID $uuid, @@ -711,4 +711,23 @@ public function __get(string $name) { return $this->get($name); } + + /** + * @param callable $callable + * + * @return void + */ + public function map(callable $callable) + { + $array = $callable($this->toArray()); + $this->metadata = $array['metadata'] ?? []; + $this->indexedMetadata = $array['indexed_metadata'] ?? []; + $this->searchableMetadata = $array['searchable_metadata'] ?? []; + $this->exactMatchingMetadata = $array['exact_matching_metadata'] ?? []; + $this->suggest = $array['suggest'] ?? []; + $this->highlights = $array['highlights'] ?? []; + $this->promoted = isset($array['is_promoted']) && true === $array['is_promoted']; + $this->score = $array['score'] ?? null; + $this->coordinate = $array['coordinate'] ?? null; + } } diff --git a/Tests/Model/ItemTest.php b/Tests/Model/ItemTest.php index ede8fa6..df787e1 100644 --- a/Tests/Model/ItemTest.php +++ b/Tests/Model/ItemTest.php @@ -486,4 +486,43 @@ public function testDeleteMethods() $this->assertEquals(['uuid' => ['id' => 'A', 'type' => 'B']], $item->toArray()); } + + public function testMap() + { + $item = Item::createFromArray([ + 'uuid' => ['id' => 'A', 'type' => 'B'], + 'metadata' => ['A' => 1], + 'indexed_metadata' => ['B' => 2], + 'searchable_metadata' => ['C' => 3], + 'exact_matching_metadata' => ['D' => 4], + 'suggest' => [5], + 'highlights' => ['F' => 6], + 'is_promoted' => true, + 'coordinate' => ['lat' => 1, 'lon' => 2], + ]); + + $item->map(function (array $map) { + $map['metadata']['A'] *= 2; + $map['indexed_metadata']['B'] *= 2; + $map['searchable_metadata']['C'] *= 2; + $map['exact_matching_metadata']['D'] *= 2; + $map['suggest'][0] *= 2; + $map['highlights']['F'] *= 2; + $map['is_promoted'] = false; + $map['score'] = 10; + $map['coordinate'] = null; + + return $map; + }); + + $this->assertEquals(2, $item->getMetadata()['A']); + $this->assertEquals(4, $item->getIndexedMetadata()['B']); + $this->assertEquals(6, $item->getSearchableMetadata()['C']); + $this->assertEquals(8, $item->getExactMatchingMetadata()['D']); + $this->assertEquals(10, $item->getSuggest()[0]); + $this->assertEquals(12, $item->getHighlight('F')); + $this->assertFalse($item->isPromoted()); + $this->assertEquals(10, $item->getScore()); + $this->assertNull($item->getCoordinate()); + } }