From a6a480df0579bbeb6f112a7b223f365ca6396f04 Mon Sep 17 00:00:00 2001 From: Maxime Locqueville Date: Thu, 23 Jun 2016 17:49:12 +0200 Subject: [PATCH] Fixes #68. Add index name in getAlgoliaRecords method --- src/AlgoliaEloquentTrait.php | 8 ++++---- src/EloquentSubscriber.php | 2 +- src/ModelHelper.php | 4 ++-- tests/AlgoliaEloquentTraitTest.php | 30 +++++++++++++++++++++++++++--- tests/Models/Model11.php | 19 +++++++++++++++++++ 5 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 tests/Models/Model11.php diff --git a/src/AlgoliaEloquentTrait.php b/src/AlgoliaEloquentTrait.php index e054091..2ee5f21 100644 --- a/src/AlgoliaEloquentTrait.php +++ b/src/AlgoliaEloquentTrait.php @@ -37,7 +37,7 @@ public function _reindex($safe = true, $setSettings = true) foreach ($models as $model) { if ($modelHelper->indexOnly($model, $index->indexName)) { - $records[] = $model->getAlgoliaRecordDefault(); + $records[] = $model->getAlgoliaRecordDefault($index->indexName); } } @@ -234,7 +234,7 @@ public function __call($method, $parameters) /** * Methods. */ - public function getAlgoliaRecordDefault() + public function getAlgoliaRecordDefault($indexName) { /** @var \AlgoliaSearch\Laravel\ModelHelper $modelHelper */ $modelHelper = App::make('\AlgoliaSearch\Laravel\ModelHelper'); @@ -242,7 +242,7 @@ public function getAlgoliaRecordDefault() $record = null; if (method_exists($this, static::$methodGetName)) { - $record = $this->{static::$methodGetName}(); + $record = $this->{static::$methodGetName}($indexName); } else { $record = $this->toArray(); } @@ -264,7 +264,7 @@ public function pushToIndex() /** @var \AlgoliaSearch\Index $index */ foreach ($indices as $index) { if ($modelHelper->indexOnly($this, $index->indexName)) { - $index->addObject($this->getAlgoliaRecordDefault()); + $index->addObject($this->getAlgoliaRecordDefault($index->indexName)); } } } diff --git a/src/EloquentSubscriber.php b/src/EloquentSubscriber.php index c1944ee..bdb1bac 100644 --- a/src/EloquentSubscriber.php +++ b/src/EloquentSubscriber.php @@ -20,7 +20,7 @@ public function saved($model) /** @var \AlgoliaSearch\Index $index */ foreach ($this->modelHelper->getIndices($model) as $index) { if ($this->modelHelper->indexOnly($model, $index->indexName)) { - $index->addObject($this->modelHelper->getAlgoliaRecord($model), $this->modelHelper->getObjectId($model)); + $index->addObject($this->modelHelper->getAlgoliaRecord($model, $index->indexName), $this->modelHelper->getObjectId($model)); } } diff --git a/src/ModelHelper.php b/src/ModelHelper.php index 1ae947a..c3a9fb3 100644 --- a/src/ModelHelper.php +++ b/src/ModelHelper.php @@ -131,8 +131,8 @@ public function getIndicesTmp(Model $model) return $indices; } - public function getAlgoliaRecord(Model $model) + public function getAlgoliaRecord(Model $model, $indexName) { - return $model->getAlgoliaRecordDefault(); + return $model->getAlgoliaRecordDefault($indexName); } } diff --git a/tests/AlgoliaEloquentTraitTest.php b/tests/AlgoliaEloquentTraitTest.php index 04a1802..4fda6ce 100644 --- a/tests/AlgoliaEloquentTraitTest.php +++ b/tests/AlgoliaEloquentTraitTest.php @@ -2,6 +2,7 @@ namespace AlgoliaSearch\Tests; +use AlgoliaSearch\Tests\Models\Model11; use AlgoliaSearch\Tests\Models\Model2; use AlgoliaSearch\Tests\Models\Model4; use AlgoliaSearch\Tests\Models\Model6; @@ -21,8 +22,8 @@ public function setUp() public function testGetAlgoliaRecordDefault() { - $this->assertEquals(['id2' => 1, 'objectID' => 1], (new Model2())->getAlgoliaRecordDefault()); - $this->assertEquals(['id2' => 1, 'objectID' => 1, 'id3' => 1, 'name' => 'test'], (new Model4())->getAlgoliaRecordDefault()); + $this->assertEquals(['id2' => 1, 'objectID' => 1], (new Model2())->getAlgoliaRecordDefault('test')); + $this->assertEquals(['id2' => 1, 'objectID' => 1, 'id3' => 1, 'name' => 'test'], (new Model4())->getAlgoliaRecordDefault('test')); } public function testPushToindex() @@ -40,7 +41,7 @@ public function testPushToindex() App::instance('\AlgoliaSearch\Laravel\ModelHelper', $modelHelper); - $index->shouldReceive('addObject')->times(2)->with((new Model4())->getAlgoliaRecordDefault()); + $index->shouldReceive('addObject')->times(2)->with((new Model4())->getAlgoliaRecordDefault('test')); $this->assertEquals(null, (new Model4())->pushToIndex()); } @@ -119,6 +120,29 @@ public function testSetSynonyms() $this->assertEquals(null, $model10->setSettings()); } + function testPustToIndexWithgetAlgoliaRecordAndIndexName() { + /** @var \AlgoliaSearch\Laravel\ModelHelper $realModelHelper */ + $realModelHelper = App::make('\AlgoliaSearch\Laravel\ModelHelper'); + + $modelHelper = Mockery::mock('\AlgoliaSearch\Laravel\ModelHelper'); + + $realindices = $realModelHelper->getIndices(new Model11()); + $realindex = $realindices[0]; + $index = Mockery::mock('\AlgoliaSearch\Index'); + $index->indexName = $realindex->indexName; + + $modelHelper->shouldReceive('getIndices')->andReturn([$index]); + $modelHelper->shouldReceive('getObjectId')->andReturn($realModelHelper->getObjectId(new Model11())); + $modelHelper->shouldReceive('indexOnly')->andReturn(true); + + App::instance('\AlgoliaSearch\Laravel\ModelHelper', $modelHelper); + + + $index->shouldReceive('addObject')->times(1)->with(["is" => "working", "objectID" => null]); + + $this->assertEquals(null, (new Model11())->pushToIndex()); + } + public function tearDown() { Mockery::close(); diff --git a/tests/Models/Model11.php b/tests/Models/Model11.php new file mode 100644 index 0000000..971c444 --- /dev/null +++ b/tests/Models/Model11.php @@ -0,0 +1,19 @@ + "working"]; + } + return ["is not" => "working"]; + } +}