Completed
Pull Request — 2.10.x (#3762)
by Benjamin
61:17
created

DependencyOrderCalculatorTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 22
c 1
b 0
f 0
dl 0
loc 39
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testCommitOrdering1() 0 29 1
A setUp() 0 3 1
1
<?php
2
3
namespace Doctrine\Tests\DBAL\Internal;
4
5
use Doctrine\DBAL\Internal\DependencyOrderCalculator;
6
use Doctrine\DBAL\Schema\Table;
7
use Doctrine\Tests\DbalTestCase;
8
9
/**
10
 * Tests of the commit order calculation.
11
 *
12
 * IMPORTANT: When writing tests here consider that a lot of graph constellations
13
 * can have many valid orderings, so you may want to build a graph that has only
14
 * 1 valid order to simplify your tests.
15
 */
16
class DependencyOrderCalculatorTest extends DbalTestCase
17
{
18
    /** @var DependencyOrderCalculator */
19
    private $calculator;
20
21
    protected function setUp() : void
22
    {
23
        $this->calculator = new DependencyOrderCalculator();
24
    }
25
26
    public function testCommitOrdering1() : void
27
    {
28
        $table1 = new Table('table1');
29
        $table2 = new Table('table2');
30
        $table3 = new Table('table3');
31
        $table4 = new Table('table4');
32
        $table5 = new Table('table5');
33
34
        $this->assertFalse($this->calculator->hasNode($table1->getName()));
35
36
        $this->calculator->addNode($table1->getName(), $table1);
37
        $this->calculator->addNode($table2->getName(), $table2);
38
        $this->calculator->addNode($table3->getName(), $table3);
39
        $this->calculator->addNode($table4->getName(), $table4);
40
        $this->calculator->addNode($table5->getName(), $table5);
41
42
        $this->assertTrue($this->calculator->hasNode($table1->getName()));
43
44
        $this->calculator->addDependency($table1->getName(), $table2->getName());
45
        $this->calculator->addDependency($table2->getName(), $table3->getName());
46
        $this->calculator->addDependency($table3->getName(), $table4->getName());
47
        $this->calculator->addDependency($table5->getName(), $table1->getName());
48
49
        $sorted = $this->calculator->sort();
50
51
        // There is only 1 valid ordering for this constellation
52
        $correctOrder = [$table5, $table1, $table2, $table3, $table4];
53
54
        $this->assertSame($correctOrder, $sorted);
55
    }
56
}
57