Skip to content

Commit

Permalink
Merge pull request #155 from mozammil/fix-154
Browse files Browse the repository at this point in the history
Fixes 154 whereby _rankingInfo and _highlightResult were being indexed.
  • Loading branch information
nunomaduro committed Feb 21, 2019
2 parents 3d15a97 + 7830e33 commit a63c66a
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/Jobs/UpdateJob.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@
use function is_array;
use function get_class;
use function is_string;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Illuminate\Support\Collection;
use Algolia\AlgoliaSearch\SearchClient;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Algolia\ScoutExtended\Searchable\ModelsResolver;
use Algolia\ScoutExtended\Contracts\SplitterContract;
use Algolia\ScoutExtended\Searchable\ObjectIdEncrypter;
use Algolia\ScoutExtended\Transformers\ConvertDatesToTimestamps;
Expand Down Expand Up @@ -102,7 +104,9 @@ public function handle(SearchClient $client): void
$searchablesToDelete = [];

foreach ($this->searchables as $key => $searchable) {
if (empty($array = array_merge($searchable->toSearchableArray(), $searchable->scoutMetadata()))) {
$metadata = Arr::except($searchable->scoutMetadata(), ModelsResolver::$metadata);

if (empty($array = array_merge($searchable->toSearchableArray(), $metadata))) {
continue;
}

Expand Down
2 changes: 1 addition & 1 deletion src/Searchable/ModelsResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ final class ModelsResolver
/**
* @var string[]
*/
private static $metadata = [
public static $metadata = [
'_highlightResult',
'_rankingInfo',
];
Expand Down
31 changes: 31 additions & 0 deletions tests/Features/SearchableTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace Tests\Features;

use Mockery;
use App\User;
use Tests\TestCase;
use Illuminate\Support\Arr;
use Algolia\ScoutExtended\Searchable\ModelsResolver;

final class SearchableTest extends TestCase
{
public function testSearchable(): void
{
$user = factory(User::class)->create();

$user->withScoutMetaData('_rankingInfo', []);
$user->withScoutMetaData('_highlightResult', []);

$metadataKeys = ModelsResolver::$metadata;

$usersIndex = $this->mockIndex(User::class);
$usersIndex->expects('saveObjects')->once()->with(Mockery::on(function ($argument) use ($metadataKeys) {
return count(Arr::only($argument[0], $metadataKeys)) === 0;
}));

$user->searchable();
}
}

0 comments on commit a63c66a

Please sign in to comment.