Issues (3627)

app/bundles/PageBundle/Tests/PageTestAbstract.php (1 issue)

1
<?php
2
3
/*
4
 * @copyright   2016 Mautic Contributors. All rights reserved
5
 * @author      Mautic, Inc.
6
 *
7
 * @link        https://mautic.org
8
 *
9
 * @license     GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
10
 */
11
12
namespace Mautic\PageBundle\Tests;
13
14
use Doctrine\ORM\EntityManager;
15
use Mautic\CoreBundle\Helper\CookieHelper;
16
use Mautic\CoreBundle\Helper\CoreParametersHelper;
17
use Mautic\CoreBundle\Helper\IpLookupHelper;
18
use Mautic\CoreBundle\Helper\UrlHelper;
19
use Mautic\CoreBundle\Helper\UserHelper;
20
use Mautic\CoreBundle\Translation\Translator;
21
use Mautic\LeadBundle\Entity\Lead;
22
use Mautic\LeadBundle\Model\CompanyModel;
23
use Mautic\LeadBundle\Model\FieldModel;
24
use Mautic\LeadBundle\Model\LeadModel;
25
use Mautic\LeadBundle\Tracker\ContactTracker;
26
use Mautic\LeadBundle\Tracker\DeviceTracker;
27
use Mautic\PageBundle\Entity\HitRepository;
28
use Mautic\PageBundle\Entity\PageRepository;
29
use Mautic\PageBundle\Model\PageModel;
30
use Mautic\PageBundle\Model\RedirectModel;
31
use Mautic\PageBundle\Model\TrackableModel;
32
use Mautic\QueueBundle\Queue\QueueService;
33
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
34
use Symfony\Component\EventDispatcher\EventDispatcher;
35
36
class PageTestAbstract extends WebTestCase
37
{
38
    protected static $mockId   = 123;
39
    protected static $mockName = 'Mock test name';
40
    protected $mockTrackingId;
41
    protected $container;
42
43
    protected function setUp(): void
44
    {
45
        self::bootKernel();
46
        $this->mockTrackingId = hash('sha1', uniqid(mt_rand(), true));
47
        $this->container      = self::$kernel->getContainer();
48
    }
49
50
    /**
51
     * @return PageModel
52
     */
53
    protected function getPageModel($transliterationEnabled = true)
54
    {
55
        $cookieHelper = $this
56
            ->getMockBuilder(CookieHelper::class)
57
            ->disableOriginalConstructor()
58
            ->getMock();
59
60
        $router = $this->container->get('router');
61
62
        $ipLookupHelper = $this
63
            ->getMockBuilder(IpLookupHelper::class)
64
            ->disableOriginalConstructor()
65
            ->getMock();
66
67
        $leadModel = $this
68
            ->getMockBuilder(LeadModel::class)
69
            ->disableOriginalConstructor()
70
            ->getMock();
71
72
        $leadFieldModel = $this
73
            ->getMockBuilder(FieldModel::class)
74
            ->disableOriginalConstructor()
75
            ->getMock();
76
77
        $redirectModel = $this->getRedirectModel();
78
79
        $companyModel = $this
80
            ->getMockBuilder(CompanyModel::class)
81
            ->disableOriginalConstructor()
82
            ->getMock();
83
84
        $trackableModel = $this
85
            ->getMockBuilder(TrackableModel::class)
86
            ->disableOriginalConstructor()
87
            ->getMock();
88
89
        $dispatcher = $this
90
            ->getMockBuilder(EventDispatcher::class)
91
            ->disableOriginalConstructor()
92
            ->getMock();
93
94
        $translator = $this
95
            ->getMockBuilder(Translator::class)
96
            ->disableOriginalConstructor()
97
            ->getMock();
98
99
        $entityManager = $this
100
            ->getMockBuilder(EntityManager::class)
101
            ->disableOriginalConstructor()
102
            ->getMock();
103
104
        $pageRepository = $this
105
            ->getMockBuilder(PageRepository::class)
106
            ->disableOriginalConstructor()
107
            ->getMock();
108
109
        $coreParametersHelper = $this
110
            ->getMockBuilder(CoreParametersHelper::class)
111
            ->disableOriginalConstructor()
112
            ->getMock();
113
114
        $hitRepository = $this->createMock(HitRepository::class);
115
        $userHelper    = $this->createMock(UserHelper::class);
116
117
        $queueService = $this
118
            ->getMockBuilder(QueueService::class)
119
            ->disableOriginalConstructor()
120
            ->getMock();
121
122
        $contactTracker = $this->createMock(ContactTracker::class);
123
124
        $contactTracker->expects($this
125
            ->any())
126
            ->method('getContact')
127
            ->willReturn($this
128
                ->returnValue(['id' => self::$mockId, 'name' => self::$mockName])
129
            );
130
131
        $queueService->expects($this
132
            ->any())
133
            ->method('isQueueEnabled')
134
            ->will(
135
                $this->returnValue(false)
136
            );
137
138
        $entityManager->expects($this
139
            ->any())
140
            ->method('getRepository')
141
            ->will(
142
                $this->returnValueMap(
143
                    [
144
                        ['MauticPageBundle:Page', $pageRepository],
145
                        ['MauticPageBundle:Hit', $hitRepository],
146
                    ]
147
                )
148
            );
149
150
        $coreParametersHelper->expects($this->any())
151
                ->method('get')
152
                ->with('transliterate_page_title')
153
                ->willReturn($transliterationEnabled);
154
155
        $deviceTrackerMock = $this->createMock(DeviceTracker::class);
156
157
        $pageModel = new PageModel(
158
            $cookieHelper,
159
            $ipLookupHelper,
160
            $leadModel,
161
            $leadFieldModel,
162
            $redirectModel,
163
            $trackableModel,
164
            $queueService,
165
            $companyModel,
166
            $deviceTrackerMock,
167
            $contactTracker,
168
            $coreParametersHelper
169
        );
170
171
        $pageModel->setDispatcher($dispatcher);
172
        $pageModel->setTranslator($translator);
173
        $pageModel->setEntityManager($entityManager);
174
        $pageModel->setRouter($router);
175
        $pageModel->setUserHelper($userHelper);
176
177
        return $pageModel;
178
    }
179
180
    /**
181
     * @return RedirectModel
182
     */
183
    protected function getRedirectModel()
184
    {
185
        $urlHelper = $this
186
            ->getMockBuilder(UrlHelper::class)
187
            ->disableOriginalConstructor()
188
            ->getMock();
189
190
        $mockRedirectModel = $this->getMockBuilder('Mautic\PageBundle\Model\RedirectModel')
191
            ->setConstructorArgs([$urlHelper])
192
            ->setMethods(['createRedirectEntity', 'generateRedirectUrl'])
193
            ->getMock();
194
195
        $mockRedirect = $this->getMockBuilder('Mautic\PageBundle\Entity\Redirect')
196
            ->getMock();
197
198
        $mockRedirectModel->expects($this->any())
199
            ->method('createRedirectEntity')
200
            ->willReturn($mockRedirect);
201
202
        $mockRedirectModel->expects($this->any())
203
            ->method('generateRedirectUrl')
204
            ->willReturn('http://some-url.com');
205
206
        return $mockRedirectModel;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $mockRedirectModel returns the type PHPUnit\Framework\MockObject\MockObject which is incompatible with the documented return type Mautic\PageBundle\Model\RedirectModel.
Loading history...
207
    }
208
}
209