File size: 2,934 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php

namespace Mautic\CampaignBundle\Tests\Executioner\Result;

use Doctrine\Common\Collections\ArrayCollection;
use Mautic\CampaignBundle\Entity\Event;
use Mautic\CampaignBundle\Entity\LeadEventLog;
use Mautic\CampaignBundle\Executioner\Result\Responses;

class ResponsesTest extends \PHPUnit\Framework\TestCase
{
    public function testExtractingResponsesFromLog(): void
    {
        $actionEvent = $this->createMock(Event::class);
        $actionEvent->method('getEventType')
            ->willReturn(Event::TYPE_ACTION);
        $actionEvent->method('getType')
            ->willReturn('actionEvent');
        $actionEvent->method('getId')
            ->willReturn(1);

        // BC should set response as just test
        $actionLog = $this->createMock(LeadEventLog::class);
        $actionLog->method('getEvent')
            ->willReturn($actionEvent);
        $actionLog->method('getMetadata')
            ->willReturn(['timeline' => 'test']);

        $action2Event = $this->createMock(Event::class);
        $action2Event->method('getEventType')
            ->willReturn(Event::TYPE_ACTION);
        $action2Event->method('getType')
            ->willReturn('action2Event');
        $action2Event->method('getId')
            ->willReturn(2);

        // Response should be full array
        $action2Log = $this->createMock(LeadEventLog::class);
        $action2Log->method('getEvent')
            ->willReturn($action2Event);
        $action2Log->method('getMetadata')
            ->willReturn(['timeline' => 'test', 'something' => 'else']);

        // Response should be full array
        $conditionEvent = $this->createMock(Event::class);
        $conditionEvent->method('getEventType')
            ->willReturn(Event::TYPE_CONDITION);
        $conditionEvent->method('getType')
            ->willReturn('conditionEvent');
        $conditionEvent->method('getId')
            ->willReturn(3);

        $conditionLog = $this->createMock(LeadEventLog::class);
        $conditionLog->method('getEvent')
            ->willReturn($conditionEvent);
        $conditionLog->method('getMetadata')
            ->willReturn(['something' => 'else']);

        $logs = new ArrayCollection([$actionLog, $action2Log, $conditionLog]);

        $responses = new Responses();
        $responses->setFromLogs($logs);

        $actions = [
            'actionEvent'  => [
                1 => 'test',
            ],
            'action2Event' => [
                2 => [
                    'timeline'  => 'test',
                    'something' => 'else',
                ],
            ],
        ];

        $conditions = [
            'conditionEvent' => [
                3 => [
                    'something' => 'else',
                ],
            ],
        ];

        $this->assertEquals($actions, $responses->getActionResponses());
        $this->assertEquals($conditions, $responses->getConditionResponses());
    }
}