fix: Old Reolink media items shown instead of more recent ones (#2081)

- Closes: #2078
This commit is contained in:
Dermot Duffy
2025-06-02 20:55:09 -07:00
committed by GitHub
parent 956a2e523c
commit a3d062eec5
3 changed files with 112 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
import { describe, expect, it } from 'vitest';
import {
BrowseMediaMetadata,
RichBrowseMedia,
} from '../../../src/ha/browse-media/types';
import { createBrowseMedia, createRichBrowseMedia } from '../../test-utils';
import { sortMostRecentFirst } from '../../../src/ha/browse-media/sort';
const createMetadata = (
metadata: Partial<BrowseMediaMetadata>,
): BrowseMediaMetadata => ({
cameraID: 'camera.office',
startDate: new Date('2025-05-10T20:22:00Z'),
endDate: new Date('2025-05-10T20:22:10Z'),
...metadata,
});
describe('sortMostRecentFirst', () => {
it('should return an empty array when given an empty array', () => {
const media: RichBrowseMedia<BrowseMediaMetadata>[] = [];
expect(sortMostRecentFirst(media)).toEqual([]);
});
it('should sort media by startDate in descending order', () => {
const media: RichBrowseMedia<BrowseMediaMetadata>[] = [
createRichBrowseMedia({
title: 'Media 1',
_metadata: createMetadata({ startDate: new Date('2025-05-10T20:29:00.000Z') }),
}),
createRichBrowseMedia({
title: 'Media 2',
_metadata: createMetadata({ startDate: new Date('2025-05-12T20:29:00.000Z') }),
}),
createRichBrowseMedia({
title: 'Media 3',
_metadata: createMetadata({ startDate: new Date('2025-05-11T20:29:00.000Z') }),
}),
];
const expected: RichBrowseMedia<BrowseMediaMetadata>[] = [
createRichBrowseMedia({
title: 'Media 2',
_metadata: createMetadata({ startDate: new Date('2025-05-12T20:29:00.000Z') }),
}),
createRichBrowseMedia({
title: 'Media 3',
_metadata: createMetadata({ startDate: new Date('2025-05-11T20:29:00.000Z') }),
}),
createRichBrowseMedia({
title: 'Media 1',
_metadata: createMetadata({ startDate: new Date('2025-05-10T20:29:00.000Z') }),
}),
];
expect(sortMostRecentFirst(media)).toEqual(expected);
});
it('should handle items with undefined startDate by placing them at the end', () => {
const media: RichBrowseMedia<BrowseMediaMetadata>[] = [
createRichBrowseMedia({
title: 'Media 1',
_metadata: createMetadata({ startDate: new Date('2025-05-10T20:29:00.000Z') }),
}),
createBrowseMedia({
title: 'Media 2',
}),
createRichBrowseMedia({
title: 'Media 3',
_metadata: createMetadata({ startDate: new Date('2025-05-12T20:29:00.000Z') }),
}),
createBrowseMedia({
title: 'Media 4',
}),
];
const expected: RichBrowseMedia<BrowseMediaMetadata>[] = [
createBrowseMedia({
title: 'Media 2',
}),
createBrowseMedia({
title: 'Media 4',
}),
createRichBrowseMedia({
title: 'Media 3',
_metadata: createMetadata({ startDate: new Date('2025-05-12T20:29:00.000Z') }),
}),
createRichBrowseMedia({
title: 'Media 1',
_metadata: createMetadata({ startDate: new Date('2025-05-10T20:29:00.000Z') }),
}),
];
expect(sortMostRecentFirst(media)).toEqual(expected);
});
});