<?php

namespace Glmdev\Meta\Tests;

use Glmdev\Meta\Meta;
use Ramsey\Uuid\Uuid;

class MetaTest extends \PHPUnit_Framework_TestCase
{
    public function testReadWrite ()
    {
        $model = Meta::create();

        $model->write('name', 'John');
        $model->write('age', 15);
        $model->write('true', false);

        $model->write([
            'food' => 'taco',
            'old' => 'spice',
            'new' => 1935
        ]);

        $this->assertEquals('John', $model->read('name'));
        $this->assertEquals(15, $model->read('age'));
        $this->assertEquals(false, $model->read('true'));

        $this->assertEquals('taco', $model->read('food'));
        $this->assertEquals('spice', $model->read('old'));
        $this->assertEquals(1935, $model->read('new'));
    }
    
    public function testUuid ()
    {
        $model = Meta::create();
        $uuid = Uuid::uuid4();

        $this->assertTrue($model->hasUuid());
        
        $model->setRawUuid($uuid);
        $this->assertEquals($uuid, $model->getUuid());
    }
    
    public function testUuidQuery ()
    {
        $model = Meta::create([
           'meta' => ['name' => 'Tony']
        ]);

        $queried = Meta::withUuid($model->getUuid())->first();

        $this->assertEquals($model->read('name'), $queried->read('name'));
    }
}