/** * Tests the getFieldStorageDefinitions() method with caching. * * @covers ::getFieldStorageDefinitions */ public function testGetFieldStorageDefinitionsWithCaching() { $field_definition = $this->setUpEntityWithFieldDefinition(TRUE, 'id'); $field_storage_definition = $this->getMock('\\Drupal\\Core\\Field\\FieldStorageDefinitionInterface'); $field_storage_definition->expects($this->any())->method('getName')->will($this->returnValue('field_storage')); $this->moduleHandler->expects($this->any())->method('getImplementations')->will($this->returnValueMap(array(array('entity_field_storage_info', array('example_module')), array('entity_type_build', array())))); $this->moduleHandler->expects($this->once())->method('invoke')->with('example_module')->will($this->returnValue(array('field_storage' => $field_storage_definition))); $expected = array('id' => $field_definition, 'field_storage' => $field_storage_definition); $this->cacheBackend->expects($this->at(0))->method('get')->with('entity_base_field_definitions:test_entity_type:en', FALSE)->will($this->returnValue((object) array('data' => array('id' => $expected['id'])))); $this->cacheBackend->expects($this->at(1))->method('get')->with('entity_field_storage_definitions:test_entity_type:en', FALSE)->will($this->returnValue(FALSE)); $this->cacheBackend->expects($this->at(2))->method('get')->with('entity_type', FALSE)->will($this->returnValue(FALSE)); $this->cacheBackend->expects($this->at(3))->method('set')->with('entity_type'); $this->cacheBackend->expects($this->at(4))->method('set')->with('entity_field_storage_definitions:test_entity_type:en'); $this->cacheBackend->expects($this->at(5))->method('get')->with('entity_base_field_definitions:test_entity_type:en', FALSE)->will($this->returnValue((object) array('data' => array('id' => $expected['id'])))); $this->cacheBackend->expects($this->at(6))->method('get')->with('entity_field_storage_definitions:test_entity_type:en', FALSE)->will($this->returnValue((object) array('data' => $expected))); $this->assertSame($expected, $this->entityManager->getFieldStorageDefinitions('test_entity_type')); $this->entityManager->testClearEntityFieldInfo(); $this->assertSame($expected, $this->entityManager->getFieldStorageDefinitions('test_entity_type')); }
/** * Tests the getFieldStorageDefinitions() method with caching. * * @covers ::getFieldStorageDefinitions */ public function testGetFieldStorageDefinitionsWithCaching() { $field_definition = $this->setUpEntityWithFieldDefinition(TRUE, 'id'); $field_storage_definition = $this->prophesize(FieldStorageDefinitionInterface::class); $field_storage_definition->getName()->willReturn('field_storage'); $definitions = ['field_storage' => $field_storage_definition->reveal()]; $this->moduleHandler->getImplementations('entity_field_storage_info')->willReturn(['example_module']); $this->moduleHandler->invoke('example_module', 'entity_field_storage_info', [$this->entityType])->willReturn($definitions); $this->moduleHandler->alter('entity_field_storage_info', $definitions, $this->entityType)->willReturn(NULL); $expected = array('id' => $field_definition, 'field_storage' => $field_storage_definition->reveal()); $this->cacheBackend->get('entity_base_field_definitions:test_entity_type:en')->willReturn((object) ['data' => ['id' => $expected['id']]])->shouldBeCalledTimes(2); $this->cacheBackend->get('entity_field_storage_definitions:test_entity_type:en')->willReturn(FALSE); $this->cacheBackend->get('entity_type')->willReturn(FALSE); $this->cacheBackend->set('entity_type', Argument::any(), Cache::PERMANENT, ['entity_types'])->shouldBeCalled(); $this->cacheBackend->set('entity_field_storage_definitions:test_entity_type:en', Argument::any(), Cache::PERMANENT, ['entity_types', 'entity_field_info'])->will(function () use($expected) { $this->get('entity_field_storage_definitions:test_entity_type:en')->willReturn((object) ['data' => $expected])->shouldBeCalled(); })->shouldBeCalled(); $this->assertSame($expected, $this->entityManager->getFieldStorageDefinitions('test_entity_type')); $this->entityManager->testClearEntityFieldInfo(); $this->assertSame($expected, $this->entityManager->getFieldStorageDefinitions('test_entity_type')); }