summaryrefslogtreecommitdiff
path: root/tests/MetaboxTest.php
blob: 319e4c09ae7144e10409f38ed9008c13ddc29bff (plain)
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
<?php

use PHPUnit\Framework\TestCase;
use PostTypes\Metabox;
use PostTypes\MetaboxField;

class MetaboxTest extends TestCase
{
    /**
     * @var Metabox
     */
    public $metabox;

    /**
     * @var MetaboxField
     */
    public $field;

    /**
     * @inheritDoc
     */
    protected function setUp(): void
    {
        $this->metabox = new Metabox('Test Metabox');
        $this->field = new MetaboxField('test_field');
    }

    /**
     * @test
     */
    public function hasGroupKeyOnInstantiation()
    {
        $this->assertEquals('group_test_metabox', $this->metabox->key);
    }

    /**
     * @test
     */
    public function assignsPostType()
    {
        $this->metabox->posttype(['post', 'page']);

        $expectedLocations = [
            [
                'param' => 'post_type',
                'operator' => '==',
                'value' => 'post'
            ],
            [
                'param' => 'post_type',
                'operator' => '==',
                'value' => 'page'
            ],
        ];

        $this->assertEquals($expectedLocations, $this->metabox->locations);
    }

    /**
     * @test
     */
    public function assignsTaxonomy()
    {
        $this->metabox->taxonomy(['category', 'post_tag']);

        $expectedLocations = [
            [
                'param' => 'taxonomy',
                'operator' => '==',
                'value' => 'category'
            ],
            [
                'param' => 'taxonomy',
                'operator' => '==',
                'value' => 'post_tag'
            ],
        ];

        $this->assertEquals($expectedLocations, $this->metabox->locations);
    }

    /**
     * @test
     */
    public function modifiesAndHoldsPassedField()
    {
        $this->metabox->field($this->field);

        $this->assertEquals($this->field->parent, $this->metabox->key);
        $this->assertEquals($this->metabox->fields[$this->field->key], $this->field);
    }

    /**
     * @test
     */
    public function addsMultipleFieldsAsArray()
    {
        $fields = [
            $this->field,
            $field2 = (new MetaboxField('field_2')),
        ];
        $this->metabox->field($fields);

        $expected = [
            $this->field->key => $this->field,
            $field2->key => $field2,
        ];
        $this->assertEquals($expected, $this->metabox->fields);
    }
}