Skip to content

Commit be5dac2

Browse files
authored
MAGE-1054: Fix queue tests (#1630)
* MAGE-1054: refactor queue tests * MAGE-1054: re-add the skipped tests * MAGE-1054: fix tests
1 parent d318626 commit be5dac2

File tree

3 files changed

+65
-87
lines changed

3 files changed

+65
-87
lines changed

Helper/AlgoliaHelper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ public function moveIndex(string $fromIndexName, string $toIndexName): void
300300
'destination' => $toIndexName
301301
]
302302
);
303-
self::setLastOperationInfo($fromIndexName, $response);
303+
self::setLastOperationInfo($toIndexName, $response);
304304
}
305305

306306
/**

Setup/Patch/Schema/ConfigPatch.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ class ConfigPatch implements SchemaPatchInterface
112112
],
113113
],
114114

115-
'algoliasearch_instant/instant/facets' => [
115+
'algoliasearch_instant/instant_facets/facets' => [
116116
[
117117
'attribute' => 'price',
118118
'type' => 'slider',
@@ -135,7 +135,7 @@ class ConfigPatch implements SchemaPatchInterface
135135
'create_rule' => '2',
136136
],
137137
],
138-
'algoliasearch_instant/instant/sorts' => [
138+
'algoliasearch_instant/instant_sorts/sorts' => [
139139
[
140140
'attribute' => 'price',
141141
'sort' => 'asc',

Test/Integration/Queue/QueueTest.php

Lines changed: 62 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Algolia\AlgoliaSearch\Test\Integration\Queue;
44

5+
use Algolia\AlgoliaSearch\Helper\ConfigHelper;
56
use Algolia\AlgoliaSearch\Model\Indexer\Product;
67
use Algolia\AlgoliaSearch\Model\Indexer\QueueRunner;
78
use Algolia\AlgoliaSearch\Model\IndicesConfigurator;
@@ -12,6 +13,10 @@
1213
use Magento\Framework\App\ResourceConnection;
1314
use Magento\Framework\DB\Adapter\AdapterInterface;
1415

16+
/**
17+
* @magentoDbIsolation disabled
18+
* @magentoAppIsolation enabled
19+
*/
1520
class QueueTest extends TestCase
1621
{
1722
private const INCOMPLETE_REASON = "Must revisit transaction handling across connections.";
@@ -29,27 +34,27 @@ public function setUp(): void
2934
{
3035
parent::setUp();
3136

32-
$this->jobsCollectionFactory = $this->getObjectManager()->create(JobsCollectionFactory::class);
37+
$this->jobsCollectionFactory = $this->objectManager->create(JobsCollectionFactory::class);
3338

3439
/** @var ResourceConnection $resource */
35-
$resource = $this->getObjectManager()->create(ResourceConnection::class);
40+
$resource = $this->objectManager->get(ResourceConnection::class);
3641
$this->connection = $resource->getConnection();
3742

38-
$this->queue = $this->getObjectManager()->create(Queue::class);
43+
$this->queue = $this->objectManager->get(Queue::class);
3944
}
4045

4146
public function testFill()
4247
{
4348
$this->resetConfigs([
44-
'algoliasearch_queue/queue/number_of_job_to_run',
45-
'algoliasearch_advanced/queue/number_of_element_by_page',
49+
ConfigHelper::NUMBER_OF_JOB_TO_RUN,
50+
ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE,
4651
]);
4752

48-
$this->setConfig('algoliasearch_queue/queue/active', '1');
53+
$this->setConfig(ConfigHelper::IS_ACTIVE, '1');
4954
$this->connection->query('TRUNCATE TABLE algoliasearch_queue');
5055

5156
/** @var Product $indexer */
52-
$indexer = $this->getObjectManager()->create(Product::class);
57+
$indexer = $this->objectManager->get(Product::class);
5358
$indexer->executeFull();
5459

5560
$rows = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();
@@ -80,18 +85,17 @@ public function testFill()
8085
}
8186
}
8287

83-
/**
84-
* @depends testFill
85-
* @magentoDbIsolation disabled
86-
*/
8788
public function testExecute()
8889
{
89-
$this->markTestIncomplete(self::INCOMPLETE_REASON);
90+
$this->setConfig(ConfigHelper::IS_ACTIVE, '1');
91+
$this->connection->query('TRUNCATE TABLE algoliasearch_queue');
9092

91-
$this->setConfig('algoliasearch_queue/queue/active', '1');
93+
/** @var Product $indexer */
94+
$indexer = $this->objectManager->get(Product::class);
95+
$indexer->executeFull();
9296

9397
/** @var Queue $queue */
94-
$queue = $this->getObjectManager()->create(Queue::class);
98+
$queue = $this->objectManager->get(Queue::class);
9599

96100
// Run the first two jobs - saveSettings, batch
97101
$queue->runCron(2, true);
@@ -109,7 +113,7 @@ public function testExecute()
109113

110114
$this->assertTrue($existsDefaultTmpIndex, 'Default products production index does not exists and it should');
111115

112-
// Run the second two jobs - batch, move
116+
// Run the last move - move
113117
$queue->runCron(2, true);
114118

115119
$this->algoliaHelper->waitLastTask();
@@ -132,31 +136,26 @@ public function testExecute()
132136
$this->assertTrue($existsDefaultProdIndex, 'Default product production index does not exists and it should');
133137

134138
/** TODO: There are mystery items being added to queue from unknown save process on product_id=1 */
135-
/* $rows = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();
136-
$this->assertEquals(0, count($rows)); */
139+
$rows = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();
140+
$this->assertEquals(0, count($rows));
137141
}
138142

139-
/**
140-
* @magentoDbIsolation disabled
141-
*/
142143
public function testSettings()
143144
{
144-
$this->markTestIncomplete(self::INCOMPLETE_REASON);
145-
146145
$this->resetConfigs([
147-
'algoliasearch_queue/queue/number_of_job_to_run',
148-
'algoliasearch_advanced/queue/number_of_element_by_page',
149-
'algoliasearch_instant/instant_facets/facets',
150-
'algoliasearch_products/products/product_additional_attributes',
146+
ConfigHelper::NUMBER_OF_JOB_TO_RUN,
147+
ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE,
148+
ConfigHelper::FACETS,
149+
ConfigHelper::PRODUCT_ATTRIBUTES
151150
]);
152151

153-
$this->setConfig('algoliasearch_queue/queue/active', '1');
152+
$this->setConfig(ConfigHelper::IS_ACTIVE, '1');
154153

155154
$this->connection->query('DELETE FROM algoliasearch_queue');
156155

157156
// Reindex products multiple times
158157
/** @var Product $indexer */
159-
$indexer = $this->getObjectManager()->create(Product::class);
158+
$indexer = $this->objectManager->get(Product::class);
160159
$indexer->executeFull();
161160
$indexer->executeFull();
162161
$indexer->executeFull();
@@ -166,7 +165,7 @@ public function testSettings()
166165

167166
// Process the whole queue
168167
/** @var QueueRunner $queueRunner */
169-
$queueRunner = $this->getObjectManager()->create(QueueRunner::class);
168+
$queueRunner = $this->objectManager->get(QueueRunner::class);
170169
$queueRunner->executeFull();
171170
$queueRunner->executeFull();
172171
$queueRunner->executeFull();
@@ -181,19 +180,16 @@ public function testSettings()
181180
$this->assertFalse(empty($settings['searchableAttributes']), 'SearchableAttributes should be set, but they are not.');
182181
}
183182

184-
/**
185-
* @magentoDbIsolation disabled
186-
*/
187183
public function testMergeSettings()
188184
{
189-
$this->setConfig('algoliasearch_queue/queue/active', '1');
190-
$this->setConfig('algoliasearch_queue/queue/number_of_job_to_run', 1);
191-
$this->setConfig('algoliasearch_advanced/queue/number_of_element_by_page', 300);
185+
$this->setConfig(ConfigHelper::IS_ACTIVE, '1');
186+
$this->setConfig(ConfigHelper::NUMBER_OF_JOB_TO_RUN, 1);
187+
$this->setConfig(ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE, 300);
192188

193189
$this->connection->query('DELETE FROM algoliasearch_queue');
194190

195191
/** @var Product $productIndexer */
196-
$productIndexer = $this->getObjectManager()->create(Product::class);
192+
$productIndexer = $this->objectManager->get(Product::class);
197193
$productIndexer->executeFull();
198194

199195
$rows = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();
@@ -208,7 +204,7 @@ public function testMergeSettings()
208204
$this->assertEquals(['sku'], $settings['disableTypoToleranceOnAttributes']);
209205

210206
/** @var QueueRunner $queueRunner */
211-
$queueRunner = $this->getObjectManager()->create(QueueRunner::class);
207+
$queueRunner = $this->objectManager->get(QueueRunner::class);
212208
$queueRunner->executeFull();
213209

214210
$this->algoliaHelper->waitLastTask();
@@ -223,9 +219,6 @@ public function testMergeSettings()
223219
$this->assertEquals(['sku'], $settings['disableTypoToleranceOnAttributes']);
224220
}
225221

226-
/**
227-
* @magentoDbIsolation disabled
228-
*/
229222
public function testMerging()
230223
{
231224
$this->connection->query('DELETE FROM algoliasearch_queue');
@@ -434,9 +427,6 @@ public function testMerging()
434427
$this->assertEquals($expectedProductJob, $productJob->toArray());
435428
}
436429

437-
/**
438-
* @magentoDbIsolation disabled
439-
*/
440430
public function testMergingWithStaticMethods()
441431
{
442432
$this->connection->query('TRUNCATE TABLE algoliasearch_queue');
@@ -587,13 +577,8 @@ public function testMergingWithStaticMethods()
587577
$this->assertEquals('rebuildStoreProductIndex', $jobs[11]->getMethod());
588578
}
589579

590-
/**
591-
* @magentoDbIsolation disabled
592-
*/
593580
public function testGetJobs()
594581
{
595-
$this->markTestIncomplete(self::INCOMPLETE_REASON);
596-
597582
$this->connection->query('TRUNCATE TABLE algoliasearch_queue');
598583

599584
$data = [
@@ -740,18 +725,12 @@ public function testGetJobs()
740725

741726
$expectedFirstJob = [
742727
'job_id' => '1',
743-
'created' => '2017-09-01 12:00:00',
744-
'pid' => null,
728+
'pid' => $pid,
745729
'class' => \Algolia\AlgoliaSearch\Helper\Data::class,
746730
'method' => 'rebuildStoreCategoryIndex',
747731
'data' => '{"store_id":"1","category_ids":["9","22"]}',
748-
'max_retries' => '3',
749-
'retries' => '0',
750-
'error_log' => '',
751-
'data_size' => 3,
752732
'merged_ids' => ['1', '7'],
753733
'store_id' => '1',
754-
'is_full_reindex' => 0,
755734
'decoded_data' => [
756735
'store_id' => '1',
757736
'category_ids' => [
@@ -760,43 +739,48 @@ public function testGetJobs()
760739
2 => '40',
761740
],
762741
],
763-
'locked_at' => null,
764-
'debug' => null,
765742
];
766743

767744
$expectedLastJob = [
768745
'job_id' => '6',
769-
'created' => '2017-09-01 12:00:00',
770-
'pid' => null,
746+
'pid' => $pid,
771747
'class' => \Algolia\AlgoliaSearch\Helper\Data::class,
772748
'method' => 'rebuildStoreProductIndex',
773749
'data' => '{"store_id":"3","product_ids":["448"]}',
774-
'max_retries' => '3',
775-
'retries' => '0',
776-
'error_log' => '',
777-
'data_size' => 2,
778750
'merged_ids' => ['6', '12'],
779751
'store_id' => '3',
780-
'is_full_reindex' => 0,
781752
'decoded_data' => [
782753
'store_id' => '3',
783754
'product_ids' => [
784755
0 => '448',
785756
1 => '405',
786757
],
787758
],
788-
'locked_at' => null,
789-
'debug' => null,
790759
];
791760

792761
/** @var Job $firstJob */
793762
$firstJob = reset($jobs);
763+
$firstJob = $firstJob->toArray();
794764

795765
/** @var Job $lastJob */
796766
$lastJob = end($jobs);
767+
$lastJob = $lastJob->toArray();
768+
769+
$valuesToCheck = [
770+
'job_id',
771+
'method',
772+
'class',
773+
'store_id',
774+
'pid',
775+
'data',
776+
'merged_ids',
777+
'decoded_data',
778+
];
797779

798-
$this->assertEquals($expectedFirstJob, $firstJob->toArray());
799-
$this->assertEquals($expectedLastJob, $lastJob->toArray());
780+
foreach ($valuesToCheck as $valueToCheck) {
781+
$this->assertEquals($expectedFirstJob[$valueToCheck], $firstJob[$valueToCheck]);
782+
$this->assertEquals($expectedLastJob[$valueToCheck], $lastJob[$valueToCheck]);
783+
}
800784

801785
$dbJobs = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();
802786

@@ -807,14 +791,11 @@ public function testGetJobs()
807791
}
808792
}
809793

810-
/**
811-
* @magentoDbIsolation disabled
812-
*/
813794
public function testHugeJob()
814795
{
815796
// Default value - maxBatchSize = 1000
816-
$this->setConfig('algoliasearch_queue/queue/number_of_job_to_run', 10);
817-
$this->setConfig('algoliasearch_advanced/queue/number_of_element_by_page', 100);
797+
$this->setConfig(ConfigHelper::NUMBER_OF_JOB_TO_RUN, 10);
798+
$this->setConfig(ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE, 100);
818799

819800
$productIds = range(1, 5000);
820801
$jsonProductIds = json_encode($productIds);
@@ -851,8 +832,8 @@ public function testHugeJob()
851832
public function testMaxSingleJobSize()
852833
{
853834
// Default value - maxBatchSize = 1000
854-
$this->setConfig('algoliasearch_queue/queue/number_of_job_to_run', 10);
855-
$this->setConfig('algoliasearch_advanced/queue/number_of_element_by_page', 100);
835+
$this->setConfig(ConfigHelper::NUMBER_OF_JOB_TO_RUN, 10);
836+
$this->setConfig(ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE, 100);
856837

857838
$productIds = range(1, 99);
858839
$jsonProductIds = json_encode($productIds);
@@ -889,25 +870,22 @@ public function testMaxSingleJobSize()
889870
$this->assertEquals($pid, $lastJob['pid']);
890871
}
891872

892-
/**
893-
* @magentoDbIsolation disabled
894-
*/
895873
public function testMaxSingleJobsSizeOnProductReindex()
896874
{
897875
$this->resetConfigs([
898-
'algoliasearch_queue/queue/number_of_job_to_run',
899-
'algoliasearch_advanced/queue/number_of_element_by_page',
876+
ConfigHelper::NUMBER_OF_JOB_TO_RUN,
877+
ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE,
900878
]);
901879

902-
$this->setConfig('algoliasearch_queue/queue/active', '1');
880+
$this->setConfig(ConfigHelper::IS_ACTIVE, '1');
903881

904-
$this->setConfig('algoliasearch_queue/queue/number_of_job_to_run', 10);
905-
$this->setConfig('algoliasearch_advanced/queue/number_of_element_by_page', 100);
882+
$this->setConfig(ConfigHelper::NUMBER_OF_JOB_TO_RUN, 10);
883+
$this->setConfig(ConfigHelper::NUMBER_OF_ELEMENT_BY_PAGE, 100);
906884

907885
$this->connection->query('TRUNCATE TABLE algoliasearch_queue');
908886

909887
/** @var Product $indexer */
910-
$indexer = $this->getObjectManager()->create(Product::class);
888+
$indexer = $this->objectManager->get(Product::class);
911889
$indexer->execute(range(1, 512));
912890

913891
$dbJobs = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();

0 commit comments

Comments
 (0)