- replace bearer auth with session+CSRF flow and add admin user directory - update frontend moderation flow, force password change gate, and new CLI - refresh changelog/docs/feature plan + ensure swagger dev experience
113 lines
3.6 KiB
JavaScript
113 lines
3.6 KiB
JavaScript
const { formatGroupListRow, formatGroupDetail } = require('../../src/utils/groupFormatter');
|
|
|
|
describe('groupFormatter', () => {
|
|
describe('formatGroupListRow', () => {
|
|
it('maps snake_case columns to camelCase dto', () => {
|
|
const row = {
|
|
group_id: 'foo',
|
|
year: 2024,
|
|
title: 'Title',
|
|
description: 'Desc',
|
|
name: 'Alice',
|
|
upload_date: '2024-01-01',
|
|
approved: 1,
|
|
image_count: '5',
|
|
preview_image: 'path/to/thumb.jpg'
|
|
};
|
|
|
|
expect(formatGroupListRow(row)).toEqual({
|
|
groupId: 'foo',
|
|
year: 2024,
|
|
title: 'Title',
|
|
description: 'Desc',
|
|
name: 'Alice',
|
|
uploadDate: '2024-01-01',
|
|
approved: true,
|
|
imageCount: 5,
|
|
previewImage: 'path/to/thumb.jpg'
|
|
});
|
|
});
|
|
|
|
it('provides sane defaults when optional values missing', () => {
|
|
const row = {
|
|
group_id: 'bar',
|
|
year: 2023,
|
|
title: 'Other',
|
|
description: null,
|
|
name: null,
|
|
upload_date: '2023-12-24',
|
|
approved: 0,
|
|
image_count: null,
|
|
preview_image: undefined
|
|
};
|
|
|
|
expect(formatGroupListRow(row)).toEqual({
|
|
groupId: 'bar',
|
|
year: 2023,
|
|
title: 'Other',
|
|
description: null,
|
|
name: null,
|
|
uploadDate: '2023-12-24',
|
|
approved: false,
|
|
imageCount: 0,
|
|
previewImage: null
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('formatGroupDetail', () => {
|
|
it('maps nested image rows and flags', () => {
|
|
const group = {
|
|
group_id: 'foo',
|
|
year: 2024,
|
|
title: 'Title',
|
|
description: 'Desc',
|
|
name: 'Alice',
|
|
upload_date: '2024-01-01',
|
|
approved: 0,
|
|
display_in_workshop: 1,
|
|
consent_timestamp: null
|
|
};
|
|
const images = [
|
|
{
|
|
id: 1,
|
|
file_name: 'one.png',
|
|
original_name: 'one.png',
|
|
file_path: 'images/one.png',
|
|
preview_path: null,
|
|
upload_order: 1,
|
|
file_size: null,
|
|
mime_type: 'image/png',
|
|
image_description: 'desc'
|
|
}
|
|
];
|
|
|
|
expect(formatGroupDetail(group, images)).toEqual({
|
|
groupId: 'foo',
|
|
year: 2024,
|
|
title: 'Title',
|
|
description: 'Desc',
|
|
name: 'Alice',
|
|
uploadDate: '2024-01-01',
|
|
approved: false,
|
|
display_in_workshop: true,
|
|
consent_timestamp: null,
|
|
images: [
|
|
{
|
|
id: 1,
|
|
fileName: 'one.png',
|
|
originalName: 'one.png',
|
|
filePath: 'images/one.png',
|
|
previewPath: null,
|
|
uploadOrder: 1,
|
|
fileSize: null,
|
|
mimeType: 'image/png',
|
|
imageDescription: 'desc'
|
|
}
|
|
],
|
|
imageCount: 1
|
|
});
|
|
});
|
|
});
|
|
});
|