AML Engine - это монтируемый Ruby on Rails движок для соответствия требованиям противодействия отмыванию денег (AML) на криптовалютной биржевой платформе Kassa.
- Ruby 2.7.8 (управляется через rbenv)
- MySQL база данных
- Rails 6.x
Перед запуском тестов необходимо настроить тестовую базу данных:
-
Сброс и создание тестовой базы данных:
bundle exec rake db:drop db:create -
Запуск миграций для разработки и тестовых сред:
# Среда разработки bundle exec rake db:migrate # Тестовая среда RAILS_ENV=test bundle exec rake db:migrate
Запуск тестов из директории AML Engine:
# Запуск всех тестов
bundle exec rspec spec --format documentation
# Запуск конкретных тестовых файлов
bundle exec rspec spec/models/aml/order_spec.rb --format documentation
# Запуск с форматом progress
bundle exec rspec spec --format progress
# Запуск с выводом в формате документации
bundle exec rspec spec --format documentation# Генерация диаграмм workflow для моделей
bundle exec rake doc:workflow MODEL=Order
# Запуск набора тестов по умолчанию
bundle exec rake spec
# Просмотр всех доступных задач
bundle exec rake -TПроблемы с миграциями:
- Проблема:
ActiveRecord::PendingMigrationErrorили "Migrations are pending" - Решение: Выполнить
bundle exec rake db:migrate RAILS_ENV=test
Проблемы с настройкой базы данных:
- Проблема: Ошибки ограничений внешнего ключа во время миграции
- Решение: Полностью сбросить базу данных:
bundle exec rake db:drop db:create db:migrate
Проблемы с enum:
- Проблема: Ошибки
Undeclared attribute type for enum - Решение: Убедиться, что все миграции выполнены, включая миграции полей enum, такие как
Add risk category to clients
Проблемы с зависимостями:
- Проблема: Отсутствуют тестовые файлы
- Решение: Убедиться, что файл
spec/test_files/test.pngсуществует. При необходимости создайте его вручную.
| Пути | Действия |
|---|---|
| new_user_session_path (get), user_sessions_path (post) | логин |
| user_session_path (delete) | логаут |
| new_password_reset_path (get), edit_password_reset_path (get), password_reset_path (put) | первое изменение пароля при регистрации |
| edit_password_path (get), password_path (put) | изменение пароля |
| edit_user_path (get), user_path (put) | редактирование профиля пользователя |
| locale_path (put) | изменение локали пользователя |
AML.configure do |config|
config.allowed_emails = Secrets.aml_allowed_emails
config.mail_from = Settings.mailer.default_from
config.logger = ActiveSupport::Logger.new Rails.root.join './log/aml.log'
end
Rails.application.config.after_initialize do
[
AML::Order, AML::Client, AML::Operator, AML::OrderDocument,
AML::DocumentKindFieldDefinition, AML::DocumentKind, AML::DocumentGroup, AML::DocumentField
].each { |model| model.include Authority::Abilities }
class AML::Operator
has_one :user, class_name: 'User', foreign_key: :aml_operator_id
def email
return "no user for AML::Operator #{id}" unless user.present?
user.email
end
def name
return "no user AML::Operator #{id}" unless user.present?
user.name
end
end
end- current_user
- current_time_zone
Приложение должно иметь объект AppVersion класса XSemVer::SemVer

