49 lines
3.4 KiB
Markdown
49 lines
3.4 KiB
Markdown
# Spec Delta
|
|
|
|
## MODIFIED Requirements
|
|
|
|
### Requirement: Корзина фото
|
|
Удаление фото SHALL помещать его в корзину (мягкое удаление). Восстановление SHALL возвращать
|
|
фото в его альбом. Окончательное удаление SHALL удалять запись, а объекты хранилища SHALL
|
|
удаляться только когда на них не остаётся ссылок ни в одном альбоме. Окончательное удаление
|
|
SHALL быть доступно и для фото без альбома (например, после удаления альбома).
|
|
|
|
#### Scenario: Удаление в корзину
|
|
- **WHEN** пользователь удаляет фото
|
|
- **THEN** фото пропадает из альбома и появляется в корзине
|
|
|
|
#### Scenario: Восстановление
|
|
- **WHEN** пользователь восстанавливает фото из корзины
|
|
- **THEN** фото возвращается в свой альбом
|
|
|
|
#### Scenario: Окончательное удаление без ссылок
|
|
- **WHEN** пользователь удаляет фото из корзины навсегда, и на те же объекты нет ссылок в других альбомах
|
|
- **THEN** запись и объекты хранилища удаляются
|
|
|
|
#### Scenario: Окончательное удаление при наличии ссылок
|
|
- **WHEN** на объект хранилища ссылается копия в другом альбоме
|
|
- **THEN** запись удаляется, а объект хранилища сохраняется
|
|
|
|
#### Scenario: Окончательное удаление фото без альбома
|
|
- **WHEN** пользователь удаляет навсегда фото из корзины, у которого нет альбома
|
|
- **THEN** запись удаляется, а операция не завершается ошибкой отсутствующего альбома
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: Очистка корзины
|
|
Пользователь SHALL иметь возможность окончательно удалить все элементы корзины одним действием.
|
|
Система SHALL удалять только те элементы, которые пользователь вправе удалить навсегда, и SHALL
|
|
пропускать остальные. Операция SHALL возвращать число удалённых элементов.
|
|
|
|
#### Scenario: Очистка корзины
|
|
- **WHEN** пользователь очищает корзину
|
|
- **THEN** все элементы, которые он вправе удалить навсегда, удаляются
|
|
|
|
#### Scenario: Чужие элементы
|
|
- **WHEN** в корзине есть фото, которые пользователь не вправе удалить навсегда
|
|
- **THEN** они остаются в корзине, а остальные удаляются
|
|
|
|
#### Scenario: Пустая корзина
|
|
- **WHEN** пользователь очищает пустую корзину
|
|
- **THEN** операция завершается успешно, удалив ноль элементов
|