Spaces:
No application file
No application file
namespace Mautic\ApiBundle\Tests\Helper; | |
use Mautic\ApiBundle\Helper\BatchIdToEntityHelper; | |
use Mautic\LeadBundle\Entity\Lead; | |
use PHPUnit\Framework\Assert; | |
use PHPUnit\Framework\TestCase; | |
class BatchIdToEntityHelperTest extends TestCase | |
{ | |
public function testIdsAreExtractedFromIdKeyArray(): void | |
{ | |
$parameters = ['ids' => [1, 2, 3]]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
$parameters = ['ids' => [1 => 1, 2 => 2, 3 => 3]]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
} | |
public function testIdsAreExtractedFromIdKeyCSVString(): void | |
{ | |
$parameters = ['ids' => '1,2,3']; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
} | |
public function testIdIsExtractedFromIdKeyWithNumericValue(): void | |
{ | |
$parameters = ['ids' => '12']; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([12], $helper->getIds()); | |
} | |
public function testErrorSetForIdKeyThatsNotRecognized(): void | |
{ | |
$parameters = ['ids' => 'foo']; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([], $helper->getIds()); | |
$this->assertTrue($helper->hasErrors()); | |
$this->assertEquals(['mautic.api.call.id_missing'], $helper->getErrors()); | |
} | |
public function testIdsAreExtractedFromSimpleArray(): void | |
{ | |
$parameters = [1, 2, 3]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
$parameters = [1 => 1, 2 => 2, 3 => 3]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
} | |
public function testIdsAreExtractedFromAssociativeArray(): void | |
{ | |
$parameters = [ | |
['id' => 1, 'foo' => 'bar'], | |
['id' => 2, 'foo' => 'bar'], | |
['id' => 3, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
$parameters = [ | |
1 => ['id' => 1, 'foo' => 'bar'], | |
2 => ['id' => 2, 'foo' => 'bar'], | |
3 => ['id' => 3, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 2, 3], $helper->getIds()); | |
} | |
public function testErrorsSetForAssociativeArrayWhenIdKeyIsNotFound(): void | |
{ | |
$parameters = [ | |
['id' => 1, 'foo' => 'bar'], | |
['foo' => 'bar'], | |
['id' => 3, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$this->assertEquals([1, 3], $helper->getIds()); | |
$this->assertTrue($helper->hasErrors()); | |
$this->assertEquals([1 => 'mautic.api.call.id_missing'], $helper->getErrors()); | |
} | |
public function testOriginalKeyOrderingForIdKeyArray(): void | |
{ | |
$entityMock1 = $this->createMock(Lead::class); | |
$entityMock1->expects($this->once()) | |
->method('getId') | |
->willReturn(1); | |
$entityMock2 = $this->createMock(Lead::class); | |
$entityMock2->expects($this->once()) | |
->method('getId') | |
->willReturn(2); | |
$entityMock4 = $this->createMock(Lead::class); | |
$entityMock4->expects($this->once()) | |
->method('getId') | |
->willReturn(4); | |
// Simulating ID 3 as not found | |
$entities = [$entityMock4, $entityMock2, $entityMock1]; | |
$parameters = ['ids' => [1, 2, 3, 4]]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([0, 1, 2], array_keys($orderedEntities)); | |
$parameters = ['ids' => [1 => 1, 2 => 2, 3 => 3, 4 => 4]]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([1, 2, 4], array_keys($orderedEntities)); | |
} | |
public function testOriginalKeyOrderingForIdKeyCSVString(): void | |
{ | |
$entityMock1 = $this->createMock(Lead::class); | |
$entityMock1->expects($this->never()) | |
->method('getId'); | |
$entityMock2 = $this->createMock(Lead::class); | |
$entityMock2->expects($this->never()) | |
->method('getId'); | |
$entityMock4 = $this->createMock(Lead::class); | |
$entityMock4->expects($this->never()) | |
->method('getId'); | |
// Simulating ID 3 as not found | |
$entities = [$entityMock4, $entityMock2, $entityMock1]; | |
$parameters = ['ids' => '1,2,3,4']; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([0, 1, 2], array_keys($orderedEntities)); | |
} | |
public function testOriginalKeyOrderingForSimpleArray(): void | |
{ | |
$entityMock1 = $this->createMock(Lead::class); | |
$entityMock1->expects($this->once()) | |
->method('getId') | |
->willReturn(1); | |
$entityMock2 = $this->createMock(Lead::class); | |
$entityMock2->expects($this->once()) | |
->method('getId') | |
->willReturn(2); | |
$entityMock4 = $this->createMock(Lead::class); | |
$entityMock4->expects($this->once()) | |
->method('getId') | |
->willReturn(4); | |
// Simulating ID 3 as not found | |
$entities = [$entityMock4, $entityMock2, $entityMock1]; | |
$parameters = [1, 2, 3, 4]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([0, 1, 2], array_keys($orderedEntities)); | |
$parameters = [1 => 1, 2 => 2, 3 => 3, 4 => 4]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([1, 2, 4], array_keys($orderedEntities)); | |
} | |
public function testOriginalKeyOrderingForAssociativeArray(): void | |
{ | |
$entityMock1 = $this->createMock(Lead::class); | |
$entityMock1->expects($this->once()) | |
->method('getId') | |
->willReturn(1); | |
$entityMock2 = $this->createMock(Lead::class); | |
$entityMock2->expects($this->once()) | |
->method('getId') | |
->willReturn(2); | |
$entityMock4 = $this->createMock(Lead::class); | |
$entityMock4->expects($this->once()) | |
->method('getId') | |
->willReturn(4); | |
// Simulating ID 3 as not found | |
$entities = [$entityMock4, $entityMock2, $entityMock1]; | |
$parameters = [ | |
['id' => 1, 'foo' => 'bar'], | |
['id' => 2, 'foo' => 'bar'], | |
['id' => 3, 'foo' => 'bar'], | |
['id' => 4, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([0, 1, 2], array_keys($orderedEntities)); | |
$parameters = [ | |
1 => ['id' => 1, 'foo' => 'bar'], | |
2 => ['id' => 2, 'foo' => 'bar'], | |
3 => ['id' => 3, 'foo' => 'bar'], | |
4 => ['id' => 4, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([1, 2, 4], array_keys($orderedEntities)); | |
} | |
public function testOriginalKeyOrderingForFullAssociativeArray(): void | |
{ | |
$entityMock1 = $this->createMock(Lead::class); | |
$entityMock1 | |
->method('getId') | |
->willReturn(1); | |
$entityMock2 = $this->createMock(Lead::class); | |
$entityMock2 | |
->method('getId') | |
->willReturn(2); | |
$entityMock3 = $this->createMock(Lead::class); | |
$entityMock3 | |
->method('getId') | |
->willReturn(3); | |
$entityMock4 = $this->createMock(Lead::class); | |
$entityMock4 | |
->method('getId') | |
->willReturn(4); | |
$entities = [$entityMock4, $entityMock2, $entityMock1, $entityMock3]; | |
$parameters = [ | |
['id' => 1, 'foo' => 'bar'], | |
['id' => 2, 'foo' => 'bar'], | |
['id' => 3, 'foo' => 'bar'], | |
['id' => 4, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([0, 1, 2, 3], array_keys($orderedEntities)); | |
foreach ($parameters as $key => $contact) { | |
Assert::assertEquals($orderedEntities[$key]->getId(), $entities[$key]->getId()); | |
} | |
$parameters = [ | |
1 => ['id' => 1, 'foo' => 'bar'], | |
2 => ['id' => 2, 'foo' => 'bar'], | |
3 => ['id' => 3, 'foo' => 'bar'], | |
4 => ['id' => 4, 'foo' => 'bar'], | |
]; | |
$helper = new BatchIdToEntityHelper($parameters); | |
$orderedEntities = $helper->orderByOriginalKey($entities); | |
$this->assertEquals([1, 2, 3, 4], array_keys($orderedEntities)); | |
} | |
} | |