Skip to content

Commit

Permalink
Add integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Chekote committed Jan 12, 2020
1 parent f6530aa commit 11b51fa
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions tests/Integration/Database/EloquentMySqlConnectionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<?php

namespace Illuminate\Database;

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Orchestra\Testbench\TestCase;

class EloquentMySqlConnectionTest extends TestCase
{
const TABLE = 'player';
const FLOAT_COL = 'float_col';
const JSON_COL = 'json_col';

const FLOAT_VAL = 0.2;

protected function getEnvironmentSetUp($app)
{
$app['config']->set('app.debug', 'true');

// Database configuration
$app['config']->set('database.default', 'testbench');

$app['config']->set('database.connections.testbench', [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'username' => 'root',
'password' => '',
'database' => 'forge',
'prefix' => '',
]);
}

protected function setUp(): void
{
parent::setUp();

if (! Schema::hasTable(self::TABLE)) {
Schema::create(self::TABLE, function (Blueprint $table) {
$table->json(self::JSON_COL)->nullable();
$table->float(self::FLOAT_COL)->nullable();
});
}
}

protected function tearDown(): void
{
DB::table(self::TABLE)->truncate();

parent::tearDown();
}

/**
* @dataProvider floatComparisonsDataProvider
*
* @param float $value the value to compare against the JSON value
* @param string $operator the comparison operator to use. e.g. '<', '>', '='
* @param bool $shouldMatch true if the comparison should match, false if not
*/
public function testJsonFloatComparison(float $value, string $operator, bool $shouldMatch): void
{
DB::table(self::TABLE)->insert([self::JSON_COL => '{"rank":'.self::FLOAT_VAL.'}']);
$this->assertSame(
$shouldMatch,
DB::table(self::TABLE)->where(self::JSON_COL . '->rank', $operator, $value)->exists(),
self::JSON_COL . '->rank should ' . ($shouldMatch ? '' : 'not ') . "be $operator $value"
);
}

public function floatComparisonsDataProvider(): array
{
return [
[0.2, '=', true],
[0.2, '>', false],
[0.2, '<', false],
[0.1, '=', false],
[0.1, '<', false],
[0.1, '>', true],
[0.3, '=', false],
[0.3, '<', true],
[0.3, '>', false],
];
}

public function testFloatValueStoredCorrectly(): void
{
DB::table(self::TABLE)->insert([self::FLOAT_COL => self::FLOAT_VAL]);
$this->assertEquals(self::FLOAT_VAL, DB::table(self::TABLE)->value(self::FLOAT_COL));
}
}

0 comments on commit 11b51fa

Please sign in to comment.