MysqlRelationsTest.php 2.29 KB
Newer Older
Jens Segers's avatar
Jens Segers committed
1 2
<?php

Jens Segers's avatar
Jens Segers committed
3 4
class MysqlRelationsTest extends TestCase
{
Jens Segers's avatar
Jens Segers committed
5 6
    public function setUp()
    {
7 8
        parent::setUp();

Jens Segers's avatar
Jens Segers committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
        MysqlUser::executeSchema();
        MysqlBook::executeSchema();
        MysqlRole::executeSchema();
    }

    public function tearDown()
    {
        MysqlUser::truncate();
        MysqlBook::truncate();
        MysqlRole::truncate();
    }

    public function testMysqlRelations()
    {
        $user = new MysqlUser;
        $this->assertInstanceOf('MysqlUser', $user);
        $this->assertInstanceOf('Illuminate\Database\MySqlConnection', $user->getConnection());

        // Mysql User
        $user->name = "John Doe";
        $user->save();
        $this->assertTrue(is_int($user->id));

        // SQL has many
33
        $book = new Book(['title' => 'Game of Thrones']);
Jens Segers's avatar
Jens Segers committed
34 35 36 37 38 39 40 41 42
        $user->books()->save($book);
        $user = MysqlUser::find($user->id); // refetch
        $this->assertEquals(1, count($user->books));

        // MongoDB belongs to
        $book = $user->books()->first(); // refetch
        $this->assertEquals('John Doe', $book->mysqlAuthor->name);

        // SQL has one
43
        $role = new Role(['type' => 'admin']);
Jens Segers's avatar
Jens Segers committed
44 45 46 47
        $user->role()->save($role);
        $user = MysqlUser::find($user->id); // refetch
        $this->assertEquals('admin', $user->role->type);

Jens Segers's avatar
Jens Segers committed
48
        // MongoDB belongs to
Jens Segers's avatar
Jens Segers committed
49 50 51 52 53 54 55 56 57
        $role = $user->role()->first(); // refetch
        $this->assertEquals('John Doe', $role->mysqlUser->name);

        // MongoDB User
        $user = new User;
        $user->name = "John Doe";
        $user->save();

        // MongoDB has many
58
        $book = new MysqlBook(['title' => 'Game of Thrones']);
Jens Segers's avatar
Jens Segers committed
59 60 61 62 63 64 65 66 67
        $user->mysqlBooks()->save($book);
        $user = User::find($user->_id); // refetch
        $this->assertEquals(1, count($user->mysqlBooks));

        // SQL belongs to
        $book = $user->mysqlBooks()->first(); // refetch
        $this->assertEquals('John Doe', $book->author->name);

        // MongoDB has one
68
        $role = new MysqlRole(['type' => 'admin']);
Jens Segers's avatar
Jens Segers committed
69 70 71 72 73 74 75 76 77
        $user->mysqlRole()->save($role);
        $user = User::find($user->_id); // refetch
        $this->assertEquals('admin', $user->mysqlRole->type);

        // SQL belongs to
        $role = $user->mysqlRole()->first(); // refetch
        $this->assertEquals('John Doe', $role->user->name);
    }
}