IndexInfoTest.php 2.97 KB
Newer Older
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
<?php

namespace MongoDB\Tests;

use MongoDB\Model\IndexInfo;
use MongoDB\Tests\TestCase;

class IndexInfoTest extends TestCase
{
    public function testBasicIndex()
    {
        $info = new IndexInfo(array(
            'v' => 1,
            'key' => array('x' => 1),
            'name' => 'x_1',
            'ns' => 'foo.bar',
        ));

        $this->assertSame(1, $info->getVersion());
        $this->assertSame(array('x' => 1), $info->getKey());
        $this->assertSame('x_1', $info->getName());
        $this->assertSame('foo.bar', $info->getNamespace());
        $this->assertFalse($info->isSparse());
        $this->assertFalse($info->isTtl());
        $this->assertFalse($info->isUnique());
    }

    public function testSparseIndex()
    {
        $info = new IndexInfo(array(
            'v' => 1,
            'key' => array('y' => 1),
            'name' => 'y_sparse',
            'ns' => 'foo.bar',
            'sparse' => true,
        ));

        $this->assertSame(1, $info->getVersion());
        $this->assertSame(array('y' => 1), $info->getKey());
        $this->assertSame('y_sparse', $info->getName());
        $this->assertSame('foo.bar', $info->getNamespace());
        $this->assertTrue($info->isSparse());
        $this->assertFalse($info->isTtl());
        $this->assertFalse($info->isUnique());
    }

    public function testUniqueIndex()
    {
        $info = new IndexInfo(array(
            'v' => 1,
            'key' => array('z' => 1),
            'name' => 'z_unique',
            'ns' => 'foo.bar',
            'unique' => true,
        ));

        $this->assertSame(1, $info->getVersion());
        $this->assertSame(array('z' => 1), $info->getKey());
        $this->assertSame('z_unique', $info->getName());
        $this->assertSame('foo.bar', $info->getNamespace());
        $this->assertFalse($info->isSparse());
        $this->assertFalse($info->isTtl());
        $this->assertTrue($info->isUnique());
    }

    public function testTtlIndex()
    {
        $info = new IndexInfo(array(
            'v' => 1,
            'key' => array('z' => 1),
            'name' => 'z_unique',
            'ns' => 'foo.bar',
            'expireAfterSeconds' => 100,
        ));

        $this->assertSame(1, $info->getVersion());
        $this->assertSame(array('z' => 1), $info->getKey());
        $this->assertSame('z_unique', $info->getName());
        $this->assertSame('foo.bar', $info->getNamespace());
        $this->assertFalse($info->isSparse());
        $this->assertTrue($info->isTtl());
        $this->assertFalse($info->isUnique());
        $this->assertTrue(isset($info['expireAfterSeconds']));
        $this->assertSame(100, $info['expireAfterSeconds']);
    }
86 87 88 89 90 91 92 93 94 95 96 97 98

    public function testDebugInfo()
    {
        $expectedInfo = array(
            'v' => 1,
            'key' => array('x' => 1),
            'name' => 'x_1',
            'ns' => 'foo.bar',
        );

        $info = new IndexInfo($expectedInfo);
        $this->assertSame($expectedInfo, $info->__debugInfo());
    }
99
}