Skip to content

Commit 26838dd

Browse files
author
Mohan Ahuja
committed
ACP2E-726: Unable to query bulk operations by search criteria using REST Api
- Test coverage in-progress
1 parent a7f9491 commit 26838dd

File tree

2 files changed

+112
-1
lines changed

2 files changed

+112
-1
lines changed

app/code/Magento/AsynchronousOperations/Model/OperationRepository.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ public function __construct(
8484
$this->operationExtensionFactory = $operationExtension;
8585
$this->collectionProcessor = $collectionProcessor;
8686
$this->logger = $logger;
87-
$this->collectionProcessor = $collectionProcessor;
8887
}
8988

9089
/**
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\AsynchronousOperations\Test\Unit\Model;
9+
10+
use Magento\AsynchronousOperations\Api\Data\OperationExtensionInterfaceFactory;
11+
use Magento\AsynchronousOperations\Model\BulkStatus;
12+
use Magento\AsynchronousOperations\Model\OperationRepository;
13+
use Magento\AsynchronousOperations\Model\ResourceModel\Operation\Collection as OperationCollection;
14+
use Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory as OperationCollectionFactory;
15+
use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
16+
use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
17+
use Magento\Framework\EntityManager\EntityManager;
18+
use Magento\AsynchronousOperations\Api\Data\OperationSearchResultsInterfaceFactory as SearchResultFactory;
19+
use PHPUnit\Framework\MockObject\MockObject;
20+
use PHPUnit\Framework\TestCase;
21+
22+
/**
23+
* Unit tests for Magento\AsynchronousOperations\Model\OperationRepository class.
24+
*
25+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
26+
*/
27+
class OperationRepositoryTest extends TestCase
28+
{
29+
/**
30+
* @var OperationRepository
31+
*/
32+
private OperationRepository $model;
33+
34+
/**
35+
* @var EntityManager|MockObject
36+
*/
37+
private $entityManager;
38+
39+
/**
40+
* @var OperationCollectionFactory|MockObject
41+
*/
42+
private $operationCollectionFactory;
43+
44+
/**
45+
* @var SearchResultFactory|MockObject
46+
*/
47+
private $searchResultFactory;
48+
49+
/**
50+
* @var JoinProcessorInterface|MockObject
51+
*/
52+
private $joinProcessor;
53+
54+
/**
55+
* @var OperationExtensionInterfaceFactory|MockObject
56+
*/
57+
private $operationExtensionFactory;
58+
59+
/**
60+
* @var CollectionProcessorInterface|MockObject
61+
*/
62+
private $collectionProcessor;
63+
64+
/**
65+
* @var \Psr\Log\LoggerInterface
66+
*/
67+
private $logger;
68+
69+
/**
70+
* @inheritdoc
71+
*/
72+
protected function setUp(): void
73+
{
74+
$this->entityManager = $this->createMock(EntityManager::class);
75+
$this->operationCollectionFactory = $this->createPartialMock(OperationCollectionFactory::class, ['create']);
76+
$this->searchResultFactory = $this->createMock(SearchResultFactory::class);
77+
$this->joinProcessor = $this->createMock(JoinProcessorInterface::class);
78+
$this->operationExtensionFactory = $this->createMock(OperationExtensionInterfaceFactory::class);
79+
$this->collectionProcessor = $this->createMock(CollectionProcessorInterface::class);
80+
$this->logger = $this->createMock(\Psr\Log\LoggerInterface::class);
81+
82+
$this->model = new OperationRepository(
83+
$this->entityManager,
84+
$this->operationCollectionFactory,
85+
$this->searchResultFactory,
86+
$this->joinProcessor,
87+
$this->operationExtensionFactory,
88+
$this->collectionProcessor,
89+
$this->logger
90+
);
91+
}
92+
93+
/**
94+
* @param int|null $failureType
95+
* @param array $failureCodes
96+
*
97+
* @return void
98+
* @dataProvider getFailedOperationsByBulkIdDataProvider
99+
*/
100+
public function testGetFailedOperationsByBulkId(?int $failureType, array $failureCodes): void
101+
{
102+
$bulkUuid = 'bulk-1';
103+
$operationCollection = $this->createMock(OperationCollection::class);
104+
$this->operationCollectionFactory->expects($this->once())->method('create')->willReturn($operationCollection);
105+
$operationCollection
106+
->method('addFieldToFilter')
107+
->withConsecutive(['bulk_uuid', $bulkUuid], ['status', $failureCodes])
108+
->willReturnOnConsecutiveCalls($operationCollection, $operationCollection);
109+
$operationCollection->expects($this->once())->method('getItems')->willReturn([$this->operationMock]);
110+
$this->assertEquals([$this->operationMock], $this->model->getFailedOperationsByBulkId($bulkUuid, $failureType));
111+
}
112+
}

0 commit comments

Comments
 (0)