Skip to content
This repository was archived by the owner on Sep 11, 2018. It is now read-only.

Commit ec38d4a

Browse files
author
maxiloc
authored
Merge pull request #3 from GiampaoloFalqui/synonyms-support
Adds support for synonyms
2 parents 6aef185 + 67486f1 commit ec38d4a

File tree

4 files changed

+66
-1
lines changed

4 files changed

+66
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/vendor
22
composer.lock
33
phpunit.xml
4+
*.sublime*

src/AlgoliaEloquentTrait.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ public function _setSettings()
158158
}, $settings['slaves']);
159159
}
160160

161+
if (isset($settings['synonyms'])) {
162+
$index->batchSynonyms($settings['synonyms'], true, true);
163+
unset($settings['synonyms']);
164+
}
165+
161166
if (count(array_keys($settings)) > 0) {
162167
$index->setSettings($settings);
163168
}
@@ -265,4 +270,4 @@ public function removeFromIndex()
265270
$index->deleteObject($modelHelper->getObjectId($this));
266271
}
267272
}
268-
}
273+
}

tests/AlgoliaEloquentTraitTest.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use AlgoliaSearch\Tests\Models\Model2;
66
use AlgoliaSearch\Tests\Models\Model4;
77
use AlgoliaSearch\Tests\Models\Model6;
8+
use AlgoliaSearch\Tests\Models\Model7;
89
use Illuminate\Support\Facades\App;
910
use Illuminate\Support\Facades\Config;
1011
use Mockery;
@@ -93,6 +94,39 @@ public function testSetSettings()
9394
$model6->setSettings();
9495
}
9596

97+
public function testSetSynonyms()
98+
{
99+
$index = Mockery::mock('\AlgoliaSearch\Index');
100+
$index->shouldReceive('batchSynonyms')->with(
101+
[
102+
[
103+
'objectID' => 'red-color',
104+
'type' => 'synonym',
105+
'synonyms' => [
106+
'red',
107+
'really red',
108+
'much red'
109+
]
110+
]
111+
],
112+
true,
113+
true
114+
);
115+
116+
/** @var \AlgoliaSearch\Laravel\ModelHelper $realModelHelper */
117+
$realModelHelper = App::make('\AlgoliaSearch\Laravel\ModelHelper');
118+
$modelHelper = Mockery::mock('\AlgoliaSearch\Laravel\ModelHelper');
119+
120+
App::instance('\AlgoliaSearch\Laravel\ModelHelper', $modelHelper);
121+
122+
$model7 = new Model7();
123+
$modelHelper->shouldReceive('getSettings')->andReturn($realModelHelper->getSettings($model7));
124+
$modelHelper->shouldReceive('getIndices')->andReturn([$index]);
125+
$modelHelper->shouldReceive('getSlavesSettings')->andReturn($realModelHelper->getSlavesSettings($model7));
126+
127+
$this->assertEquals(null, $model7->setSettings());
128+
}
129+
96130
public function tearDown()
97131
{
98132
Mockery::close();

tests/Models/Model7.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace AlgoliaSearch\Tests\Models;
4+
5+
use AlgoliaSearch\Laravel\AlgoliaEloquentTrait;
6+
use Illuminate\Database\Eloquent\Model;
7+
8+
class Model7 extends Model
9+
{
10+
use AlgoliaEloquentTrait;
11+
12+
public $algoliaSettings = [
13+
'synonyms' => [
14+
[
15+
'objectID' => 'red-color',
16+
'type' => 'synonym',
17+
'synonyms' => [
18+
'red',
19+
'really red',
20+
'much red'
21+
]
22+
]
23+
]
24+
];
25+
}

0 commit comments

Comments
 (0)