ConnectionTest.php 4.17 KB
Newer Older
Jens Segers's avatar
Jens Segers committed
1 2
<?php

Jens Segers's avatar
Jens Segers committed
3 4
class ConnectionTest extends TestCase
{
Jens Segers's avatar
Jens Segers committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    public function testConnection()
    {
        $connection = DB::connection('mongodb');
        $this->assertInstanceOf('Jenssegers\Mongodb\Connection', $connection);
    }

    public function testReconnect()
    {
        $c1 = DB::connection('mongodb');
        $c2 = DB::connection('mongodb');
        $this->assertEquals(spl_object_hash($c1), spl_object_hash($c2));

        $c1 = DB::connection('mongodb');
        DB::purge('mongodb');
        $c2 = DB::connection('mongodb');
        $this->assertNotEquals(spl_object_hash($c1), spl_object_hash($c2));
    }

    public function testDb()
    {
        $connection = DB::connection('mongodb');
Jens Segers's avatar
Jens Segers committed
26
        $this->assertInstanceOf('MongoDB\Database', $connection->getMongoDB());
Jens Segers's avatar
Jens Segers committed
27 28

        $connection = DB::connection('mongodb');
Jens Segers's avatar
Jens Segers committed
29
        $this->assertInstanceOf('MongoDB\Client', $connection->getMongoClient());
Jens Segers's avatar
Jens Segers committed
30 31 32 33 34 35 36 37 38 39 40 41 42 43
    }

    public function testCollection()
    {
        $collection = DB::connection('mongodb')->getCollection('unittest');
        $this->assertInstanceOf('Jenssegers\Mongodb\Collection', $collection);

        $collection = DB::connection('mongodb')->collection('unittests');
        $this->assertInstanceOf('Jenssegers\Mongodb\Query\Builder', $collection);

        $collection = DB::connection('mongodb')->table('unittests');
        $this->assertInstanceOf('Jenssegers\Mongodb\Query\Builder', $collection);
    }

Jens Segers's avatar
Jens Segers committed
44 45 46
    // public function testDynamic()
    // {
    //     $dbs = DB::connection('mongodb')->listCollections();
Gabriel Caruso's avatar
Gabriel Caruso committed
47
    //     $this->assertInternalType('array', $dbs);
Jens Segers's avatar
Jens Segers committed
48
    // }
Jens Segers's avatar
Jens Segers committed
49

Jens Segers's avatar
Jens Segers committed
50 51 52
    // public function testMultipleConnections()
    // {
    //     global $app;
Jens Segers's avatar
Jens Segers committed
53

Jens Segers's avatar
Jens Segers committed
54 55 56
    //     # Add fake host
    //     $db = $app['config']['database.connections']['mongodb'];
    //     $db['host'] = array($db['host'], '1.2.3.4');
Jens Segers's avatar
Jens Segers committed
57

Jens Segers's avatar
Jens Segers committed
58 59
    //     $connection = new Connection($db);
    //     $mongoclient = $connection->getMongoClient();
Jens Segers's avatar
Jens Segers committed
60

Jens Segers's avatar
Jens Segers committed
61
    //     $hosts = $mongoclient->getHosts();
Gabriel Caruso's avatar
Gabriel Caruso committed
62
    //     $this->assertCount(1, $hosts);
Jens Segers's avatar
Jens Segers committed
63
    // }
Jens Segers's avatar
Jens Segers committed
64 65 66 67 68

    public function testQueryLog()
    {
        DB::enableQueryLog();

Gabriel Caruso's avatar
Gabriel Caruso committed
69
        $this->assertCount(0, DB::getQueryLog());
Jens Segers's avatar
Jens Segers committed
70 71

        DB::collection('items')->get();
Gabriel Caruso's avatar
Gabriel Caruso committed
72
        $this->assertCount(1, DB::getQueryLog());
Jens Segers's avatar
Jens Segers committed
73 74

        DB::collection('items')->insert(['name' => 'test']);
Gabriel Caruso's avatar
Gabriel Caruso committed
75
        $this->assertCount(2, DB::getQueryLog());
Jens Segers's avatar
Jens Segers committed
76 77

        DB::collection('items')->count();
Gabriel Caruso's avatar
Gabriel Caruso committed
78
        $this->assertCount(3, DB::getQueryLog());
Jens Segers's avatar
Jens Segers committed
79 80

        DB::collection('items')->where('name', 'test')->update(['name' => 'test']);
Gabriel Caruso's avatar
Gabriel Caruso committed
81
        $this->assertCount(4, DB::getQueryLog());
Jens Segers's avatar
Jens Segers committed
82 83

        DB::collection('items')->where('name', 'test')->delete();
Gabriel Caruso's avatar
Gabriel Caruso committed
84
        $this->assertCount(5, DB::getQueryLog());
Jens Segers's avatar
Jens Segers committed
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
    }

    public function testSchemaBuilder()
    {
        $schema = DB::connection('mongodb')->getSchemaBuilder();
        $this->assertInstanceOf('Jenssegers\Mongodb\Schema\Builder', $schema);
    }

    public function testDriverName()
    {
        $driver = DB::connection('mongodb')->getDriverName();
        $this->assertEquals('mongodb', $driver);
    }

    public function testAuth()
    {
101
        $host = Config::get('database.connections.mongodb.host');
Jens Segers's avatar
Jens Segers committed
102 103
        Config::set('database.connections.mongodb.username', 'foo');
        Config::set('database.connections.mongodb.password', 'bar');
104
        Config::set('database.connections.mongodb.options.database', 'custom');
Jens Segers's avatar
Jens Segers committed
105 106

        $connection = DB::connection('mongodb');
107
        $this->assertEquals('mongodb://' . $host . '/custom', (string) $connection->getMongoClient());
Jens Segers's avatar
Jens Segers committed
108 109
    }

110
    public function testCustomHostAndPort()
Jens Segers's avatar
Jens Segers committed
111
    {
112 113
        Config::set('database.connections.mongodb.host', 'db1');
        Config::set('database.connections.mongodb.port', 27000);
Jens Segers's avatar
Jens Segers committed
114 115

        $connection = DB::connection('mongodb');
116
        $this->assertEquals("mongodb://db1:27000", (string) $connection->getMongoClient());
Jens Segers's avatar
Jens Segers committed
117 118 119 120 121
    }

    public function testHostWithPorts()
    {
        Config::set('database.connections.mongodb.port', 27000);
122
        Config::set('database.connections.mongodb.host', ['db1:27001', 'db2:27002', 'db3:27000']);
Jens Segers's avatar
Jens Segers committed
123 124

        $connection = DB::connection('mongodb');
125
        $this->assertEquals('mongodb://db1:27001,db2:27002,db3:27000', (string) $connection->getMongoClient());
Jens Segers's avatar
Jens Segers committed
126
    }
127
}