Completed
Push — master ( b4e5c2...6db701 )
by Daniel
03:09
created

tests/cms/DMSDocumentAdminTest.php (2 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
class DMSDocumentAdminTest extends FunctionalTest
4
{
5
    protected static $fixture_file = 'DMSDocumentAdminTest.yml';
6
7
    public function setUp()
8
    {
9
        parent::setUp();
10
11
        $this->logInWithPermission('ADMIN');
12
    }
13
14
    /**
15
     * Check that the default "add new" button is gone, and replaced with our customised version of it
16
     */
17
    public function testGridFieldHasCustomisedAddNewButton()
18
    {
19
        $modelAdmin = new DMSDocumentAdmin;
20
        $modelAdmin->init();
21
22
        $form = $modelAdmin->getEditForm();
23
        $gridFieldConfig = $form->Fields()->first()->getConfig();
24
25
        // Our button is an instance of the original, so is returned when asking for the original
26
        $addNewButtons = $gridFieldConfig->getComponentsByType('GridFieldAddNewButton');
27
        foreach ($addNewButtons as $key => $addNewButton) {
28
            if ($addNewButton instanceof DMSGridFieldAddNewButton) {
29
                // Remove our version for testing's sake
30
                $addNewButtons->remove($addNewButton);
31
            }
32
        }
33
34
        $this->assertCount(0, $addNewButtons, 'Original add new button is removed');
0 ignored issues
show
The method assertCount() does not seem to exist on object<DMSDocumentAdminTest>.

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...
35
        $this->assertInstanceOf(
0 ignored issues
show
The method assertInstanceOf() does not seem to exist on object<DMSDocumentAdminTest>.

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...
36
            'DMSGridFieldAddNewButton',
37
            $gridFieldConfig->getComponentByType('DMSGridFieldAddNewButton'),
38
            'Model admin for documents contains customised DMS add new button'
39
        );
40
    }
41
42
    /**
43
     * Quick check to ensure that the ModelAdmin endpoint is working
44
     */
45
    public function testModelAdminEndpointWorks()
46
    {
47
        $this->assertEquals(200, $this->get('admin/documents')->getStatusCode());
48
    }
49
50
    /**
51
     * Check that the document sets GridField has a data column for the parent page title. Here we check for the
52
     * Page title existing in the DOM, since "Page" is guaranteed to exist somewhere else.
53
     */
54
    public function testDocumentSetsGridFieldHasParentPageColumn()
55
    {
56
        $result = (string) $this->get('admin/documents/DMSDocumentSet')->getBody();
57
        $this->assertContains('Home Test Page', $result);
58
        $this->assertContains('About Us Test Page', $result);
59
    }
60
61
    /**
62
     * Checks that the document sets GridField has a data column which links to the DocumentSets tab on
63
     * the actual page in the CMS
64
     */
65
    public function testDocumentSetsGridFieldHasLinkToCMSPageEditor()
66
    {
67
        $result = (string)$this->get('admin/documents/DMSDocumentSet')->getBody();
68
        $this->assertContains(
69
            "<a class='dms-doc-sets-link'",
70
            $result
71
        );
72
    }
73
}
74