@GetMapping("list")
    public Mono<String> getProductsListPage(Model model,
                                            @RequestParam(name = "filter", required = false) String filter) {
        model.addAttribute("filter", filter);
        return this.productsClient.findAllProducts(filter)
                .collectList()
                .doOnNext(products -> model.addAttribute("products", products))
                .thenReturn("customer/products/list");
    }
@Test
    void getProductsListPage_ReturnsProductsListPage() {
        // given
        var model = new ConcurrentModel();

        doReturn(Flux.fromIterable(List.of(
                new Product(1, "Отфильтрованный товар №1", "Описание отфильтрованного товара №1"),
                new Product(2, "Отфильтрованный товар №2", "Описание отфильтрованного товара №2"),
                new Product(3, "Отфильтрованный товар №3", "Описание отфильтрованного товара №3")
        ))).when(this.productsClient).findAllProducts("фильтр");

        // when
        StepVerifier.create(this.controller.getProductsListPage(model, "фильтр"))
                // then
                .expectNext("customer/products/list")
                .verifyComplete();

        assertEquals("фильтр", model.getAttribute("filter"));
        assertEquals(List.of(
                        new Product(1, "Отфильтрованный товар №1", "Описание отфильтрованного товара №1"),
                        new Product(2, "Отфильтрованный товар №2", "Описание отфильтрованного товара №2"),
                        new Product(3, "Отфильтрованный товар №3", "Описание отфильтрованного товара №3")),
                model.getAttribute("products"));

        verify(this.productsClient).findAllProducts("фильтр");
        verifyNoMoreInteractions(this.productsClient);
        verifyNoInteractions(this.favouriteProductsClient);
    }