ForeignKeyConstraintTest.php 1.49 KB
Newer Older
1 2 3 4 5
<?php

namespace Doctrine\Tests\DBAL\Schema;

use Doctrine\DBAL\Schema\ForeignKeyConstraint;
Sergei Morozov's avatar
Sergei Morozov committed
6
use Doctrine\DBAL\Schema\Index;
Sergei Morozov's avatar
Sergei Morozov committed
7
use PHPUnit\Framework\TestCase;
8

Sergei Morozov's avatar
Sergei Morozov committed
9
class ForeignKeyConstraintTest extends TestCase
10 11
{
    /**
Sergei Morozov's avatar
Sergei Morozov committed
12 13
     * @param string[] $indexColumns
     *
14 15 16 17 18
     * @group DBAL-1062
     * @dataProvider getIntersectsIndexColumnsData
     */
    public function testIntersectsIndexColumns(array $indexColumns, $expectedResult)
    {
Sergei Morozov's avatar
Sergei Morozov committed
19
        $foreignKey = new ForeignKeyConstraint(['foo', 'bar'], 'foreign_table', ['fk_foo', 'fk_bar']);
20

Sergei Morozov's avatar
Sergei Morozov committed
21
        $index = $this->getMockBuilder(Index::class)
22 23 24 25 26 27
            ->disableOriginalConstructor()
            ->getMock();
        $index->expects($this->once())
            ->method('getColumns')
            ->will($this->returnValue($indexColumns));

28
        self::assertSame($expectedResult, $foreignKey->intersectsIndexColumns($index));
29 30 31
    }

    /**
Sergei Morozov's avatar
Sergei Morozov committed
32
     * @return mixed[]
33 34 35
     */
    public function getIntersectsIndexColumnsData()
    {
Sergei Morozov's avatar
Sergei Morozov committed
36 37 38
        return [
            [['baz'], false],
            [['baz', 'bloo'], false],
39

Sergei Morozov's avatar
Sergei Morozov committed
40 41
            [['foo'], true],
            [['bar'], true],
42

Sergei Morozov's avatar
Sergei Morozov committed
43 44
            [['foo', 'bar'], true],
            [['bar', 'foo'], true],
45

Sergei Morozov's avatar
Sergei Morozov committed
46 47
            [['foo', 'baz'], true],
            [['baz', 'foo'], true],
48

Sergei Morozov's avatar
Sergei Morozov committed
49 50
            [['bar', 'baz'], true],
            [['baz', 'bar'], true],
51

Sergei Morozov's avatar
Sergei Morozov committed
52 53 54
            [['foo', 'bloo', 'baz'], true],
            [['bloo', 'foo', 'baz'], true],
            [['bloo', 'baz', 'foo'], true],
55

Sergei Morozov's avatar
Sergei Morozov committed
56 57
            [['FOO'], true],
        ];
58 59
    }
}