10 use Magento\Setup\Model\Description\DescriptionSentenceGeneratorFactory;
11 use Magento\Setup\Model\Description\DescriptionParagraphGeneratorFactory;
12 use Magento\Setup\Model\Description\DescriptionGeneratorFactory;
13 use Magento\Setup\Model\DictionaryFactory;
14 use Magento\Setup\Model\SearchTermManagerFactory;
26 private $objectManager;
31 private $fixtureConfig;
36 private $sentenceGeneratorFactory;
41 private $paragraphGeneratorFactory;
46 private $descriptionGeneratorFactory;
51 private $dictionaryFactory;
56 private $searchTermManagerFactory;
72 DescriptionSentenceGeneratorFactory $descriptionSentenceGeneratorFactory =
null,
73 DescriptionParagraphGeneratorFactory $descriptionParagraphGeneratorFactory =
null,
74 DescriptionGeneratorFactory $descriptionGeneratorFactory =
null,
75 DictionaryFactory $dictionaryFactory =
null,
76 SearchTermManagerFactory $searchTermManagerFactory =
null 79 $this->fixtureConfig = $fixtureConfig;
80 $this->sentenceGeneratorFactory = $descriptionSentenceGeneratorFactory
81 ?:
$objectManager->get(DescriptionSentenceGeneratorFactory::class);
82 $this->paragraphGeneratorFactory = $descriptionParagraphGeneratorFactory
83 ?:
$objectManager->get(DescriptionParagraphGeneratorFactory::class);
84 $this->descriptionGeneratorFactory = $descriptionGeneratorFactory
86 $this->dictionaryFactory = $dictionaryFactory
88 $this->searchTermManagerFactory = $searchTermManagerFactory
105 $defaultDescription =
'' 107 $this->updateSearchTermConfig($searchTermsConfig);
108 if (empty($descriptionConfig) || empty($searchTermsConfig)) {
109 return $this->objectManager->create(
110 DefaultDescriptionGenerator::class,
111 [
'defaultDescription' => $defaultDescription]
114 return $this->objectManager->create(\
Magento\
Setup\Model\SearchTermDescriptionGenerator::class, [
115 'descriptionGenerator' => $this->buildDescriptionGenerator($descriptionConfig),
116 'searchTermManager' => $this->buildSearchTermManager($searchTermsConfig, $totalProductsCount)
127 private function updateSearchTermConfig(&$searchTermsConfig)
129 if (
null !== $searchTermsConfig) {
130 $websitesCount = (bool)$this->fixtureConfig->getValue(
'assign_entities_to_all_websites',
false)
132 : (int)$this->fixtureConfig->getValue(
'websites', 1);
135 function (&$searchTerm, $key, $websitesCount) {
136 $searchTerm[
'count'] *= $websitesCount;
149 private function buildDescriptionGenerator(array $descriptionConfig)
151 $sentenceGenerator = $this->sentenceGeneratorFactory->create([
152 'dictionary' => $this->dictionaryFactory->create([
153 'dictionaryFilePath' => realpath(
__DIR__ .
'/../Fixtures/_files/dictionary.csv')
155 'sentenceConfig' => $descriptionConfig[
'paragraphs'][
'sentences']
158 $paragraphGenerator = $this->paragraphGeneratorFactory->create([
159 'sentenceGenerator' => $sentenceGenerator,
160 'paragraphConfig' => $descriptionConfig[
'paragraphs']
163 $descriptionGenerator = $this->descriptionGeneratorFactory->create([
164 'paragraphGenerator' => $paragraphGenerator,
165 'mixinManager' => $this->objectManager->create(\
Magento\Setup\Model\Description\MixinManager::class),
166 'descriptionConfig' => $descriptionConfig
169 return $descriptionGenerator;
179 private function buildSearchTermManager(array $searchTermsConfig, $totalProductsCount)
181 return $this->searchTermManagerFactory->create(
183 'searchTerms' => $searchTermsConfig,
184 'totalProductsCount' => $totalProductsCount
defined('TESTS_BP')||define('TESTS_BP' __DIR__
__construct(ObjectManagerInterface $objectManager, FixtureConfig $fixtureConfig, DescriptionSentenceGeneratorFactory $descriptionSentenceGeneratorFactory=null, DescriptionParagraphGeneratorFactory $descriptionParagraphGeneratorFactory=null, DescriptionGeneratorFactory $descriptionGeneratorFactory=null, DictionaryFactory $dictionaryFactory=null, SearchTermManagerFactory $searchTermManagerFactory=null)
create( $descriptionConfig, $searchTermsConfig, $totalProductsCount, $defaultDescription='')