Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/mageworx/module-open-ai/Test/Unit/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/mageworx/module-open-ai/Test/Unit/QueueProcessManagementTest.php
<?php

namespace MageWorx\OpenAI\Test\Unit;

use Magento\Framework\Serialize\Serializer\Json;
use MageWorx\OpenAI\Api\Data\QueueProcessInterface;
use MageWorx\OpenAI\Api\Data\QueueProcessInterfaceFactory as QueueProcessFactory;
use MageWorx\OpenAI\Model\Queue\QueueProcess;
use MageWorx\OpenAI\Model\Queue\QueueProcessManagement;
use MageWorx\OpenAI\Model\ResourceModel\QueueProcess as QueueProcessResource;
use MageWorx\OpenAI\Model\ResourceModel\QueueProcess\Collection as QueueProcessCollection;
use MageWorx\OpenAI\Model\ResourceModel\QueueProcess\CollectionFactory as QueueProcessCollectionFactory;
use PHPUnit\Framework\TestCase;

class QueueProcessManagementTest extends TestCase
{
    protected $queueProcessManagement;
    protected $queueProcessFactoryMock;
    protected $queueProcessResourceMock;
    protected $queueCollectionFactoryMock;
    protected $jsonSerializerMock;

    protected function setUp(): void
    {
        // Mock dependencies
        $this->queueProcessFactoryMock    = $this->createMock(QueueProcessFactory::class);
        $this->queueProcessResourceMock   = $this->createMock(QueueProcessResource::class);
        $this->queueCollectionFactoryMock = $this->createMock(QueueProcessCollectionFactory::class);
        $this->jsonSerializerMock         = $this->createMock(Json::class);

        // Instantiate the class to be tested
        $this->queueProcessManagement = new QueueProcessManagement(
            $this->queueProcessFactoryMock,
            $this->queueProcessResourceMock,
            $this->queueCollectionFactoryMock,
            $this->jsonSerializerMock
        );
    }

    /**
     * @covers QueueProcessManagement::getExistingProcessByName
     *
     * @return void
     */
    public function testGetExistingProcessByName(): void
    {
        $processName = 'testProcess';
        $processMock = $this->createMock(QueueProcess::class);

        // Set up the factory to return a new process mock
        $this->queueProcessFactoryMock->method('create')->willReturn($processMock);

        $collectionMock = $this->createMock(QueueProcessCollection::class);
        $this->queueCollectionFactoryMock->method('create')->willReturn($collectionMock);
        $collectionMock->expects($this->once())->method('addFieldToFilter')->with('name', $processName)->willReturnSelf();
        $collectionMock->expects($this->once())->method('setPageSize')->with(1)->willReturnSelf();
        $collectionMock->expects($this->once())->method('setCurPage')->with(1)->willReturnSelf();
        $collectionMock->method('getSize')->willReturn(1);
        $collectionMock->method('getFirstItem')->willReturn($processMock);

        // Execute the method
        $result = $this->queueProcessManagement->getExistingProcessByName($processName);

        // Assertions
        $this->assertInstanceOf(QueueProcessInterface::class, $result);
    }

    /**
     * @covers QueueProcessManagement::registerProcess
     *
     * @return void
     */
    public function testRegisterProcess(): void
    {
        $processName    = 'testProcess';
        $processSize    = 10;
        $additionalData = ['key' => 'value'];
        $encodedData    = '{"key":"value"}';

        $processMock = $this->createMock(QueueProcess::class);
        $this->queueProcessFactoryMock->method('create')->willReturn($processMock);

        $collectionMock = $this->createMock(QueueProcessCollection::class);
        $this->queueCollectionFactoryMock->method('create')->willReturn($collectionMock);
        $collectionMock->expects($this->once())->method('addFieldToFilter')->with('name', $processName)->willReturnSelf();
        $collectionMock->expects($this->once())->method('setPageSize')->with(1)->willReturnSelf();
        $collectionMock->expects($this->once())->method('setCurPage')->with(1)->willReturnSelf();
        $collectionMock->method('getSize')->willReturn(0);
        $collectionMock->method('getFirstItem')->willReturn($processMock);

        $this->jsonSerializerMock->expects($this->once())->method('serialize')->with($additionalData)->willReturn($encodedData);

        // No data in empty (new) process entity
        $processMock->expects($this->once())->method('getAdditionalData')->willReturn(null);
        // Empty size in empty (new) process entity
        $processMock->expects($this->once())->method('getSize')->willReturn(0);
        $processMock->expects($this->once())->method('setName')->with($processName)->willReturnSelf();
        $processMock->expects($this->once())->method('setSize')->with($processSize)->willReturnSelf();
        $processMock->expects($this->once())->method('setAdditionalData')->with($encodedData)->willReturnSelf();
        // Do not update processed items when registering process
        $processMock->expects($this->never())->method('setProcessed');

        $this->queueProcessResourceMock->expects($this->once())->method('save')->with($processMock);

        // Execute the method
        $result = $this->queueProcessManagement->registerProcess($processName, $processSize, $additionalData);

        // Assertions
        $this->assertInstanceOf(QueueProcessInterface::class, $result);
    }
}

Spamworldpro Mini