Files
pokemon-inventory/apps/api/tests/application/inventory-image-management.test.js
T
fragginwagon efeca42d0f
Quality / test (push) Canceled after 0s
feat: add admin image management
2026-09-08 22:12:30 -04:00

38 lines
2.2 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { createInventoryImageService } from '../../src/modules/inventory/services/inventory-image-service.js';
function createService() {
const calls = [];
const service = createInventoryImageService({
inventoryImageRepository: {
async findByIdForSeller(id, sellerId) { calls.push(['find', id, sellerId]); return { id, inventoryItemId: 'item-1', storageKey: 'image.jpg' }; },
async updateOrderForSeller(id, sortOrder, sellerId) { calls.push(['order', id, sortOrder, sellerId]); return { id, sortOrder }; },
async setPrimaryForSeller(id, sellerId) { calls.push(['primary', id, sellerId]); return { id, isPrimary: true }; },
async updateAltTextForSeller(id, altText, sellerId) { calls.push(['alt', id, altText, sellerId]); return { id, altText }; },
async deleteForSeller(id, sellerId) { calls.push(['delete', id, sellerId]); return { id, storageKey: 'image.jpg' }; },
},
imageDerivativeJobRepository: {
async retryForImage(id) { calls.push(['retry', id]); return { id: 'job-1' }; },
async deleteForImage(id) { calls.push(['delete-job', id]); },
},
imageStorage: { async delete(key) { calls.push(['storage-delete', key]); } },
});
return { service, calls };
}
test('manages owned image order, primary state, alt text, retry, and deletion', async () => {
const { service, calls } = createService();
assert.deepEqual(await service.updateOrder({ imageId: 'image-1', sortOrder: 2, sellerId: 'seller-1' }), { id: 'image-1', sortOrder: 2 });
assert.deepEqual(await service.setPrimary({ imageId: 'image-1', sellerId: 'seller-1' }), { id: 'image-1', isPrimary: true });
assert.deepEqual(await service.updateAltText({ imageId: 'image-1', altText: 'Front', sellerId: 'seller-1' }), { id: 'image-1', altText: 'Front' });
assert.deepEqual(await service.retry({ imageId: 'image-1', sellerId: 'seller-1' }), { id: 'image-1', inventoryItemId: 'item-1', storageKey: 'image.jpg' });
await service.delete({ imageId: 'image-1', sellerId: 'seller-1' });
assert.ok(calls.some(([action]) => action === 'retry'));
assert.ok(calls.some(([action]) => action === 'delete-job'));
assert.ok(calls.some(([action]) => action === 'storage-delete'));
});