File: PurgeBrokenArchiveDataTest.php

package info (click to toggle)
matomo 5.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 95,068 kB
  • sloc: php: 289,425; xml: 127,249; javascript: 112,130; python: 202; sh: 178; makefile: 20; sql: 10
file content (118 lines) | stat: -rw-r--r-- 3,759 bytes parent folder | download
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php

/**
 * Matomo - free/libre analytics platform
 *
 * @link    https://matomo.org
 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

namespace Piwik\Plugins\CoreAdminHome\tests\Integration\Commands;

use Piwik\Archive\ArchivePurger;
use Piwik\Console;
use Piwik\Date;
use Piwik\Plugins\CoreAdminHome\Commands\PurgeBrokenArchiveData;
use Piwik\Tests\Fixtures\RawArchiveDataWithTempAndInvalidated;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Symfony\Component\Console\Tester\ApplicationTester;

/**
 * @group Core
 */
class PurgeBrokenArchiveDataTest extends IntegrationTestCase
{
    /**
     * @var RawArchiveDataWithTempAndInvalidated
     */
    public static $fixture = null;

    /**
     * @var ApplicationTester
     */
    protected $applicationTester = null;

    /**
     * @var Console
     */
    protected $application;

    public function setUp(): void
    {
        parent::setUp();

        Date::$now = Date::factory('2015-02-27')->getTimestamp();

        $archivePurger = new ArchivePurger();
        $archivePurger->setTodayDate(Date::factory('2015-02-27'));
        $archivePurger->setYesterdayDate(Date::factory('2015-02-26'));
        $archivePurger->setNow(Date::factory('2015-02-27 08:00:00')->getTimestamp());

        $this->application = new Console();
        $this->application->setAutoExit(false);
        $this->application->add(new PurgeBrokenArchiveData($archivePurger));

        $this->applicationTester = new ApplicationTester($this->application);

        // assert the test data was setup correctly
        self::$fixture->assertBrokenArchivesNotPurged(self::$fixture->january);
        self::$fixture->assertBrokenArchivesNotPurged(self::$fixture->february);
    }

    public function tearDown(): void
    {
        Date::$now = null;

        parent::tearDown();
    }

    public function testExecutingCommandDefaultDatesPurgesFromExistingMonth()
    {
        $result = $this->applicationTester->run([
            'command' => 'core:purge-broken-archive-data',
        ]);

        $this->assertEquals(0, $result, $this->getCommandDisplayOutputErrorMessage());

        self::$fixture->assertBrokenArchivesWithoutDoneFlagPurged(self::$fixture->february);
        self::$fixture->assertBrokenArchivesNotPurged(self::$fixture->january);
    }

    public function testExecutingCommandSpecificDatesPurgesOnlyInRange()
    {
        $result = $this->applicationTester->run([
            'command' => 'core:purge-broken-archive-data',
            'startMonth' => '2015-01',
            'endMonth' => '2015-02',
        ]);

        $this->assertEquals(0, $result, $this->getCommandDisplayOutputErrorMessage());
        self::$fixture->assertBrokenArchivesWithoutDoneFlagPurged(self::$fixture->january);
        self::$fixture->assertBrokenArchivesWithoutDoneFlagPurged(self::$fixture->february);
    }

    public function testExecutingCommandInvalidDates()
    {
        $result = $this->applicationTester->run([
            'command' => 'core:purge-broken-archive-data',
            'startMonth' => '201-01',
        ]);

        $this->assertEquals(2, $result, $this->getCommandDisplayOutputErrorMessage());

        $result = $this->applicationTester->run([
            'command' => 'core:purge-broken-archive-data',
            'startMonth' => '2015-01',
            'endMonth' => '201-001',
        ]);

        $this->assertEquals(2, $result, $this->getCommandDisplayOutputErrorMessage());
    }

    protected function getCommandDisplayOutputErrorMessage()
    {
        return "Command did not behave as expected. Command output: " . $this->applicationTester->getDisplay();
    }
}

PurgeBrokenArchiveDataTest::$fixture = new RawArchiveDataWithTempAndInvalidated();