async def METHOD_NAME(
    client: TestClient, push_announcements_in_redis: Callable, faker: Faker
):
    assert client.app
    now = arrow.utcnow()
    # redis multiple items
    expected = [
        {
            "id": "Student_Competition_2023",
            "products": ["s4llite", "osparc"],
            "start": now.format(_TEXT_FORMAT),
            "end": now.shift(hours=1).format(_TEXT_FORMAT),
            "title": "Student Competition 2023",
            "description": "foo",
            "link": faker.url(),
            "widgets": ["login", "ribbon"],
        }
    ]
    other_product = {
        "id": "TIP_v2",
        "products": ["tis"],
        "start": now.format(_TEXT_FORMAT),
        "end": now.shift(hours=1).format(_TEXT_FORMAT),
        "title": "TIP v2",
        "description": faker.text(),
        "link": faker.url(),
        "widgets": ["login", "ribbon", "user-menu"],
    }
    expired = deepcopy(expected[0])
    expired.update(
        {
            "id": "Student_Competition_2022",
            "start": now.shift(years=-1).format(_TEXT_FORMAT),
            "end": now.shift(years=-1, hours=1).format(_TEXT_FORMAT),
        }
    )
    invalid = deepcopy(expected[0])
    invalid.update(
        {
            "id": "Invalid_item",
            "start": now.format(),
            "end": now.shift(hours=-1).format(_TEXT_FORMAT),
        }
    )
    await push_announcements_in_redis(
        values=[*expected, other_product, expired, invalid]
    )
    # checks route defined
    url = client.app.router["list_announcements"].url_for()
    # check no announcements
    response = await client.get(f"{url}")
    data, error = await assert_status(response, web.HTTPOk)
    assert error is None
    assert data == expected