public function testSerialization()
 {
     $data = json_decode(json_encode($this->writer), true);
     $this->assertInternalType('array', $data);
     $this->assertArrayHasKey('id', $data);
     $this->assertSame($this->writer->getId(), $data['id']);
     $this->assertArrayHasKey('type', $data);
     $this->assertSame(Writer::class, $data['type']);
     $this->assertArrayHasKey('name', $data);
     $this->assertSame($this->writer->getName(), $data['name']);
     $this->assertArrayHasKey('birthday', $data);
     $this->assertSame($this->writer->getBirthday()->getTimestamp(), $data['birthday']);
 }
 public function testCopyWithSave()
 {
     $writer_copy = $this->writer->copy(true);
     $this->assertInstanceOf(Writer::class, $writer_copy);
     $this->assertTrue($writer_copy->isLoaded());
     $this->assertNotEquals($this->writer->getId(), $writer_copy->getId());
     foreach ($writer_copy->getFields() as $field) {
         if ($writer_copy->isPrimaryKey($field)) {
             continue;
         }
         $old_writer_value = $this->writer->getFieldValue($field);
         $writer_copy_value = $writer_copy->getFieldValue($field);
         if ($old_writer_value instanceof DateValueInterface && $writer_copy_value instanceof DateValueInterface || $old_writer_value instanceof DateTimeValueInterface && $writer_copy_value instanceof DateTimeValueInterface) {
             $this->assertSame($old_writer_value->getTimestamp(), $writer_copy_value->getTimestamp());
         } else {
             $this->assertSame($old_writer_value, $writer_copy_value);
         }
     }
 }
 /**
  * @expectedException \LogicException
  */
 public function testChangeIdToExistingRecord()
 {
     $chekhov = new Writer($this->connection, $this->pool);
     $chekhov->setName('Anton Chekhov');
     $chekhov->setBirthday(new DateValue('1860-01-29'));
     $chekhov->save();
     $this->assertSame(4, $chekhov->getId());
     $this->assertEquals(1, $this->connection->executeFirstCell('SELECT COUNT(`id`) AS "row_count" FROM `writers` WHERE `id` = ?', 1));
     $this->assertEquals(1, $this->connection->executeFirstCell('SELECT COUNT(`id`) AS "row_count" FROM `writers` WHERE `id` = ?', 4));
     $chekhov->setId(1);
     $chekhov->save();
 }
 public function testPassWhenLoadedObjectsMatch()
 {
     $this->assertTrue($this->writer->is($this->pool->reload(Writer::class, $this->writer->getId())));
 }