SQLAzureFederationsSynchronizerTest.php 2.01 KB
Newer Older
1
<?php
Sergei Morozov's avatar
Sergei Morozov committed
2

3 4
namespace Doctrine\Tests\DBAL\Sharding\SQLAzure;

5
use Doctrine\DBAL\Sharding\SQLAzure\SQLAzureFederationsSynchronizer;
6

7
class SQLAzureFederationsSynchronizerTest extends AbstractTestCase
8 9 10 11 12
{
    public function testCreateSchema()
    {
        $schema = $this->createShopSchema();

13
        $synchronizer = new SQLAzureFederationsSynchronizer($this->conn, $this->sm);
Sergei Morozov's avatar
Sergei Morozov committed
14
        $sql          = $synchronizer->getCreateSchema($schema);
15

Sergei Morozov's avatar
Sergei Morozov committed
16
        self::assertEquals([
17
            "--Create Federation\nCREATE FEDERATION Orders_Federation (CustID INT  RANGE)",
Sergei Morozov's avatar
Sergei Morozov committed
18 19 20 21 22 23
            'USE FEDERATION Orders_Federation (CustID = 0) WITH RESET, FILTERING = OFF;',
            'CREATE TABLE Products (ProductID INT NOT NULL, SupplierID INT NOT NULL, ProductName NVARCHAR(255) NOT NULL, Price NUMERIC(12, 2) NOT NULL, PRIMARY KEY (ProductID))',
            'CREATE TABLE Customers (CustomerID INT NOT NULL, CompanyName NVARCHAR(255) NOT NULL, FirstName NVARCHAR(255) NOT NULL, LastName NVARCHAR(255) NOT NULL, PRIMARY KEY (CustomerID))',
            'CREATE TABLE Orders (CustomerID INT NOT NULL, OrderID INT NOT NULL, OrderDate DATETIME2(6) NOT NULL, PRIMARY KEY (CustomerID, OrderID))',
            'CREATE TABLE OrderItems (CustomerID INT NOT NULL, OrderID INT NOT NULL, ProductID INT NOT NULL, Quantity INT NOT NULL, PRIMARY KEY (CustomerID, OrderID, ProductID))',
        ], $sql);
24 25 26 27 28 29
    }

    public function testUpdateSchema()
    {
        $schema = $this->createShopSchema();

30
        $synchronizer = new SQLAzureFederationsSynchronizer($this->conn, $this->sm);
31 32 33 34
        $synchronizer->dropAllSchema();

        $sql = $synchronizer->getUpdateSchema($schema);

Sergei Morozov's avatar
Sergei Morozov committed
35
        self::assertEquals([], $sql);
36 37 38 39 40 41
    }

    public function testDropSchema()
    {
        $schema = $this->createShopSchema();

42
        $synchronizer = new SQLAzureFederationsSynchronizer($this->conn, $this->sm);
43 44 45 46
        $synchronizer->dropAllSchema();
        $synchronizer->createSchema($schema);
        $sql = $synchronizer->getDropSchema($schema);

Gabriel Caruso's avatar
Gabriel Caruso committed
47
        self::assertCount(5, $sql);
48 49
    }
}