summaryrefslogtreecommitdiff
path: root/tests/MetaboxTest.php
blob: 1a1353e20b966a647ea2f379b551a6fb86b70afd (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
<?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 assignsPostTypeOnce()
    {
        $this->metabox->posttype(['post', 'page']);

        $expectedPostTypes = [
            'post' => 'post',
            'page' => 'page',
        ];

        $this->assertEquals($expectedPostTypes, $this->metabox->posttypes);

        $this->metabox->posttype('post');

        $this->assertEquals($expectedPostTypes, $this->metabox->posttypes);
    }

    /**
     * @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);
    }
}