Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added more unit tests for the review controller #15162

Merged
merged 22 commits into from
Dec 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7746eb1
Started unit tests for the review controller
iursevla Nov 17, 2024
137f4e2
Revert "Started unit tests for the review controller"
iursevla Nov 17, 2024
edabe94
Merge remote-tracking branch 'upstream/dev' into dev
iursevla Nov 20, 2024
3b61d3c
Added test for review endpoint (severity filter)
iursevla Nov 20, 2024
c70cfd9
Merge remote-tracking branch 'upstream/dev' into review-controller-un…
iursevla Nov 20, 2024
731a887
Added tests for review summary endpoint (with filters/no filters)
iursevla Nov 24, 2024
1d4de12
Merge remote-tracking branch 'upstream/dev' into dev
iursevla Nov 24, 2024
22408e9
Added tests for review summary endpoint (multiple days with alerts in…
iursevla Nov 24, 2024
6ad57af
Added tests for review summary endpoint (multiple days with alerts in…
iursevla Nov 24, 2024
ea7fd7d
Added test for summary endpoint with multiple reviews in the same day…
iursevla Nov 24, 2024
73f56dc
Fix tests
iursevla Nov 24, 2024
6759b5c
Format with ruff
iursevla Nov 24, 2024
77f64fe
Minor fixes
iursevla Nov 24, 2024
21eda96
ruff
iursevla Nov 24, 2024
6084d90
Added unit tests for POST /reviews/viewed
iursevla Nov 24, 2024
3e57e2e
Added unit tests for POST /reviews/delete
iursevla Nov 24, 2024
6a70e9b
Simplified names to ease readability
iursevla Nov 24, 2024
bb0c54e
Simplify by using method _get_reviews
iursevla Nov 24, 2024
6e6fc21
Merge remote-tracking branch 'upstream/dev' into dev
iursevla Nov 29, 2024
e47ddb3
Merge branch 'dev' into review-controller-unit-tests
iursevla Nov 29, 2024
7f69e59
Merge remote-tracking branch 'upstream/dev' into dev
iursevla Dec 4, 2024
3a9b69f
Merge branch 'dev' into review-controller-unit-tests
iursevla Dec 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions frigate/api/review.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
)
from frigate.api.defs.tags import Tags
from frigate.models import Recordings, ReviewSegment
from frigate.review.maintainer import SeverityEnum
from frigate.util.builtin import get_tz_modifiers

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -161,7 +162,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "alert"),
(ReviewSegment.severity == SeverityEnum.alert),
ReviewSegment.has_been_reviewed,
)
],
Expand All @@ -173,7 +174,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "detection"),
(ReviewSegment.severity == SeverityEnum.detection),
ReviewSegment.has_been_reviewed,
)
],
Expand All @@ -185,7 +186,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "alert"),
(ReviewSegment.severity == SeverityEnum.alert),
1,
)
],
Expand All @@ -197,7 +198,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "detection"),
(ReviewSegment.severity == SeverityEnum.detection),
1,
)
],
Expand Down Expand Up @@ -230,6 +231,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
label_clause = reduce(operator.or_, label_clauses)
clauses.append((label_clause))

day_in_seconds = 60 * 60 * 24
last_month = (
ReviewSegment.select(
fn.strftime(
Expand All @@ -246,7 +248,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "alert"),
(ReviewSegment.severity == SeverityEnum.alert),
ReviewSegment.has_been_reviewed,
)
],
Expand All @@ -258,7 +260,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "detection"),
(ReviewSegment.severity == SeverityEnum.detection),
ReviewSegment.has_been_reviewed,
)
],
Expand All @@ -270,7 +272,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "alert"),
(ReviewSegment.severity == SeverityEnum.alert),
1,
)
],
Expand All @@ -282,7 +284,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
None,
[
(
(ReviewSegment.severity == "detection"),
(ReviewSegment.severity == SeverityEnum.detection),
1,
)
],
Expand All @@ -292,7 +294,7 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()):
)
.where(reduce(operator.and_, clauses))
.group_by(
(ReviewSegment.start_time + seconds_offset).cast("int") / (3600 * 24),
(ReviewSegment.start_time + seconds_offset).cast("int") / day_in_seconds,
)
.order_by(ReviewSegment.start_time.desc())
)
Expand Down
30 changes: 24 additions & 6 deletions frigate/test/http_api/base_http_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from frigate.api.fastapi_app import create_fastapi_app
from frigate.config import FrigateConfig
from frigate.models import Event, ReviewSegment
from frigate.models import Event, Recordings, ReviewSegment
from frigate.review.maintainer import SeverityEnum
from frigate.test.const import TEST_DB, TEST_DB_CLEANUPS

Expand Down Expand Up @@ -146,17 +146,35 @@ def insert_mock_event(
def insert_mock_review_segment(
self,
id: str,
start_time: datetime.datetime = datetime.datetime.now().timestamp(),
end_time: datetime.datetime = datetime.datetime.now().timestamp() + 20,
start_time: float = datetime.datetime.now().timestamp(),
end_time: float = datetime.datetime.now().timestamp() + 20,
severity: SeverityEnum = SeverityEnum.alert,
has_been_reviewed: bool = False,
) -> Event:
"""Inserts a basic event model with a given id."""
"""Inserts a review segment model with a given id."""
return ReviewSegment.insert(
id=id,
camera="front_door",
start_time=start_time,
end_time=end_time,
has_been_reviewed=False,
severity=SeverityEnum.alert,
has_been_reviewed=has_been_reviewed,
severity=severity,
thumb_path=False,
data={},
).execute()

def insert_mock_recording(
self,
id: str,
start_time: float = datetime.datetime.now().timestamp(),
end_time: float = datetime.datetime.now().timestamp() + 20,
) -> Event:
"""Inserts a recording model with a given id."""
return Recordings.insert(
id=id,
path=id,
camera="front_door",
start_time=start_time,
end_time=end_time,
duration=end_time - start_time,
).execute()
Loading
Loading