Passed
Push — sheepy/introspection ( 69e16c...c6c7ca )
by Marco
05:28
created

DataObjectExtensionTest::testOnAfterDelete()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
c 2
b 0
f 0
dl 0
loc 16
rs 9.8666
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Firesphere\SolrSearch\Tests;
4
5
use Firesphere\SolrSearch\Extensions\DataObjectExtension;
6
use Firesphere\SolrSearch\Models\DirtyClass;
7
use Firesphere\SolrSearch\Services\SolrCoreService;
8
use Firesphere\SolrSearch\Tasks\SolrConfigureTask;
9
use Page;
10
use Psr\Log\NullLogger;
11
use SilverStripe\Control\NullHTTPRequest;
12
use SilverStripe\Dev\SapphireTest;
13
use SilverStripe\ORM\ArrayList;
14
use SilverStripe\Security\DefaultAdminService;
15
16
class DataObjectExtensionTest extends SapphireTest
17
{
18
    public function testGetViewStatus()
19
    {
20
        $page = new Page();
21
        $extension = new DataObjectExtension();
22
        $extension->setOwner($page);
23
24
        $this->assertEquals(['1-null'], $extension->getViewStatus());
25
        $page->ShowInSearch = false;
26
        $this->assertEmpty($extension->getViewStatus());
27
28
        $member = (new DefaultAdminService())->findOrCreateDefaultAdmin();
29
        $groups = $member->Groups();
30
        $group = $groups->first();
31
        $page->CanViewType = 'OnlyTheseUsers';
32
        $page->ShowInSearch = true;
33
        foreach ($groups as $group) {
34
            $page->ViewerGroups()->add($group);
35
        }
36
        $page->write();
37
        $extension->setOwner($page);
38
        DataObjectExtension::$canViewClasses = [];
39
        $this->assertContains('1-' . $group->Members()->first()->ID, $extension->getViewStatus());
40
        $page->delete();
41
42
        $item = new TestObject();
43
        $extension = new DataObjectExtension();
44
        $extension->setOwner($item);
45
46
        $this->assertEquals(['1-null'], $extension->getViewStatus());
47
        $this->assertEquals(['1-null'], DataObjectExtension::$canViewClasses[$item->ClassName]);
48
    }
49
50
    public function testOnAfterDelete()
51
    {
52
        $page = new Page(['Title' => 'Test']);
53
        $id = $page->write();
54
        $extension = new DataObjectExtension();
55
        $extension->setOwner($page);
56
        $service = new SolrCoreService();
57
        $service->setInDebugMode(false);
58
        $service->updateItems(ArrayList::create([$page]), SolrCoreService::CREATE_TYPE);
59
60
        $extension->onAfterDelete();
61
        /** @var DirtyClass $dirty */
62
        $dirty = DirtyClass::get()->filter(['Class' => Page::class, 'Type' => DataObjectExtension::DELETE])->first();
63
        $ids = json_decode($dirty->IDs, 1);
64
        $this->assertArrayNotHasKey($id, array_flip($ids));
65
        $page->delete();
66
    }
67
68
    protected function setUp()
69
    {
70
        $task = new SolrConfigureTask();
71
        $task->setLogger(new NullLogger());
72
        $task->run(new NullHTTPRequest());
73
74
        return parent::setUp();
75
    }
76
}
77