DatabaseInfoTest.php 1.94 KB
Newer Older
1 2
<?php

3
namespace MongoDB\Tests\Model;
4

5
use MongoDB\Exception\BadMethodCallException;
6 7 8 9 10 11 12
use MongoDB\Model\DatabaseInfo;
use MongoDB\Tests\TestCase;

class DatabaseInfoTest extends TestCase
{
    public function testGetName()
    {
Jeremy Mikola's avatar
Jeremy Mikola committed
13
        $info = new DatabaseInfo(['name' => 'foo']);
14 15 16 17 18
        $this->assertSame('foo', $info->getName());
    }

    public function testGetSizeOnDisk()
    {
Jeremy Mikola's avatar
Jeremy Mikola committed
19
        $info = new DatabaseInfo(['sizeOnDisk' => 1048576]);
20 21 22 23 24
        $this->assertSame(1048576, $info->getSizeOnDisk());
    }

    public function testIsEmpty()
    {
Jeremy Mikola's avatar
Jeremy Mikola committed
25
        $info = new DatabaseInfo(['empty' => false]);
26 27
        $this->assertFalse($info->isEmpty());

Jeremy Mikola's avatar
Jeremy Mikola committed
28
        $info = new DatabaseInfo(['empty' => true]);
29 30
        $this->assertTrue($info->isEmpty());
    }
31 32 33

    public function testDebugInfo()
    {
Jeremy Mikola's avatar
Jeremy Mikola committed
34
        $expectedInfo = [
35 36 37
            'name' => 'foo',
            'sizeOnDisk' => 1048576,
            'empty' => false,
Jeremy Mikola's avatar
Jeremy Mikola committed
38
        ];
39 40 41 42

        $info = new DatabaseInfo($expectedInfo);
        $this->assertSame($expectedInfo, $info->__debugInfo());
    }
43 44 45 46 47 48 49 50 51 52 53 54 55

    public function testImplementsArrayAccess()
    {
        $info = new DatabaseInfo(['name' => 'foo']);
        $this->assertInstanceOf('ArrayAccess', $info);
        $this->assertArrayHasKey('name', $info);
        $this->assertSame('foo', $info['name']);
    }

    public function testOffsetSetCannotBeCalled()
    {
        $info = new DatabaseInfo(['name' => 'foo', 'sizeOnDisk' => 1048576, 'empty' => false]);
        $this->expectException(BadMethodCallException::class);
56
        $this->expectExceptionMessage(DatabaseInfo::class . ' is immutable');
57 58 59 60 61 62 63
        $info['empty'] = true;
    }

    public function testOffsetUnsetCannotBeCalled()
    {
        $info = new DatabaseInfo(['name' => 'foo', 'sizeOnDisk' => 1048576, 'empty' => false]);
        $this->expectException(BadMethodCallException::class);
64
        $this->expectExceptionMessage(DatabaseInfo::class . ' is immutable');
65 66
        unset($info['empty']);
    }
67
}