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

Commit dcfcdf6

Browse files
committed
Fix no env for slaves. Start of #35
1 parent 2d1ee79 commit dcfcdf6

File tree

4 files changed

+74
-17
lines changed

4 files changed

+74
-17
lines changed

src/AlgoliaEloquentTrait.php

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,16 +142,21 @@ public function _setSettings()
142142
$modelHelper = App::make('\AlgoliaSearch\Laravel\ModelHelper');
143143

144144
$settings = $modelHelper->getSettings($this);
145-
$slaves_settings = $modelHelper->getSlavesSettings($this);
146-
147145
$indices = $modelHelper->getIndices($this);
148146

147+
$slaves_settings = $modelHelper->getSlavesSettings($this);
149148
$slaves = isset($settings['slaves']) ? $settings['slaves'] : [];
150149

151150
$b = true;
152151

153152
/** @var \AlgoliaSearch\Index $index */
154153
foreach ($indices as $index) {
154+
if ($b) {
155+
$settings['slaves'] = array_map(function ($indexName) use ($modelHelper) {
156+
return $modelHelper->getFinalIndexName($this, $indexName);
157+
}, $settings['slaves']);
158+
}
159+
155160
$index->setSettings($settings);
156161

157162
if ($b) {
@@ -160,15 +165,13 @@ public function _setSettings()
160165
}
161166
}
162167

163-
if (count($slaves) > 0) {
164-
foreach ($slaves as $slave) {
165-
if (isset($slaves_settings[$slave])) {
166-
$index = $modelHelper->algolia->initIndex($slave);
168+
foreach ($slaves as $slave) {
169+
if (isset($slaves_settings[$slave])) {
170+
$index = $modelHelper->getIndices($this, $slave)[0];
167171

168-
$s = array_merge($settings, $slaves_settings[$slave]);
172+
$s = array_merge($settings, $slaves_settings[$slave]);
169173

170-
$index->setSettings($s);
171-
}
174+
$index->setSettings($s);
172175
}
173176
}
174177
}

src/ModelHelper.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ public function getSlavesSettings(Model $model)
6464
return property_exists($model, 'slavesSettings') ? $model->slavesSettings : [];
6565
}
6666

67+
public function getFinalIndexName(Model $model, $indexName)
68+
{
69+
$env_suffix = property_exists($model, 'perEnvironment') && $model::$perEnvironment === true ? '_'.\App::environment() : '';
70+
71+
return $indexName.$env_suffix;
72+
}
73+
6774
/**
6875
* @return \AlgoliaSearch\Index
6976
*/
@@ -79,10 +86,8 @@ public function getIndices(Model $model, $indexName = null)
7986
$indicesName[] = $this->getIndexName($model);
8087
}
8188

82-
$env_suffix = property_exists($model, 'perEnvironment') && $model::$perEnvironment === true ? '_'.\App::environment() : '';
83-
84-
$indices = array_map(function ($index_name) use ($env_suffix) {
85-
return $this->algolia->initIndex($index_name.$env_suffix);
89+
$indices = array_map(function ($index_name) use ($model) {
90+
return $this->algolia->initIndex($this->getFinalIndexName($model, $index_name));
8691
}, $indicesName);
8792

8893
return $indices;
@@ -98,10 +103,8 @@ public function getIndicesTmp(Model $model)
98103
$indicesName[] = $this->getIndexName($model);
99104
}
100105

101-
$env_suffix = property_exists($model, 'perEnvironment') && $model::$perEnvironment === true ? '_'.\App::environment() : '';
102-
103-
$indices = array_map(function ($index_name) use ($env_suffix) {
104-
return $this->algolia->initIndex($index_name.$env_suffix.'_tmp');
106+
$indices = array_map(function ($index_name) use ($model) {
107+
return $this->algolia->initIndex($this->getFinalIndexName($index_name).'_tmp');
105108
}, $indicesName);
106109

107110
return $indices;

tests/AlgoliaEloquentTraitTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use AlgoliaSearch\Tests\Models\Model2;
66
use AlgoliaSearch\Tests\Models\Model4;
7+
use AlgoliaSearch\Tests\Models\Model6;
78
use Illuminate\Support\Facades\App;
89
use Mockery;
910
use Orchestra\Testbench\TestCase;
@@ -62,6 +63,29 @@ public function testRemoveFromIndex()
6263
$this->assertEquals(null, (new Model4())->removeFromIndex());
6364
}
6465

66+
public function testSetSettings()
67+
{
68+
$index = Mockery::mock('\AlgoliaSearch\Index');
69+
$index->shouldReceive('setSettings')->with(['slaves' => ['model_6_desc_testing']]);
70+
$index->shouldReceive('setSettings')->with(['ranking' => ['desc(name)']]);
71+
72+
/** @var \AlgoliaSearch\Laravel\ModelHelper $realModelHelper */
73+
$realModelHelper = App::make('\AlgoliaSearch\Laravel\ModelHelper');
74+
$modelHelper = Mockery::mock('\AlgoliaSearch\Laravel\ModelHelper');
75+
76+
App::instance('\AlgoliaSearch\Laravel\ModelHelper', $modelHelper);
77+
78+
$model6 = new Model6();
79+
$modelHelper->shouldReceive('getSettings')->andReturn($realModelHelper->getSettings($model6));
80+
$modelHelper->shouldReceive('getIndices')->andReturn([$index]);
81+
$modelHelper->shouldReceive('getFinalIndexName')->andReturn($realModelHelper->getFinalIndexName($model6, 'model_6_desc'));
82+
$modelHelper->shouldReceive('getSlavesSettings')->andReturn($realModelHelper->getSlavesSettings($model6));
83+
84+
$this->assertEquals($modelHelper->getFinalIndexName($model6, $realModelHelper->getSettings($model6)['slaves'][0]), 'model_6_desc_testing');
85+
86+
$model6->setSettings();
87+
}
88+
6589
public function tearDown()
6690
{
6791
Mockery::close();

tests/Models/Model6.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace AlgoliaSearch\Tests\Models;
4+
5+
use AlgoliaSearch\Laravel\AlgoliaEloquentTrait;
6+
use Illuminate\Database\Eloquent\Model;
7+
8+
class Model6 extends Model
9+
{
10+
use AlgoliaEloquentTrait;
11+
12+
public static $perEnvironment = true;
13+
14+
public $algoliaSettings = [
15+
'slaves' => [
16+
'model_6_desc',
17+
],
18+
];
19+
20+
public $slavesSettings = [
21+
'model_6_desc' => [
22+
'ranking' => [
23+
'desc(name)'
24+
]
25+
]
26+
];
27+
}

0 commit comments

Comments
 (0)