Skip to content
This repository has been archived by the owner on Sep 6, 2023. It is now read-only.

Latest commit

 

History

History
99 lines (83 loc) · 5.57 KB

README.md

File metadata and controls

99 lines (83 loc) · 5.57 KB

Библиотека для генерации тестовых элементов для 1С Битрикс на основе Faker, которая позволит сэкономить время контент-менеджера и программиста для наполнения проекта данными и тестирования.

Библиотека находится в разработке (в будущем возможно изменение методов, параметров и т.п)

В будущем появится генератор не только элементов, но и разделов, элементов Highload блоков, генерация разных цен для разных валют, торговых предложений

Пример использования:

<?php
use GGrach\FishGenerator\Generators\FishGenerator;

\Bitrix\Main\Loader::includeModule('ggrachdev.fishgenerator');

/** 
* В конструктор передаем IBLOCK ID в который нужно сгенерировать тестовый элемент
* При setDebugMode = true в результирующий массив записываются данные для генерации
* При setStrictMode = true выбрасываются Exception'ы если что-то идет не так
* Вторым параметром в конструктор можно передать локализацию faker, по умолчанию ru_RU
* По умолчанию автоматически генерируются: имя, детальное фото, фото анонса, детальный текст + текст анонса, символьный код
* Системными полями считаются: 'NAME', 'ACTIVE', 'CODE', 'IBLOCK_SECTION_ID', 'DETAIL_TEXT', 'PREVIEW_TEXT', 'SORT'
* Если поле является системным, то нужно установки правил генерации ставить * перед ним, если же свойство является дополнительно созданным и к 
* нему нужно обращаться через PROPERTY_... то ничего в качестве префикса ставить не нужно
* В качестве способа генерации можно указывать любые методы библиотеки faker и передать параметры через (param_1, param_2):
* methodGenerate(1, 2, 3, 4, param 1, param 2) - Т.е если параметр строка - то скобки не надо ставить, массивы пока нельзя передавать
*/

// Генерировать в инфоблок с ID = 6
$result = (new FishGenerator(6))->setDebugMode(true)->setStrictMode(true)
->setCategoryPhoto(['technics', 'business', 'city'])
->setGenerationRules([
       /*  
       * Если свойство является системым, то ставим в начале *, если свойство является дополнительным у инфоблока (Т.е PROPERTY_NAME), то не ставим  
       * Если  нужно задать строгое значение свойства при добавлении элементов, то ставим =, можно группировать: *=, =, *, при этом в $ 
       * будет подставлен номер генерируемого     элемента
       */  
       '*=NAME' => 'Тестовый элемент $',
       
       /*  
       * Если свойство является множественным, то передаем массив - 1 элемент массива задаем генератор (так же поддерживаются *, =), 2 элемент массива - кол-во элементов для генерации  
       * Если нужно сгененировать одиночное свойство, то передаем просто строку (в качестве значения)  
       */  
       'PRODUCTION_PHOTOS' => [
           'image', 7
       ],
       
       'IMPLEMENTED_PROCESSES_POINTS' => [
           'randomElement(Тестовый пункт, Еще один пункт, Пункт производства, Новый пункт, Пункт элемента, Тестовый процесс, Процесс производства, Новый процесс производства)', 5
       ],
       
       'IMPLEMENTED_PROCESSES_VALUES' => [
           'realText(100)', 5
       ],
       
       // Свойство PROPERTY_NAME_IN_CATALOG сгенерировать через realText
       'NAME_IN_CATALOG' => 'realText(50)',
       
       // В свойство PROPERTY_URL сгенерировать домен
       'URL' => 'freeEmailDomain'

       '*IBLOCK_SECTION_ID' => 'randomSection'
       
       // Сгенерировать 10 элементов
   ])->generate(10);
   
echo '<pre>';  
print_r($result);  
echo '</pre>';  
?>

Доступные способы для генерации:

  • inn // ИНН
  • name // Имя
  • kpp
  • address
  • realText(100)
  • word
  • city
  • country
  • phoneNumber
  • company
  • email
  • streetAddress
  • date
  • time
  • year
  • jobTitle
  • numberBetween(0, 1000)
  • randomElement(1,2,3,4)
  • lastName
  • firstName
  • latitude
  • longitude
  • hexcolor
  • image
  • image(1000, 500) // Ширина, высота
  • randomSection // Привязать элемент к случайной секции инфоблока
  • ...прочие функции из faker'a