Beispiel #1
0
 public function testC()
 {
     $factory = new Factory();
     $mapping = $factory->mapping(['id' => $factory->mapping()->ignored(42), 'username' => $factory->mapping()], function ($id, $username) {
         $this->assertSame(42, $id);
         $this->assertSame('dennis', $username);
     });
     $result = $mapping->apply(['id' => 4, 'username' => 'dennis']);
 }
Beispiel #2
0
 public function testCallUserFunc()
 {
     $factory = new Factory();
     $user = new User('dennis84', 'demo123');
     $handler = $this->getMock('stdclass', ['apply', 'unapply']);
     $handler->expects($this->once())->method('apply')->with($this->equalTo('foo'), $this->equalTo('bar'));
     $handler->expects($this->once())->method('unapply')->with($this->equalTo($user));
     $mapping = $factory->mapping(['username' => $factory->mapping(), 'password' => $factory->mapping()], [$handler, 'apply'], [$handler, 'unapply']);
     $mapping->unapply($user);
     $mapping->apply(['username' => 'foo', 'password' => 'bar']);
 }
Beispiel #3
0
 public function testD()
 {
     $factory = new Factory();
     $mapping = $factory->mapping(['username' => $factory->mapping(), 'password' => $factory->mapping()], function ($username, $password) {
         return new User($username, $password);
     })->verifying('foo', function ($user) {
         $this->assertInstanceOf('Mapped\\Tests\\Fixtures\\User\\User', $user);
         return true;
     });
     $mapping->apply(['username' => 'dennis', 'password' => 'password']);
 }
Beispiel #4
0
 public function testB()
 {
     $factory = new Factory([new \Mapped\Extension\Forms()]);
     $mapping = $factory->mapping(['username' => $factory->mapping()->notEmpty(), 'password' => $factory->mapping()], function ($username, $password) {
         return new User($username, $password);
     });
     $form = $mapping->form();
     $form->bind(['username' => '']);
     $this->assertFalse($form->isValid());
     $this->assertCount(2, $form->getErrors());
     $this->assertCount(1, $form['username']->getErrors());
     $this->assertCount(1, $form['password']->getErrors());
     $this->assertSame('error.not_empty', $form['username']->getErrors()[0]->getMessage());
     $this->assertSame('error.required', $form['password']->getErrors()[0]->getMessage());
 }
Beispiel #5
0
 public function testE()
 {
     $factory = new Factory();
     $mapping = $factory->mapping()->transformTo('stdClass');
     $data = ['username' => 'dennis', 'password' => 'passwd', 'address' => ['street' => 'Foo', 'city' => 'Bar']];
     $result = $mapping->apply($data);
     $user = new \stdClass();
     $user->username = '******';
     $user->password = '******';
     $address = new \stdClass();
     $address->street = 'Foo';
     $address->city = 'Bar';
     $user->address = $address;
     $this->assertEquals($user, $result);
     $result = $mapping->unapply($user);
     $this->assertEquals($data, $result);
 }
Beispiel #6
0
 public function testH()
 {
     $factory = new Factory();
     $mapping = $factory->mapping(['username' => $factory->mapping(), 'password' => $factory->mapping(), 'address' => $factory->mapping(['city' => $factory->mapping(), 'street' => $factory->mapping()])]);
     $result = $mapping->unapply(['username' => 'dennis', 'password' => 'passwd', 'address' => null]);
     $this->assertSame(['username' => 'dennis', 'password' => 'passwd', 'address' => null], $result);
 }
Beispiel #7
0
 private function createNestedMapping()
 {
     $factory = new Factory();
     return $factory->mapping(['username' => $factory->mapping(), 'password' => $factory->mapping(), 'address' => $factory->mapping(['city' => $factory->mapping(), 'street' => $factory->mapping()], function ($city, $street) {
         return new Address($city, $street);
     })->optional()], function ($username, $password, Address $address = null) {
         return new User($username, $password, $address);
     });
 }
Beispiel #8
0
 public function testF()
 {
     $factory = new Factory();
     $mapping = $factory->mapping(['username' => $factory->mapping(), 'password' => $factory->mapping(), 'address' => $factory->mapping(['city' => $factory->mapping(), 'street' => $factory->mapping()], function ($city, $street) {
         return new Address($city, $street);
     })], function ($username, $password, Address $address) {
         return new User($username, $password, $address);
     });
     $result = $mapping->apply(['username' => 'dennis84', 'password' => 'password', 'address' => ['city' => 'Foo', 'street' => 'Bar']]);
     $this->assertInstanceOf('Mapped\\Tests\\Fixtures\\User\\User', $result);
     $this->assertSame('dennis84', $result->username);
     $this->assertSame('password', $result->password);
     $this->assertInstanceOf('Mapped\\Tests\\Fixtures\\User\\Address', $result->address);
     $this->assertSame('Foo', $result->address->city);
     $this->assertSame('Bar', $result->address->street);
 }
 public function testAssertObject()
 {
     $validator = Validation::createValidatorBuilder()->enableAnnotationMapping()->getValidator();
     $factory = new Factory([new \Mapped\Extension\SymfonyValidation($validator)]);
     $mapping = $factory->mapping(['title' => $factory->mapping(), 'tags' => $factory->mapping()->multiple(), 'attributes' => $factory->mapping(['name' => $factory->mapping(), 'value' => $factory->mapping()], function ($name, $value) {
         return new Attribute($name, $value);
     })->multiple()], function ($title, array $tags, array $attrs) {
         return new Post($title, $tags, $attrs);
     })->enableObjectValidation();
     $this->setExpectedException('Mapped\\ValidationException');
     try {
         $mapping->apply(['title' => '', 'tags' => [], 'attributes' => [['name' => '', 'value' => '']]]);
     } catch (ValidationException $e) {
         $errors = $e->getErrors();
         $this->assertSame('not-blank', $errors[0]->getMessage());
         $this->assertSame(['title'], $errors[0]->getPropertyPath());
         $this->assertSame('not-blank', $errors[1]->getMessage());
         $this->assertSame(['attributes', '0', 'name'], $errors[1]->getPropertyPath());
         throw $e;
     }
 }
Beispiel #10
0
 public function testJ()
 {
     $factory = new Factory();
     $mapping = $factory->mapping(['foos' => $factory->mapping(['bars' => $factory->mapping()->multiple()])->multiple()]);
     $data = ['foos' => [['bars' => ['a', 'b']], ['bars' => ['c', 'd']]]];
     $result = $mapping->apply($data);
     $this->assertSame($data, $result);
 }
Beispiel #11
0
 public function testBool()
 {
     $factory = new Factory();
     $mapping = $factory->mapping(['a' => $factory->bool(), 'b' => $factory->bool(), 'c' => $factory->bool(), 'd' => $factory->bool()]);
     $result = $mapping->apply(['a' => true, 'b' => false, 'c' => 'true', 'd' => 'false']);
     $this->assertTrue($result['a']);
     $this->assertFalse($result['b']);
     $this->assertTrue($result['c']);
     $this->assertFalse($result['d']);
 }