mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	* Started unit tests for the review controller
* Revert "Started unit tests for the review controller"
This reverts commit 7746eb146f.
* Started unit tests for GET /review/activity/motion Endpoint
* Started unit tests for GET /review/event/{event_id} Endpoint
* Continued unit tests for GET /review/event/{event_id} Endpoint
* Continued unit tests for GET /review/{event_id} Endpoint
* Continued unit tests for GET /review/{review_id} Endpoint
* Added unit tests for GET /review/{review_id}/viewed Endpoint
* Added unit tests for GET /stats Endpoint
* Added unit tests for GET /events Endpoint
* Updated unit tests for GET /events Endpoint
* Deleted unit tests for /events from test_http (updated tests are now in test_http_event.py)
* Removed duplicated test for GET /review/activity/motion Endpoint
		
	
			
		
			
				
	
	
		
			138 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from datetime import datetime
 | 
						|
 | 
						|
from fastapi.testclient import TestClient
 | 
						|
 | 
						|
from frigate.models import Event, Recordings, ReviewSegment
 | 
						|
from frigate.test.http_api.base_http_test import BaseTestHttp
 | 
						|
 | 
						|
 | 
						|
class TestHttpApp(BaseTestHttp):
 | 
						|
    def setUp(self):
 | 
						|
        super().setUp([Event, Recordings, ReviewSegment])
 | 
						|
        self.app = super().create_app()
 | 
						|
 | 
						|
    ####################################################################################################################
 | 
						|
    ###################################  GET /events Endpoint   #########################################################
 | 
						|
    ####################################################################################################################
 | 
						|
    def test_get_event_list_no_events(self):
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            events = client.get("/events").json()
 | 
						|
            assert len(events) == 0
 | 
						|
 | 
						|
    def test_get_event_list_no_match_event_id(self):
 | 
						|
        id = "123456.random"
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            super().insert_mock_event(id)
 | 
						|
            events = client.get("/events", params={"event_id": "abc"}).json()
 | 
						|
            assert len(events) == 0
 | 
						|
 | 
						|
    def test_get_event_list_match_event_id(self):
 | 
						|
        id = "123456.random"
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            super().insert_mock_event(id)
 | 
						|
            events = client.get("/events", params={"event_id": id}).json()
 | 
						|
            assert len(events) == 1
 | 
						|
            assert events[0]["id"] == id
 | 
						|
 | 
						|
    def test_get_event_list_match_length(self):
 | 
						|
        now = int(datetime.now().timestamp())
 | 
						|
 | 
						|
        id = "123456.random"
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            super().insert_mock_event(id, now, now + 1)
 | 
						|
            events = client.get(
 | 
						|
                "/events", params={"max_length": 1, "min_length": 1}
 | 
						|
            ).json()
 | 
						|
            assert len(events) == 1
 | 
						|
            assert events[0]["id"] == id
 | 
						|
 | 
						|
    def test_get_event_list_no_match_max_length(self):
 | 
						|
        now = int(datetime.now().timestamp())
 | 
						|
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            id = "123456.random"
 | 
						|
            super().insert_mock_event(id, now, now + 2)
 | 
						|
            events = client.get("/events", params={"max_length": 1}).json()
 | 
						|
            assert len(events) == 0
 | 
						|
 | 
						|
    def test_get_event_list_no_match_min_length(self):
 | 
						|
        now = int(datetime.now().timestamp())
 | 
						|
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            id = "123456.random"
 | 
						|
            super().insert_mock_event(id, now, now + 2)
 | 
						|
            events = client.get("/events", params={"min_length": 3}).json()
 | 
						|
            assert len(events) == 0
 | 
						|
 | 
						|
    def test_get_event_list_limit(self):
 | 
						|
        id = "123456.random"
 | 
						|
        id2 = "54321.random"
 | 
						|
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            super().insert_mock_event(id)
 | 
						|
            events = client.get("/events").json()
 | 
						|
            assert len(events) == 1
 | 
						|
            assert events[0]["id"] == id
 | 
						|
 | 
						|
            super().insert_mock_event(id2)
 | 
						|
            events = client.get("/events").json()
 | 
						|
            assert len(events) == 2
 | 
						|
 | 
						|
            events = client.get("/events", params={"limit": 1}).json()
 | 
						|
            assert len(events) == 1
 | 
						|
            assert events[0]["id"] == id
 | 
						|
 | 
						|
            events = client.get("/events", params={"limit": 3}).json()
 | 
						|
            assert len(events) == 2
 | 
						|
 | 
						|
    def test_get_event_list_no_match_has_clip(self):
 | 
						|
        now = int(datetime.now().timestamp())
 | 
						|
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            id = "123456.random"
 | 
						|
            super().insert_mock_event(id, now, now + 2)
 | 
						|
            events = client.get("/events", params={"has_clip": 0}).json()
 | 
						|
            assert len(events) == 0
 | 
						|
 | 
						|
    def test_get_event_list_has_clip(self):
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            id = "123456.random"
 | 
						|
            super().insert_mock_event(id, has_clip=True)
 | 
						|
            events = client.get("/events", params={"has_clip": 1}).json()
 | 
						|
            assert len(events) == 1
 | 
						|
            assert events[0]["id"] == id
 | 
						|
 | 
						|
    def test_get_event_list_sort_score(self):
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            id = "123456.random"
 | 
						|
            id2 = "54321.random"
 | 
						|
            super().insert_mock_event(id, top_score=37, score=37, data={"score": 50})
 | 
						|
            super().insert_mock_event(id2, top_score=47, score=47, data={"score": 20})
 | 
						|
            events = client.get("/events", params={"sort": "score_asc"}).json()
 | 
						|
            assert len(events) == 2
 | 
						|
            assert events[0]["id"] == id2
 | 
						|
            assert events[1]["id"] == id
 | 
						|
 | 
						|
            events = client.get("/events", params={"sort": "score_des"}).json()
 | 
						|
            assert len(events) == 2
 | 
						|
            assert events[0]["id"] == id
 | 
						|
            assert events[1]["id"] == id2
 | 
						|
 | 
						|
    def test_get_event_list_sort_start_time(self):
 | 
						|
        now = int(datetime.now().timestamp())
 | 
						|
 | 
						|
        with TestClient(self.app) as client:
 | 
						|
            id = "123456.random"
 | 
						|
            id2 = "54321.random"
 | 
						|
            super().insert_mock_event(id, start_time=now + 3)
 | 
						|
            super().insert_mock_event(id2, start_time=now)
 | 
						|
            events = client.get("/events", params={"sort": "date_asc"}).json()
 | 
						|
            assert len(events) == 2
 | 
						|
            assert events[0]["id"] == id2
 | 
						|
            assert events[1]["id"] == id
 | 
						|
 | 
						|
            events = client.get("/events", params={"sort": "date_desc"}).json()
 | 
						|
            assert len(events) == 2
 | 
						|
            assert events[0]["id"] == id
 | 
						|
            assert events[1]["id"] == id2
 |