Issues (3627)

Tests/Scheduler/Builder/SchedulerBuilderTest.php (1 issue)

1
<?php
2
3
namespace Mautic\ReportBundle\Tests\Scheduler\Builder;
4
5
use Mautic\ReportBundle\Scheduler\Builder\SchedulerBuilder;
6
use Mautic\ReportBundle\Scheduler\Entity\SchedulerEntity;
7
use Mautic\ReportBundle\Scheduler\Enum\SchedulerEnum;
8
use Mautic\ReportBundle\Scheduler\Exception\InvalidSchedulerException;
9
use Mautic\ReportBundle\Scheduler\Factory\SchedulerTemplateFactory;
10
use Recurr\Recurrence;
11
use Recurr\RecurrenceCollection;
12
13
class SchedulerBuilderTest extends \PHPUnit\Framework\TestCase
14
{
15
    public function testGetNextEvent()
16
    {
17
        $schedulerTemplateFactory = new SchedulerTemplateFactory();
18
        $schedulerBuilder         = new SchedulerBuilder($schedulerTemplateFactory);
19
20
        $schedulerEntity = new SchedulerEntity(true, SchedulerEnum::UNIT_DAILY, null, null);
21
22
        $events = $schedulerBuilder->getNextEvent($schedulerEntity);
23
24
        $this->assertInstanceOf(RecurrenceCollection::class, $events);
25
26
        $event = $events[0];
27
        $this->assertInstanceOf(Recurrence::class, $event);
28
29
        $expectedDate = (new \DateTime())->setTime(0, 0)->modify('+1 day');
30
        $this->assertEquals($expectedDate, $event->getStart());
0 ignored issues
show
The method getStart() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

30
        $this->assertEquals($expectedDate, $event->/** @scrutinizer ignore-call */ getStart());

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
31
    }
32
33
    public function testGetNextEvents()
34
    {
35
        $schedulerTemplateFactory = new SchedulerTemplateFactory();
36
        $schedulerBuilder         = new SchedulerBuilder($schedulerTemplateFactory);
37
38
        $schedulerEntity = new SchedulerEntity(true, SchedulerEnum::UNIT_DAILY, null, null);
39
40
        $events = $schedulerBuilder->getNextEvents($schedulerEntity, 3);
41
42
        $this->assertInstanceOf(RecurrenceCollection::class, $events);
43
44
        $event = $events[0];
45
        $this->assertInstanceOf(Recurrence::class, $event);
46
47
        $expectedDate = (new \DateTime())->setTime(0, 0)->modify('+1 day');
48
        $this->assertEquals($expectedDate, $event->getStart());
49
50
        $event = $events[1];
51
        $expectedDate->modify('+1 day');
52
        $this->assertEquals($expectedDate, $event->getStart());
53
54
        $event = $events[2];
55
        $expectedDate->modify('+1 day');
56
        $this->assertEquals($expectedDate, $event->getStart());
57
    }
58
59
    public function testNoScheduler()
60
    {
61
        $schedulerTemplateFactory = new SchedulerTemplateFactory();
62
        $schedulerBuilder         = new SchedulerBuilder($schedulerTemplateFactory);
63
64
        $SchedulerEntity = new SchedulerEntity(false, SchedulerEnum::UNIT_DAILY, null, null);
65
66
        $this->expectException(InvalidSchedulerException::class);
67
68
        $schedulerBuilder->getNextEvent($SchedulerEntity);
69
    }
70
}
71