Решил отредактировать вопрос, до этого было пару догадок почему не проходит валидация, но я вроде как успешно их разрешил. Догадки были следующие: 1) проблемы с выводом (три лишних раза). Данная проблема описана ниже и успешно решена 2) проблема с исключение. Полностью скопировал метод processVideo() (а вернее даже класс, чтобы наверняка) и посмотрел вывод в консоль. Обнаружил, что не бросается исключение если список заказов пуст, поэтому добавил в свой procesVideo() проверку на ноль, если сумарное время рекламы равно нулю
public void processVideos() {
        if (storage.list().isEmpty() || storage.list() == null) {
            StatisticManager.getInstance().register(new NoAvailableVideoEventDataRow(timeSeconds));
            throw new NoVideoAvailableException();
        }
        if (sortList == null) setSortList(); //если лист не инициализирован, то инициализируем
        if (sortList.isEmpty()) {
            if (timeForAdv == 0) throw new NoVideoAvailableException(); //добавил вот здесь
            sortListForShow();
            sysOut();
            return; //если лист уже пуст, то выходим из метода
        }
        if (sortList.get(0).getHits() > 0 &&
                ((sortList.get(0).getDuration() + timeForAdv) <= timeSeconds)) { //если у данного ролика есть показа, то начинае проверку
            timeForAdv = timeForAdv + sortList.get(0).getDuration(); //увеличиваем сумарное время показа рекламы
            amount = amount + sortList.get(0).getAmountPerOneDisplaying(); //увеличиваем сумарную стомость показа всех роликов
            listForShowing.add(sortList.get(0));
        }
        sortList.remove(0);
        if (timeForAdv == timeSeconds) {
            if (timeForAdv == 0) throw new NoVideoAvailableException(); // добавил вот здесь
            sortListForShow();
            sysOut();
            return; //если время показа уже заполнено, то выходим из метода
        }
        processVideos();
    }
3) психанул еще раз и полностью поменял свой класс с методом procesVideo() на класс из готового решения для прохождения валидации... и все равно не проходит валидацию... что на самом деле радует, так как получается, что дело не в этом методе. Буду дальше искать проблему.. Проблема ниже уже решена, оставил просто для истории: не могу понять почему такой вывод: Почему при создании первого заказа выводится три лишних раза "Your order: [FISH] of Tablet{number=1}, cooking time 25min was cooked by Amigo" Скорее всего получается дело в этом, поэтому и не проходит валидацию. Ноги начинают расти в методе public Order createOrder() в классе Tablet в строке 33, потом перекидывает в класс Cook в метод update() и затем в строке 29 перекидывает в класс Waiter в метод update()
FISH, STEAK, SOUP, JUICE, WATER
Выберите блюдо, для выход из меня выбора введите "exit"
FISH
exit
Start cooking - Your order: [FISH] of Tablet{number=1}, cooking time 25min
Your order: [FISH] of Tablet{number=1}, cooking time 25min was cooked by Amigo
Your order: [FISH] of Tablet{number=1}, cooking time 25min was cooked by Amigo
Your order: [FISH] of Tablet{number=1}, cooking time 25min was cooked by Amigo
Third Video is displaying... 200, 333
First Video is displaying... 50, 277
FISH, STEAK, SOUP, JUICE, WATER
Выберите блюдо, для выход из меня выбора введите "exit"
FISH
exit
Start cooking - Your order: [FISH] of Tablet{number=2}, cooking time 25min
Third Video is displaying... 200, 333
First Video is displaying... 50, 277
FISH, STEAK, SOUP, JUICE, WATER
Выберите блюдо, для выход из меня выбора введите "exit"
FISH
exit
Start cooking - Your order: [FISH] of Tablet{number=3}, cooking time 25min
First Video is displaying... 50, 277
Second Video is displaying... 10, 11
21-Jan-2021 - 560.00
Total - 560.00
21-Jan-2021
Amigo - 25 min
Ivan - 25 min
Vasya - 25 min