/** * @return array */ protected function getSystemVariableValues() { if (null === $this->systemVariables) { $this->systemVariables = $this->variablesProvider->getSystemVariableValues(); } return $this->systemVariables; }
public function testGetEntityVariableGettersForAllEntities() { $entity1Class = 'TestEntity1'; $entity2Class = 'TestEntity2'; $provider1 = $this->getMock('Oro\\Bundle\\EmailBundle\\Provider\\EntityVariablesProviderInterface'); $provider1->expects($this->once())->method('getVariableGetters')->with(null)->will($this->returnValue([$entity1Class => ['var1' => 'getVar1']])); $provider2 = $this->getMock('Oro\\Bundle\\EmailBundle\\Provider\\EntityVariablesProviderInterface'); $provider2->expects($this->once())->method('getVariableGetters')->with(null)->will($this->returnValue([$entity1Class => ['var2' => 'getVar2']])); $provider3 = $this->getMock('Oro\\Bundle\\EmailBundle\\Provider\\EntityVariablesProviderInterface'); $provider3->expects($this->once())->method('getVariableGetters')->with(null)->will($this->returnValue([$entity2Class => ['var1' => 'getVar1']])); $this->provider->addEntityVariablesProvider($provider1); $this->provider->addEntityVariablesProvider($provider2); $this->provider->addEntityVariablesProvider($provider3); $result = $this->provider->getEntityVariableGetters(); $this->assertEquals([$entity1Class => ['var1' => 'getVar1', 'var2' => 'getVar2'], $entity2Class => ['var1' => 'getVar1']], $result); }
/** * @dataProvider fieldsDataProvider * @param $entityIsUser */ public function testGetTemplateVariables($entityIsUser) { $configId1Mock = $this->getMockForAbstractClass('Oro\\Bundle\\EntityConfigBundle\\Config\\Id\\ConfigIdInterface'); $configId1Mock->expects($this->once())->method('getClassName')->will($this->returnValue(get_class($this->user))); $configId2Mock = $this->getMockForAbstractClass('Oro\\Bundle\\EntityConfigBundle\\Config\\Id\\ConfigIdInterface'); $configId2Mock->expects($this->once())->method('getClassName')->will($this->returnValue(self::TEST_ENTITY_NAME)); $configId3Mock = $this->getMockForAbstractClass('Oro\\Bundle\\EntityConfigBundle\\Config\\Id\\ConfigIdInterface'); $configId3Mock->expects($this->once())->method('getClassName')->will($this->returnValue(self::TEST_NOT_NEEDED_ENTITY_NAME)); $configurableEntities = array($configId1Mock, $configId2Mock, $configId3Mock); $this->configProvider->expects($this->once())->method('getIds')->will($this->returnValue($configurableEntities)); $field1Id = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\Id\\FieldConfigId')->disableOriginalConstructor()->getMock(); $field1Id->expects($this->any())->method('getFieldName')->will($this->returnValue('someCode')); $field1 = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface')->disableOriginalConstructor()->getMockForAbstractClass(); $field2 = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface')->disableOriginalConstructor()->getMockForAbstractClass(); $field1->expects($this->any())->method('is')->with('available_in_template')->will($this->returnValue(true)); $field1->expects($this->any())->method('getId')->will($this->returnValue($field1Id)); $field2->expects($this->any())->method('is')->with('available_in_template')->will($this->returnValue(false)); // fields for entity $fieldsCollection = new ArrayCollection(); $this->configProvider->expects($this->at(1))->method('filter')->will($this->returnCallback(function ($callback) use($fieldsCollection) { return $fieldsCollection->filter($callback)->toArray(); })); $fieldsCollection[] = $field1; $fieldsCollection[] = $field2; if (!$entityIsUser) { $field3Id = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\Id\\FieldConfigId')->disableOriginalConstructor()->getMock(); $field3Id->expects($this->any())->method('getFieldName')->will($this->returnValue('someAnotherCode')); $field3 = clone $field1; $field3->expects($this->atLeastOnce())->method('is')->with('available_in_template')->will($this->returnValue(true)); $field3->expects($this->atLeastOnce())->method('getId')->will($this->returnValue($field3Id)); $this->configProvider->expects($this->at(2))->method('filter')->will($this->returnCallback(function ($callback) use($fieldsCollection, $field3) { $fieldsCollection[] = $field3; return $fieldsCollection->filter($callback)->toArray(); })); $result = $this->provider->getTemplateVariables(self::TEST_ENTITY_NAME); } else { $result = $this->provider->getTemplateVariables(get_class($this->user)); } $this->assertArrayHasKey('user', $result); $this->assertArrayHasKey('entity', $result); $this->assertInternalType('array', $result['user']); $this->assertInternalType('array', $result['entity']); if ($entityIsUser) { $this->assertEquals($result['user'], $result['entity']); } }
/** * Compile email message * * @param EmailTemplateInterface $template * @param array $templateParams * * @return array first element is email subject, second - message */ public function compileMessage(EmailTemplateInterface $template, array $templateParams = array()) { $templateParams['system'] = $this->variablesProvider->getSystemVariableValues(); $subject = $template->getSubject(); $content = $template->getContent(); if (isset($templateParams['entity'])) { $subject = $this->processDateTimeVariables($subject, $templateParams['entity']); $content = $this->processDateTimeVariables($content, $templateParams['entity']); } $templateRendered = $this->render($content, $templateParams); $subjectRendered = $this->render($subject, $templateParams); return array($subjectRendered, $templateRendered); }