Passed
Push — hans/logtests ( 76c086...71695d )
by Simon
06:24 queued 02:27
created

SolrIndexTaskTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Importance

Changes 9
Bugs 0 Features 0
Metric Value
wmc 3
eloc 37
c 9
b 0
f 0
dl 0
loc 65
rs 10
1
<?php
2
3
4
namespace Firesphere\SolrSearch\Tests;
5
6
use Firesphere\PartialUserforms\Tests\TestHelper;
7
use Firesphere\SolrSearch\Compat\SubsitesExtension;
8
use Firesphere\SolrSearch\Extensions\DataObjectExtension;
9
use Firesphere\SolrSearch\Indexes\BaseIndex;
10
use Firesphere\SolrSearch\Tasks\SolrIndexTask;
11
use Psr\Log\LoggerInterface;
12
use SilverStripe\Control\HTTPRequest;
13
use SilverStripe\Core\Injector\Injector;
14
use SilverStripe\Dev\SapphireTest;
15
use SilverStripe\ORM\DataObject;
16
use SilverStripe\SiteConfig\SiteConfig;
17
18
class SolrIndexTaskTest extends SapphireTest
19
{
20
    protected static $fixture_file = '../fixtures/DataResolver.yml';
21
    protected static $extra_dataobjects = [
22
        TestObject::class,
23
        TestPage::class,
24
        TestRelationObject::class,
25
    ];
26
27
    protected static $required_extensions = [
28
        DataObject::class => [DataObjectExtension::class],
29
        BaseIndex::class  => [SubsitesExtension::class],
30
    ];
31
32
    public function setUp()
33
    {
34
        $siteConfig = SiteConfig::current_site_config();
35
        $siteConfig->CanViewType = 'Anyone';
36
        $siteConfig->write();
37
        parent::setUp();
38
    }
39
40
    public function testRun()
41
    {
42
        $getVars = [
43
            'group' => 0,
44
            'index' => 'CircleCITestIndex'
45
        ];
46
        $request = new HTTPRequest('GET', 'dev/tasks/SolrIndexTask', $getVars);
47
48
        /** @var SolrIndexTask $task */
49
        $task = Injector::inst()->get(SolrIndexTask::class);
50
51
        $result = $task->run($request);
52
53
        $this->assertEquals(0, $result);
54
55
        $getVars = [
56
            'group' => 0,
57
            'index' => 'CircleCITestIndex',
58
            'clear' => 1
59
        ];
60
        $request = new HTTPRequest('GET', 'dev/tasks/SolrIndexTask', $getVars);
61
62
        $result = $task->run($request);
63
64
        $this->assertEquals(0, $result);
65
        $getVars = [
66
            'start' => 0,
67
            'index' => 'CircleCITestIndex',
68
        ];
69
        $request = new HTTPRequest('GET', 'dev/tasks/SolrIndexTask', $getVars);
70
71
        $result = $task->run($request);
72
73
        $this->assertEquals(0, $result);
74
    }
75
76
    public function testGetLogger()
77
    {
78
        $task = new SolrIndexTask();
79
80
        $this->assertInstanceOf(LoggerInterface::class, $task->getLogger());
81
        $task->setLogger(null);
82
        $this->assertInstanceOf(LoggerInterface::class, $task->getLogger());
83
    }
84
85
    public function testLogException()
86
    {
87
        ob_start();
88
        $exception = new \Exception('Test exception');
89
        $task = new SolrIndexTask();
90
        TestHelper::invokeMethod($task, 'logException', ['CircleCITestIndex', 2, $exception]);
91
92
        $expected = 'Error indexing core CircleCITestIndex on group 2';
93
        $this->assertContains($expected, ob_get_clean());
94
95
        ob_end_clean();
96
    }
97
}
98