/** * test paramsToRecord() method * * @test */ public function paramsToRecord() { $this->generateComponent(); // No map $result = $this->Api->paramsToRecord(['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**']); $this->assertSame([], $result); // Normal $this->Api->recordMap = ['User' => ['id', 'name', 'email']]; $result = $this->Api->paramsToRecord(['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**']); $this->assertSame(['User' => ['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**']], $result); // Alias $this->Api->recordMap = ['User' => ['id' => 'user_id', 'name' => 'user_name', 'email' => 'user_email']]; $result = $this->Api->paramsToRecord(['user_id' => 1, 'user_name' => 'hiromi', 'user_email' => '*****@*****.**']); $this->assertSame(['User' => ['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**']], $result); // Array map(assumes hasAndBelongsToMany) $this->Api->recordMap = ['User' => ['id', 'name', 'email'], 'Like' => ['likes' => []]]; $params = ['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**', 'likes' => [1, 2, 3]]; $result = $this->Api->paramsToRecord($params); $this->assertSame(['User' => ['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**'], 'Like' => [1, 2, 3]], $result); // Array map with field(assumes hasMany) $this->Api->recordMap['Like'] = ['likes' => ['toy_id']]; $result = $this->Api->paramsToRecord($params); $this->assertSame(['User' => ['id' => 1, 'name' => 'hiromi', 'email' => '*****@*****.**'], 'Like' => [['toy_id' => 1], ['toy_id' => 2], ['toy_id' => 3]]], $result); $this->Api->recordMap['Like'] = ['' => []]; try { $this->Api->paramsToRecord($params); $this->fail('Expected DomainException was not thrown'); } catch (PHPUnit_Framework_AssertionFailedError $e) { throw $e; } catch (Exception $e) { $this->assertInstanceOf('DomainException', $e); } }