public function testBeforeValueRenderProceedManyToOneWithCustomEntity()
 {
     $entity = $this->getMock('\\StdClass');
     $value = $this->getMock('\\StdClass', array('getId'));
     $fieldType = 'manyToOne';
     $field = 'test';
     $id = 42;
     $title = 'test title';
     $expectedClass = 'Oro\\Bundle\\UserBundle\\Entity\\User';
     $routeExpectedClass = 'Oro_Bundle_UserBundle_Entity_User';
     $route = '/test-route/42';
     $value->{$field} = $title;
     $value->expects($this->once())->method('getId')->will($this->returnValue($id));
     $fieldConfig = $this->getManyToOneFieldConfig($fieldType);
     $this->setupManyToOneExtendConfig($field, $expectedClass, $fieldConfig);
     $this->setupManyToOneMetadata($expectedClass);
     $this->setupExtendRelationConfig($expectedClass);
     $this->router->expects($this->once())->method('generate')->with(ExtendFieldValueRenderListener::ENTITY_VIEW_ROUTE, array('entityName' => $routeExpectedClass, 'id' => $id))->will($this->returnValue($route));
     $event = new ValueRenderEvent($entity, $value, $fieldConfig);
     $this->target->beforeValueRender($event);
     $value = $event->getFieldViewValue();
     $this->assertArrayHasKey('title', $value);
     $this->assertEquals($value['title'], $title);
     $this->assertArrayHasKey('link', $value);
     $this->assertEquals($value['link'], $route);
 }
 /**
  * @dataProvider relationsDataProvider
  *
  * @param array        $data
  * @param array|string $expected
  */
 public function testBeforeValueRenderProceedSingleRelations(array $data, $expected)
 {
     $entity = $this->getMock('\\StdClass');
     $value = $this->getMock('\\StdClass', ['getId']);
     $fieldType = 'manyToOne';
     if (!empty($data['field'])) {
         $value->{$data}['field'] = $data['title'];
     }
     $value->expects($this->any())->method('getId')->will($this->returnValue($data['id']));
     if (isset($data['permissionsGranted'])) {
         $this->facade->expects($this->once())->method('isGranted')->with('VIEW', $value)->willReturn(true);
     }
     $fieldConfig = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\Id\\FieldConfigId')->disableOriginalConstructor()->getMock();
     $fieldConfig->expects($this->once())->method('getFieldType')->will($this->returnValue($fieldType));
     $this->setupManyToOneExtendConfigMock($data['field'], $data['class'], $fieldConfig);
     $this->setupManyToOneMetadataStub($data['class']);
     $this->setupExtendRelationConfigStub($data['class'], $data['isCustomEntity']);
     if (isset($data['viewPageRoute'])) {
         $this->setupEntityMetadataStub($data['viewPageRoute'], $data['class']);
         if ($data['routeClassParam']) {
             $this->entityClassNameHelper->expects($this->any())->method('getUrlSafeClassName')->willReturn($data['routeClassParam']);
         }
         $this->setupRouterStub($data['viewPageRoute'], [$data], $data['isCustomEntity'], $data['routeClassParam']);
     }
     $event = new ValueRenderEvent($entity, $value, $fieldConfig);
     $this->target->beforeValueRender($event);
     $actual = $event->getFieldViewValue();
     $this->assertEquals($expected, $actual);
 }