mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-06-28 06:41:43 +00:00
feat: allow filter events by timestamp
This commit is contained in:
@ -29,8 +29,9 @@ def test_event_get(local_client: LocalClient, package_ahriman: Package, mocker:
|
||||
must retrieve events
|
||||
"""
|
||||
event_mock = mocker.patch("ahriman.core.database.SQLite.event_get")
|
||||
local_client.event_get(EventType.PackageUpdated, package_ahriman.base, 1, 2)
|
||||
event_mock.assert_called_once_with(EventType.PackageUpdated, package_ahriman.base, 1, 2, local_client.repository_id)
|
||||
local_client.event_get(EventType.PackageUpdated, package_ahriman.base, from_date=10, to_date=20, limit=1, offset=2)
|
||||
event_mock.assert_called_once_with(EventType.PackageUpdated, package_ahriman.base, 10, 20, 1, 2,
|
||||
local_client.repository_id)
|
||||
|
||||
|
||||
def test_package_changes_get(local_client: LocalClient, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||
|
@ -185,7 +185,7 @@ def test_event_get_filter(web_client: WebClient, mocker: MockerFixture) -> None:
|
||||
|
||||
requests_mock = mocker.patch("ahriman.core.status.web_client.WebClient.make_request", return_value=response_obj)
|
||||
|
||||
web_client.event_get("event", "object", 1, 2)
|
||||
web_client.event_get("event", "object", limit=1, offset=2)
|
||||
requests_mock.assert_called_once_with("GET", pytest.helpers.anyvar(str, True),
|
||||
params=web_client.repository_id.query() + [
|
||||
("limit", "1"),
|
||||
@ -195,6 +195,28 @@ def test_event_get_filter(web_client: WebClient, mocker: MockerFixture) -> None:
|
||||
])
|
||||
|
||||
|
||||
def test_event_get_filter_from_to(web_client: WebClient, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must get events with filter by creation date
|
||||
"""
|
||||
response_obj = requests.Response()
|
||||
response_obj._content = json.dumps(Event("", "").view()).encode("utf8")
|
||||
response_obj.status_code = 200
|
||||
|
||||
requests_mock = mocker.patch("ahriman.core.status.web_client.WebClient.make_request", return_value=response_obj)
|
||||
|
||||
web_client.event_get("event", "object", from_date=1, to_date=2)
|
||||
requests_mock.assert_called_once_with("GET", pytest.helpers.anyvar(str, True),
|
||||
params=web_client.repository_id.query() + [
|
||||
("limit", "-1"),
|
||||
("offset", "0"),
|
||||
("event", "event"),
|
||||
("object_id", "object"),
|
||||
("from_date", "1"),
|
||||
("to_date", "2"),
|
||||
])
|
||||
|
||||
|
||||
def test_event_get_failed(web_client: WebClient, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must suppress any exception happened during events fetch
|
||||
|
@ -51,7 +51,6 @@ async def test_get_with_pagination(client: TestClient) -> None:
|
||||
await client.post("/api/v1/events", json=event1.view())
|
||||
await client.post("/api/v1/events", json=event2.view())
|
||||
request_schema = pytest.helpers.schema_request(EventsView.get, location="querystring")
|
||||
response_schema = pytest.helpers.schema_response(EventsView.get)
|
||||
|
||||
payload = {"limit": 1, "offset": 1}
|
||||
assert not request_schema.validate(payload)
|
||||
@ -59,8 +58,25 @@ async def test_get_with_pagination(client: TestClient) -> None:
|
||||
assert response.status == 200
|
||||
|
||||
json = await response.json()
|
||||
assert not response_schema.validate(json, many=True)
|
||||
assert [Event.from_json(event) for event in json] == [event1]
|
||||
|
||||
|
||||
async def test_get_with_filter(client: TestClient) -> None:
|
||||
"""
|
||||
must get events with filter by creation date
|
||||
"""
|
||||
event1 = Event("event1", "object1", "message", key="value", created=1)
|
||||
event2 = Event("event2", "object2", created=2)
|
||||
await client.post("/api/v1/events", json=event1.view())
|
||||
await client.post("/api/v1/events", json=event2.view())
|
||||
request_schema = pytest.helpers.schema_request(EventsView.get, location="querystring")
|
||||
|
||||
payload = {"from_date": 1, "to_date": 2}
|
||||
assert not request_schema.validate(payload)
|
||||
response = await client.get("/api/v1/events", params=payload)
|
||||
assert response.status == 200
|
||||
|
||||
json = await response.json()
|
||||
assert [Event.from_json(event) for event in json] == [event1]
|
||||
|
||||
|
||||
@ -78,6 +94,14 @@ async def test_get_bad_request(client: TestClient) -> None:
|
||||
assert response.status == 400
|
||||
assert not response_schema.validate(await response.json())
|
||||
|
||||
response = await client.get("/api/v1/events", params={"from_date": "from_date"})
|
||||
assert response.status == 400
|
||||
assert not response_schema.validate(await response.json())
|
||||
|
||||
response = await client.get("/api/v1/events", params={"to_date": "to_date"})
|
||||
assert response.status == 400
|
||||
assert not response_schema.validate(await response.json())
|
||||
|
||||
|
||||
async def test_post(client: TestClient) -> None:
|
||||
"""
|
||||
|
Reference in New Issue
Block a user