/** * Tests __debugInfo * * @return void */ public function testDebugInfo() { $entity = new Entity(['foo' => 'bar'], ['markClean' => true]); $entity->somethingElse = 'value'; $entity->accessible('name', true); $entity->virtualProperties(['baz']); $entity->dirty('foo', true); $entity->errors('foo', ['An error']); $entity->invalid('foo', 'a value'); $entity->source('foos'); $result = $entity->__debugInfo(); $expected = ['foo' => 'bar', 'somethingElse' => 'value', '[new]' => true, '[accessible]' => ['*' => true, 'name' => true], '[dirty]' => ['somethingElse' => true, 'foo' => true], '[original]' => [], '[virtual]' => ['baz'], '[errors]' => ['foo' => ['An error']], '[invalid]' => ['foo' => 'a value'], '[repository]' => 'foos']; $this->assertSame($expected, $result); }
/** * Test merge with validation error * * @return void */ public function testMergeWithValidation() { $data = ['title' => 'My title', 'author_id' => 'foo']; $marshall = new Marshaller($this->articles); $entity = new Entity(['id' => 1, 'title' => 'Foo', 'body' => 'My Content', 'author_id' => 1]); $this->assertEmpty($entity->invalid()); $entity->accessible('*', true); $entity->isNew(false); $entity->clean(); $this->articles->validator()->requirePresence('thing', 'update')->requirePresence('id', 'update')->add('author_id', 'numeric', ['rule' => 'numeric'])->add('id', 'numeric', ['rule' => 'numeric', 'on' => 'update']); $expected = clone $entity; $result = $marshall->merge($expected, $data, []); $this->assertSame($expected, $result); $this->assertSame(1, $result->author_id); $this->assertNotEmpty($result->errors('thing')); $this->assertEmpty($result->errors('id')); $this->articles->validator()->requirePresence('thing', 'create'); $result = $marshall->merge($entity, $data, []); $this->assertEmpty($result->errors('thing')); $this->assertSame(['author_id' => 'foo'], $result->invalid()); }