Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC
This commit is contained in:
117
ruodoo_commission_test_tours/README.rst
Normal file
117
ruodoo_commission_test_tours/README.rst
Normal file
@@ -0,0 +1,117 @@
|
||||
==========================================
|
||||
РуОду — Комиссии агентам: сценарные тесты
|
||||
==========================================
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
|
||||
:alt: License: LGPL-3
|
||||
|
||||
|badge1| |badge2|
|
||||
|
||||
Сквозной функциональный тест модуля ``ruodoo_commission`` на штатном
|
||||
механизме туров Odoo (``web_tour`` + ``HttpCase.start_tour``, headless
|
||||
Chrome). Тест имитирует работу пользователя через интерфейс и после
|
||||
каждого этапа проверяет результат по данным в БД (ORM), а не только по
|
||||
экрану. Предназначен для запуска перед релизом: падает, если бизнес-
|
||||
процесс комиссий сломан.
|
||||
|
||||
Только для тестирования — модуль не несёт бизнес-логики.
|
||||
|
||||
**Содержание**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Что проверяется
|
||||
===============
|
||||
|
||||
Один тестовый метод (``test_commission_full_flow``) последовательно
|
||||
запускает три тура под пользователем «продавец + начисляет комиссии»:
|
||||
|
||||
#. **Заказ и начисление** (``ruodoo_commission_order_tour``):
|
||||
создать заказ, выбрать клиента, добавить строку (товар, количество),
|
||||
выбрать две комиссии в колонке «Комиссии», сохранить, подтвердить,
|
||||
нажать «Начислить комиссию».
|
||||
#. **Смарт-кнопка** (``ruodoo_commission_smart_button_tour``):
|
||||
открыть заказ, нажать смарт-кнопку «Комиссии», увидеть список
|
||||
сформированных счетов поставщика.
|
||||
#. **Отмена** (``ruodoo_commission_cancel_tour``): отменить заказ через
|
||||
интерфейс.
|
||||
|
||||
Проверки по БД между турами:
|
||||
|
||||
* заказ подтверждён; в строке один товар, количество 10, две комиссии;
|
||||
* сумма комиссий строки и «ИТОГО КОМИССИЙ» заказа совпадают (150);
|
||||
* комиссии не входят в итог заказа (``amount_total`` = 1000);
|
||||
* сформированы два счёта поставщика (по числу получателей), оба
|
||||
проведены; суммы (100 и 50) совпадают с суммами комиссий;
|
||||
* журнал и счёт расходов в счетах — из настроек комиссии;
|
||||
* счётчик смарт-кнопки равен 2;
|
||||
* после отмены заказ в состоянии «Отменён», счета комиссий удалены.
|
||||
|
||||
Зависимости
|
||||
===========
|
||||
|
||||
* ``ruodoo_commission`` — тестируемый модуль
|
||||
* ``sale_management`` — заказы на продажу (UI-сценарий)
|
||||
* ``account`` — счета поставщика
|
||||
|
||||
Требования окружения
|
||||
====================
|
||||
|
||||
Туры выполняются в headless-браузере, поэтому в окружении нужны:
|
||||
|
||||
* **Chrome/Chromium** (Odoo ищет ``google-chrome`` / ``chromium`` в
|
||||
``PATH``; путь можно задать переменной ``ODOO_BROWSER_BIN``);
|
||||
* Python-пакет **websocket-client** (иначе тур-тест будет пропущен).
|
||||
|
||||
.. note::
|
||||
|
||||
Если браузер или ``websocket-client`` недоступны, Odoo помечает
|
||||
тест как *skipped*. Пропуск не является успехом — для достоверного
|
||||
прогона перед релизом обеспечьте оба компонента (например, в
|
||||
``Dockerfile`` образа Odoo).
|
||||
|
||||
Запуск
|
||||
======
|
||||
|
||||
::
|
||||
|
||||
odoo -d <test_db> -i ruodoo_commission_test_tours \
|
||||
--test-enable --test-tags=/ruodoo_commission_test_tours \
|
||||
--stop-after-init
|
||||
|
||||
Полезные опции: ``--screenshots=/tmp/commission_tours`` для скриншотов
|
||||
при падении; ``ODOO_BROWSER_BIN=/path/to/chrome`` — явный путь к браузеру.
|
||||
|
||||
Как это устроено
|
||||
================
|
||||
|
||||
* Туры (``static/tests/tours/*.js``) подключены как ассеты в
|
||||
``web.assets_tests`` и зарегистрированы в
|
||||
``registry.category("web_tour.tours")``.
|
||||
* Селекторы — стабильные: по ``name`` полей/кнопок
|
||||
(``button[name=action_accrue_commission]``,
|
||||
``.o_field_many2many_tags[name=commission_ids]``), семантическим
|
||||
классам Odoo и ``:contains`` только для данных, созданных тестом
|
||||
(«Tour Customer», «Tour Commission …»).
|
||||
* Данные (клиент, товар без налогов, два вида комиссий с журналом,
|
||||
счётом расходов и партнёрами-получателями, пользователь с группами)
|
||||
создаются в ``setUpClass`` через ORM. ORM используется только для
|
||||
подготовки и проверок; действия сценария выполняются в UI.
|
||||
|
||||
Авторы
|
||||
======
|
||||
|
||||
* MK.Lab, RuOdoo
|
||||
|
||||
Модуль сопровождается MK.Lab, RuOdoo.
|
||||
|
||||
.. image:: https://ruodoo.ru/logo.png
|
||||
:alt: MK.Lab, RuOdoo
|
||||
:target: https://ruodoo.ru
|
||||
|
||||
Модуль является частью решения РуОду.
|
||||
Reference in New Issue
Block a user