Автор - Даныбаев Санжар
Данный тестовый проект выполнен с учетом всех требований Middle Developer, указанных в тестовом задании.
Затраченное время - 1.5 недели
Разработка проекта разделилась на 4 этапа:
- Планирование
- Дизайн
- Разработка
- Тестирование
Помимо реализации функционала я занимался разработкой оригинального интерфейса с упором на UX.
P.S. Всю документацию, изучение и работу в программировании я веду на английском языке. Поэтому в Трелло, так же как и в самом проекте используется английский в качестве основного языка.
Для отправки уведомлений используетcя сервис Pusher вместо архитектуры Redis
и NodeJS
.
Для данного проекта я создал 2 класса ModelNotification
и AdminNotifications
которые занимаются процессом отправки любых уведомлений.
-
ModelNotification
- данный клас используется в тех случаях, когда наступают события в моделях. -
AdminNotifications
- данный клас используется в тех случаях, когда администратор отправляет сообщение конкретному пользователю, группе пользователей или всем сразу.
-
Для добавления
Telegram уведомлений
, необходимо реализовать функциюsendTelegramNotification
вAdminNotifications
классе и описать логику действий дляcase('telegram')
в оператореswitch
в классеModel Notification
-
Добавление любых других типов уведомлений происходит аналогичным образом
В связи с наличием определенных зависимостей, Ваш Web сервер должен поддерживать PHP-7
.
Должны быть установлены и включены следующие php
модули:
-
php7.0-mbstring
-
php7.0-curl
-
php7.0-dom
-
php7.0-intl
Для их установки введите следующую комманду в терминале
apt-get install php7.0-mbstring php7.0-curl php7.0-dom php7.0-intl
-
Создайте копию проекта
git clone https://github.com/Sanzhar-Danybayev-Excelsior/urban.news cd urban.news
-
Установите Composer, если он не установлен
php -r "copy('https://getcomposer.org/installer','composer-setup.php');"
php composer-setup.php
-
Установите зависимости
php composer.phar install
-
Отредактируйте файл
config/db.php
, вставив данные, указанные ниже. Для данного проекта уже создана пустая база данных.
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=5.101.120.35;dbname=admin_portal',
'username' => 'admin_root',
'password' => '2iZKI0Ru3I',
'charset' => 'utf8',
];
- Запустите все миграции
php yii migrate --migrationPath=@yii/rbac/migrations
php yii migrate
- Выполните следующие команды для добавления разрешений, ролей и правил
php yii assign/addpermissions
php yii assign/addroles
php yii assign/rule
- Заполните базу данных первоночальными данными.
php yii seeder/seed
- Сделайте папку web доступной
sudo chmod -R 777 web/
-
Использование миграций, добавление разрешений, ролей и правил критичны для работы проекта.
-
Для использования email и push уведомлений должно быть интернет соединение
Чтобы запустить unit и functional тесты нужно обновить конфигурационный файл tests/codeception.yml
, обновив значения test_entry_url
, url
, dsn
,user
, password
на те, что используются в запущенном проекте.
Если Вы используете предоставленную базу данных admin_portal
, то значения dsn
, user
, password
не меняются.
config:
test_entry_url: http://news.portal/index.php
modules:
enabled:
- PhpBrowser:
url: 'http://news.portal'
curl:
CURLOPT_RETURNTRANSFER: true
- Db:
dsn: 'mysql:host=5.101.120.35;dbname=admin_portal;charset=utf8'
user: 'admin_root'
password: '2iZKI0Ru3I'
Если Вы используете Linux, то замените '\' на '/' в значении configFile
, находящимся в tests/codeception/functional.suite.yml
class_name: FunctionalTester
modules:
enabled:
- Filesystem
- Yii2
config:
Yii2:
configFile: 'codeception/config/functional.php'
Чтобы запустить оба теста, выполните следующие команды
cd tests
..\vendor\bin\codecept.bat run
Для простоты тестирования, в проекте уже зарегистрированы следующие пользователи:
-
Администратор
Логин - admin
Пароль - qwe123
email - [email protected]
Пароль от почты - qwe123#@!
-
Модератор
Логин - moderator
Пароль - qwe123
email - [email protected]
Пароль от почты - qwe123#@!
-
Читатель
Логин - reader
Пароль - qwe123
email - [email protected]
Пароль от почты - qwe123#@!