Merge pull request #1503 from dermotduffy/adoption

Fix query adopt bug
This commit is contained in:
Dermot Duffy
2024-08-26 12:44:05 -07:00
committed by GitHub
5 changed files with 147 additions and 11 deletions
+8 -1
View File
@@ -1,5 +1,6 @@
import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { QueryType } from '../../../src/camera-manager/types';
import { ViewFactory } from '../../../src/card-controller/view/factory';
import { QueryExecutor } from '../../../src/card-controller/view/query-executor';
import { ViewModifier } from '../../../src/card-controller/view/types';
@@ -618,7 +619,13 @@ describe('getViewByParametersWithNewQuery', () => {
const baseView = new View({
view: 'media',
camera: 'camera.office',
query: new EventMediaQueries(),
query: new EventMediaQueries([
{
type: QueryType.Event,
cameraIDs: new Set(['camera.office']),
hasClip: true,
},
]),
queryResults: new MediaQueriesResults(),
});
@@ -1,6 +1,7 @@
import { describe, expect, it } from 'vitest';
import { EventMediaQueries, RecordingMediaQueries } from '../../src/view/media-queries';
import { MediaQueriesClassifier } from '../../src/view/media-queries-classifier';
import { QueryType } from '../../src/camera-manager/types';
describe('MediaQueriesClassifier', () => {
it('areEventQueries', () => {
@@ -26,4 +27,94 @@ describe('MediaQueriesClassifier', () => {
);
expect(MediaQueriesClassifier.getQueriesType()).toBeNull();
});
it('areClipsQueries', () => {
expect(
MediaQueriesClassifier.areClipsQueries(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasClip: true },
]),
),
).toBeTruthy();
expect(
MediaQueriesClassifier.areClipsQueries(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasClip: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasClip: false },
]),
),
).toBeFalsy();
expect(
MediaQueriesClassifier.areClipsQueries(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasClip: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']) },
]),
),
).toBeFalsy();
});
it('areSnapshotQueries', () => {
expect(
MediaQueriesClassifier.areSnapshotQueries(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: true },
]),
),
).toBeTruthy();
expect(
MediaQueriesClassifier.areSnapshotQueries(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: false },
]),
),
).toBeFalsy();
expect(
MediaQueriesClassifier.areSnapshotQueries(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']) },
]),
),
).toBeFalsy();
});
it('getMediaType', () => {
expect(
MediaQueriesClassifier.getMediaType(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: true },
]),
),
).toBe('snapshots');
expect(
MediaQueriesClassifier.getMediaType(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasClip: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasClip: true },
]),
),
).toBe('clips');
expect(
MediaQueriesClassifier.getMediaType(
new RecordingMediaQueries([
{ type: QueryType.Recording, cameraIDs: new Set(['camera']) },
{ type: QueryType.Recording, cameraIDs: new Set(['camera']) },
]),
),
).toBe('recordings');
expect(
MediaQueriesClassifier.getMediaType(
new EventMediaQueries([
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: true },
{ type: QueryType.Event, cameraIDs: new Set(['camera']), hasSnapshot: false },
]),
),
).toBeNull();
});
});