# Odoo 19 Base Tests Report

**Команда запуска:**
```bash
odoo --test-enable --stop-after-init -d database_name --update base --test-tags base
```

---

## Итог

```
Module base: 23 failures, 26 errors of 979 tests
```

---

## Классификация ошибок

### ✅ Исправлено нами

#### `access_restricted` — ImportError при загрузке тестов

**Файл:** `myaddons/dob/access_restricted/tests/test_fields_get.py`

**Причина:** Функция `name_selection_groups` удалена из `odoo.addons.base.models.res_users` в Odoo 19.

**Исправление:** Заменена локальной функцией `_sel_groups_field_name`, которая генерирует имя поля `sel_groups_X_Y_Z` без импорта из ядра.

---

### ⚠️ Ожидаемое поведение (не баг, не трогаем)

#### `test_user_has_group` — лишняя группа в `all_group_ids`

**Тесты:** `TestHasGroup.test_demote_user`, `TestHasGroup.test_implied_groups`

**Причина:** Модуль `access_apps` добавляет группу `group_allow_apps_only_from_settings` с `implied_ids = base.group_system`. Это расширяет иерархию групп, тест ожидает фиксированное количество групп без учёта сторонних модулей.

**Вывод:** Поведение корректное, тест `base` не учитывает кастомные модули.

---

#### `test_views` — `ViewModifiers.test_17_attrs_groups_validation`

**Причина:** Та же — `access_apps` меняет иерархию `group_system`, что влияет на валидацию групп в представлениях.

**Вывод:** Ожидаемое поведение при установленном `access_apps`.

---

#### `test_ir_model` — `TestIrModelInherit.test_inherit` (`3 != 1`)

**Причина:** Тест ожидает ровно 1 запись в `ir.model.inherit` для тестовой модели, но наши модули (`access_restricted`, `base_user_role`, `web_debranding`, `base_tier_validation`, `access_settings_menu`, `l10n_ru_doc`, `l10n_ru_upd_xml`) расширяют `res.users` и `res.partner`, увеличивая количество записей.

**Вывод:** Ожидаемое поведение при установленных модулях с `_inherit`.

---

### 🔧 Проблемы окружения (Docker / отсутствие зависимостей)

#### `test_cli` — 17 ошибок

**Тесты:** `TestCommand.test_help`, `test_help_subcommand`, `test_shell`, `test_unknown_command`, `test_upgrade_code_*`

**Причина:** CLI-тесты запускают subprocess с TTY, который недоступен внутри Docker-контейнера без флага `-t`.

---

#### `test_acl` + `test_res_partner_merge` — `KeyError: 'employee_ids'`

**Причина:** Модуль `hr` установлен в базе и добавляет поле `employee_ids` на `res.partner`. Domain в ACL-правилах ссылается на это поле, тест не ожидает его наличия.

**Вывод:** Не наша вина, артефакт установленного `hr`.

---

#### `test_profiler` — 2 ошибки

**Тесты:** `TestPerformance.test_traces_async_memory_optimisation`, `TestSyncRecorder.test_sync_recorder`

**Причина:** Инфраструктурные тесты профилировщика, чувствительные к окружению выполнения.

---

#### `test_test_retry` — 8 ошибок

**Причина:** Тесты проверяют механизм retry самого тест-фреймворка. Ожидаемые падения (тесты специально написаны чтобы падать).

---

#### `test_translate` — 9 ошибок

**Тесты:** `TestTranslation.test_110_search_es`, `TestTranslationWrite.*`

**Причина:** Отсутствуют установленные языки (es, fr) в тестовой базе.

---

## Сводная таблица

| Группа тестов | Failures | Errors | Причина | Действие |
|---|---|---|---|---|
| `test_acl` | 0 | 1 | `hr` модуль / `employee_ids` | Не трогаем |
| `test_cli` | 2 | 15 | Нет TTY в Docker | Не трогаем |
| `test_ir_model` | 1 | 0 | Наши `_inherit` расширения | Ожидаемо |
| `test_profiler` | 2 | 0 | Окружение | Не трогаем |
| `test_res_partner_merge` | 0 | 1 | `hr` модуль | Не трогаем |
| `test_test_retry` | 4 | 4 | Намеренные падения фреймворка | Не трогаем |
| `test_translate` | 9 | 0 | Нет языков в БД | Не трогаем |
| `test_user_has_group` | 2 | 0 | `access_apps` implied groups | Ожидаемо |
| `test_views` | 1 | 0 | `access_apps` implied groups | Ожидаемо |
| `access_restricted` (import) | — | 1 | `name_selection_groups` удалена | ✅ Исправлено |

---

