118 lines
5.8 KiB
ReStructuredText
118 lines
5.8 KiB
ReStructuredText
==========================================
|
||
РуОду — Комиссии агентам: сценарные тесты
|
||
==========================================
|
||
|
||
.. |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
|
||
|
||
Модуль является частью решения РуОду.
|