Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IVEDU-148] #60

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
4 changes: 2 additions & 2 deletions install/version.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php
$arModuleVersion = [
'VERSION' => '1.1.4',
'VERSION_DATE' => '2024-07-12 11:00:00'
'VERSION' => '1.1.5',
'VERSION_DATE' => '2024-07-19 15:00:00'
];
11 changes: 7 additions & 4 deletions lang/ru/include.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@
$MESS['INTERVOLGA_EDU.COURSE1_LESSON41_ABOUTMENUITEMS_DESCRIPTION'] = 'В меню должны быть разделы: Отзывы, Контакты, Руководство, История';
$MESS['INTERVOLGA_EDU.COURSE1_LESSON41_WASTEINCLUDEAREA'] = 'Проверка лишних включаемых областей';
$MESS['INTERVOLGA_EDU.COURSE1_LESSON41_WASTEINCLUDEAREA_DESCRIPTION'] = 'Должен отсутствовать файл в разделах \'Новости\', \'Каталог\' и \'О компании\'';
$MESS['INTERVOLGA_EDU.COURSE1_LESSON41_LANGFILE'] = 'Проверка lang-файлов шаблона';
$MESS['INTERVOLGA_EDU.COURSE1_LESSON41_LANGFILE_DESCRIPTION'] = 'В файле шаблона не должно быть кириллицы, все языковые фразы должны быть вынесены в соответствующий lang-файл';

$MESS['INTERVOLGA_EDU.COURSE1_LESSON42_REGISTERPAGEOPTION'] = 'Проверка настройки «Страница регистрации»';
$MESS['INTERVOLGA_EDU.COURSE1_LESSON42_REGISTERPAGEOPTION_DESCRIPTION'] = 'Настройка Главного модуля «Страница регистрации (для системного компонента авторизации)» должна содержать относительный путь к разделу регистрации';
$MESS['INTERVOLGA_EDU.COURSE1_LESSON42_EMAIL'] = 'Проверка ссылки на восстановление пароля';
Expand Down Expand Up @@ -238,6 +241,9 @@
$MESS['INTERVOLGA_EDU.COURSE3_LESSON3_SUBQUERY_DESCRIPTION'] = 'CIBlockElement::SubQuery должен использоваться внутри класса компонента';
$MESS['INTERVOLGA_EDU.COURSE3_LESSON3_TEMPLATERESPONDENTS'] = 'Проверка размещения компонента "Респонденты" и содержимого шаблона';
$MESS['INTERVOLGA_EDU.COURSE3_LESSON3_TEMPLATERESPONDENTS_DESCRIPTION'] = 'Компонент должен быть размещен, а все используемые слова/фразы должны быть вынесены в lang-файлы.';
$MESS['INTERVOLGA_EDU.COURSE3_LESSON3_COMPONENTPARAMETERS'] = 'Проверка параметров компонента "Респонденты/Результаты опроса';
$MESS['INTERVOLGA_EDU.COURSE3_LESSON3_COMPONENTPARAMETERS_DESCRIPTION'] = 'В параметрах компонента должны быть выбраны свойсвтва ИБ, согласно тексту задания.';


$MESS['INTERVOLGA_EDU.COURSE3_LESSON4_UF'] = 'Проверка собственного UF-свойства';
$MESS['INTERVOLGA_EDU.COURSE3_LESSON4_UF_DESCRIPTION'] = 'Должен существовать обработчик события OnUserTypeBuildList модуля main для свойства "Привязка к коллекции медиабиблиотеки"';
Expand Down Expand Up @@ -316,9 +322,6 @@
$MESS['INTERVOLGA_EDU.USE_DISPLAY_PROPERTIES_FOR_PROPERTIES'] = 'Файл #FILE# содержит прямое обращение к свойству #CODE#, нужно через #VAR#[\'DISPLAY_PROPERTIES\'][\'#PROPERTY#\']';
$MESS['INTERVOLGA_EDU.USE_DISPLAY_PROPERTIES_FOR_PROPERTIES_ECHO'] = 'Файл #FILE# содержит вывод свойства #CODE#, нужно через #VAR#[\'DISPLAY_PROPERTIES\'][\'#PROPERTY#\'][\'DISPLAY_VALUE\']';
$MESS['INTERVOLGA_EDU.PARTNERS_DIRECTORY'] = 'Партнерам';
$MESS['INTERVOLGA_EDU.CATALOG_DIRECTORY'] = 'Каталог';
$MESS['INTERVOLGA_EDU.COMPANY_DIRECTORY'] = 'О компании';
$MESS['INTERVOLGA_EDU.NEWS_DIRECTORY'] = 'Новости';
$MESS['INTERVOLGA_EDU.REVIEWS_DIRECTORY'] = 'Отзывы';
$MESS['INTERVOLGA_EDU.PROMO_DIRECTORY'] = 'Акции';
$MESS['INTERVOLGA_EDU.REVIEWS_CAROUSEL_TEMPLATE_DIRECTORY'] = 'Шаблон карусели отзывов';
Expand All @@ -329,7 +332,7 @@
$MESS['INTERVOLGA_EDU.REGISTER_PAGE_OPTION_VALID'] = '/path/to/register/';
$MESS['INTERVOLGA_EDU.USER_PASS_REQUEST_TEXT_PROBLEM'] = 'Шаблон письма «Запрос на смену пароля» не найден или пуст, <a href="/bitrix/admin/type_edit.php?EVENT_NAME=USER_PASS_REQUEST" target="_blank">проверьте</a>';
$MESS['INTERVOLGA_EDU.USER_PASS_REQUEST_URL_PROBLEM'] = 'В шаблоне письма «Запрос на смену пароля» нет валидной ссылки';
$MESS['INTERVOLGA_EDU.USER_PASS_REQUEST_PAGE_PROBLEM'] = 'ссылка из письма';
$MESS['INTERVOLGA_EDU.USER_PASS_REQUEST_PAGE_PROBLEM'] = 'Cсылка восстановления пароля из письма является <b>недействительной</b>. Файл #VALUE# - не существует';
$MESS['INTERVOLGA_EDU.IBLOCK_FIELD_PARAM_SHOULD_BE_SET'] = 'Настройка <b>#PARAM#</b> поля <b>#FIELD#</b> должна быть <b>#EXPECT#</b>';
$MESS['INTERVOLGA_EDU.CONTENT_FOUND'] = 'В <a href="#ADMIN_LINK#" target="_blank">#NAME#</a> не должно быть #REGEX_EXPLAIN# (#REASON#)';
$MESS['INTERVOLGA_EDU.ADD_CUSTOM_CORE_CHECK'] = 'В файле #VALUE# нужно использовать короткое подключение ядра: B_PROLOG_INCLUDED === true || die()';
Expand Down
3 changes: 3 additions & 0 deletions lang/ru/lib/tests/course1/lesson41/testlangfile.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?php
$MESS['INTERVOLGA_EDU.COURSE_1_LESSON_41.NOT_FOUND_PHRASE'] = 'В файле #VALUE# остутствует <b>языковая фраза "О магазине"</b>';
$MESS['INTERVOLGA_EDU.COURSE_1_LESSON_41.FOUND_RU_WORDS'] = 'кириллицу. Используйте Loc::getMessage()';
3 changes: 3 additions & 0 deletions lang/ru/lib/tests/course3/lesson3/testcomponentparameters.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?php
$MESS['INTERVOLGA_EDU.COURSE_3_LESSON_3.ADD_PROPS'] = 'Свойства, которые нужно добавить: #PROPS#';
$MESS['INTERVOLGA_EDU.COURSE_3_LESSON_3.DELETE_PROPS'] = 'Свойства, которые нужно удалить: #PROPS#';
34 changes: 34 additions & 0 deletions lib/filestree/template/bottommenutree.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
namespace Intervolga\Edu\FilesTree\Template;

use Bitrix\Main\IO\Directory;
use Bitrix\Main\IO\FileNotFoundException;
use Intervolga\Edu\FilesTree\SimpleComponentTemplate;
use Intervolga\Edu\Util\FileSystem;

class BottomMenuTree extends SimpleComponentTemplate
{
/**
* @return Directory[]
* @throws FileNotFoundException
*/
public function getLangForeignDirs(): array
{
$result = [];
$langDirectory = $this->getLangDir();
if ($langDirectory->isExists()) {
foreach ($langDirectory->getChildren() as $item) {
if ($item->getName() != ('ru'||'en')) {
$result[] = $item;
}
}
}
return $result;
}
public function getLangEnDir(): Directory
{
$langDirectory = $this->getLangDir();

return FileSystem::getInnerDirectory($langDirectory, 'en');
}
}
2 changes: 2 additions & 0 deletions lib/tester.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ protected static function getTestClasses()
\Intervolga\Edu\Tests\Course1\Lesson41\TestBottomMenu::class,
\Intervolga\Edu\Tests\Course1\Lesson41\TestAboutMenuItems::class,
\Intervolga\Edu\Tests\Course1\Lesson41\TestBreadcrumb::class,
\Intervolga\Edu\Tests\Course1\Lesson41\TestLangFile::class,

\Intervolga\Edu\Tests\Course1\Lesson42\TestRegisterPageOption::class,
\Intervolga\Edu\Tests\Course1\Lesson42\TestEmail::class,
Expand Down Expand Up @@ -161,6 +162,7 @@ protected static function getTestClasses()
\Intervolga\Edu\Tests\Course3\Lesson3\TestRespondentIblock::class,
\Intervolga\Edu\Tests\Course3\Lesson3\TestRespondentComponent::class,
\Intervolga\Edu\Tests\Course3\Lesson3\TestTemplateRespondents::class,
\Intervolga\Edu\Tests\Course3\Lesson3\TestComponentParameters::class,

\Intervolga\Edu\Tests\Course3\Lesson4\TestUf::class,
\Intervolga\Edu\Tests\Course3\Lesson4\TestUfClass::class,
Expand Down
31 changes: 29 additions & 2 deletions lib/tests/course1/lesson41/testbottommenu.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<?php
namespace Intervolga\Edu\Tests\Course1\Lesson41;

use Intervolga\Edu\Asserts\Assert;
use Intervolga\Edu\FilesTree\ComponentTemplate;
use Intervolga\Edu\FilesTree\SimpleComponentTemplate;
use Intervolga\Edu\FilesTree\Template\BottomMenuTree;
use Intervolga\Edu\Locator\IO\ComponentTemplate\BottomMenuTemplate;
use Intervolga\Edu\Locator\IO\DirectoryLocator;
use Intervolga\Edu\Tests\BaseComponentTemplateTest;
Expand All @@ -22,6 +23,32 @@ protected static function getLocator()
*/
protected static function getComponentTemplateTree()
{
return SimpleComponentTemplate::class;
return BottomMenuTree::class;
}

protected static function testTemplateTrash(ComponentTemplate $templateDir)
{
parent::testTemplateTrash($templateDir);
static::testTemplateLangEnTrash($templateDir);
}

protected static function testTemplateLangEnTrash(ComponentTemplate $templateDir)
{
if ($templateDir->getLangEnDir()->isExists()) {
foreach ($templateDir->getLangEnDir()->getChildren() as $child) {

if ($child->isDirectory()) {
if (!in_array($child->getName(), static::getKnownDirNames($templateDir))) {
Assert::directoryNotExists($child);
}
} elseif ($child->isFile()) {
if (!in_array($child->getName(), static::getKnownFilesNames($templateDir))) {
Assert::fseNotExists($child);
} else {
static::testTemplateLangRu($templateDir, $child);
}
}
}
}
}
}
38 changes: 38 additions & 0 deletions lib/tests/course1/lesson41/testlangfile.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php
namespace Intervolga\Edu\Tests\Course1\Lesson41;

use Bitrix\Main\IO\File;
use Bitrix\Main\Localization\Loc;
use Intervolga\Edu\Asserts\Assert;
use Intervolga\Edu\Locator\IO\ComponentTemplate\BottomMenuTemplate;
use Intervolga\Edu\Tests\BaseTest;
use Intervolga\Edu\Util\Regex;

class TestLangFile extends BaseTest
{
//Здесь нет смысла строгой проверки файлов, она выполнена в TestBottomMenu
protected static function run()
{
Assert::directoryLocator(BottomMenuTemplate::class);
if (BottomMenuTemplate::find()) {
foreach (BottomMenuTemplate::find()->getChildren() as $child) {
if ($child->isFile()) {
Assert::fileContentNotMatches(
$child,
new Regex('/[а-яё]+/iu',
Loc::getMessage('INTERVOLGA_EDU.COURSE_1_LESSON_41.FOUND_RU_WORDS'))
);
}
}
}
Assert::fseExists($langFile = new File(BottomMenuTemplate::find()->getPath() . '/lang/ru/template.php'));
if ($langFile->isExists()) {
Assert::fileContentMatches($langFile, new Regex('/О магазине/iu', 'О магазине'),
Loc::getMessage('INTERVOLGA_EDU.COURSE_1_LESSON_41.NOT_FOUND_PHRASE'));
}
}
public static function interceptErrors()
{
return true;
}
}
35 changes: 35 additions & 0 deletions lib/tests/course3/lesson3/testcomponentparameters.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php
namespace Intervolga\Edu\Tests\Course3\Lesson3;

use Bitrix\Main\Localization\Loc;
use Intervolga\Edu\Asserts\Assert;
use Intervolga\Edu\Asserts\AssertComponent;
use Intervolga\Edu\Locator\Component\RespondentsComponent;
use Intervolga\Edu\Tests\BaseTest;
use Intervolga\Edu\Util\ComponentParameters;

class TestComponentParameters extends BaseTest
{
const requiredProperties = [
'AGE',
'SALARY',
'GENDER'
];

public static function interceptErrors()
{
return true;
}

protected static function run()
{
AssertComponent::componentLocator($component = RespondentsComponent::class);
if ($component::find()) {
$properties = ComponentParameters::getComponentParameters($component::find()['COMPONENT_NAME'])['PROPERTIES'];
$add = array_diff(static::requiredProperties, $properties);
$delete = array_diff($properties, static::requiredProperties);
Assert::empty($add, Loc::getMessage('INTERVOLGA_EDU.COURSE_3_LESSON_3.ADD_PROPS', ['#PROPS#' => implode(', ', $add)]));
Assert::empty($delete, Loc::getMessage('INTERVOLGA_EDU.COURSE_3_LESSON_3.DELETE_PROPS', ['#PROPS#' => implode(', ', $delete)]));
}
}
}